Loading client/mysqltest.c +45 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading Loading @@ -345,6 +346,7 @@ const char *command_names[]= "copy_file", "perl", "die", "chmod", 0 }; Loading Loading @@ -1751,6 +1753,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 Loading Loading @@ -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); Loading mysql-test/r/mysqltest.result +6 −0 Original line number Diff line number Diff line Loading @@ -512,6 +512,12 @@ mysqltest: At line 1: End of line junk detected: "write_file filename "; mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists' mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'mode' to command 'chmod' mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: Missing required argument 'file' to command 'chmod' mysqltest: At line 1: command "chmod" failed with error -1 mysqltest: At line 1: You must write a 4 digit octal number for mode hello hello hello Loading mysql-test/t/mysqltest.test +39 −0 Original line number Diff line number Diff line Loading @@ -1521,6 +1521,45 @@ remove_file $MYSQLTEST_VARDIR/tmp/file2.tmp; --error 1 --exec echo "copy_file from_file;" | $MYSQL_TEST 2>&1 # ---------------------------------------------------------------------------- # test for chmod # ---------------------------------------------------------------------------- --write_file $MYSQLTEST_VARDIR/tmp/file1.tmp file1 EOF chmod 0000 $MYSQLTEST_VARDIR/tmp/file1.tmp; # The below write fails, but --error is not implemented # for write_file #--write_file $MYSQLTEST_VARDIR/tmp/file1.tmp #test should fail #EOF chmod 0777 $MYSQLTEST_VARDIR/tmp/file1.tmp; --write_file $MYSQLTEST_VARDIR/tmp/file1.tmp test2 EOF remove_file $MYSQLTEST_VARDIR/tmp/file1.tmp; --error 1 --exec echo "chmod ;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod 0 from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod 08 from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod ABZD from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod 06789 from_file;" | $MYSQL_TEST 2>&1 # ---------------------------------------------------------------------------- # test for perl # ---------------------------------------------------------------------------- Loading Loading
client/mysqltest.c +45 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading Loading @@ -345,6 +346,7 @@ const char *command_names[]= "copy_file", "perl", "die", "chmod", 0 }; Loading Loading @@ -1751,6 +1753,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 Loading Loading @@ -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); Loading
mysql-test/r/mysqltest.result +6 −0 Original line number Diff line number Diff line Loading @@ -512,6 +512,12 @@ mysqltest: At line 1: End of line junk detected: "write_file filename "; mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists' mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'mode' to command 'chmod' mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: Missing required argument 'file' to command 'chmod' mysqltest: At line 1: command "chmod" failed with error -1 mysqltest: At line 1: You must write a 4 digit octal number for mode hello hello hello Loading
mysql-test/t/mysqltest.test +39 −0 Original line number Diff line number Diff line Loading @@ -1521,6 +1521,45 @@ remove_file $MYSQLTEST_VARDIR/tmp/file2.tmp; --error 1 --exec echo "copy_file from_file;" | $MYSQL_TEST 2>&1 # ---------------------------------------------------------------------------- # test for chmod # ---------------------------------------------------------------------------- --write_file $MYSQLTEST_VARDIR/tmp/file1.tmp file1 EOF chmod 0000 $MYSQLTEST_VARDIR/tmp/file1.tmp; # The below write fails, but --error is not implemented # for write_file #--write_file $MYSQLTEST_VARDIR/tmp/file1.tmp #test should fail #EOF chmod 0777 $MYSQLTEST_VARDIR/tmp/file1.tmp; --write_file $MYSQLTEST_VARDIR/tmp/file1.tmp test2 EOF remove_file $MYSQLTEST_VARDIR/tmp/file1.tmp; --error 1 --exec echo "chmod ;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod 0 from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod 08 from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod ABZD from_file;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "chmod 06789 from_file;" | $MYSQL_TEST 2>&1 # ---------------------------------------------------------------------------- # test for perl # ---------------------------------------------------------------------------- Loading