smbd: Remove the offset argument from ReadDirName()
authorVolker Lendecke <vl@samba.org>
Sat, 10 Jun 2023 13:29:35 +0000 (15:29 +0200)
committerJeremy Allison <jra@samba.org>
Tue, 13 Jun 2023 23:33:39 +0000 (23:33 +0000)
Nobody does anything with this anymore, we just call ReadDirName() in
sequence or do a RewindDir(). So we don't have to look at offsets as
given by the file system anymore.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
12 files changed:
source3/modules/vfs_ceph_snapshots.c
source3/modules/vfs_fruit.c
source3/modules/vfs_shadow_copy.c
source3/modules/vfs_streams_depot.c
source3/smbd/close.c
source3/smbd/dir.c
source3/smbd/filename.c
source3/smbd/msdfs.c
source3/smbd/proto.h
source3/smbd/smb1_trans2.c
source3/torture/cmd_vfs.c
source3/torture/vfstest.h

index c981cebd8a21d7affbe6d17e0d0934981bfb2993..c09b1895f88202d9d433f0ed8508bfe7a690c5ec 100644 (file)
@@ -221,7 +221,6 @@ static int ceph_snap_enum_snapdir(struct vfs_handle_struct *handle,
        struct files_struct *dirfsp = NULL;
        const char *dname = NULL;
        char *talloced = NULL;
-       long offset = 0;
        NTSTATUS status;
        int ret;
        uint32_t slots;
@@ -265,7 +264,7 @@ static int ceph_snap_enum_snapdir(struct vfs_handle_struct *handle,
        sc_data->num_volumes = 0;
        sc_data->labels = NULL;
 
-        while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))
+        while ((dname = ReadDirName(dir_hnd, NULL, &talloced))
               != NULL)
        {
                if (ISDOT(dname) || ISDOTDOT(dname)) {
@@ -518,7 +517,6 @@ static int ceph_snap_gmt_convert_dir(struct vfs_handle_struct *handle,
        struct files_struct *dirfsp = NULL;
        const char *dname = NULL;
        char *talloced = NULL;
-       long offset = 0;
        struct smb_filename *snaps_dname = NULL;
        const char *snapdir = lp_parm_const_string(SNUM(handle->conn),
                                                   "ceph", "snapdir",
@@ -589,7 +587,7 @@ static int ceph_snap_gmt_convert_dir(struct vfs_handle_struct *handle,
                goto err_out;
        }
 
-        while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))
+        while ((dname = ReadDirName(dir_hnd, NULL, &talloced))
               != NULL)
        {
                struct smb_filename *smb_fname = NULL;
index ce5ae38505e8d0b1e3a8d92038a9630446b2fba3..8be6b4c7791d7f64785a4d63bd61979443ac6b7f 100644 (file)
@@ -5188,7 +5188,6 @@ static bool fruit_get_num_bands(vfs_handle_struct *handle,
        struct smb_Dir *dir_hnd = NULL;
        const char *dname = NULL;
        char *talloced = NULL;
-       long offset = 0;
        size_t nbands;
        NTSTATUS status;
 
@@ -5225,7 +5224,7 @@ static bool fruit_get_num_bands(vfs_handle_struct *handle,
 
        nbands = 0;
 
-        while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))
+        while ((dname = ReadDirName(dir_hnd, NULL, &talloced))
               != NULL)
        {
                if (ISDOT(dname) || ISDOTDOT(dname)) {
@@ -5336,7 +5335,6 @@ static uint64_t fruit_disk_free(vfs_handle_struct *handle,
        struct smb_Dir *dir_hnd = NULL;
        const char *dname = NULL;
        char *talloced = NULL;
-       long offset = 0;
        uint64_t dfree;
        uint64_t dsize;
        bool ok;
@@ -5367,7 +5365,7 @@ static uint64_t fruit_disk_free(vfs_handle_struct *handle,
                return UINT64_MAX;
        }
 
-        while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))
+        while ((dname = ReadDirName(dir_hnd, NULL, &talloced))
               != NULL)
        {
                ok = fruit_tmsize_do_dirent(handle, &state, dname);
index 29163b179f7476fdc411d6363cea39eada997ef6..36545ee05f5d5e8f2d11828a18ed6c3b625fddda 100644 (file)
@@ -178,7 +178,6 @@ static int shadow_copy_get_shadow_copy_data(vfs_handle_struct *handle,
        struct smb_Dir *dir_hnd = NULL;
        const char *dname = NULL;
        char *talloced = NULL;
-       long offset = 0;
        NTSTATUS status;
        struct smb_filename *smb_fname = synthetic_smb_fname(talloc_tos(),
                                                fsp->conn->connectpath,
@@ -211,7 +210,7 @@ static int shadow_copy_get_shadow_copy_data(vfs_handle_struct *handle,
                SHADOW_COPY_LABEL *tlabels;
                int ret;
 
-               dname = ReadDirName(dir_hnd, &offset, NULL, &talloced);
+               dname = ReadDirName(dir_hnd, NULL, &talloced);
                if (dname == NULL) {
                        break;
                }
index 83019fa07da38ee2b3b2ae197162f1c6fe1def9a..08c3114771cee96f30177f2ea0a4d68d347f787f 100644 (file)
@@ -508,7 +508,6 @@ static NTSTATUS walk_streams(vfs_handle_struct *handle,
        struct smb_filename *dir_smb_fname = NULL;
        struct smb_Dir *dir_hnd = NULL;
        const char *dname = NULL;
-       long offset = 0;
        char *talloced = NULL;
        NTSTATUS status;
 
@@ -564,7 +563,7 @@ static NTSTATUS walk_streams(vfs_handle_struct *handle,
                return status;
        }
 
-        while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))
+        while ((dname = ReadDirName(dir_hnd, NULL, &talloced))
               != NULL)
        {
                if (ISDOT(dname) || ISDOTDOT(dname)) {
index d1e893257809e8a0bb95a05cec7b5c08a57684ff..38c2a5ac73e1a55157310d7dba11a6c3fc2be6ce 100644 (file)
@@ -949,7 +949,6 @@ NTSTATUS recursive_rmdir(TALLOC_CTX *ctx,
 {
        const char *dname = NULL;
        char *talloced = NULL;
-       long offset = 0;
        struct smb_Dir *dir_hnd = NULL;
        struct files_struct *dirfsp = NULL;
        int retval;
@@ -969,7 +968,7 @@ NTSTATUS recursive_rmdir(TALLOC_CTX *ctx,
 
        dirfsp = dir_hnd_fetch_fsp(dir_hnd);
 
-       while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))) {
+       while ((dname = ReadDirName(dir_hnd, NULL, &talloced))) {
                struct smb_filename *atname = NULL;
                struct smb_filename *smb_dname_full = NULL;
                char *fullname = NULL;
@@ -1072,7 +1071,6 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, struct files_struct *fsp)
        struct smb_filename *at_fname = NULL;
        const char *dname = NULL;
        char *talloced = NULL;
-       long dirpos = 0;
        struct smb_Dir *dir_hnd = NULL;
        struct files_struct *dirfsp = NULL;
        int unlink_flags = 0;
@@ -1172,7 +1170,7 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, struct files_struct *fsp)
        dirfsp = dir_hnd_fetch_fsp(dir_hnd);
 
        while ((dname = ReadDirName(
-                       dir_hnd, &dirpos, NULL, &talloced)) != NULL) {
+                       dir_hnd, NULL, &talloced)) != NULL) {
                struct smb_filename *smb_dname_full = NULL;
                struct smb_filename *direntry_fname = NULL;
                char *fullname = NULL;
@@ -1318,10 +1316,10 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, struct files_struct *fsp)
        }
 
        /* Do a recursive delete. */
-       RewindDir(dir_hnd,&dirpos);
+       RewindDir(dir_hnd);
 
        while ((dname = ReadDirName(
-                       dir_hnd, &dirpos, NULL, &talloced)) != NULL) {
+                       dir_hnd, NULL, &talloced)) != NULL) {
                struct smb_filename *direntry_fname = NULL;
                struct smb_filename *smb_dname_full = NULL;
                char *fullname = NULL;
index e28f04b0fe713d04d00db6b36e932ea4880a0a09..9435d6930119bcb78e992849d2fe1ff8b1a820a1 100644 (file)
@@ -43,7 +43,6 @@
 struct smb_Dir {
        connection_struct *conn;
        DIR *dir;
-       long offset;
        struct smb_filename *dir_smb_fname;
        unsigned int file_number;
        bool case_sensitive;
@@ -82,9 +81,6 @@ static NTSTATUS OpenDir_fsp(
 
 static int smb_Dir_destructor(struct smb_Dir *dir_hnd);
 
-static void SeekDir(struct smb_Dir *dirp, long offset);
-static long TellDir(struct smb_Dir *dirp);
-
 #define INVALID_DPTR_KEY (-3)
 
 /****************************************************************************
@@ -355,18 +351,12 @@ void dptr_CloseDir(files_struct *fsp)
 
 void dptr_RewindDir(struct dptr_struct *dptr)
 {
-       long offset;
-       RewindDir(dptr->dir_hnd, &offset);
+       RewindDir(dptr->dir_hnd);
        dptr->did_stat = false;
        TALLOC_FREE(dptr->overflow.fname);
        TALLOC_FREE(dptr->overflow.smb_fname);
 }
 
-long dptr_TellDir(struct dptr_struct *dptr)
-{
-       return TellDir(dptr->dir_hnd);
-}
-
 unsigned int dptr_FileNumber(struct dptr_struct *dptr)
 {
        return dptr->dir_hnd->file_number;
@@ -403,7 +393,6 @@ bool dptr_case_sensitive(struct dptr_struct *dptr)
 
 char *dptr_ReadDirName(TALLOC_CTX *ctx,
                       struct dptr_struct *dptr,
-                      long *poffset,
                       SMB_STRUCT_STAT *pst)
 {
        struct smb_Dir *dir_hnd = dptr->dir_hnd;
@@ -419,8 +408,7 @@ char *dptr_ReadDirName(TALLOC_CTX *ctx,
        if (dptr->has_wild) {
                const char *name_temp = NULL;
                char *talloced = NULL;
-
-               name_temp = ReadDirName(dir_hnd, poffset, pst, &talloced);
+               name_temp = ReadDirName(dir_hnd, pst, &talloced);
                if (name_temp == NULL) {
                        return NULL;
                }
@@ -564,7 +552,6 @@ bool smbd_dirptr_get_entry(TALLOC_CTX *ctx,
        slashlen = ( dpath[pathlen-1] != '/') ? 1 : 0;
 
        while (true) {
-               long cur_offset;
                SMB_STRUCT_STAT sbuf = { 0 };
                char *dname = NULL;
                bool isdots;
@@ -577,14 +564,13 @@ bool smbd_dirptr_get_entry(TALLOC_CTX *ctx,
                bool get_dosmode = get_dosmode_in;
                bool ok;
 
-               cur_offset = dptr_TellDir(dirptr);
-               dname = dptr_ReadDirName(ctx, dirptr, &cur_offset, &sbuf);
+               dname = dptr_ReadDirName(ctx, dirptr, &sbuf);
 
-               DBG_DEBUG("dir [%s] dirptr [0x%lx] offset [%ld] => "
+               DBG_DEBUG("dir [%s] dirptr [0x%lx] offset [%u] => "
                          "dname [%s]\n",
                          smb_fname_str_dbg(dir_hnd->dir_smb_fname),
                          (long)dirptr,
-                         cur_offset,
+                         dirptr->dir_hnd->file_number,
                          dname ? dname : "(finished)");
 
                if (dname == NULL) {
@@ -1275,50 +1261,34 @@ static NTSTATUS OpenDir_fsp(
  Don't check for veto or invisible files.
 ********************************************************************/
 
-const char *ReadDirName(struct smb_Dir *dir_hnd, long *poffset,
+const char *ReadDirName(struct smb_Dir *dir_hnd,
                        SMB_STRUCT_STAT *sbuf, char **ptalloced)
 {
        const char *n;
        char *talloced = NULL;
        connection_struct *conn = dir_hnd->conn;
 
-       /* Cheat to allow . and .. to be the first entries returned. */
-       if (((*poffset == START_OF_DIRECTORY_OFFSET) ||
-            (*poffset == DOT_DOT_DIRECTORY_OFFSET)) &&
-           (dir_hnd->file_number < 2))
-       {
+       if (dir_hnd->file_number < 2) {
                if (dir_hnd->file_number == 0) {
                        n = ".";
-                       *poffset = dir_hnd->offset = START_OF_DIRECTORY_OFFSET;
                } else {
                        n = "..";
-                       *poffset = dir_hnd->offset = DOT_DOT_DIRECTORY_OFFSET;
                }
                dir_hnd->file_number++;
                *ptalloced = NULL;
                return n;
        }
 
-       if (*poffset == END_OF_DIRECTORY_OFFSET) {
-               *poffset = dir_hnd->offset = END_OF_DIRECTORY_OFFSET;
-               return NULL;
-       }
-
-       /* A real offset, seek to it. */
-       SeekDir(dir_hnd, *poffset);
-
        while ((n = vfs_readdirname(conn, dir_hnd->fsp, dir_hnd->dir, sbuf, &talloced))) {
                /* Ignore . and .. - we've already returned them. */
                if (ISDOT(n) || ISDOTDOT(n)) {
                        TALLOC_FREE(talloced);
                        continue;
                }
-               *poffset = dir_hnd->offset = SMB_VFS_TELLDIR(conn, dir_hnd->dir);
                *ptalloced = talloced;
                dir_hnd->file_number++;
                return n;
        }
-       *poffset = dir_hnd->offset = END_OF_DIRECTORY_OFFSET;
        *ptalloced = NULL;
        return NULL;
 }
@@ -1327,59 +1297,10 @@ const char *ReadDirName(struct smb_Dir *dir_hnd, long *poffset,
  Rewind to the start.
 ********************************************************************/
 
-void RewindDir(struct smb_Dir *dir_hnd, long *poffset)
+void RewindDir(struct smb_Dir *dir_hnd)
 {
        SMB_VFS_REWINDDIR(dir_hnd->conn, dir_hnd->dir);
        dir_hnd->file_number = 0;
-       dir_hnd->offset = START_OF_DIRECTORY_OFFSET;
-       *poffset = START_OF_DIRECTORY_OFFSET;
-}
-
-/*******************************************************************
- Seek a dir.
-********************************************************************/
-
-static void SeekDir(struct smb_Dir *dirp, long offset)
-{
-       if (offset == dirp->offset) {
-               /*
-                * Nothing to do
-                */
-               return;
-       }
-
-       if (offset == START_OF_DIRECTORY_OFFSET) {
-               RewindDir(dirp, &offset);
-               /*
-                * Ok we should really set the file number here
-                * to 1 to enable ".." to be returned next. Trouble
-                * is I'm worried about callers using SeekDir(dirp,0)
-                * as equivalent to RewindDir(). So leave this alone
-                * for now.
-                */
-       } else if  (offset == DOT_DOT_DIRECTORY_OFFSET) {
-               RewindDir(dirp, &offset);
-               /*
-                * Set the file number to 2 - we want to get the first
-                * real file entry (the one we return after "..")
-                * on the next ReadDir.
-                */
-               dirp->file_number = 2;
-       } else if (offset == END_OF_DIRECTORY_OFFSET) {
-               ; /* Don't seek in this case. */
-       } else {
-               SMB_VFS_SEEKDIR(dirp->conn, dirp->dir, offset);
-       }
-       dirp->offset = offset;
-}
-
-/*******************************************************************
- Tell a dir position.
-********************************************************************/
-
-static long TellDir(struct smb_Dir *dir_hnd)
-{
-       return(dir_hnd->offset);
 }
 
 struct files_below_forall_state {
@@ -1505,7 +1426,6 @@ bool have_file_open_below(connection_struct *conn,
 NTSTATUS can_delete_directory_fsp(files_struct *fsp)
 {
        NTSTATUS status = NT_STATUS_OK;
-       long dirpos = 0;
        const char *dname = NULL;
        char *talloced = NULL;
        struct connection_struct *conn = fsp->conn;
@@ -1517,7 +1437,7 @@ NTSTATUS can_delete_directory_fsp(files_struct *fsp)
                return status;
        }
 
-       while ((dname = ReadDirName(dir_hnd, &dirpos, NULL, &talloced))) {
+       while ((dname = ReadDirName(dir_hnd, NULL, &talloced))) {
                struct smb_filename *smb_dname_full = NULL;
                struct smb_filename *direntry_fname = NULL;
                char *fullname = NULL;
index a5ee0392bae4b855414b13346b4d4a3a0a7da309..963251c40edbf5d69fee5d194f052ffafeb77d6a 100644 (file)
@@ -277,7 +277,6 @@ NTSTATUS get_real_filename_full_scan_at(struct files_struct *dirfsp,
        const char *dname = NULL;
        char *talloced = NULL;
        char *unmangled_name = NULL;
-       long curpos;
        NTSTATUS status;
 
        /* If we have a case-sensitive filesystem, it doesn't do us any
@@ -324,8 +323,7 @@ NTSTATUS get_real_filename_full_scan_at(struct files_struct *dirfsp,
        }
 
        /* now scan for matching names */
-       curpos = 0;
-       while ((dname = ReadDirName(cur_dir, &curpos, NULL, &talloced))) {
+       while ((dname = ReadDirName(cur_dir, NULL, &talloced))) {
 
                /* Is it dot or dot dot. */
                if (ISDOT(dname) || ISDOTDOT(dname)) {
index dfb801a3f553a1b1972e15ac823bc87eb862660c..2487ea18c94df94ffaf4a798940817f357d8a848 100644 (file)
@@ -1485,7 +1485,6 @@ static size_t count_dfs_links(TALLOC_CTX *ctx,
        NTSTATUS status;
        struct smb_filename *smb_fname = NULL;
        struct smb_Dir *dir_hnd = NULL;
-       long offset = 0;
 
        if(*connect_path == '\0') {
                TALLOC_FREE(frame);
@@ -1539,7 +1538,7 @@ static size_t count_dfs_links(TALLOC_CTX *ctx,
                goto out;
        }
 
-        while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))
+        while ((dname = ReadDirName(dir_hnd, NULL, &talloced))
               != NULL)
        {
                struct smb_filename *smb_dname =
@@ -1591,7 +1590,6 @@ static int form_junctions(TALLOC_CTX *ctx,
        struct referral *ref = NULL;
        struct smb_filename *smb_fname = NULL;
        struct smb_Dir *dir_hnd = NULL;
-       long offset = 0;
        NTSTATUS status;
 
        if (jn_remain == 0) {
@@ -1682,7 +1680,7 @@ static int form_junctions(TALLOC_CTX *ctx,
                goto out;
        }
 
-        while ((dname = ReadDirName(dir_hnd, &offset, NULL, &talloced))
+        while ((dname = ReadDirName(dir_hnd, NULL, &talloced))
               != NULL)
        {
                struct smb_filename *smb_dname = NULL;
index 8fce5e02a19158bca495fcd7dd397f135b4be732..6b48d7c918db58dceefa330d72f5b364ef441e03 100644 (file)
@@ -192,7 +192,6 @@ NTSTATUS dptr_create(connection_struct *conn,
                struct dptr_struct **dptr_ret);
 void dptr_CloseDir(files_struct *fsp);
 void dptr_RewindDir(struct dptr_struct *dptr);
-long dptr_TellDir(struct dptr_struct *dptr);
 unsigned int dptr_FileNumber(struct dptr_struct *dptr);
 bool dptr_has_wild(struct dptr_struct *dptr);
 int dptr_dnum(struct dptr_struct *dptr);
@@ -201,7 +200,6 @@ void dptr_set_priv(struct dptr_struct *dptr);
 bool dptr_case_sensitive(struct dptr_struct *dptr);
 char *dptr_ReadDirName(TALLOC_CTX *ctx,
                       struct dptr_struct *dptr,
-                      long *poffset,
                       SMB_STRUCT_STAT *pst);
 struct smb_Dir;
 struct files_struct *dir_hnd_fetch_fsp(struct smb_Dir *dir_hnd);
@@ -220,9 +218,9 @@ NTSTATUS OpenDir_from_pathref(TALLOC_CTX *mem_ctx,
                              const char *mask,
                              uint32_t attr,
                              struct smb_Dir **_dir_hnd);
-const char *ReadDirName(struct smb_Dir *dir_hnd, long *poffset,
+const char *ReadDirName(struct smb_Dir *dir_hnd,
                        SMB_STRUCT_STAT *sbuf, char **talloced);
-void RewindDir(struct smb_Dir *dir_hnd, long *poffset);
+void RewindDir(struct smb_Dir *dir_hnd);
 NTSTATUS can_delete_directory(struct connection_struct *conn,
                                const char *dirname);
 bool have_file_open_below(connection_struct *conn,
index 7761303e6dd89c1fa21a447ffd9e8becbdbf3431..62f184fc1b06cb4a7eb4b15182cf6d987206af90 100644 (file)
@@ -1494,11 +1494,10 @@ static void call_trans2findnext(connection_struct *conn,
 
        backup_priv = dptr_get_priv(fsp->dptr);
 
-       DEBUG(3,("dptr_num is %d, mask = %s, attr = %x, dirptr=(0x%lX,%ld) "
+       DEBUG(3,("dptr_num is %d, mask = %s, attr = %x, dirptr=(0x%lX) "
                "backup_priv = %d\n",
                dptr_num, mask, dirtype,
                (long)fsp->dptr,
-               dptr_TellDir(fsp->dptr),
                (int)backup_priv));
 
        /* We don't need to check for VOL here as this is returned by
@@ -1561,7 +1560,6 @@ static void call_trans2findnext(connection_struct *conn,
                                                  resume_name,
                                                  last_name_sent);
                if (!sequential) {
-                       long offset = 0;
                        struct stat_ex st;
                        char *name = NULL;
                        bool found = false;
@@ -1570,7 +1568,6 @@ static void call_trans2findnext(connection_struct *conn,
 
                        while ((name = dptr_ReadDirName(talloc_tos(),
                                                        fsp->dptr,
-                                                       &offset,
                                                        &st)) != NULL) {
                                found = smbd_dptr_name_equal(fsp->dptr,
                                                             resume_name,
index af54466fe9f83efbe3549385579c7a3c4acd0573..f8da602ec434877a21892fabbe8632f556fc36e1 100644 (file)
@@ -180,8 +180,6 @@ static NTSTATUS cmd_opendir(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       vfs->currentdir_offset = 0;
-
        TALLOC_FREE(smb_fname);
        printf("opendir: ok\n");
        return NT_STATUS_OK;
@@ -205,7 +203,6 @@ static NTSTATUS cmd_readdir(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc
        }
 
         dname = ReadDirName(vfs->currentdir,
-                           &vfs->currentdir_offset,
                            NULL,
                            &talloced);
        if (dname == NULL) {
@@ -304,7 +301,6 @@ static NTSTATUS cmd_closedir(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int arg
        }
 
        TALLOC_FREE(vfs->currentdir);
-       vfs->currentdir_offset = 0;
 
        printf("closedir: ok\n");
        return NT_STATUS_OK;
@@ -2155,12 +2151,10 @@ static NTSTATUS cmd_translate_name(struct vfs_state *vfs, TALLOC_CTX *mem_ctx,
                errno = err;
                return NT_STATUS_UNSUCCESSFUL;
        }
-       vfs->currentdir_offset = 0;
 
        while (true) {
                /* ReadDirName() returns Windows "encoding" */
                dname = ReadDirName(vfs->currentdir,
-                                   &vfs->currentdir_offset,
                                    NULL,
                                    &dname_talloced);
                if (dname == NULL) {
@@ -2208,7 +2202,6 @@ cleanup:
        TALLOC_FREE(translated);
        TALLOC_FREE(smb_fname);
        TALLOC_FREE(vfs->currentdir);
-       vfs->currentdir_offset = 0;
        return status;
 }
 
index b80592fd20855acf598cf0b6ad5d6400beb7b9f7..bc28d4926f5a3baccf7d23b1d931c69788c41471 100644 (file)
@@ -32,7 +32,6 @@ struct vfs_state {
        uint64_t mid;
        struct files_struct *files[1024];
        struct smb_Dir *currentdir;
-       long currentdir_offset;
        void *data;
        size_t data_size;
 };