first commit

This commit is contained in:
Bradford White
2026-03-26 10:28:14 -04:00
commit 00bc136f92
5 changed files with 102 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
--- 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);