From 21fbf694d06ac7a947c9092e08c3d225983e960a Mon Sep 17 00:00:00 2001 From: ZoRo Date: Tue, 16 Jun 2020 20:56:19 +0100 Subject: Init --- Makefile | 2 ++ nmount.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 Makefile create mode 100644 nmount.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..217284f --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +make: + gcc nmount.c -o nmount \ No newline at end of file diff --git a/nmount.c b/nmount.c new file mode 100644 index 0000000..a51664b --- /dev/null +++ b/nmount.c @@ -0,0 +1,117 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +///////////////////////////////////////////////////////////////////////////////////////// +/*FLAGS FROM KERNEL*/ + +//#define MS_RDONLY 1 /* Mount read-only */ +//#define MS_NOSUID 2 /* Ignore suid and sgid bits */ +//#define MS_NODEV 4 /* Disallow access to device special files */ +//#define MS_NOEXEC 8 /* Disallow program execution */ +//#define MS_SYNCHRONOUS 16 /* Writes are synced at once */ +//#define MS_REMOUNT 32 /* Alter flags of a mounted FS */ +//#define MS_MANDLOCK 64 /* Allow mandatory locks on an FS */ +//#define MS_DIRSYNC 128 /* Directory modifications are synchronous */ +//#define MS_NOATIME 1024 /* Do not update access times. */ +//#define MS_NODIRATIME 2048 /* Do not update directory access times */ +//#define MS_BIND 4096 +//#define MS_MOVE 8192 +//#define MS_REC 16384 +//#define MS_VERBOSE 32768 /* War is peace. Verbosity is silence. +// MS_VERBOSE is deprecated. */ +//#define MS_SILENT 32768 +//#define MS_POSIXACL (1<<16) /* VFS does not apply the umask */ +//#define MS_UNBINDABLE (1<<17) /* change to unbindable */ +//#define MS_PRIVATE (1<<18) /* change to private */ +//#define MS_SLAVE (1<<19) /* change to slave */ +//#define MS_SHARED (1<<20) /* change to shared */ +//#define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */ +//#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ +//#define MS_I_VERSION (1<<23) /* Update inode I_version field */ +//#define MS_STRICTATIME (1<<24) /* Always perform atime updates */ +//#define MS_LAZYTIME (1<<25) /* Update the on-disk [acm]times lazily */ + + +typedef struct { + int f_output; //show statistics of pipe + int f_stopzero; //stop if 0 bytes in input + int f_nowriteout; // dont write to output + int f_graphmode; //show graph +} mount_params; + +static mount_params g_params; + +void helper(char *progname) +{ + printf("Usage: %s [OPTS]\n\n" + "Version: 0.0.1 \n" + "\n" + , progname); +} + +void sig_handler(int signo) +{ + switch(signo) + { + case SIGINT: + //printf("Catch SIGINT Exit\n"); + //if (g_params.f_output) + //{ + // printf("Data in %d bytes Data out %d bytes",g_stats.cnt_in,g_stats.cnt_out); + //} + default: + printf("Unknown signal %d\n",signo); + } + exit(0); +} + +int smount(const char *source, const char *target, + const char *filesystemtype, unsigned long mountflags, + const void *data); + +int main(int argc, char **argv) +{ + int c; + + printf("One big real mount\n"); + + if (signal(SIGINT,sig_handler) == SIG_ERR) + { + printf("cannot register signal handler\n"); + exit(1); + } + + //process arguments + while ((c = getopt(argc, argv, "osng")) != -1) + { + switch (c) + { + case 'v': + //g_params.f_output = 1; + break; + + default: + helper(argv[0]); + exit(1); + } + } + + return 0; +} + +int smount( + const char *source, + const char *target, + const char *filesystemtype, + unsigned long mountflags, + const void *data) +{ + + return 0; +} -- cgit v1.2.3