diff options
author | Kirill Ponomarev <krion@FreeBSD.org> | 2003-08-26 20:24:22 +0000 |
---|---|---|
committer | Kirill Ponomarev <krion@FreeBSD.org> | 2003-08-26 20:24:22 +0000 |
commit | 0398cf082c5e2cc5b8592b91679d82cebed9deb2 (patch) | |
tree | 1688c0a2d7b72abece284a39ff76e75b92e44b0c /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.c | 88 |
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; +} |