summaryrefslogtreecommitdiff
path: root/source3/smbd/dir.c
diff options
context:
space:
mode:
authorHerb Lewis <herb@samba.org>2002-03-21 14:00:13 +0000
committerHerb Lewis <herb@samba.org>2002-03-21 14:00:13 +0000
commit1783dcd2f189d64514733e759bdecc68e86a95ea (patch)
tree89cc79056d1fbdf281ad9fc4a97cb9dd35316b2d /source3/smbd/dir.c
parent73c45a4a6fe0504b73bceef0a3c3b468f324825d (diff)
downloadsamba-1783dcd2f189d64514733e759bdecc68e86a95ea.tar.gz
samba-1783dcd2f189d64514733e759bdecc68e86a95ea.tar.bz2
samba-1783dcd2f189d64514733e759bdecc68e86a95ea.zip
return . and .. first in readdir - this fixes masktest on IRIX which
returns . then single letter files then .. then all other files. (This used to be commit d4d9361eec11f50c780ed4c79bc9775ac24d8c0e)
Diffstat (limited to 'source3/smbd/dir.c')
-rw-r--r--source3/smbd/dir.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
index 3a7b697d75..40b198ed72 100644
--- a/source3/smbd/dir.c
+++ b/source3/smbd/dir.c
@@ -729,10 +729,22 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto)
dirp->pos = dirp->numentries = dirp->mallocsize = 0;
dirp->data = dirp->current = NULL;
- while ((n = vfs_readdirname(conn, p)))
+ while (True)
{
int l;
+ if (used == 0) {
+ n = ".";
+ } else if (used == 2) {
+ n = "..";
+ } else {
+ n = vfs_readdirname(conn, p);
+ if (n == NULL)
+ break;
+ if ((strcmp(".",n) == 0) ||(strcmp("..",n) == 0))
+ continue;
+ }
+
l = strlen(n)+1;
/* If it's a vetoed file, pretend it doesn't even exist */