summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-11-29 23:08:35 +0100
committerunknown <msvensson@neptunus.(none)>2006-11-29 23:08:35 +0100
commit30278aedced207e1cc5284c2c5fcb8f36f467d6d (patch)
treefee046d7ddf29bccad0ada6847bb80589739ab28 /client
parent66466ddfa66d4e360b854176735e5067c2de4fe0 (diff)
parent8e0614c83950b6189eb1dfc218b13546fa663c13 (diff)
downloadmariadb-git-30278aedced207e1cc5284c2c5fcb8f36f467d6d.tar.gz
Merge neptunus.(none):/home/msvensson/mysql/bug19731/my50-bug19731
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint mysql-test/r/mysqltest.result: Auto merged mysql-test/t/mysqltest.test: Auto merged sql/handler.cc: Auto merged client/mysqltest.c: Manual merge
Diffstat (limited to 'client')
-rw-r--r--client/mysqltest.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 005f204d571..1e2acd4d368 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -271,6 +271,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_EXIT,
+ Q_CHMOD_FILE,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
@@ -351,8 +352,10 @@ const char *command_names[]=
"copy_file",
"perl",
"die",
+
/* Don't execute any more commands, compare result */
"exit",
+ "chmod",
0
};
@@ -1809,6 +1812,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;
+ static DYNAMIC_STRING ds_mode;
+ static 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
@@ -5692,6 +5737,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);