try to make Utility.Mounts portable
This is an unholy mashup, but it just might work. It works on Linux, that's all I've tested. :)
This commit is contained in:
parent
d5051ec088
commit
107a7b9388
7 changed files with 190 additions and 42 deletions
48
Utility/libmounts.h
Normal file
48
Utility/libmounts.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
/* Include appropriate headers for the OS, and define what will be used. */
|
||||
#if defined(__APPLE__)
|
||||
# include <sys/param.h>
|
||||
# include <sys/ucred.h>
|
||||
# include <sys/mount.h>
|
||||
/* In newer OSX versions, statfs64 is deprecated, in favor of statfs,
|
||||
* which is 64 bit only with a build option -- but statfs64 still works,
|
||||
* and this keeps older OSX also supported. */
|
||||
# define GETMNTINFOCALL getmntinfo64
|
||||
# define MNTINFOSTRUCT statfs64
|
||||
#else
|
||||
#if defined (__FreeBSD__)
|
||||
# include <sys/param.h>
|
||||
# include <sys/ucred.h>
|
||||
# include <sys/mount.h>
|
||||
# define GETMNTINFOCALL getmntinfo64
|
||||
# define MNTINFOSTRUCT statfs64
|
||||
#else
|
||||
#if defined (__linux__) || defined (__FreeBSD_kernel__)
|
||||
/* Linux or Debian kFreeBSD */
|
||||
#include <mntent.h>
|
||||
# define GETMNTENT
|
||||
#else
|
||||
# warning mounts listing code not available for this OS
|
||||
# define UNKNOWN
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#ifndef GETMNTENT
|
||||
#warning "boo"
|
||||
struct mntent {
|
||||
char *mnt_fsname;
|
||||
char *mnt_dir;
|
||||
char *mnt_type;
|
||||
char *mnt_opts; /* not filled in */
|
||||
int mnt_freq; /* not filled in */
|
||||
int mnt_passno; /* not filled in */
|
||||
};
|
||||
#endif
|
||||
|
||||
FILE *mounts_start (void);
|
||||
int mounts_end (FILE *fp);
|
||||
struct mntent *mounts_next (FILE *fp);
|
Loading…
Add table
Add a link
Reference in a new issue