#include <stdio.h>
#include <sys/mount.h>
#include <errno.h>
#include <string.h>
#include <linux/fs.h>

void mountusage (char *);
void umountusage (char *);

int main(int argc, char **argv) {

  int retval=0;
  static char *fs_name = "simfs";
  int mntopt=0;
  char *program;

/*  mntopt |= MS_NOATIME; */
/*  mntopt |= MS_NOEXEC;  */
/*  mntopt |= MS_NOSUID;  */
/*  mntopt |= MS_NODEV;  */

  program=strrchr(argv[0], '/');
  if(program!=NULL)
    program++;
  else
    program=argv[0];

  if(!strstr(program, "umount")) {
    if(argc==3) {
      char *fs_src = argv[1];
      char *fs_dest = argv[2];
      if((fs_dest[0]!='-')&&(fs_src[0]!='-')) {
        if(mount(fs_src, fs_dest, fs_name, mntopt, fs_src)) {
          printf("Can't mount %s on %s\n", fs_src, fs_dest);
          retval=errno;
        }
      } else {
        mountusage(program);
        retval=1;
      }
    } else {
      mountusage(program);
      retval=1;
    }
  } else {
    if(argc==2) {
      char *fs_dest = argv[1];
      if(fs_dest[0]!='-') {
        if(umount(fs_dest)) {
          printf("Can't umount: %s\n", fs_dest);
          retval=errno;
        }
      } else {
        umountusage(program);
        retval=1;
      }
    } else {
      umountusage(program);
      retval=1;
    }
  }
  return(retval);
}

void mountusage (char *program) {
  printf("Usage: %s /source/dir /destination/mountpoint\n", program);
}

void umountusage (char *program) {
  printf("Usage: %s /destination/mountpoint\n", program);
}

