svn commit: samba r15763 - in trunk/source: rpc_server smbd
vlendec at samba.org
vlendec at samba.org
Sat May 20 20:33:40 GMT 2006
Author: vlendec
Date: 2006-05-20 20:33:40 +0000 (Sat, 20 May 2006)
New Revision: 15763
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=15763
Log:
Change open_file_stat not to use set_saved_ntstatus.
Volker
Modified:
trunk/source/rpc_server/srv_srvsvc_nt.c
trunk/source/smbd/dir.c
trunk/source/smbd/open.c
Changeset:
Modified: trunk/source/rpc_server/srv_srvsvc_nt.c
===================================================================
--- trunk/source/rpc_server/srv_srvsvc_nt.c 2006-05-20 19:38:01 UTC (rev 15762)
+++ trunk/source/rpc_server/srv_srvsvc_nt.c 2006-05-20 20:33:40 UTC (rev 15763)
@@ -1870,10 +1870,10 @@
goto error_exit;
}
- fsp = open_file_stat(conn, filename, &st);
- if (!fsp) {
+ nt_status = open_file_stat(conn, filename, &st, &fsp);
+ if (!NT_STATUS_IS_OK(nt_status)) {
/* Perhaps it is a directory */
- if (errno == EISDIR)
+ if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_IS_A_DIRECTORY))
fsp = open_directory(conn, filename, &st,
READ_CONTROL_ACCESS,
FILE_SHARE_READ|FILE_SHARE_WRITE,
@@ -1986,11 +1986,11 @@
}
- fsp = open_file_stat(conn, filename, &st);
+ nt_status = open_file_stat(conn, filename, &st, &fsp);
- if (!fsp) {
+ if (!NT_STATUS_IS_OK(nt_status)) {
/* Perhaps it is a directory */
- if (errno == EISDIR)
+ if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_IS_A_DIRECTORY))
fsp = open_directory(conn, filename, &st,
FILE_READ_ATTRIBUTES,
FILE_SHARE_READ|FILE_SHARE_WRITE,
Modified: trunk/source/smbd/dir.c
===================================================================
--- trunk/source/smbd/dir.c 2006-05-20 19:38:01 UTC (rev 15762)
+++ trunk/source/smbd/dir.c 2006-05-20 20:33:40 UTC (rev 15763)
@@ -867,7 +867,9 @@
0, /* no create options. */
NULL);
} else {
- fsp = open_file_stat(conn, name, pst);
+ if (!NT_STATUS_IS_OK(open_file_stat(conn, name, pst, &fsp))) {
+ return False;
+ }
}
if (!fsp) {
Modified: trunk/source/smbd/open.c
===================================================================
--- trunk/source/smbd/open.c 2006-05-20 19:38:01 UTC (rev 15762)
+++ trunk/source/smbd/open.c 2006-05-20 20:33:40 UTC (rev 15763)
@@ -2037,23 +2037,24 @@
Open a pseudo-file (no locking checks - a 'stat' open).
****************************************************************************/
-files_struct *open_file_stat(connection_struct *conn, char *fname,
- SMB_STRUCT_STAT *psbuf)
+NTSTATUS open_file_stat(connection_struct *conn, char *fname,
+ SMB_STRUCT_STAT *psbuf, files_struct **result)
{
files_struct *fsp = NULL;
NTSTATUS status;
- if (!VALID_STAT(*psbuf))
- return NULL;
+ if (!VALID_STAT(*psbuf)) {
+ return NT_STATUS_INVALID_PARAMETER;
+ }
/* Can't 'stat' open directories. */
- if(S_ISDIR(psbuf->st_mode))
- return NULL;
+ if(S_ISDIR(psbuf->st_mode)) {
+ return NT_STATUS_FILE_IS_A_DIRECTORY;
+ }
status = file_new(conn, &fsp);
- if(!fsp) {
- set_saved_ntstatus(status);
- return NULL;
+ if(!NT_STATUS_IS_OK(status)) {
+ return status;
}
DEBUG(5,("open_file_stat: 'opening' file %s\n", fname));
@@ -2080,7 +2081,8 @@
conn->num_files_open++;
- return fsp;
+ *result = fsp;
+ return NT_STATUS_OK;
}
/****************************************************************************
More information about the samba-cvs
mailing list