mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
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 <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
parent
469aaaea07
commit
8db0ba666a
@ -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) {
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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 );
|
||||
|
@ -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));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user