*** empty log message ***
authorewt <devnull@localhost>
Mon, 2 Jun 1997 19:59:31 +0000 (19:59 +0000)
committerewt <devnull@localhost>
Mon, 2 Jun 1997 19:59:31 +0000 (19:59 +0000)
CVS patchset: 1680
CVS date: 1997/06/02 19:59:31

misc/getmntent.c [new file with mode: 0644]

diff --git a/misc/getmntent.c b/misc/getmntent.c
new file mode 100644 (file)
index 0000000..69eb188
--- /dev/null
@@ -0,0 +1,58 @@
+#include "miscfn.h"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __aix__
+#define COMMENTCHAR '*'
+#else
+#define COMMENTCHAR '#'
+#endif
+
+struct mntent *getmntent(FILE *filep) {
+    static struct mntent item = { NULL };
+    char buf[1024], * start;
+    char * chptr;
+
+    if (item.mnt_dir) {
+       free(item.mnt_dir);
+    }
+    
+    while (fgets(buf, sizeof(buf) - 1, filep)) {
+       /* chop off \n */
+       buf[strlen(buf) - 1] = '\0';
+
+       chptr = buf;
+       while (isspace(*chptr)) chptr++;
+
+       if (*chptr == COMMENTCHAR) continue;
+
+       #if __aix__
+           /* aix uses a screwed up file format */
+           if (*chptr == '/') {
+               start = chptr;
+               while (*chptr != ':') chptr++;
+               *chptr = '\0';
+               item.mnt_dir = strdup(start);
+               return &item;
+           }
+       #else 
+           while (!isspace(*chptr) && (*chptr)) chptr++;
+           if (!*chptr) return NULL;
+
+           while (isspace(*chptr) && (*chptr)) chptr++;
+           if (!*chptr) return NULL;
+           start = chptr;
+       
+           while (!isspace(*chptr) && (*chptr)) chptr++;
+           *chptr = '\0';
+
+           item.mnt_dir = strdup(start);
+           return &item;
+       #endif
+    }
+
+    return NULL;
+}