summaryrefslogtreecommitdiff
path: root/editors/manedit/files/mntent_compat.c
diff options
context:
space:
mode:
authorKirill Ponomarev <krion@FreeBSD.org>2003-08-26 20:24:22 +0000
committerKirill Ponomarev <krion@FreeBSD.org>2003-08-26 20:24:22 +0000
commit0398cf082c5e2cc5b8592b91679d82cebed9deb2 (patch)
tree1688c0a2d7b72abece284a39ff76e75b92e44b0c /editors/manedit/files/mntent_compat.c
parent- Update to version 5.5.6 (diff)
- Update to version 0.5.10
PR: 56001 Submitted by: Ports Fury
Notes
Notes: svn path=/head/; revision=87742
Diffstat (limited to 'editors/manedit/files/mntent_compat.c')
-rw-r--r--editors/manedit/files/mntent_compat.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/editors/manedit/files/mntent_compat.c b/editors/manedit/files/mntent_compat.c
new file mode 100644
index 000000000000..9112983e61e6
--- /dev/null
+++ b/editors/manedit/files/mntent_compat.c
@@ -0,0 +1,88 @@
+#include "mntent.h"
+#include <sys/param.h>
+//#include <sys/ucred.h>
+#include <sys/mount.h>
+#include <fstab.h>
+
+struct statfs *getmntent_mntbufp;
+int getmntent_mntcount = 0;
+int getmntent_mntpos = 0;
+char mntent_global_opts[256];
+struct mntent mntent_global_mntent;
+
+FILE * setmntent(char * filep, char * type)
+{
+ getmntent_mntpos = 0;
+ getmntent_mntcount = getmntinfo(&getmntent_mntbufp, MNT_WAIT);
+ return (FILE *)1; // dummy
+}
+
+void getmntent_addopt(char ** c, const char * s)
+{
+ int i = strlen(s);
+ *(*c)++ = ',';
+ strcpy(*c, s);
+ *c += i;
+}
+
+struct mntent *getmntent(FILE * filep)
+{
+ char *c = mntent_global_opts+2;
+ struct fstab *fst;
+ if (getmntent_mntpos >= getmntent_mntcount)
+ return 0;
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_RDONLY) strcpy(mntent_global_opts, "ro");
+ else strcpy(mntent_global_opts, "rw");
+
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_SYNCHRONOUS) getmntent_addopt(&c, "sync");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOEXEC) getmntent_addopt(&c, "noexec");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOSUID) getmntent_addopt(&c, "nosuid");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NODEV) getmntent_addopt(&c, "nodev");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_UNION) getmntent_addopt(&c, "union");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_ASYNC) getmntent_addopt(&c, "async");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOATIME) getmntent_addopt(&c, "noatime");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOCLUSTERR) getmntent_addopt(&c, "noclusterr");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOCLUSTERW) getmntent_addopt(&c, "noclusterw");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOSYMFOLLOW) getmntent_addopt(&c, "nosymfollow");
+ if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_SUIDDIR) getmntent_addopt(&c, "suiddir");
+
+ mntent_global_mntent.mnt_fsname = getmntent_mntbufp[getmntent_mntpos].f_mntfromname;
+ mntent_global_mntent.mnt_dir = getmntent_mntbufp[getmntent_mntpos].f_mntonname;
+ mntent_global_mntent.mnt_type = getmntent_mntbufp[getmntent_mntpos].f_fstypename;
+ mntent_global_mntent.mnt_opts = mntent_global_opts;
+ if ((fst = getfsspec(getmntent_mntbufp[getmntent_mntpos].f_mntfromname)))
+ {
+ mntent_global_mntent.mnt_freq = fst->fs_freq;
+ mntent_global_mntent.mnt_passno = fst->fs_passno;
+ }
+ else if ((fst = getfsfile(getmntent_mntbufp[getmntent_mntpos].f_mntonname)))
+ {
+ mntent_global_mntent.mnt_freq = fst->fs_freq;
+ mntent_global_mntent.mnt_passno = fst->fs_passno;
+ }
+ else if (strcmp(getmntent_mntbufp[getmntent_mntpos].f_fstypename, "ufs") == 0)
+ {
+ if (strcmp(getmntent_mntbufp[getmntent_mntpos].f_mntonname, "/") == 0)
+ {
+ mntent_global_mntent.mnt_freq = 1;
+ mntent_global_mntent.mnt_passno = 1;
+ }
+ else
+ {
+ mntent_global_mntent.mnt_freq = 2;
+ mntent_global_mntent.mnt_passno = 2;
+ }
+ }
+ else
+ {
+ mntent_global_mntent.mnt_freq = 0;
+ mntent_global_mntent.mnt_passno = 0;
+ }
+ ++getmntent_mntpos;
+ return & mntent_global_mntent;
+}
+
+int endmntent(FILE * filep)
+{
+ return 0;
+}