Author: vlendec
Date: 2007-01-08 15:36:33 +0000 (Mon, 08 Jan 2007)
New Revision: 20612

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20612

Log:
A checkin I've wanted to do for ages: For bad_path==False set_bad_path_error
is equivalent to UNIX_ERROR. Expand the last reference. Lets see if I can kill
that as well :-)

Volker

Modified:
   branches/SAMBA_3_0/source/smbd/nttrans.c
   branches/SAMBA_3_0/source/smbd/reply.c
   branches/SAMBA_3_0/source/smbd/trans2.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/nttrans.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/nttrans.c    2007-01-08 15:26:17 UTC (rev 
20611)
+++ branches/SAMBA_3_0/source/smbd/nttrans.c    2007-01-08 15:36:33 UTC (rev 
20612)
@@ -639,8 +639,7 @@
        if (!check_name(fname,conn)) {
                restore_case_semantics(conn, file_attributes);
                END_PROFILE(SMBntcreateX);
-               return set_bad_path_error(errno, False, outbuf,
-                                         ERRDOS,ERRbadpath);
+               return UNIXERROR(ERRDOS, ERRbadpath);
        }
 
 #if 0
@@ -1266,7 +1265,7 @@
        /* All file access must go through check_name() */
        if (!check_name(fname,conn)) {
                restore_case_semantics(conn, file_attributes);
-               return set_bad_path_error(errno, False, outbuf, 
ERRDOS,ERRbadpath);
+               return UNIXERROR(ERRDOS, ERRbadpath);
        }
     
 #if 0

Modified: branches/SAMBA_3_0/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/reply.c      2007-01-08 15:26:17 UTC (rev 
20611)
+++ branches/SAMBA_3_0/source/smbd/reply.c      2007-01-08 15:36:33 UTC (rev 
20612)
@@ -948,8 +948,7 @@
   
        if (!ok) {
                END_PROFILE(SMBgetatr);
-               return set_bad_path_error(errno, False, outbuf,
-                                         ERRDOS,ERRbadfile);
+               return UNIXERROR(ERRDOS, ERRbadfile);
        }
  
        outsize = set_message(outbuf,10,0,True);
@@ -1024,15 +1023,13 @@
 
                if (file_set_dosmode(conn,fname,mode,&sbuf,False) != 0) {
                        END_PROFILE(SMBsetatr);
-                       return set_bad_path_error(errno, False, outbuf,
-                                                 ERRDOS, ERRnoaccess);
+                       return UNIXERROR(ERRDOS, ERRnoaccess);
                }
        }
 
        if (!set_filetime(conn,fname,mtime)) {
                END_PROFILE(SMBsetatr);
-               return set_bad_path_error(errno, False, outbuf,
-                                         ERRDOS, ERRnoaccess);
+               return UNIXERROR(ERRDOS, ERRnoaccess);
        }
  
        outsize = set_message(outbuf,0,0,False);
@@ -1212,7 +1209,10 @@
                        if (dptr_num < 0) {
                                if(dptr_num == -2) {
                                        END_PROFILE(SMBsearch);
-                                       return set_bad_path_error(errno, 
bad_path, outbuf, ERRDOS, ERRnofids);
+                                       if ((errno == ENOENT) && bad_path) {
+                                               return 
ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
+                                       }
+                                       return UNIXERROR(ERRDOS, ERRnofids);
                                }
                                END_PROFILE(SMBsearch);
                                return ERROR_DOS(ERRDOS,ERRnofids);
@@ -4007,8 +4007,7 @@
   
        if (!ok) {
                END_PROFILE(SMBrmdir);
-               return set_bad_path_error(errno, False, outbuf,
-                                         ERRDOS, ERRbadpath);
+               return UNIXERROR(ERRDOS, ERRbadpath);
        }
  
        outsize = set_message(outbuf,0,0,False);

Modified: branches/SAMBA_3_0/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/trans2.c     2007-01-08 15:26:17 UTC (rev 
20611)
+++ branches/SAMBA_3_0/source/smbd/trans2.c     2007-01-08 15:36:33 UTC (rev 
20612)
@@ -807,8 +807,7 @@
        }
     
        if (!check_name(fname,conn)) {
-               return set_bad_path_error(errno, False, outbuf,
-                                         ERRDOS, ERRnoaccess);
+               return UNIXERROR(ERRDOS, ERRnoaccess);
        }
 
        if (open_ofun == 0) {
@@ -1726,8 +1725,7 @@
                return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
        }
        if(!check_name(directory,conn)) {
-               return set_bad_path_error(errno, False, outbuf,
-                                         ERRDOS,ERRbadpath);
+               return UNIXERROR(ERRDOS, ERRbadpath);
        }
 
        p = strrchr_m(directory,'/');
@@ -2704,21 +2702,6 @@
        return outsize;
 }
 
