diff options
author | 2012-07-19 20:38:58 -0400 | |
---|---|---|
committer | 2012-07-19 20:38:58 -0400 | |
commit | 107a7b9388077a2b7fe9ce107da3a4a5fa396e2e (patch) | |
tree | 687326521de2b4da5b38ef9d3facae9f5aa63ab2 /Utility/libmounts.h | |
parent | d5051ec088a443d0fbc0979d0421e62c60ec13f8 (diff) |
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. :)
Diffstat (limited to 'Utility/libmounts.h')
-rw-r--r-- | Utility/libmounts.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Utility/libmounts.h b/Utility/libmounts.h new file mode 100644 index 000000000..0bd52e323 --- /dev/null +++ b/Utility/libmounts.h @@ -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); |