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