From 7ba07d0e70ba58d0d79d9a48169a5b479b3bea95 Mon Sep 17 00:00:00 2001 From: ewt Date: Mon, 2 Jun 1997 19:59:31 +0000 Subject: [PATCH] *** empty log message *** CVS patchset: 1680 CVS date: 1997/06/02 19:59:31 --- misc/getmntent.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 misc/getmntent.c diff --git a/misc/getmntent.c b/misc/getmntent.c new file mode 100644 index 0000000..69eb188 --- /dev/null +++ b/misc/getmntent.c @@ -0,0 +1,58 @@ +#include "miscfn.h" + +#include +#include +#include +#include + +#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; +} -- 2.7.4