#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
int
main(int argc, char *argv[])
{
+ struct passwd *pwd;
+ char name[BUFSIZ], *p;
+
if (argc > 1) {
fprintf (stderr, "usage: %s\n", argv[0]);
}
- struct passwd *pwd;
-
pwd = getpwuid(getuid());
if (! pwd) {
exit(1);
}
- printf("%s\n", pwd->pw_gecos);
+ /*
+ * Perform the same processing that getuserinfo() does.
+ */
+
+ strncpy(name, pwd->pw_gecos, sizeof(name));
+
+ name[sizeof(name) - 1] = '\0';
+
+ /*
+ * Stop at the first comma
+ */
+
+ if ((p = strchr(name, ',')))
+ *p = '\0';
+
+ /*
+ * Quote the entire string if it has a "." in it
+ */
+
+ if (strchr(name, '.')) {
+ char tmp[BUFSIZ];
+
+ snprintf(tmp, sizeof(tmp), "\"%s\"", name);
+ strncpy(name, tmp, sizeof(name));
+
+ name[sizeof(name) - 2] = '"';
+ name[sizeof(name) - 1] = '\0';
+ }
+
+ printf("%s\n", name);
exit(0);
}