r6022: Fix for bug #2533. Incorrect dir listings from OS/2 clients.
authorJeremy Allison <jra@samba.org>
Thu, 24 Mar 2005 02:23:32 +0000 (02:23 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:56:16 +0000 (10:56 -0500)
Jeremy.
(This used to be commit cf8949f684ee9adcd35d56d923b2f5733efc05ac)

source3/lib/util.c
source3/smbd/dir.c

index 8db7bb38ab5f3981e29b48eb976df60d2f7537a6..cd30ef9814b7f29fab46cd33cf3f384f406c3895 100644 (file)
@@ -641,7 +641,9 @@ void make_dir_struct(char *buf, const char *mask, const char *fname,SMB_OFF_T si
        put_dos_date(buf,22,date);
        SSVAL(buf,26,size & 0xFFFF);
        SSVAL(buf,28,(size >> 16)&0xFFFF);
-       push_ascii(buf+30,fname,12,0);
+       /* We only uppercase if the protocol is downrev.
+          Strange, but verified on W2K3. Needed for OS/2. JRA. */
+       push_ascii(buf+30,fname,12,Protocol < PROTOCOL_NT1 ? STR_UPPER : 0);
        DEBUG(8,("put name [%s] from [%s] into dir struct\n",buf+30, fname));
 }
 
index 1ec35d839c24718b07f76fd71e07ff5cf9d5f8ae..6ecdcec461f924cada570a2ced35fbfad863bbd4 100644 (file)
@@ -713,16 +713,11 @@ BOOL get_dir_entry(connection_struct *conn,char *mask,int dirtype, pstring fname
        SMB_STRUCT_STAT sbuf;
        pstring path;
        pstring pathreal;
-       BOOL isrootdir;
        pstring filename;
        BOOL needslash;
 
        *path = *pathreal = *filename = 0;
 
-       isrootdir = (strequal(conn->dirpath,"./") ||
-                       strequal(conn->dirpath,".") ||
-                       strequal(conn->dirpath,"/"));
-  
        needslash = ( conn->dirpath[strlen(conn->dirpath) -1] != '/');
 
        if (!conn->dirptr)
@@ -747,8 +742,6 @@ BOOL get_dir_entry(connection_struct *conn,char *mask,int dirtype, pstring fname
                if ((strcmp(mask,"*.*") == 0) ||
                    mask_match(filename,mask,False) ||
                    mangle_mask_match(conn,filename,mask)) {
-                       if (isrootdir && (strequal(filename,"..") || strequal(filename,".")))
-                               continue;
 
                        if (!mangle_is_8_3(filename, False))
                                mangle_map(filename,True,False,SNUM(conn));