From b75fe798bb26fbf16a3251decd72bc20b44a00c5 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 27 Jun 2008 22:31:07 +0000 Subject: [PATCH] stat: pointers are not 0L, they are NULL man: better error handling --- coreutils/stat.c | 8 ++++---- miscutils/man.c | 9 ++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/coreutils/stat.c b/coreutils/stat.c index b2b1913a9..c34c06acb 100644 --- a/coreutils/stat.c +++ b/coreutils/stat.c @@ -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 diff --git a/miscutils/man.c b/miscutils/man.c index 020310677..9ef1ef4a6 100644 --- a/miscutils/man.c +++ b/miscutils/man.c @@ -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; -- 2.25.1