diff options
Diffstat (limited to 'shadow/fgetspent_r.c')
-rw-r--r-- | shadow/fgetspent_r.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/shadow/fgetspent_r.c b/shadow/fgetspent_r.c index 6521517a6f..0cdcc76d9b 100644 --- a/shadow/fgetspent_r.c +++ b/shadow/fgetspent_r.c @@ -32,8 +32,9 @@ struct spent_data {}; /* Read one shadow entry from the given stream. */ -struct spwd * -__fgetspent_r (FILE *stream, struct spwd *result, char *buffer, int buflen) +int +__fgetspent_r (FILE *stream, struct spwd *resbuf, char *buffer, size_t buflen, + struct spwd **result) { char *p; @@ -41,7 +42,7 @@ __fgetspent_r (FILE *stream, struct spwd *result, char *buffer, int buflen) { p = fgets (buffer, buflen, stream); if (p == NULL) - return NULL; + return errno; /* Skip leading blanks. */ while (isspace (*p)) @@ -49,8 +50,9 @@ __fgetspent_r (FILE *stream, struct spwd *result, char *buffer, int buflen) } while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ /* Parse the line. If it is invalid, loop to get the next line of the file to parse. */ - ! parse_line (buffer, (void *) result, NULL, 0)); + ! parse_line (buffer, (void *) resbuf, NULL, 0)); - return result; + *result = resbuf; + return 0; } weak_alias (__fgetspent_r, fgetspent_r) |