Rewrite to allow omitting initialization of global variables.
[kopensolaris-gnu/glibc.git] / misc / mntent_r.c
index 9567a6f..f6ee1ca 100644 (file)
 #include <string.h>
 #include <sys/types.h>
 
+#ifdef USE_IN_LIBIO
+# define flockfile(s) _IO_flockfile (s)
+# define funlockfile(s) _IO_funlockfile (s)
+#endif
+
 /* Prepare to begin reading and/or writing mount table entries from the
    beginning of FILE.  MODE is as for `fopen'.  */
 FILE *
@@ -57,7 +62,10 @@ __getmntent_r (FILE *stream, struct mntent *mp, char *buffer, int bufsiz)
       char *end_ptr;
 
       if (fgets_unlocked (buffer, bufsiz, stream) == NULL)
-       return NULL;
+       {
+         funlockfile (stream);
+         return NULL;
+       }
 
       end_ptr = strchr (buffer, '\n');
       if (end_ptr != NULL)     /* chop newline */
@@ -129,10 +137,11 @@ __hasmntopt (const struct mntent *mnt, const char *opt)
 
   while ((p = strstr (rest, opt)) != NULL)
     {
-      if (p == rest || p[-1] == ',' &&
-         (p[optlen] == '\0' ||
-          p[optlen] == '=' ||
-          p[optlen] == ','))
+      if (p == rest
+         || (p[-1] == ','
+             && (p[optlen] == '\0' ||
+                 p[optlen] == '='  ||
+                 p[optlen] == ',')))
        return p;
 
       rest = strchr (rest, ',');