stat: pointers are not 0L, they are NULL man: better error handling
No binary (build failed)
—
(log yok)
| @@ -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 | |
| @@ -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; | |