patch-2.3.41 linux/fs/ncpfs/dir.c
Next file: linux/fs/ncpfs/file.c
Previous file: linux/fs/namei.c
Back to the patch index
Back to the overall index
- Lines: 39
- Date:
Tue Jan 25 14:09:28 2000
- Orig file:
v2.3.40/linux/fs/ncpfs/dir.c
- Orig date:
Wed Dec 8 14:11:27 1999
diff -u --recursive --new-file v2.3.40/linux/fs/ncpfs/dir.c linux/fs/ncpfs/dir.c
@@ -868,6 +868,7 @@
struct ncp_server *server = NCP_SERVER(dir);
struct ncp_entry_info finfo;
int error, result, len = dentry->d_name.len + 1;
+ int opmode;
__u8 __name[len];
PPRINTK("ncp_create_new: creating %s/%s, mode=%x\n",
@@ -886,15 +887,22 @@
result = ncp_open_create_file_or_subdir(server, dir, __name,
OC_MODE_CREATE | OC_MODE_OPEN | OC_MODE_REPLACE,
attributes, AR_READ | AR_WRITE, &finfo);
- if (!result) {
- finfo.access = O_RDWR;
- error = ncp_instantiate(dir, dentry, &finfo);
- } else {
- if (result == 0x87) error = -ENAMETOOLONG;
- DPRINTK("ncp_create: %s/%s failed\n",
- dentry->d_parent->d_name.name, dentry->d_name.name);
+ opmode = O_RDWR;
+ if (result) {
+ result = ncp_open_create_file_or_subdir(server, dir, __name,
+ OC_MODE_CREATE | OC_MODE_OPEN | OC_MODE_REPLACE,
+ attributes, AR_WRITE, &finfo);
+ if (result) {
+ if (result == 0x87)
+ error = -ENAMETOOLONG;
+ DPRINTK("ncp_create: %s/%s failed\n",
+ dentry->d_parent->d_name.name, dentry->d_name.name);
+ goto out;
+ }
+ opmode = O_WRONLY;
}
-
+ finfo.access = opmode;
+ error = ncp_instantiate(dir, dentry, &finfo);
out:
return error;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)