test, tcpsvd, tcpsvd: shrink

function                                             old     new   delta
nexpr                                                825     826      +1
tcpudpsvd_main                                      1830    1822      -8
test_main                                            257     247     -10
binop                                                584     525     -59
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 1/-77)             Total: -76 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2009-06-13 22:49:08 +02:00
parent a3dcee3e8a
commit 16635cc2e0
3 changed files with 38 additions and 26 deletions

View File

@ -51,39 +51,49 @@
enum token {
EOI,
FILRD,
FILRD, /* file access */
FILWR,
FILEX,
FILEXIST,
FILREG,
FILREG, /* file type */
FILDIR,
FILCDEV,
FILBDEV,
FILFIFO,
FILSOCK,
FILSYM,
FILGZ,
FILTT,
FILSUID,
FILSUID, /* file bit */
FILSGID,
FILSTCK,
FILNT,
FILNT, /* file ops */
FILOT,
FILEQ,
FILUID,
FILGID,
STREZ,
STREZ, /* str ops */
STRNZ,
STREQ,
STRNE,
STRLT,
STRGT,
INTEQ,
INTEQ, /* int ops */
INTNE,
INTGE,
INTGT,
INTLE,
INTLT,
UNOT,
BAND,
BOR,
@ -385,8 +395,8 @@ static int binop(void)
return val1 > val2;
if (op->op_num == INTLE)
return val1 <= val2;
if (op->op_num == INTLT)
return val1 < val2;
/*if (op->op_num == INTLT)*/
return val1 < val2;
}
if (is_str_op(op->op_num)) {
val1 = strcmp(opnd1, opnd2);
@ -396,8 +406,8 @@ static int binop(void)
return val1 != 0;
if (op->op_num == STRLT)
return val1 < 0;
if (op->op_num == STRGT)
return val1 > 0;
/*if (op->op_num == STRGT)*/
return val1 > 0;
}
/* We are sure that these three are by now the only binops we didn't check
* yet, so we do not check if the class is correct:
@ -412,25 +422,29 @@ static int binop(void)
return b1.st_mtime > b2.st_mtime;
if (op->op_num == FILOT)
return b1.st_mtime < b2.st_mtime;
if (op->op_num == FILEQ)
return b1.st_dev == b2.st_dev && b1.st_ino == b2.st_ino;
/*if (op->op_num == FILEQ)*/
return b1.st_dev == b2.st_dev && b1.st_ino == b2.st_ino;
}
return 1; /* NOTREACHED */
/*return 1; - NOTREACHED */
}
static void initialize_group_array(void)
{
ngroups = getgroups(0, NULL);
if (ngroups > 0) {
int n;
/* getgroups may be expensive, try to use it only once */
ngroups = 32;
do {
/* FIXME: ash tries so hard to not die on OOM,
* and we spoil it with just one xrealloc here */
/* We realloc, because test_main can be entered repeatedly by shell.
* Testcase (ash): 'while true; do test -x some_file; done'
* and watch top. (some_file must have owner != you) */
group_array = xrealloc(group_array, ngroups * sizeof(gid_t));
getgroups(ngroups, group_array);
}
n = ngroups;
group_array = xrealloc(group_array, n * sizeof(gid_t));
ngroups = getgroups(n, group_array);
} while (ngroups > n);
}
@ -717,7 +731,7 @@ int test_main(int argc, char **argv)
* isn't likely in the case of a shell. paranoia
* prevails...
*/
ngroups = 0;
/*ngroups = 0; - done by INIT_S() */
//argc--;
argv++;

View File

@ -276,10 +276,12 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv)
setsockopt_reuseaddr(sock);
sa_len = lsa->len; /* I presume sockaddr len stays the same */
xbind(sock, &lsa->u.sa, sa_len);
if (tcp)
if (tcp) {
xlisten(sock, backlog);
else /* udp: needed for recv_from_to to work: */
close_on_exec_on(sock);
} else { /* udp: needed for recv_from_to to work: */
socket_want_pktinfo(sock);
}
/* ndelay_off(sock); - it is the default I think? */
#ifndef SSLSVD
@ -410,10 +412,6 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv)
/* Child: prepare env, log, and exec prog */
/* Closing tcp listening socket */
if (tcp)
close(sock);
{ /* vfork alert! every xmalloc in this block should be freed! */
char *local_hostname = local_hostname; /* for compiler */
char *local_addr = NULL;

View File

@ -8,7 +8,7 @@
# you can just add an entry like:
# /sbin/foobar f 2755 0 0 - - - - -
# and (assuming the file /sbin/foobar exists) it will be made setuid
# root (regardless of what its permissions are on the host filesystem.
# root (regardless of what its permissions are on the host filesystem).
# Furthermore, you can use a single table entry to create a many device
# minors. For example, if I wanted to create /dev/hda and /dev/hda[0-15]
# I could just use the following two table entries: