uname,individual: fix improper printf usage
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 2 Jul 2008 11:14:59 +0000 (11:14 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 2 Jul 2008 11:14:59 +0000 (11:14 -0000)
uname,awk: small code shrink

function                                             old     new   delta
uname_main                                           175     166      -9
nvalloc                                              167     157     -10
evaluate                                            6381    6370     -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-30)             Total: -30 bytes

applets/individual.c
coreutils/uname.c
editors/awk.c

index 414a11b..341f4d1 100644 (file)
@@ -14,13 +14,11 @@ const char *applet_name;
 int main(int argc, char **argv)
 {
        applet_name = argv[0];
-
        return APPLET_main(argc,argv);
 }
 
 void bb_show_usage(void)
 {
-       printf(APPLET_full_usage "\n");
-
+       fputs(APPLET_full_usage "\n", stdout);
        exit(EXIT_FAILURE);
 }
index 34600e7..76fd3ca 100644 (file)
@@ -17,7 +17,7 @@
    -m, --machine       sun
    -a, --all           SunOS rocky8 4.0  sun
 
-   The default behavior is equivalent to `-s'.
+   The default behavior is equivalent to '-s'.
 
    David MacKenzie <djm@gnu.ai.mit.edu> */
 
@@ -39,47 +39,43 @@ typedef struct {
 } uname_info_t;
 
 static const char options[] ALIGN1 = "snrvmpa";
-static const unsigned short utsname_offset[] ALIGN2 = {
-       offsetof(uname_info_t,name.sysname),
-       offsetof(uname_info_t,name.nodename),
-       offsetof(uname_info_t,name.release),
-       offsetof(uname_info_t,name.version),
-       offsetof(uname_info_t,name.machine),
-       offsetof(uname_info_t,processor)
+static const unsigned short utsname_offset[] = {
+       offsetof(uname_info_t, name.sysname),
+       offsetof(uname_info_t, name.nodename),
+       offsetof(uname_info_t, name.release),
+       offsetof(uname_info_t, name.version),
+       offsetof(uname_info_t, name.machine),
+       offsetof(uname_info_t, processor)
 };
 
 int uname_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int uname_main(int argc, char **argv)
+int uname_main(int argc ATTRIBUTE_UNUSED, char **argv)
 {
        uname_info_t uname_info;
 #if defined(__sparc__) && defined(__linux__)
        char *fake_sparc = getenv("FAKE_SPARC");
 #endif
-       const unsigned short int *delta;
+       const unsigned short *delta;
        char toprint;
 
        toprint = getopt32(argv, options);
 
-       if (argc != optind) {
+       if (argv[optind]) { /* coreutils-6.9 compat */
                bb_show_usage();
        }
 
-       if (toprint & (1 << 6)) {
+       if (toprint & (1 << 6)) { /* -a => all opts on */
                toprint = 0x3f;
        }
 
-       if (toprint == 0) {
-               toprint = 1;                    /* sysname */
+       if (toprint == 0) { /* no opts => -s (sysname) */
+               toprint = 1;
        }
 
-       if (uname(&uname_info.name) == -1) {
-               bb_error_msg_and_die("cannot get system name");
-       }
+       uname(&uname_info.name); /* never fails */
 
 #if defined(__sparc__) && defined(__linux__)
-       if ((fake_sparc != NULL)
-               && ((fake_sparc[0] == 'y')
-                       || (fake_sparc[0] == 'Y'))) {
+       if (fake_sparc && (fake_sparc[0] | 0x20) == 'y') {
                strcpy(uname_info.name.machine, "sparc");
        }
 #endif
@@ -89,7 +85,8 @@ int uname_main(int argc, char **argv)
        delta = utsname_offset;
        do {
                if (toprint & 1) {
-                       printf("%s", ((char *)(&uname_info)) + *delta);
+                       /* printf would not be safe here */
+                       fputs((char *)(&uname_info) + *delta, stdout);
                        if (toprint > 1) {
                                bb_putchar(' ');
                        }
@@ -98,5 +95,5 @@ int uname_main(int argc, char **argv)
        } while (toprint >>= 1);
        bb_putchar('\n');
 
-       fflush_stdout_and_exit(EXIT_SUCCESS);
+       fflush_stdout_and_exit(EXIT_SUCCESS); /* coreutils-6.9 compat */
 }
index cc5dc84..44b747b 100644 (file)
@@ -852,11 +852,11 @@ static var *nvalloc(int n)
 
        if (!g_cb) {
                size = (n <= MINNVBLOCK) ? MINNVBLOCK : n;
-               g_cb = xmalloc(sizeof(nvblock) + size * sizeof(var));
+               g_cb = xzalloc(sizeof(nvblock) + size * sizeof(var));
                g_cb->size = size;
                g_cb->pos = g_cb->nv;
                g_cb->prev = pb;
-               g_cb->next = NULL;
+               /*g_cb->next = NULL; - xzalloc did it */
                if (pb) pb->next = g_cb;
        }
 
@@ -2028,9 +2028,9 @@ static var *exec_builtin(node *op, var *res)
                if (i < 0) i = 0;
                n = (nargs > 2) ? getvar_i(av[2]) : l-i;
                if (n < 0) n = 0;
-               s = xmalloc(n+1);
+               s = xzalloc(n + 1);
                strncpy(s, as[0]+i, n);
-               s[n] = '\0';
+               /*s[n] = '\0'; - xzalloc did it */
                setvar_p(res, s);
                break;