diff options
Diffstat (limited to 'plpnfsd/main.cc')
-rw-r--r-- | plpnfsd/main.cc | 84 |
1 files changed, 31 insertions, 53 deletions
diff --git a/plpnfsd/main.cc b/plpnfsd/main.cc index 6924dca..c63ec36 100644 --- a/plpnfsd/main.cc +++ b/plpnfsd/main.cc @@ -23,6 +23,7 @@ #include <string.h> #include <stdlib.h> #include <stdio.h> +#include <signal.h> #include "defs.h" #include "bool.h" @@ -34,18 +35,13 @@ extern "C" { #include "rfsv_api.h" } -static rfsv32 *a = 0L; -static ppsocket *skt = 0L; +static rfsv32 *a; long rfsv_isalive() { - if (!a) - return 0; return (a->getStatus() == 0); } long rfsv_dir(const char *file, dentry **e) { - if (!a) - return -1; bufferArray entries; dentry *tmp; long ret = a->dir(&(*file), &entries); @@ -66,14 +62,10 @@ long rfsv_dir(const char *file, dentry **e) { } long rfsv_dircount(const char *file, long *count) { - if (!a) - return -1; return a->dircount(&(*file), &(*count)); } long rfsv_rmdir(const char *name) { - if (!a) - return -1; return a->rmdir(name); } @@ -84,20 +76,14 @@ long rfsv_mkdir(const char *file) { } long rfsv_remove(const char *file) { - if (!a) - return -1; return a->remove(file); } long rfsv_fclose(long handle) { - if (!a) - return -1; return a->fclose(handle); } long rfsv_fopen(long attr, const char *file, long *handle) { - if (!a) - return -1; long ph; long ret = a->fopen(attr, file, ph); *handle = ph; @@ -105,8 +91,6 @@ long rfsv_fopen(long attr, const char *file, long *handle) { } long rfsv_fcreate(long attr, const char *file, long *handle) { - if (!a) - return -1; long ph; long ret = a->fcreatefile(attr, file, ph); *handle = ph; @@ -114,8 +98,6 @@ long rfsv_fcreate(long attr, const char *file, long *handle) { } long rfsv_read(char *buf, long offset, long len, long handle) { - if (!a) - return -1; long ret = a->fseek(handle, offset, rfsv32::PSI_SEEK_SET); if (ret >= 0) ret = a->fread(handle, buf, len); @@ -123,8 +105,6 @@ long rfsv_read(char *buf, long offset, long len, long handle) { } long rfsv_write(char *buf, long offset, long len, long handle) { - if (!a) - return -1; long ret = a->fseek(handle, offset, rfsv32::PSI_SEEK_SET); if (ret >= 0) ret = a->fwrite(handle, buf, len); @@ -132,14 +112,10 @@ long rfsv_write(char *buf, long offset, long len, long handle) { } long rfsv_setmtime(const char *name, long time) { - if (!a) - return -1; return a->fsetmtime(name, time); } long rfsv_setsize(const char *name, long size) { - if (!a) - return -1; long ph; long ret = a->fopen(rfsv32::PSI_OMODE_READ_WRITE, name, ph); if (!ret) { @@ -150,20 +126,14 @@ long rfsv_setsize(const char *name, long size) { } long rfsv_setattr(const char *name, long sattr, long dattr) { - if (!a) - return -1; return a->fsetattr(name, dattr, sattr); } long rfsv_getattr(const char *name, long *attr, long *size, long *time) { - if (!a) - return -1; return a->fgeteattr(&(*name), &(*attr), &(*size), &(*time)); } long rfsv_statdev(char letter) { - if (!a) - return -1; long vfree, vtotal, vattr, vuniqueid; int devnum = letter - 'A'; char *name; @@ -173,14 +143,10 @@ long rfsv_statdev(char letter) { } long rfsv_rename(const char *oldname, const char *newname) { - if (!a) - return -1; return a->rename(oldname, newname); } long rfsv_drivelist(int *cnt, device **dlist) { - if (!a) - return -1; *dlist = NULL; long devbits; long ret; @@ -209,26 +175,38 @@ long rfsv_drivelist(int *cnt, device **dlist) { return ret; } -void rfsv_startup() +void usage() { - bool res; + cerr << "usage: plpnfsd [-v] [-V] [-p port] [-d mountdir] [-u user]\n"; + exit(1); +} - if (a) { - delete a; - a = 0L; - } - if (skt) { - delete skt; - skt = 0L; +int main(int argc, char**argv) { + ppsocket *skt; + char *user = 0L; + char *mdir = DDIR; + int sockNum = DPORT; + int verbose = 0; + + for (int i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-p") && i + 1 < argc) { + sockNum = atoi(argv[++i]); + } else if (!strcmp(argv[i], "-d") && i + 1 < argc) { + mdir = argv[++i]; + } else if (!strcmp(argv[i], "-u") && i + 1 < argc) { + user = argv[++i]; + } else if (!strcmp(argv[i], "-v")) { + verbose++; + } else if (!strcmp(argv[i], "-V")) { + cout << "plpnfsd version " << VERSION << endl; + exit(0); + } else + usage(); } + + signal(SIGPIPE, SIG_IGN); skt = new ppsocket(); - skt->startup(); - res = skt->connect(NULL, DPORT); + skt->connect(NULL, sockNum); a = new rfsv32(skt); -} - -int main(int argc, char**argv) { - char *mp_args[] = { "mp_main", "-v", "-dir", "/mnt/psion", NULL }; - mp_main(4, mp_args); - return 0; + return mp_main(verbose, mdir, user); } |