97150a8d92
program code from dynamic libraries. This does not work on our ELF platforms. Just put the getmntent code inside the one source file that needs it, as a static function so that it does not show outside the library.
83 lines
1.7 KiB
Plaintext
83 lines
1.7 KiB
Plaintext
$OpenBSD: patch-lib_fs_c,v 1.1 2002/04/07 00:31:55 espie Exp $
|
|
--- lib/fs.c.orig Sun Apr 7 02:16:12 2002
|
|
+++ lib/fs.c Sun Apr 7 02:17:44 2002
|
|
@@ -3,6 +3,72 @@
|
|
#include <rpmlib.h>
|
|
#include <rpmmacro.h>
|
|
|
|
+#ifdef __OpenBSD__
|
|
+#ifdef __aix__
|
|
+#define COMMENTCHAR '*'
|
|
+#else
|
|
+#define COMMENTCHAR '#'
|
|
+#endif
|
|
+
|
|
+#if HAVE_STRUCT_MNTTAB
|
|
+static our_mntent * getmntent(FILE *filep) {
|
|
+ static struct mnttab entry;
|
|
+ static our_mntent item;
|
|
+
|
|
+ if (!fread(&entry, sizeof(entry), 1, filep)) return NULL;
|
|
+ item.our_mntdir = entry.mt_filsys;
|
|
+
|
|
+ return &item;
|
|
+}
|
|
+#else
|
|
+static our_mntent *getmntent(FILE *filep) {
|
|
+ static our_mntent item = { NULL };
|
|
+ char buf[1024], * start;
|
|
+ char * chptr;
|
|
+
|
|
+ if (item.our_mntdir) {
|
|
+ free(item.our_mntdir);
|
|
+ }
|
|
+
|
|
+ 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.our_mntdir = strdup(start);
|
|
+ return &item;
|
|
+# endif
|
|
+ }
|
|
+
|
|
+ return NULL;
|
|
+}
|
|
+#endif
|
|
+#endif
|
|
+
|
|
struct fsinfo {
|
|
/*@only@*/ const char * mntPoint;
|
|
dev_t dev;
|
|
@@ -301,3 +367,5 @@ int rpmGetFilesystemUsage(const char **
|
|
|
|
return 0;
|
|
}
|
|
+
|
|
+
|