1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-21 04:06:46 +00:00
freebsd-ports/editors/manedit/files/mntent_compat.c
Kirill Ponomarev 0398cf082c - Update to version 0.5.10
PR:		56001
Submitted by:	Ports Fury
2003-08-26 20:24:22 +00:00

89 lines
3.4 KiB
C

#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;
}