|
Date: Tue, 5 Nov 2013 14:24:16 -0500 From: Rich Felker <dalias@...ifal.cx> To: musl@...ts.openwall.com Subject: Re: [PATCH] shadow: Implement putspent On Mon, Nov 04, 2013 at 11:47:40PM -0800, Michael Forney wrote: > --- > When I brought up implementing the shadow.h functions on IRC, several concerns > were raised. However, it turns out that the shadow package only requires > putspent. I didn't understand the concerns on IRC, so if there is an issue with > the implementation of this function, please let me know and hopefully I'll be > able to address it. > > src/passwd/fgetspent.c | 5 ----- > src/passwd/putspent.c | 30 ++++++++++++++++++++++++++++++ > 2 files changed, 30 insertions(+), 5 deletions(-) > create mode 100644 src/passwd/putspent.c > > diff --git a/src/passwd/fgetspent.c b/src/passwd/fgetspent.c > index a9a3c97..3dda784 100644 > --- a/src/passwd/fgetspent.c > +++ b/src/passwd/fgetspent.c > @@ -4,8 +4,3 @@ struct spwd *fgetspent(FILE *f) > { > return 0; > } > - > -int putspent(const struct spwd *sp, FILE *f) > -{ > - return -1; > -} > diff --git a/src/passwd/putspent.c b/src/passwd/putspent.c > new file mode 100644 > index 0000000..bb0a410 > --- /dev/null > +++ b/src/passwd/putspent.c > @@ -0,0 +1,30 @@ > +#include <shadow.h> > +#include <stdio.h> > + > +int putspent(const struct spwd *sp, FILE *f) > +{ > + flockfile(f); > + if (sp->sp_namp && fputs(sp->sp_namp, f) == EOF) goto fail; > + if (fputc(':', f) == EOF) goto fail; > + if (sp->sp_pwdp && fputs(sp->sp_pwdp, f) == EOF) goto fail; > + if (fputc(':', f) == EOF) goto fail; > + if (sp->sp_lstchg != -1 && fprintf(f, "%d", sp->sp_lstchg) < 0) goto fail; > + if (fputc(':', f) == EOF) goto fail; Is there a reason for all this logic instead of a single call to fprintf with a proper format string? Writing the value -1 as an empty slot can be handled with a simple macro that expands to 0,0 for an argument of -1 and -1,val for other values, along with a %.*d format. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.