Ignore:
Timestamp:
May 24, 2009, 7:45:16 AM (17 years ago)
Author:
Herwig Bauernfeind
Message:

Update Samba 3.3 branch to 3.3.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.3.x/source/modules/vfs_acl_tdb.c

    r206 r222  
    183183        struct file_id id;
    184184        struct db_context *db;
     185
    185186        SMB_STRUCT_STAT sbuf;
    186187
     
    189190
    190191        if (fsp && fsp->fh->fd != -1) {
    191                 if (SMB_VFS_FSTAT(fsp, &sbuf) == -1) {
    192                         return map_nt_error_from_unix(errno);
    193                 }
     192                ret = SMB_VFS_FSTAT(fsp, &sbuf);
    194193        } else {
    195                 if (SMB_VFS_STAT(handle->conn, name, &sbuf) == -1) {
    196                         return map_nt_error_from_unix(errno);
    197                 }
    198         }
     194                if (fsp && fsp->posix_open) {
     195                        ret = SMB_VFS_LSTAT(handle->conn, name, &sbuf);
     196                } else {
     197                        ret = SMB_VFS_STAT(handle->conn, name, &sbuf);
     198                }
     199        }
     200
     201        if (ret == -1) {
     202                return map_nt_error_from_unix(errno);
     203        }
     204
    199205        id = vfs_file_id_from_sbuf(handle->conn, &sbuf);
    200206
     
    266272        struct db_context *db;
    267273        struct db_record *rec;
     274
    268275
    269276        DEBUG(10,("store_acl_blob_fsp: storing blob length %u on file %s\n",
     
    274281
    275282        if (fsp->fh->fd != -1) {
    276                 if (SMB_VFS_FSTAT(fsp, &sbuf) == -1) {
    277                         return map_nt_error_from_unix(errno);
    278                 }
     283                ret = SMB_VFS_FSTAT(fsp, &sbuf);
    279284        } else {
    280                 if (SMB_VFS_STAT(handle->conn, fsp->fsp_name, &sbuf) == -1) {
    281                         return map_nt_error_from_unix(errno);
    282                 }
    283         }
     285                if (fsp->posix_open) {
     286                        ret = SMB_VFS_LSTAT(handle->conn, fsp->fsp_name, &sbuf);
     287                } else {
     288                        ret = SMB_VFS_STAT(handle->conn, fsp->fsp_name, &sbuf);
     289                }
     290        }
     291
     292        if (ret == -1) {
     293                return map_nt_error_from_unix(errno);
     294        }
     295
    284296        id = vfs_file_id_from_sbuf(handle->conn, &sbuf);
    285297
     
    311323        struct db_context *db;
    312324        struct db_record *rec;
     325
    313326
    314327        DEBUG(10,("store_acl_blob_pathname: storing blob "
     
    319332                return NT_STATUS_INTERNAL_DB_CORRUPTION);
    320333
    321         if (SMB_VFS_STAT(handle->conn, fname, &sbuf) == -1) {
     334        if (lp_posix_pathnames()) {
     335                ret = SMB_VFS_LSTAT(handle->conn, fname, &sbuf);
     336        } else {
     337                ret = SMB_VFS_STAT(handle->conn, fname, &sbuf);
     338        }
     339
     340        if (ret == -1) {
    322341                return map_nt_error_from_unix(errno);
    323342        }
     
    490509                        ret = SMB_VFS_FSTAT(fsp, &sbuf);
    491510                } else {
    492                         ret = SMB_VFS_STAT(handle->conn,fname, &sbuf);
     511                        if (fsp && fsp->posix_open) {
     512                                ret = SMB_VFS_LSTAT(handle->conn,fname, &sbuf);
     513                        } else {
     514                                ret = SMB_VFS_STAT(handle->conn,fname, &sbuf);
     515                        }
    493516                }
    494517                if (ret == -1) {
     
    579602        SMB_STRUCT_STAT sbuf;
    580603        struct db_context *db;
    581         int ret;
     604        int ret;
    582605
    583606        SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, return -1);
    584607
    585         if (SMB_VFS_STAT(handle->conn, path, &sbuf) == -1) {
     608        if (lp_posix_pathnames()) {
     609                ret = SMB_VFS_LSTAT(handle->conn, path, &sbuf);
     610        } else {
     611                ret = SMB_VFS_STAT(handle->conn, path, &sbuf);
     612        }
     613
     614        if (ret == -1) {
    586615                return -1;
    587616        }
     
    622651        SMB_STRUCT_STAT sbuf;
    623652        struct db_context *db;
    624         int ret;
     653        int ret;
    625654
    626655        SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, return -1);
    627656
    628         if (SMB_VFS_STAT(handle->conn, path, &sbuf) == -1) {
     657        if (lp_posix_pathnames()) {
     658                ret = SMB_VFS_LSTAT(handle->conn, path, &sbuf);
     659        } else {
     660                ret = SMB_VFS_STAT(handle->conn, path, &sbuf);
     661        }
     662
     663        if (ret == -1) {
    629664                return -1;
    630665        }
     
    724759                }
    725760                if (fsp->is_directory || fsp->fh->fd == -1) {
    726                         ret = SMB_VFS_STAT(fsp->conn,fsp->fsp_name, &sbuf);
     761                        if (fsp->posix_open) {
     762                                ret = SMB_VFS_LSTAT(fsp->conn,fsp->fsp_name, &sbuf);
     763                        } else {
     764                                ret = SMB_VFS_STAT(fsp->conn,fsp->fsp_name, &sbuf);
     765                        }
    727766                } else {
    728767                        ret = SMB_VFS_FSTAT(fsp, &sbuf);
     
    809848        SMB_STRUCT_STAT sbuf;
    810849        struct db_context *db;
    811         int ret;
     850        int ret;
    812851
    813852        SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, return -1);
    814853
    815         if (SMB_VFS_STAT(handle->conn, path, &sbuf) == -1) {
     854        if (lp_posix_pathnames()) {
     855                ret = SMB_VFS_LSTAT(handle->conn, path, &sbuf);
     856        } else {
     857                ret = SMB_VFS_STAT(handle->conn, path, &sbuf);
     858        }
     859
     860        if (ret == -1) {
    816861                return -1;
    817862        }
     
    844889
    845890        if (fsp->is_directory || fsp->fh->fd == -1) {
    846                 ret = SMB_VFS_STAT(fsp->conn,fsp->fsp_name, &sbuf);
     891                if (fsp->posix_open) {
     892                        ret = SMB_VFS_LSTAT(fsp->conn,fsp->fsp_name, &sbuf);
     893                } else {
     894                        ret = SMB_VFS_STAT(fsp->conn,fsp->fsp_name, &sbuf);
     895                }
    847896        } else {
    848897                ret = SMB_VFS_FSTAT(fsp, &sbuf);
Note: See TracChangeset for help on using the changeset viewer.