diff --git a/Makefile b/Makefile index 02d6ea39ddb94532f1a8f0413a4e92f1eec6c3d7..90283abb770f9671e40fa87b124bcd909f2ac941 100644 --- a/Makefile +++ b/Makefile @@ -59,6 +59,9 @@ all:: # # Define NO_MKSTEMPS if you don't have mkstemps in the C library. # +# Define NO_GECOS_IN_PWENT if you don't have pw_gecos in struct passwd +# in the C library. +# # Define NO_LIBGEN_H if you don't have libgen.h. # # Define NEEDS_LIBGEN if your libgen needs -lgen when linking diff --git a/ident.c b/ident.c index 4232084208943c0772e394cfcff2328fb04493af..770b9e02c823dd80b89df2d8a83b975238126fcb 100644 --- a/ident.c +++ b/ident.c @@ -9,6 +9,12 @@ static char git_default_date[50]; +#ifdef NO_GECOS_IN_PWENT +#define get_gecos(ignored) "&" +#else +#define get_gecos(struct_passwd) ((struct_passwd)->pw_gecos) +#endif + static void copy_gecos(const struct passwd *w, char *name, size_t sz) { char *src, *dst; @@ -20,7 +26,7 @@ static void copy_gecos(const struct passwd *w, char *name, size_t sz) * with commas. Also & stands for capitalized form of the login name. */ - for (len = 0, dst = name, src = w->pw_gecos; len < sz; src++) { + for (len = 0, dst = name, src = get_gecos(w); len < sz; src++) { int ch = *src; if (ch != '&') { *dst++ = ch;