diff options
author | unknown <msvensson@neptunus.(none)> | 2006-11-29 23:05:33 +0100 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-11-29 23:05:33 +0100 |
commit | e5bfeab3fd659f37b8363abd32e77d4fe29716f9 (patch) | |
tree | 7ef98504225c7262063aa7675ed7ee6fe96be2a4 /client | |
parent | c35506f9674eab29c30332046082e15719429c62 (diff) | |
parent | 8e0614c83950b6189eb1dfc218b13546fa663c13 (diff) | |
download | mariadb-git-e5bfeab3fd659f37b8363abd32e77d4fe29716f9.tar.gz |
Merge neptunus.(none):/home/msvensson/mysql/bug19731/my50-bug19731
into neptunus.(none):/home/msvensson/mysql/bug19731/my51-bug19731
client/mysqltest.c:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
mysql-test/r/varbinary.result:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
sql/field_conv.cc:
Auto merged
sql/handler.cc:
Auto merged
Diffstat (limited to 'client')
-rw-r--r-- | client/mysqltest.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c index efb5f1915f4..29a31a6c60c 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -265,6 +265,7 @@ enum enum_commands { Q_DISABLE_PARSING, Q_ENABLE_PARSING, Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST, Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, + Q_CHMOD_FILE, Q_UNKNOWN, /* Unknown command. */ Q_COMMENT, /* Comments, ignored. */ @@ -345,6 +346,7 @@ const char *command_names[]= "copy_file", "perl", "die", + "chmod", 0 }; @@ -1753,6 +1755,48 @@ void do_copy_file(struct st_command *command) /* SYNOPSIS + do_chmod_file + command command handle + + DESCRIPTION + chmod <octal> <file> + Change file permission of <file> + + NOTE! Simplified version, only supports +r, -r, +w, -w +*/ + +void do_chmod_file(struct st_command *command) +{ + mode_t mode= 0; + DYNAMIC_STRING ds_mode; + DYNAMIC_STRING ds_file; + const struct command_arg chmod_file_args[] = { + "mode", ARG_STRING, TRUE, &ds_mode, "Mode of file", + "file", ARG_STRING, TRUE, &ds_file, "Filename of file to modify" + }; + DBUG_ENTER("do_chmod_file"); + + check_command_args(command, command->first_argument, + chmod_file_args, + sizeof(chmod_file_args)/sizeof(struct command_arg), + ' '); + + /* Parse what mode to set */ + if (ds_mode.length != 4) + die("You must write a 4 digit octal number for mode"); + + str2int(ds_mode.str, 8, 0, INT_MAX, (long*)&mode); + + DBUG_PRINT("info", ("chmod %o %s", mode, ds_file.str)); + handle_command_error(command, chmod(ds_file.str, mode)); + dynstr_free(&ds_mode); + dynstr_free(&ds_file); + DBUG_VOID_RETURN; +} + + +/* + SYNOPSIS do_file_exists command called command @@ -5604,6 +5648,7 @@ int main(int argc, char **argv) case Q_FILE_EXIST: do_file_exist(command); break; case Q_WRITE_FILE: do_write_file(command); break; case Q_COPY_FILE: do_copy_file(command); break; + case Q_CHMOD_FILE: do_chmod_file(command); break; case Q_PERL: do_perl(command); break; case Q_DELIMITER: do_delimiter(command); |