MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:msvensson Date:November 29 2006 10:02pm
Subject:bk commit into 5.0 tree (msvensson:1.2316)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of msvensson. When msvensson does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2006-11-29 23:02:06+01:00, msvensson@neptunus.(none) +3 -0
  Add command "chmod" to mysqltest

  client/mysqltest.c@stripped, 2006-11-29 23:02:04+01:00, msvensson@neptunus.(none) +45 -0
    Add "chmod" command

  mysql-test/r/mysqltest.result@stripped, 2006-11-29 23:02:04+01:00, msvensson@neptunus.(none) +6 -0
    Update result file

  mysql-test/t/mysqltest.test@stripped, 2006-11-29 23:02:04+01:00, msvensson@neptunus.(none) +39 -0
    Add tests for chmod

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	msvensson
# Host:	neptunus.(none)
# Root:	/home/msvensson/mysql/bug19731/my50-bug19731

--- 1.37/mysql-test/r/mysqltest.result	2006-11-29 23:02:11 +01:00
+++ 1.38/mysql-test/r/mysqltest.result	2006-11-29 23:02:11 +01:00
@@ -512,6 +512,12 @@ mysqltest: At line 1: End of line junk d
 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

--- 1.46/mysql-test/t/mysqltest.test	2006-11-29 23:02:11 +01:00
+++ 1.47/mysql-test/t/mysqltest.test	2006-11-29 23:02:11 +01:00
@@ -1522,6 +1522,45 @@ remove_file $MYSQLTEST_VARDIR/tmp/file2.
 --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
 # ----------------------------------------------------------------------------
 --perl

--- 1.252/client/mysqltest.c	2006-11-29 23:02:11 +01:00
+++ 1.253/client/mysqltest.c	2006-11-29 23:02:11 +01:00
@@ -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 *com
 
 /*
   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);
Thread
bk commit into 5.0 tree (msvensson:1.2316)msvensson29 Nov