Update of /cvsroot/linux-decnet/dnprogs/dapfs
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7176
Modified Files:
Makefile dapfs.c dapfs_dap.cc
Log Message:
More stuff
Index: Makefile
===================================================================
RCS file: /cvsroot/linux-decnet/dnprogs/dapfs/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** Makefile 12 Oct 2005 10:31:31 -0000 1.2
--- Makefile 28 Oct 2005 15:14:54 -0000 1.3
***************
*** 11,14 ****
--- 11,16 ----
all: $(PROG1)
+ CFLAGS=-g
+
$(PROG1): $(PROG1OBJS) $(DEPLIBS)
g++ -o$(PROG1) $(PROG1OBJS) -lrms -lfuse
Index: dapfs.c
===================================================================
RCS file: /cvsroot/linux-decnet/dnprogs/dapfs/dapfs.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -r1.9 -r1.10
*** dapfs.c 27 Oct 2005 09:18:41 -0000 1.9
--- dapfs.c 28 Oct 2005 15:14:54 -0000 1.10
***************
*** 35,40 ****
#include "filenames.h"
- /* Copied from dncopy */
-
struct dapfs_handle
{
--- 35,38 ----
***************
*** 131,164 ****
}
! static int dapfs_rmdir(const char *path)
{
! char dirname[strlen(path)+7];
!
! sprintf(dirname, "%s.DIR;1", path);
! return dap_delete_file(dirname);
}
!
! static int dapfs_rename(const char *from, const char *to)
{
! return dap_rename_file(from, to);
}
!
! int dapfs_chmod(const char *path, mode_t mode)
{
- // Can we do this ??
return 0;
}
! int dapfs_chown(const char *path, uid_t u, gid_t g)
{
! // Can we do this ??
! return 0;
}
! static int dapfs_flush(const char *path, struct fuse_file_info *fi)
{
! // NO-OP
! return 0;
}
--- 129,172 ----
}
! /* We can't do chown/chmod/utime but don't error as the user gets annoyed */
! static int dapfs_chown(const char *path, uid_t u, gid_t g)
{
! return 0;
}
! static int dapfs_chmod(const char *path, mode_t m)
{
! return 0;
}
! static int dapfs_utime(const char *path, struct utimbuf *u)
{
return 0;
}
! static int dapfs_rmdir(const char *path)
{
! char dirname[strlen(path)+7];
! char fullname[VMSNAME_LEN];
! char vmsname[VMSNAME_LEN];
! char reply[BUFLEN];
! int len;
!
! /* Try the object first. if that fails then
! use DAP. This is because the VMS protection on
! directories can be problematic */
! make_vms_filespec(path, vmsname, 0);
!
! sprintf(fullname, "REMOVE %s.DIR;1", vmsname);
! len = get_object_info(fullname, reply);
! if (len == 2) // "OK"
! return 0;
!
! sprintf(dirname, "%s.DIR;1", path);
! return dap_delete_file(dirname);
}
! static int dapfs_rename(const char *from, const char *to)
{
! return dap_rename_file(from, to);
}
***************
*** 210,224 ****
return -EINVAL;
- syslog(1, "dir = %s, vmsname: %s\n", path, vmsname);
-
*lastbracket = '.';
if (vmsname[strlen(vmsname)-1] == '.')
vmsname[strlen(vmsname)-1] = '\0';
strcat(vmsname, "]");
-
sprintf(fullname, "CREATE %s", vmsname);
-
len = get_object_info(fullname, reply);
if (len != 2) // "OK"
--- 218,230 ----
return -EINVAL;
*lastbracket = '.';
+
+ /* make_vms_filespec() often leaves a trailing dot */
if (vmsname[strlen(vmsname)-1] == '.')
vmsname[strlen(vmsname)-1] = '\0';
strcat(vmsname, "]");
sprintf(fullname, "CREATE %s", vmsname);
len = get_object_info(fullname, reply);
if (len != 2) // "OK"
***************
*** 253,257 ****
/* This gets called for normal files too... */
! // TODO mode is ignored.
static int dapfs_mknod(const char *path, mode_t mode, dev_t dev)
{
--- 259,263 ----
/* This gets called for normal files too... */
! /* Note, mode is ignored */
static int dapfs_mknod(const char *path, mode_t mode, dev_t dev)
{
***************
*** 331,335 ****
/* This can be quite slow, because it reads records.
! However, it's safer this way as we can make sense of sequential files. */
do {
res = rms_read(h->rmsh, buf+got, size-got, &rab);
--- 337,342 ----
/* This can be quite slow, because it reads records.
! However, it's safer this way as we can make sense of sequential files
! */
do {
res = rms_read(h->rmsh, buf+got, size-got, &rab);
***************
*** 434,441 ****
.rename = dapfs_rename,
.mknod = dapfs_mknod,
- .chmod = dapfs_chmod,
- .chown = dapfs_chown,
.mkdir = dapfs_mkdir,
! .flush = dapfs_flush,
.statfs = dapfs_statfs,
.release = dapfs_release,
--- 441,448 ----
.rename = dapfs_rename,
.mknod = dapfs_mknod,
.mkdir = dapfs_mkdir,
! .chown = dapfs_chown,
! .chmod = dapfs_chmod,
! .utime = dapfs_utime,
.statfs = dapfs_statfs,
.release = dapfs_release,
Index: dapfs_dap.cc
===================================================================
RCS file: /cvsroot/linux-decnet/dnprogs/dapfs/dapfs_dap.cc,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** dapfs_dap.cc 27 Oct 2005 08:50:21 -0000 1.6
--- dapfs_dap.cc 28 Oct 2005 15:14:54 -0000 1.7
***************
*** 40,44 ****
}
- // Use this for one-shot stuff like getattr & delete
static dap_connection conn(0);
--- 40,43 ----
***************
*** 224,228 ****
{
dap_status_message *sm = (dap_status_message *)m;
! if (sm->get_code() == 0x4030)
{
dap_contran_message cm;
--- 223,227 ----
{
dap_status_message *sm = (dap_status_message *)m;
! if (sm->get_code() == 0x4030) // Locked
{
dap_contran_message cm;
***************
*** 236,240 ****
else
{
! ret = -ENOENT; // TODO better error
// Clean connection status.
dap_contran_message cm;
--- 235,240 ----
else
{
! ret = -ENOENT; // TODO better error ??
!
// Clean connection status.
dap_contran_message cm;
***************
*** 242,247 ****
if (!cm.write(conn)) {
restart_dap();
! delete m;
! return -EIO;
}
}
--- 242,246 ----
if (!cm.write(conn)) {
restart_dap();
! ret = -EIO;
}
}
***************
*** 264,268 ****
int ret;
- // Use our own connection for this.
ret = dap_connect(c);
if (ret)
--- 263,266 ----
***************
*** 424,427 ****
--- 422,426 ----
{
case dap_message::ACCOMP:
+ delete m;
goto end;
break;
***************
*** 430,435 ****
{
dap_status_message *sm = (dap_status_message *)m;
! if (sm->get_code() & 1 != 1)
! ret = -EPERM; // Default error!
goto end;
}
--- 429,434 ----
{
dap_status_message *sm = (dap_status_message *)m;
! ret = -EPERM; // Default error!
! delete m;
goto end;
}
***************
*** 438,441 ****
--- 437,441 ----
delete m;
}
+
end:
return ret;
***************
*** 496,499 ****
int dap_init()
{
! return dap_connect(conn);
}
--- 496,505 ----
int dap_init()
{
! struct accessdata_dn accessdata;
! char node[BUFLEN], filespec[VMSNAME_LEN];
!
! if (dap_connect(conn))
! return -ENOTCONN;
!
! return 0;
}
|