diff options
author | Volker Lendecke <vl@samba.org> | 2010-10-24 15:43:34 +0200 |
---|---|---|
committer | Volker Lendecke <vlendec@samba.org> | 2010-10-24 20:46:28 +0000 |
commit | 40cc1a3d2e4d63153730a03d89cca8c936a2e06c (patch) | |
tree | 2ad8855cd2b68cb16686598b8594bebe7fe8a546 /source3 | |
parent | 86cb0ad242002014a4bfcdd9d0b40a3d3d172b81 (diff) | |
download | samba-40cc1a3d2e4d63153730a03d89cca8c936a2e06c.tar.gz samba-40cc1a3d2e4d63153730a03d89cca8c936a2e06c.tar.bz2 samba-40cc1a3d2e4d63153730a03d89cca8c936a2e06c.zip |
s3: Add "setea" to smbclient
Diffstat (limited to 'source3')
-rw-r--r-- | source3/client/client.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/source3/client/client.c b/source3/client/client.c index 35ee66067a..d69e55cb50 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -3289,6 +3289,51 @@ static int cmd_geteas(void) } /**************************************************************************** + Set an EA of a file +****************************************************************************/ + +static int cmd_setea(void) +{ + TALLOC_CTX *ctx = talloc_tos(); + char *src = NULL; + char *name = NULL; + char *eaname = NULL; + char *eavalue = NULL; + char *targetname = NULL; + struct cli_state *targetcli; + + if (!next_token_talloc(ctx, &cmd_ptr, &name, NULL) + || !next_token_talloc(ctx, &cmd_ptr, &eaname, NULL)) { + d_printf("setea filename eaname value\n"); + return 1; + } + if (!next_token_talloc(ctx, &cmd_ptr, &eavalue, NULL)) { + eavalue = talloc_strdup(ctx, ""); + } + src = talloc_asprintf(ctx, + "%s%s", + client_get_cur_dir(), + name); + if (!src) { + return 1; + } + + if (!cli_resolve_path(ctx, "", auth_info, cli, src, &targetcli, + &targetname)) { + d_printf("stat %s: %s\n", src, cli_errstr(cli)); + return 1; + } + + if (!cli_set_ea_path(targetcli, targetname, eaname, eavalue, + strlen(eavalue))) { + d_printf("set_ea %s: %s\n", src, cli_errstr(cli)); + return 1; + } + + return 0; +} + +/**************************************************************************** UNIX stat. ****************************************************************************/ @@ -4169,6 +4214,8 @@ static struct { {"rm",cmd_del,"<mask> delete all matching files",{COMPL_REMOTE,COMPL_NONE}}, {"rmdir",cmd_rmdir,"<directory> remove a directory",{COMPL_NONE,COMPL_NONE}}, {"showacls",cmd_showacls,"toggle if ACLs are shown or not",{COMPL_NONE,COMPL_NONE}}, + {"setea", cmd_setea, "<file name> <eaname> <eaval> Set an EA of a file", + {COMPL_REMOTE, COMPL_LOCAL}}, {"setmode",cmd_setmode,"filename <setmode string> change modes of file",{COMPL_REMOTE,COMPL_NONE}}, {"stat",cmd_stat,"filename Do a UNIX extensions stat call on a file",{COMPL_REMOTE,COMPL_REMOTE}}, {"symlink",cmd_symlink,"<oldname> <newname> create a UNIX symlink",{COMPL_REMOTE,COMPL_REMOTE}}, |