aboutsummaryrefslogtreecommitdiffstats
path: root/plpnfsd/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'plpnfsd/main.cc')
-rw-r--r--plpnfsd/main.cc84
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);
}