123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- $OpenBSD: patch-lib_fs_c,v 1.2 2010/05/19 13:45:15 espie Exp $
- --- lib/fs.c.orig Wed Jun 14 14:34:30 2000
- +++ lib/fs.c Wed May 19 13:05:05 2010
- @@ -3,6 +3,73 @@
- #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
- +#define getmntent internal_getmntent
- +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 +368,5 @@ int rpmGetFilesystemUsage(const char ** fileList, int_
-
- return 0;
- }
- +
- +
|