stat: pointers are not 0L, they are NULL
authorDenis Vlasenko <vda.linux@googlemail.com>
Fri, 27 Jun 2008 22:31:07 +0000 (22:31 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Fri, 27 Jun 2008 22:31:07 +0000 (22:31 -0000)
man: better error handling

coreutils/stat.c
miscutils/man.c

index b2b1913a9e08d535c919a608cc6f6593694d6acb..c34c06acbac0e5dd79739bc1e879c8b4821dc908 100644 (file)
@@ -240,14 +240,14 @@ static void print_stat(char *pformat, const char m,
        } else if (m == 'U') {
                setpwent();
                pw_ent = getpwuid(statbuf->st_uid);
-               printfs(pformat, (pw_ent != 0L) ? pw_ent->pw_name : "UNKNOWN");
+               printfs(pformat, (pw_ent != NULL) ? pw_ent->pw_name : "UNKNOWN");
        } else if (m == 'g') {
                strcat(pformat, "lu");
                printf(pformat, (unsigned long) statbuf->st_gid);
        } else if (m == 'G') {
                setgrent();
                gw_ent = getgrgid(statbuf->st_gid);
-               printfs(pformat, (gw_ent != 0L) ? gw_ent->gr_name : "UNKNOWN");
+               printfs(pformat, (gw_ent != NULL) ? gw_ent->gr_name : "UNKNOWN");
        } else if (m == 't') {
                strcat(pformat, "lx");
                printf(pformat, (unsigned long) major(statbuf->st_rdev));
@@ -609,9 +609,9 @@ static bool do_stat(const char *filename, const char *format)
                       (unsigned long) (statbuf.st_mode & (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)),
                       bb_mode_string(statbuf.st_mode),
                       (unsigned long) statbuf.st_uid,
-                      (pw_ent != 0L) ? pw_ent->pw_name : "UNKNOWN",
+                      (pw_ent != NULL) ? pw_ent->pw_name : "UNKNOWN",
                       (unsigned long) statbuf.st_gid,
-                      (gw_ent != 0L) ? gw_ent->gr_name : "UNKNOWN");
+                      (gw_ent != NULL) ? gw_ent->gr_name : "UNKNOWN");
 #if ENABLE_SELINUX
                printf("   S_Context: %lc\n", *scontext);
 #endif
index 020310677c929f8b8dce627bcad2be5d3e47ba1d..9ef1ef4a6794c59de2ce4c90eefec9aa4bcaa98b 100644 (file)
@@ -35,7 +35,9 @@ static int run_pipe(const char *unpacker, const char *pager, char *man_filename)
                return 1;
        }
 
-       cmd = xasprintf("%s '%s' | gtbl | nroff -Tlatin1 -mandoc | %s",
+       /* "2>&1" added so that nroff errors are shown in pager too.
+        * Otherwise it may show just empty screen */
+       cmd = xasprintf("%s '%s' | gtbl | nroff -Tlatin1 -mandoc 2>&1 | %s",
                        unpacker, man_filename, pager);
        system(cmd);
        free(cmd);
@@ -123,6 +125,11 @@ int man_main(int argc ATTRIBUTE_UNUSED, char **argv)
                fclose(cf);
        }
 
+// TODO: my man3/getpwuid.3.gz contains just one line:
+// .so man3/getpwnam.3
+// (and I _dont_ have man3/getpwnam.3, I have man3/getpwnam.3.gz)
+// need to support this...
+
        not_found = 0;
        do { /* for each argv[] */
                int found = 0;