From: Jeremy Allison Date: Wed, 3 Jun 2020 17:41:27 +0000 (-0700) Subject: s3: libsmb: In struct file_info rename mode -> attr. X-Git-Tag: ldb-2.2.0~224 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8db0ba666ab10fa8f5a2de1778ee197b083ce29e;p=thirdparty%2Fsamba.git s3: libsmb: In struct file_info rename mode -> attr. Cleanup. It's never been a UNIX mode, always a DOS attribute field. Make that explicit. Signed-off-by: Jeremy Allison Reviewed-by: Volker Lendecke --- diff --git a/examples/fuse/clifuse.c b/examples/fuse/clifuse.c index 5b180fdf3d3..1a8d3d4c094 100644 --- a/examples/fuse/clifuse.c +++ b/examples/fuse/clifuse.c @@ -496,7 +496,7 @@ static NTSTATUS parse_finfo_id_both_directory_info(uint8_t *dir_data, finfo->mtime_ts = interpret_long_date((const char *)dir_data + 24); finfo->ctime_ts = interpret_long_date((const char *)dir_data + 32); finfo->size = IVAL2_TO_SMB_BIG_UINT(dir_data + 40, 0); - finfo->mode = (uint16_t)IVAL(dir_data + 56, 0); + finfo->attr = (uint16_t)IVAL(dir_data + 56, 0); namelen = IVAL(dir_data + 60,0); if (namelen > (dir_data_length - 104)) { return NT_STATUS_INFO_LENGTH_MISMATCH; @@ -572,10 +572,10 @@ static void cli_smb2_listdir_done(struct tevent_req *subreq) return; } - ok = dir_check_ftype(finfo->mode, state->attribute); + ok = dir_check_ftype(finfo->attr, state->attribute); DEBUG(10, ("%s: dir_check_ftype(%u,%u) returned %u\n", - __func__, (unsigned)finfo->mode, + __func__, (unsigned)finfo->attr, (unsigned)state->attribute, (unsigned)ok)); if (ok) { diff --git a/libgpo/gpo_filesync.c b/libgpo/gpo_filesync.c index b19a9e746bf..28637619226 100644 --- a/libgpo/gpo_filesync.c +++ b/libgpo/gpo_filesync.c @@ -155,7 +155,7 @@ static NTSTATUS gpo_sync_func(const char *mnt, DEBUG(5,("gpo_sync_func: got mask: [%s], name: [%s]\n", mask, info->name)); - if (info->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (info->attr & FILE_ATTRIBUTE_DIRECTORY) { DEBUG(3,("got dir: [%s]\n", info->name)); diff --git a/source3/client/client.c b/source3/client/client.c index 2a95911f54d..362fd2cc08b 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -537,7 +537,7 @@ static bool do_this_one(struct file_info *finfo) return false; } - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { return true; } @@ -552,7 +552,7 @@ static bool do_this_one(struct file_info *finfo) return false; } - if ((archive_level==1 || archive_level==2) && !(finfo->mode & FILE_ATTRIBUTE_ARCHIVE)) { + if ((archive_level==1 || archive_level==2) && !(finfo->attr & FILE_ATTRIBUTE_ARCHIVE)) { DEBUG(3,("archive %s failed\n", finfo->name)); return false; } @@ -579,7 +579,7 @@ static NTSTATUS display_finfo(struct cli_state *cli_state, struct file_info *fin if (!showacls) { d_printf(" %-30s%7.7s %8.0f %s", finfo->name, - attrib_string(talloc_tos(), finfo->mode), + attrib_string(talloc_tos(), finfo->attr), (double)finfo->size, time_to_asc(t)); dir_total += finfo->size; @@ -601,7 +601,7 @@ static NTSTATUS display_finfo(struct cli_state *cli_state, struct file_info *fin } /* print file meta date header */ d_printf( "FILENAME:%s\n", finfo->name); - d_printf( "MODE:%s\n", attrib_string(talloc_tos(), finfo->mode)); + d_printf( "MODE:%s\n", attrib_string(talloc_tos(), finfo->attr)); d_printf( "SIZE:%.0f\n", (double)finfo->size); d_printf( "MTIME:%s", time_to_asc(t)); status = cli_ntcreate( @@ -793,7 +793,7 @@ static NTSTATUS do_list_helper(const char *mntpoint, struct file_info *f, *dir_end = '\0'; } - if (f->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (f->attr & FILE_ATTRIBUTE_DIRECTORY) { if (do_list_dirs && do_this_one(f)) { status = do_list_fn(cli_state, f, dir); if (!NT_STATUS_IS_OK(status)) { @@ -1308,7 +1308,7 @@ static NTSTATUS do_mget(struct cli_state *cli_state, struct file_info *finfo, return NT_STATUS_UNSUCCESSFUL; } - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { if (asprintf(&quest, "Get directory %s? ",finfo->name) < 0) { return NT_STATUS_NO_MEMORY; @@ -1326,7 +1326,7 @@ static NTSTATUS do_mget(struct cli_state *cli_state, struct file_info *finfo, } SAFE_FREE(quest); - if (!(finfo->mode & FILE_ATTRIBUTE_DIRECTORY)) { + if (!(finfo->attr & FILE_ATTRIBUTE_DIRECTORY)) { rname = talloc_asprintf(ctx, "%s%s", client_get_cur_dir(), @@ -2511,7 +2511,7 @@ static NTSTATUS do_del(struct cli_state *cli_state, struct file_info *finfo, return NT_STATUS_NO_MEMORY; } - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { TALLOC_FREE(mask); return NT_STATUS_OK; } @@ -2641,7 +2641,7 @@ static NTSTATUS do_deltree_list(struct cli_state *cli_state, return NT_STATUS_NO_MEMORY; } - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { dt->isdir = true; } @@ -5771,7 +5771,7 @@ static NTSTATUS completion_remote_filter(const char *mnt, return NT_STATUS_OK; } - if ((info->dirmask[0] == 0) && !(f->mode & FILE_ATTRIBUTE_DIRECTORY)) + if ((info->dirmask[0] == 0) && !(f->attr & FILE_ATTRIBUTE_DIRECTORY)) info->matches[info->count] = SMB_STRDUP(f->name); else { TALLOC_CTX *ctx = talloc_stackframe(); @@ -5787,7 +5787,7 @@ static NTSTATUS completion_remote_filter(const char *mnt, TALLOC_FREE(ctx); return NT_STATUS_NO_MEMORY; } - if (f->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (f->attr & FILE_ATTRIBUTE_DIRECTORY) { tmp = talloc_asprintf_append(tmp, "%s", CLI_DIRSEP_STR); } @@ -5801,7 +5801,7 @@ static NTSTATUS completion_remote_filter(const char *mnt, if (info->matches[info->count] == NULL) { return NT_STATUS_OK; } - if (f->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (f->attr & FILE_ATTRIBUTE_DIRECTORY) { smb_readline_ca_char(0); } if (info->count == 1) { diff --git a/source3/client/clitar.c b/source3/client/clitar.c index 76596067f2d..3fe3622aba6 100644 --- a/source3/client/clitar.c +++ b/source3/client/clitar.c @@ -861,7 +861,7 @@ static NTSTATUS get_file_callback(struct cli_state *cli, goto out; } - isdir = finfo->mode & FILE_ATTRIBUTE_DIRECTORY; + isdir = finfo->attr & FILE_ATTRIBUTE_DIRECTORY; if (isdir) { old_dir = talloc_strdup(ctx, initial_dir); new_dir = talloc_asprintf(ctx, "%s\\", remote_name); @@ -938,7 +938,7 @@ static int tar_get_file(struct tar *t, uint64_t off = 0; uint16_t remote_fd = (uint16_t)-1; int err = 0, r; - const bool isdir = finfo->mode & FILE_ATTRIBUTE_DIRECTORY; + const bool isdir = finfo->attr & FILE_ATTRIBUTE_DIRECTORY; TALLOC_CTX *ctx = talloc_new(NULL); if (ctx == NULL) { @@ -1459,7 +1459,7 @@ static NTSTATUS tar_create_skip_path(struct tar *t, bool *_skip) { /* syntaxic sugar */ - const mode_t mode = finfo->mode; + const mode_t mode = finfo->attr; const bool isdir = mode & FILE_ATTRIBUTE_DIRECTORY; const bool exclude = t->mode.selection == TAR_EXCLUDE; bool in = true; diff --git a/source3/include/client.h b/source3/include/client.h index fdb5d7da830..56d368e6582 100644 --- a/source3/include/client.h +++ b/source3/include/client.h @@ -100,7 +100,7 @@ struct cli_state { struct file_info { uint64_t size; uint64_t allocated_size; - uint16_t mode; + uint16_t attr; uid_t uid; gid_t gid; uint64_t ino; diff --git a/source3/libsmb/cli_smb2_fnum.c b/source3/libsmb/cli_smb2_fnum.c index 46a4ae95977..994b94802d8 100644 --- a/source3/libsmb/cli_smb2_fnum.c +++ b/source3/libsmb/cli_smb2_fnum.c @@ -1199,8 +1199,8 @@ static NTSTATUS parse_finfo_id_both_directory_info(const uint8_t *dir_data, finfo->ctime_ts = interpret_long_date((const char *)dir_data + 32); finfo->size = IVAL2_TO_SMB_BIG_UINT(dir_data + 40, 0); finfo->allocated_size = IVAL2_TO_SMB_BIG_UINT(dir_data + 48, 0); - /* NB. We need to enlarge finfo->mode to be 32-bits. */ - finfo->mode = (uint16_t)IVAL(dir_data + 56, 0); + /* NB. We need to enlarge finfo->attr to be 32-bits. */ + finfo->attr = (uint16_t)IVAL(dir_data + 56, 0); finfo->ino = IVAL2_TO_SMB_BIG_UINT(dir_data + 96, 0); namelen = IVAL(dir_data + 60,0); if (namelen > (dir_data_length - 104)) { @@ -1419,7 +1419,7 @@ NTSTATUS cli_smb2_list(struct cli_state *cli, goto fail; } - if (dir_check_ftype((uint32_t)finfo->mode, + if (dir_check_ftype((uint32_t)finfo->attr, (uint32_t)attribute)) { /* * Only process if attributes match. diff --git a/source3/libsmb/clilist.c b/source3/libsmb/clilist.c index 0c4e3db09f1..db5f4bfadd3 100644 --- a/source3/libsmb/clilist.c +++ b/source3/libsmb/clilist.c @@ -152,7 +152,7 @@ static size_t interpret_long_filename(TALLOC_CTX *ctx, finfo->mtime_ts = convert_time_t_to_timespec( make_unix_date2(p+12, smb1cli_conn_server_time_zone(cli->conn))); finfo->size = IVAL(p,16); - finfo->mode = SVAL(p,24); + finfo->attr = SVAL(p,24); len = CVAL(p, 26); p += 27; if (recv_flags2 & FLAGS2_UNICODE_STRINGS) { @@ -211,7 +211,7 @@ static size_t interpret_long_filename(TALLOC_CTX *ctx, finfo->mtime_ts = convert_time_t_to_timespec( make_unix_date2(p+12, smb1cli_conn_server_time_zone(cli->conn))); finfo->size = IVAL(p,16); - finfo->mode = SVAL(p,24); + finfo->attr = SVAL(p,24); len = CVAL(p, 30); p += 31; /* check for unisys! */ @@ -257,8 +257,8 @@ static size_t interpret_long_filename(TALLOC_CTX *ctx, finfo->size = IVAL2_TO_SMB_BIG_UINT(p,0); p += 8; p += 8; /* alloc size */ - /* NB. We need to enlarge finfo->mode to be 32-bits. */ - finfo->mode = (uint16_t)IVAL(p,0); + /* NB. We need to enlarge finfo->attr to be 32-bits. */ + finfo->attr = (uint16_t)IVAL(p,0); p += 4; namelen = IVAL(p,0); p += 4; @@ -325,7 +325,7 @@ static bool interpret_short_filename(TALLOC_CTX *ctx, size_t ret; ZERO_STRUCTP(finfo); - finfo->mode = CVAL(p,21); + finfo->attr = CVAL(p,21); /* We don't get birth time. */ finfo->btime_ts.tv_sec = 0; diff --git a/source3/libsmb/libsmb_dir.c b/source3/libsmb/libsmb_dir.c index b95fee63795..cdae281af19 100644 --- a/source3/libsmb/libsmb_dir.c +++ b/source3/libsmb/libsmb_dir.c @@ -187,7 +187,7 @@ static int add_dirplus(SMBCFILE *dir, struct file_info *finfo) info->ctime_ts = finfo->ctime_ts; info->mtime_ts = finfo->mtime_ts; info->gid = finfo->gid; - info->attrs = finfo->mode; + info->attrs = finfo->attr; info->size = finfo->size; info->uid = finfo->uid; info->name = SMB_STRDUP(finfo->name); @@ -341,7 +341,7 @@ dir_list_fn(const char *mnt, int ret; if (add_dirent((SMBCFILE *)state, finfo->name, "", - (finfo->mode&FILE_ATTRIBUTE_DIRECTORY?SMBC_DIR:SMBC_FILE)) < 0) { + (finfo->attr&FILE_ATTRIBUTE_DIRECTORY?SMBC_DIR:SMBC_FILE)) < 0) { SMBCFILE *dir = (SMBCFILE *)state; return map_nt_error_from_unix(dir->dir_error); } diff --git a/source3/libsmb/pylibsmb.c b/source3/libsmb/pylibsmb.c index 426c7b28b64..006cc9078b8 100644 --- a/source3/libsmb/pylibsmb.c +++ b/source3/libsmb/pylibsmb.c @@ -1137,7 +1137,7 @@ static NTSTATUS list_helper(const char *mntpoint, struct file_info *finfo, */ file = Py_BuildValue("{s:s,s:i,s:s,s:O,s:l}", "name", finfo->name, - "attrib", (int)finfo->mode, + "attrib", (int)finfo->attr, "short_name", finfo->short_name, "size", size, "mtime", @@ -1407,7 +1407,7 @@ static NTSTATUS delete_tree_callback(const char *mntpoint, return NT_STATUS_NO_MEMORY; } - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { /* recursively delete the sub-directory and its contents */ status = delete_dir_tree(state->self, filepath); diff --git a/source3/torture/nbio.c b/source3/torture/nbio.c index 861f8741c96..582f0b7e2e9 100644 --- a/source3/torture/nbio.c +++ b/source3/torture/nbio.c @@ -328,7 +328,7 @@ static NTSTATUS delete_fn(const char *mnt, struct file_info *finfo, printf("asprintf failed\n"); return NT_STATUS_NO_MEMORY; } - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { char *s2; if (asprintf(&s2, "%s\\*", s) == -1) { printf("asprintf failed\n"); diff --git a/source3/torture/torture.c b/source3/torture/torture.c index 31e45405591..ee9219f2404 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -9729,7 +9729,7 @@ static NTSTATUS del_fn(const char *mnt, struct file_info *finfo, const char *mas if (strcmp(finfo->name, ".") == 0 || strcmp(finfo->name, "..") == 0) return NT_STATUS_OK; - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { if (!NT_STATUS_IS_OK(cli_rmdir(pcli, fname))) printf("del_fn: failed to rmdir %s\n,", fname ); } else { @@ -11456,7 +11456,7 @@ static NTSTATUS msdfs_attribute_list_fn(const char *mnt, uint16_t *p_mode = (uint16_t *)private_data; if (strequal(finfo->name, test_filename)) { - *p_mode = finfo->mode; + *p_mode = finfo->attr; } return NT_STATUS_OK; @@ -11805,7 +11805,7 @@ static NTSTATUS shortname_del_fn(const char *mnt, struct file_info *finfo, if (strcmp(finfo->name, ".") == 0 || strcmp(finfo->name, "..") == 0) return NT_STATUS_OK; - if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) { status = cli_rmdir(pcli, fname); if (!NT_STATUS_IS_OK(status)) { printf("del_fn: failed to rmdir %s\n,", fname ); diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index d59522e29ca..956b6d02901 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -3993,7 +3993,7 @@ static NTSTATUS copy_fn(const char *mnt, struct file_info *f, DEBUG(3,("got mask: %s, name: %s\n", mask, f->name)); /* DIRECTORY */ - if (f->mode & FILE_ATTRIBUTE_DIRECTORY) { + if (f->attr & FILE_ATTRIBUTE_DIRECTORY) { DEBUG(3,("got dir: %s\n", f->name));