X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/f423b06bf5ab4a966b17857f027a46e74447f438..c576ad2674c37a1c63f004c71049998f38854c64:/test/getfullname.c diff --git a/test/getfullname.c b/test/getfullname.c index ec83939f..9a342ca1 100644 --- a/test/getfullname.c +++ b/test/getfullname.c @@ -14,18 +14,20 @@ #include #include -extern void escape_display_name (char *); +extern void escape_display_name (char *, size_t); int main(int argc, char *argv[]) { struct passwd *pwd; char buf[BUFSIZ], *p; - char *name = buf; + if (argc > 2) { + fprintf (stderr, "usage: %s [name]\n", argv[0]); + return 1; + } if (argc < 2) { pwd = getpwuid(getuid()); - if (! pwd) { fprintf(stderr, "Unable to retrieve user info for " "userid %ld\n", (long) getuid()); @@ -34,12 +36,8 @@ main(int argc, char *argv[]) strncpy(buf, pwd->pw_gecos, sizeof(buf)); buf[sizeof(buf) - 1] = '\0'; - } else if (argc == 2) { - name = argv[1]; - } else if (argc > 2) { - fprintf (stderr, "usage: %s [name]\n", argv[0]); - return 1; - } + } else + strncpy(buf, argv[1], sizeof(buf)); /* * Perform the same processing that getuserinfo() does. @@ -48,15 +46,14 @@ main(int argc, char *argv[]) /* * Stop at the first comma. */ - if ((p = strchr(name, ','))) + if ((p = strchr(buf, ','))) *p = '\0'; /* * Quote the entire string if it has a special character in it. */ - escape_display_name (name); - - printf("%s\n", name); + escape_display_name (buf, sizeof(buf)); + puts(buf); exit(0); }