From daff9bc9880ea5eee86ab0b32ccfa02b7662ae04 Mon Sep 17 00:00:00 2001 From: Geir Hauge Date: Mon, 4 Jun 2007 08:40:54 +0000 Subject: [PATCH] Release 0.52. - mysql-dbadm editperm failed silently when too few Y/N-values were given. - added more information on editperm (--help-editperm) --- mysql-dbadm.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/mysql-dbadm.c b/mysql-dbadm.c index 631f88b..8ad79cd 100644 --- a/mysql-dbadm.c +++ b/mysql-dbadm.c @@ -1,5 +1,5 @@ /* - * @(#) $Header: /tmp/cvs/mysql-admutils/mysql-dbadm.c,v 1.19 2007-02-27 14:10:08 geirha Exp $ + * @(#) $Header: /tmp/cvs/mysql-admutils/mysql-dbadm.c,v 1.20 2007-06-04 08:40:54 geirha Exp $ * * mysql-dbadm.c * @@ -64,6 +64,7 @@ strtok_whitespace(char *s) int valid_priv(const char *s) { + if (s == NULL) return 0; #define ACCEPT(x) if (strcmp(s, x) == 0) return 1 ACCEPT("Y"); ACCEPT("N"); @@ -88,6 +89,36 @@ usage() printf(" editperm change permissions for the DATABASE(s). Your\n"); printf(" favorite editor will be started, allowing you\n"); printf(" to make changes to the permission table.\n"); + printf(" Run '%s --help-editperm' for more\n" + " information.\n",program_name); + printf("\n"); + printf("Report bugs to drift@stud.ntnu.no\n"); + return 0; +} + +int +usage_editperm() +{ + printf("Usage: %s editperm [DATABASE]\n", program_name); + printf("Edit permissions for the DATABASE. Running this command will\n"); + printf("spawn the editor stored in the $EDITOR environment variable.\n"); + printf("(pico will be used if the variable is unset)\n"); + printf("\n"); + printf("The file should contain one line per user, starting with the\n"); + printf("username and followed by ten Y/N-values seperated by whitespace.\n"); + printf("Lines starting with # are ignored.\n"); + printf("\n"); + printf("The Y/N-values corresponds to the following mysql privileges:\n"); + printf(" Select - Enables use of SELECT\n"); + printf(" Insert - Enables use of INSERT\n"); + printf(" Update - Enables use of UPDATE\n"); + printf(" Delete - Enables use of DELTE\n"); + printf(" Create - Enables use of CREATE TABLE\n"); + printf(" Drop - Enables use of DROP TABLE\n"); + printf(" Alter - Enables use of ALTER TABLE\n"); + printf(" Index - Enables use of CREATE INDEX and DROP INDEX\n"); + printf(" Temp - Enables use of CREATE TEMPORARY TABLE\n"); + printf(" Lock - Enables use of LOCK TABLE\n"); printf("\n"); printf("Report bugs to drift@stud.ntnu.no\n"); return 0; @@ -372,7 +403,10 @@ editperm(MYSQL *pmysql, const char *db) #define CHECK_PRIV(PRIV) \ if (!valid_priv(PRIV)) return dberror(NULL, "Invalid value '%s' " \ - "in grant line %d.", PRIV, lines + 1) + "in grant line %d.\nMake sure you fill in a value (Y or N) for " \ + "all ten privileges.\nRun '%s --help-editerm' for more " \ + "information.\nNo permissions have been set.", PRIV, lines + 1, \ + program_name) STRTOK_WHITESPACE(select_priv, NULL); CHECK_PRIV(select_priv); @@ -433,7 +467,7 @@ editperm(MYSQL *pmysql, const char *db) if (mysql_query(pmysql, queries[i])) dberror(pmysql, "Failed to insert grant line %d.", i + 1); } - + return 0; } @@ -453,6 +487,9 @@ main(int argc, char *argv[]) for (i = 1; i < argc; i++) if (strcmp(argv[i], "--help") == 0) return usage(); + for (i = 1; i < argc; i++) + if (strcmp(argv[i], "--help-editperm") == 0) + return usage_editperm(); for (i = 1; i < argc; i++) if (strcmp(argv[i], "--version") == 0) return version();