Mercurial > public > mercurial-scm > hg
comparison mercurial/osutil.c @ 31597:2d501fb60b2d
osutil: report fstype for BSD and OSX
author | Jun Wu <quark@fb.com> |
---|---|
date | Thu, 23 Mar 2017 22:13:02 -0700 |
parents | 102f291807c9 |
children | 2243ba216f66 |
comparison
equal
deleted
inserted
replaced
31596:ab51a2b18f87 | 31597:2d501fb60b2d |
---|---|
25 #include <sys/types.h> | 25 #include <sys/types.h> |
26 #include <unistd.h> | 26 #include <unistd.h> |
27 #ifdef HAVE_LINUX_MAGIC_H | 27 #ifdef HAVE_LINUX_MAGIC_H |
28 #include <linux/magic.h> | 28 #include <linux/magic.h> |
29 #endif | 29 #endif |
30 #ifdef HAVE_SYS_MOUNT_H | 30 #ifdef HAVE_BSD_STATFS |
31 #include <sys/mount.h> | 31 #include <sys/mount.h> |
32 #endif | |
33 #ifdef HAVE_SYS_PARAM_H | |
34 #include <sys/param.h> | 32 #include <sys/param.h> |
35 #endif | 33 #endif |
36 #ifdef HAVE_SYS_VFS_H | 34 #ifdef HAVE_SYS_VFS_H |
37 #include <sys/vfs.h> | 35 #include <sys/vfs.h> |
38 #endif | 36 #endif |
799 #endif /* ndef SETPROCNAME_USE_NONE */ | 797 #endif /* ndef SETPROCNAME_USE_NONE */ |
800 | 798 |
801 #ifdef HAVE_STATFS | 799 #ifdef HAVE_STATFS |
802 /* given a directory path, return filesystem type (best-effort), or None */ | 800 /* given a directory path, return filesystem type (best-effort), or None */ |
803 const char *getfstype(const char *path) { | 801 const char *getfstype(const char *path) { |
802 #ifdef HAVE_BSD_STATFS | |
803 /* need to return a string field */ | |
804 static struct statfs buf; | |
805 #else | |
804 struct statfs buf; | 806 struct statfs buf; |
807 #endif | |
805 int r; | 808 int r; |
806 memset(&buf, 0, sizeof(buf)); | 809 memset(&buf, 0, sizeof(buf)); |
807 r = statfs(path, &buf); | 810 r = statfs(path, &buf); |
808 if (r != 0) | 811 if (r != 0) |
809 return NULL; | 812 return NULL; |
813 #ifdef HAVE_BSD_STATFS | |
814 /* BSD or OSX provides a f_fstypename field */ | |
815 return buf.f_fstypename; | |
816 #endif | |
810 /* Begin of Linux filesystems */ | 817 /* Begin of Linux filesystems */ |
811 #ifdef ADFS_SUPER_MAGIC | 818 #ifdef ADFS_SUPER_MAGIC |
812 if (buf.f_type == ADFS_SUPER_MAGIC) | 819 if (buf.f_type == ADFS_SUPER_MAGIC) |
813 return "adfs"; | 820 return "adfs"; |
814 #endif | 821 #endif |