aboutsummaryrefslogtreecommitdiffstats
path: root/plpnfsd
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2000-07-31 03:12:38 +0000
committerFritz Elfert <felfert@to.com>2000-07-31 03:12:38 +0000
commit7fb94ed43a814788cda019c1e77314abc1626339 (patch)
tree50b86a44e2809e6fbcdcd080f2a2dc4dbc37042e /plpnfsd
parentfbb17061d3c622f0786a5d9ad41e8ccd95ef706c (diff)
downloadplptools-7fb94ed43a814788cda019c1e77314abc1626339.tar.gz
plptools-7fb94ed43a814788cda019c1e77314abc1626339.tar.bz2
plptools-7fb94ed43a814788cda019c1e77314abc1626339.zip
Applied mjg-0.6 patch.
Started adding kdoc compliant documentation comments. Added PsiTime
Diffstat (limited to 'plpnfsd')
-rw-r--r--plpnfsd/main.cc18
-rw-r--r--plpnfsd/mp_mount.c3
-rw-r--r--plpnfsd/mp_pfs_ops.c48
-rw-r--r--plpnfsd/rfsv_api.h15
4 files changed, 54 insertions, 30 deletions
diff --git a/plpnfsd/main.cc b/plpnfsd/main.cc
index e322685..6bf0f01 100644
--- a/plpnfsd/main.cc
+++ b/plpnfsd/main.cc
@@ -46,14 +46,14 @@ long rfsv_dir(const char *file, dentry **e) {
ret = a->dir(&(*file), &entries);
while (!entries.empty()) {
bufferStore s;
- s = entries.popBuffer();
+ s = entries.pop();
tmp = *e;
*e = (dentry *)malloc(sizeof(dentry));
if (!*e)
return -1;
(*e)->time = s.getDWord(0);
(*e)->size = s.getDWord(4);
- (*e)->attr = s.getDWord(8);
+ (*e)->attr = a->attr2std(s.getDWord(8));
(*e)->name = strdup(s.getString(12));
(*e)->next = tmp;
}
@@ -138,7 +138,6 @@ static long rfsv_opencached(const char *name, long mode) {
}
long rfsv_read(char *buf, long offset, long len, char *name) {
- // FIXME: this might break on RFSV16?
long ret = 0;
if (!a)
@@ -161,7 +160,6 @@ long rfsv_read(char *buf, long offset, long len, char *name) {
}
long rfsv_write(char *buf, long offset, long len, char *name) {
- // FIXME: this might break on RFSV16?
long ret = 0;
if (!a)
@@ -196,7 +194,6 @@ long rfsv_setmtime(const char *name, long time) {
long rfsv_setsize(const char *name, long size) {
long ph;
long ret;
- // FIXME: this might break on RFSV16?
if (!a)
return -1;
@@ -215,14 +212,19 @@ long rfsv_setattr(const char *name, long sattr, long dattr) {
return -1;
if (a_filename && !strcmp(name, a_filename))
rfsv_closecached();
- long ret = a->fsetattr(name, dattr, sattr);
- return ret;
+ dattr = a->std2attr(dattr);
+ sattr = a->std2attr(sattr);
+ return a->fsetattr(name, dattr, sattr);
}
long rfsv_getattr(const char *name, long *attr, long *size, long *time) {
+ long res, psiattr;
+
if (!a)
return -1;
- return a->fgeteattr(&(*name), &(*attr), &(*size), &(*time));
+ res = a->fgeteattr(&(*name), &psiattr, &(*size), &(*time));
+ *attr = a->attr2std(psiattr);
+ return res;
}
long rfsv_statdev(char letter) {
diff --git a/plpnfsd/mp_mount.c b/plpnfsd/mp_mount.c
index f0a82d4..0f9e1e9 100644
--- a/plpnfsd/mp_mount.c
+++ b/plpnfsd/mp_mount.c
@@ -66,7 +66,7 @@ static char nfshost[128];
#ifndef __GLIBC__
#include <linux/fs.h> /* struct nfs_mount_data */
#endif
-#include <linux/nfs_mount.h> /* struct nfs_mount_data */
+#include "linux-misc.h" /* struct nfs_mount_data */
#include <arpa/inet.h> /* inet_addr() */
#endif
#ifdef _IBMR2
@@ -75,7 +75,6 @@ static char nfshost[128];
#include <sys/vmount.h>
#endif
-
#ifndef DONT_UPDATE_MTAB
#if defined(sun) && defined(__SVR4)
#include <sys/mnttab.h>
diff --git a/plpnfsd/mp_pfs_ops.c b/plpnfsd/mp_pfs_ops.c
index 669d435..71ed2e9 100644
--- a/plpnfsd/mp_pfs_ops.c
+++ b/plpnfsd/mp_pfs_ops.c
@@ -106,29 +106,35 @@ attr2pattr(long oattr, long nattr, long *psisattr, long *psidattr)
* work properly
*/
*psisattr = *psidattr = 0;
+ if ((oattr & 0400) != (nattr & 0400)) {
+ if (nattr & 0400) /* readable */
+ *psidattr |= PSI_A_READ;
+ else
+ *psisattr |= PSI_A_READ;
+ }
if ((oattr & 0200) != (nattr & 0200)) {
if (nattr & 0200) /* readonly */
- *psidattr |= 0x01;
+ *psidattr |= PSI_A_RDONLY;
else
- *psisattr |= 0x01;
+ *psisattr |= PSI_A_RDONLY;
}
if ((oattr & 0020) != (nattr & 0020)) {
if (nattr & 0020) /* group-write -> archive */
- *psisattr |= 0x20;
+ *psisattr |= PSI_A_ARCHIVE;
else
- *psidattr |= 0x20;
+ *psidattr |= PSI_A_ARCHIVE;
}
if ((oattr & 0004) != (nattr & 0004)) {
if (nattr & 0004) /* Not world-read -> hidden */
- *psidattr |= 0x02;
+ *psidattr |= PSI_A_HIDDEN;
else
- *psisattr |= 0x02;
+ *psisattr |= PSI_A_HIDDEN;
}
if ((oattr & 0002) != (nattr & 0002)) {
if (nattr & 0002) /* world-write -> system */
- *psisattr |= 0x04;
+ *psisattr |= PSI_A_SYSTEM;
else
- *psidattr |= 0x04;
+ *psidattr |= PSI_A_SYSTEM;
}
}
@@ -137,7 +143,7 @@ dpattr2attr(long psiattr, long size, long ftime, fattr *fp, int inode)
{
bzero((char *) fp, sizeof(*fp));
- if (psiattr & 0x10) {
+ if (psiattr & PSI_A_DIR) {
fp->type = NFDIR;
fp->mode = NFSMODE_DIR | 0700;
/*
@@ -159,17 +165,18 @@ dpattr2attr(long psiattr, long size, long ftime, fattr *fp, int inode)
* Following flags have to be set in order to let backups
* work properly
*/
+ if (psiattr & PSI_A_READ)
fp->mode |= 0400; /* File readable (?) */
- if (!(psiattr & 0x01))
+ if (!(psiattr & PSI_A_RDONLY))
fp->mode |= 0200; /* File writeable */
/* fp->mode |= 0100; File executable */
- if (!(psiattr & 0x02))
+ if (!(psiattr & PSI_A_HIDDEN))
fp->mode |= 0004; /* Not Hidden <-> world read */
- if (psiattr & 0x04)
+ if (psiattr & PSI_A_SYSTEM)
fp->mode |= 0002; /* System <-> world write */
- if (psiattr & 0x40)
+ if (psiattr & PSI_A_VOLUME)
fp->mode |= 0001; /* Volume <-> world exec */
- if (psiattr & 0x20)
+ if (psiattr & PSI_A_ARCHIVE)
fp->mode |= 0020; /* Modified <-> group write */
/* fp->mode |= 0040; Byte <-> group read */
/* fp->mode |= 0010; Text <-> group exec */
@@ -189,7 +196,7 @@ pattr2attr(long psiattr, long size, long ftime, fattr *fp, unsigned char *fh)
{
bzero((char *) fp, sizeof(*fp));
- if (psiattr & 0x10) {
+ if (psiattr & PSI_A_DIR) {
fp->type = NFDIR;
fp->mode = NFSMODE_DIR | 0700;
/*
@@ -211,17 +218,18 @@ pattr2attr(long psiattr, long size, long ftime, fattr *fp, unsigned char *fh)
* Following flags have to be set in order to let backups
* work properly
*/
+ if (psiattr & PSI_A_READ)
fp->mode |= 0400; /* File readable (?) */
- if (!(psiattr & 0x01))
+ if (!(psiattr & PSI_A_RDONLY))
fp->mode |= 0200; /* File writeable */
/* fp->mode |= 0100; File executable */
- if (!(psiattr & 0x02))
+ if (!(psiattr & PSI_A_HIDDEN))
fp->mode |= 0004; /* Not Hidden <-> world read */
- if (psiattr & 0x04)
+ if (psiattr & PSI_A_SYSTEM)
fp->mode |= 0002; /* System <-> world write */
- if (psiattr & 0x40)
+ if (psiattr & PSI_A_VOLUME)
fp->mode |= 0001; /* Volume <-> world exec */
- if (psiattr & 0x20)
+ if (psiattr & PSI_A_ARCHIVE)
fp->mode |= 0020; /* Modified <-> group write */
/* fp->mode |= 0040; Byte <-> group read */
/* fp->mode |= 0010; Text <-> group exec */
diff --git a/plpnfsd/rfsv_api.h b/plpnfsd/rfsv_api.h
index d4a996b..14c26d5 100644
--- a/plpnfsd/rfsv_api.h
+++ b/plpnfsd/rfsv_api.h
@@ -29,4 +29,19 @@ extern long rfsv_statdev(char letter);
extern long rfsv_isalive();
extern long rfsv_closecached(void);
+/* File attributes, C-style */
+#define PSI_A_RDONLY 0x0001
+#define PSI_A_HIDDEN 0x0002
+#define PSI_A_SYSTEM 0x0004
+#define PSI_A_DIR 0x0008
+#define PSI_A_ARCHIVE 0x0010
+#define PSI_A_VOLUME 0x0020
+#define PSI_A_NORMAL 0x0040
+#define PSI_A_TEMP 0x0080
+#define PSI_A_COMPRESSED 0x0100
+#define PSI_A_READ 0x0200
+#define PSI_A_EXEC 0x0400
+#define PSI_A_STREAM 0x0800
+#define PSI_A_TEXT 0x1000
+
#endif