r3131: - make map_nt_error_from_unix() return NT_STATUS_UNSUCCESSFUL if errno is 0
authorAndrew Tridgell <tridge@samba.org>
Fri, 22 Oct 2004 06:49:27 +0000 (06:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:02:24 +0000 (13:02 -0500)
- more consistent checking for system call return values in simple backend
(This used to be commit 375a9a1347abf0b917cf94ea0cabcdea37d60e98)

source4/libcli/util/errormap.c
source4/ntvfs/simple/vfs_simple.c

index 482743b03b845d3f0454f2d2ef47b1b792c4202b..650dc55e50799ea8c8a9e4f9a97af7048b774863 100644 (file)
@@ -1534,13 +1534,13 @@ const struct unix_error_map unix_dos_nt_errmap[] = {
 /*********************************************************************
  Map an NT error code from a Unix error code.
 *********************************************************************/
-
 NTSTATUS map_nt_error_from_unix(int unix_error)
 {
        int i = 0;
 
-       if (unix_error == 0)
-               return NT_STATUS_OK;
+       if (unix_error == 0) {
+               return NT_STATUS_UNSUCCESSFUL;
+       }
 
        /* Look through list */
        while(unix_dos_nt_errmap[i].unix_error != 0) {
index f72d557b58d0136dcc6e31c369ed7d4b3a14e6be..faf8f17b780119e6fa73970c4a9ca96c8d1e7c4b 100644 (file)
@@ -262,8 +262,6 @@ static NTSTATUS svfs_qpathinfo(struct ntvfs_module_context *ntvfs,
        DEBUG(19,("svfs_qpathinfo: file %s\n", unix_path));
        if (stat(unix_path, &st) == -1) {
                DEBUG(19,("svfs_qpathinfo: file %s errno=%d\n", unix_path, errno));
-               if (errno == 0)
-                       errno = ENOENT;
                return map_nt_error_from_unix(errno);
        }
        DEBUG(19,("svfs_qpathinfo: file %s, stat done\n", unix_path));
@@ -290,8 +288,6 @@ static NTSTATUS svfs_qfileinfo(struct ntvfs_module_context *ntvfs,
        }
        
        if (fstat(info->generic.in.fnum, &st) == -1) {
-               if (errno == 0)
-                       errno = ENOENT;
                return map_nt_error_from_unix(errno);
        }
 
@@ -372,15 +368,11 @@ static NTSTATUS svfs_open(struct ntvfs_module_context *ntvfs,
 do_open:
        fd = open(unix_path, flags, 0644);
        if (fd == -1) {
-               if (errno == 0)
-                       errno = ENOENT;
                return map_nt_error_from_unix(errno);
        }
 
        if (fstat(fd, &st) == -1) {
                DEBUG(9,("svfs_open: fstat errno=%d\n", errno));
-               if (errno == 0)
-                       errno = ENOENT;
                close(fd);
                return map_nt_error_from_unix(errno);
        }
@@ -465,7 +457,7 @@ static NTSTATUS svfs_rename(struct ntvfs_module_context *ntvfs,
        unix_path1 = svfs_unix_path(ntvfs, req, ren->rename.in.pattern1);
        unix_path2 = svfs_unix_path(ntvfs, req, ren->rename.in.pattern2);
 
-       if (rename(unix_path1, unix_path2) != 0) {
+       if (rename(unix_path1, unix_path2) == -1) {
                return map_nt_error_from_unix(errno);
        }
        
@@ -593,7 +585,7 @@ static NTSTATUS svfs_close(struct ntvfs_module_context *ntvfs,
                return NT_STATUS_INVALID_HANDLE;
        }
 
-       if (close(io->close.in.fnum) != 0) {
+       if (close(io->close.in.fnum) == -1) {
                return map_nt_error_from_unix(errno);
        }
 
@@ -669,7 +661,7 @@ static NTSTATUS svfs_setfileinfo(struct ntvfs_module_context *ntvfs,
        case RAW_SFILEINFO_END_OF_FILE_INFO:
        case RAW_SFILEINFO_END_OF_FILE_INFORMATION:
                if (ftruncate(info->end_of_file_info.file.fnum, 
-                             info->end_of_file_info.in.size) != 0) {
+                             info->end_of_file_info.in.size) == -1) {
                        return map_nt_error_from_unix(errno);
                }
                break;
@@ -752,7 +744,7 @@ static NTSTATUS svfs_fsattr(struct ntvfs_module_context *ntvfs,
                return ntvfs_map_fsattr(req, fs, ntvfs);
        }
 
-       if (stat(private->connectpath, &st) != 0) {
+       if (stat(private->connectpath, &st) == -1) {
                return map_nt_error_from_unix(errno);
        }