From 40cc1a3d2e4d63153730a03d89cca8c936a2e06c Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 24 Oct 2010 15:43:34 +0200 Subject: s3: Add "setea" to smbclient --- source3/client/client.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'source3/client') 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 @@ -3288,6 +3288,51 @@ static int cmd_geteas(void) return 0; } +/**************************************************************************** + 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," delete all matching files",{COMPL_REMOTE,COMPL_NONE}}, {"rmdir",cmd_rmdir," remove a directory",{COMPL_NONE,COMPL_NONE}}, {"showacls",cmd_showacls,"toggle if ACLs are shown or not",{COMPL_NONE,COMPL_NONE}}, + {"setea", cmd_setea, " Set an EA of a file", + {COMPL_REMOTE, COMPL_LOCAL}}, {"setmode",cmd_setmode,"filename 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," create a UNIX symlink",{COMPL_REMOTE,COMPL_REMOTE}}, -- cgit