--- loginutils/adduser.c.orig +++ loginutils/adduser.c @@ -44,6 +44,7 @@ //usage: "\n -H Don't create home directory" //usage: "\n -u UID User id" //usage: "\n -k SKEL Skeleton directory (/etc/skel)" +//usage: "\n -b DOB Date of birth (YYYYMMDD)" #include "libbb.h" @@ -61,6 +62,7 @@ #define OPT_DONT_MAKE_HOME (1 << 6) #define OPT_UID (1 << 7) #define OPT_SKEL (1 << 8) +#define OPT_DOB (1 << 9) /* remix */ /* recoded such that the uid may be passed in *p */ @@ -128,6 +130,7 @@ "no-create-home\0" No_argument "H" "uid\0" Required_argument "u" "skel\0" Required_argument "k" + "dob\0" Required_argument "b" ; /* @@ -141,6 +144,7 @@ unsigned opts; char *uid; const char *skel = "/etc/skel"; + char *dob = NULL; /* got root? */ if (geteuid()) { @@ -151,12 +155,12 @@ pw.pw_dir = NULL; opts = getopt32long(argv, "^" - "h:g:s:G:DSHu:k:" + "h:g:s:G:DSHu:k:b:" /* at least one and at most two non-option args */ /* disable interactive passwd for system accounts */ "\0" "-1:?2:SD", adduser_longopts, - &pw.pw_dir, &pw.pw_gecos, &pw.pw_shell, - &usegroup, &uid, &skel + &pw.pw_dir, &pw.pw_gecos, &pw.pw_shell, + &usegroup, &uid, &skel, &dob ); if (opts & OPT_UID) @@ -200,6 +204,16 @@ free(p); #endif + /* Record date of birth if specified */ + if (opts & OPT_DOB) { + FILE *f = fopen("/etc/birthdays", "a"); + if (f) { + fprintf(f, "%s:x:%s:\n", pw.pw_name, dob); + fclose(f); + } else { + bb_perror_msg("/etc/birthdays"); + } + } + /* add to group */ addgroup_wrapper(&pw, usegroup);