-/****************************************************************************
- Utility function to set bad path error.
-****************************************************************************/
-
-int set_bad_path_error(int err, BOOL bad_path, char *outbuf, int def_class, 
uint32 def_code)
-{
-       DEBUG(10,("set_bad_path_error: err = %d bad_path = %d\n",
-                       err, (int)bad_path ));
-
-       if ((err == ENOENT) && bad_path) {
-               return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
-       }
-       return UNIXERROR(def_class,def_code);
-}
-
 #if defined(HAVE_POSIX_ACLS)
 /****************************************************************************
  Utility function to count the number of entries in a POSIX acl.
@@ -2908,14 +2891,11 @@
                                /* Always do lstat for UNIX calls. */
                                if (SMB_VFS_LSTAT(conn,fname,&sbuf)) {
                                        DEBUG(3,("call_trans2qfilepathinfo: 
SMB_VFS_LSTAT of %s failed (%s)\n",fname,strerror(errno)));
-                                       return set_bad_path_error(
-                                               errno, False, outbuf,
-                                               ERRDOS,ERRbadpath);
+                                       return UNIXERROR(ERRDOS, ERRbadpath);
                                }
                        } else if (SMB_VFS_STAT(conn,fname,&sbuf)) {
                                DEBUG(3,("call_trans2qfilepathinfo: 
SMB_VFS_STAT of %s failed (%s)\n",fname,strerror(errno)));
-                               return set_bad_path_error(errno, False, outbuf,
-                                                         ERRDOS,ERRbadpath);
+                               return UNIXERROR(ERRDOS, ERRbadpath);
                        }
 
                        delete_pending = get_delete_on_close_flag(sbuf.st_dev, 
sbuf.st_ino);
@@ -2959,21 +2939,18 @@
                }
                if (!check_name(fname,conn)) {
                        DEBUG(3,("call_trans2qfilepathinfo: fileinfo of %s 
failed (%s)\n",fname,strerror(errno)));
-                       return set_bad_path_error(errno, False, outbuf,
-                                                 ERRDOS,ERRbadpath);
+                       return UNIXERROR(ERRDOS, ERRbadpath);
                }
 
                if (INFO_LEVEL_IS_UNIX(info_level)) {
                        /* Always do lstat for UNIX calls. */
                        if (SMB_VFS_LSTAT(conn,fname,&sbuf)) {
                                DEBUG(3,("call_trans2qfilepathinfo: 
SMB_VFS_LSTAT of %s failed (%s)\n",fname,strerror(errno)));
-                               return set_bad_path_error(errno, False, outbuf,
-                                                         ERRDOS,ERRbadpath);
+                               return UNIXERROR(ERRDOS, ERRbadpath);
                        }
                } else if (!VALID_STAT(sbuf) && SMB_VFS_STAT(conn,fname,&sbuf) 
&& (info_level != SMB_INFO_IS_NAME_VALID)) {
                        DEBUG(3,("call_trans2qfilepathinfo: SMB_VFS_STAT of %s 
failed (%s)\n",fname,strerror(errno)));
-                       return set_bad_path_error(errno, False, outbuf,
-                                                 ERRDOS,ERRbadpath);
+                       return UNIXERROR(ERRDOS, ERRbadpath);
                }
 
                delete_pending = get_delete_on_close_flag(sbuf.st_dev, 
sbuf.st_ino);
@@ -3819,8 +3796,7 @@
                        pstrcpy(fname, fsp->fsp_name);
                        if (SMB_VFS_STAT(conn,fname,&sbuf) != 0) {
                                DEBUG(3,("call_trans2setfilepathinfo: fileinfo 
of %s failed (%s)\n",fname,strerror(errno)));
-                               return set_bad_path_error(errno, False, outbuf,
-                                                         ERRDOS,ERRbadpath);
+                               return UNIXERROR(ERRDOS, ERRbadpath);
                        }
                } else if (fsp && fsp->print_file) {
                        /*
@@ -3872,13 +3848,11 @@
 
                if(!VALID_STAT(sbuf) && !INFO_LEVEL_IS_UNIX(info_level)) {
                        DEBUG(3,("call_trans2setfilepathinfo: stat of %s failed 
(%s)\n", fname, strerror(errno)));
-                       return set_bad_path_error(errno, False, outbuf,
-                                                 ERRDOS,ERRbadpath);
+                       return UNIXERROR(ERRDOS, ERRbadpath);
                }    
 
                if(!check_name(fname, conn)) {
-                       return set_bad_path_error(errno, False, outbuf,
-                                                 ERRDOS,ERRbadpath);
+                       return UNIXERROR(ERRDOS, ERRbadpath);
                }
 
        }
@@ -4871,8 +4845,7 @@
 
        if (!check_name(directory,conn)) {
                DEBUG(5,("call_trans2mkdir error (%s)\n", strerror(errno)));
-               return set_bad_path_error(errno, False, outbuf, ERRDOS,
-                                         ERRnoaccess);
+               return UNIXERROR(ERRDOS, ERRnoaccess);
        }
 
        status = create_directory(conn, directory);

Reply via email to