diff --git a/mysql-dbadm.c b/mysql-dbadm.c index 4f5b721..8a54a87 100644 --- a/mysql-dbadm.c +++ b/mysql-dbadm.c @@ -363,7 +363,6 @@ editperm(MYSQL *pmysql, const char *db) char fn[] = "/tmp/mysql-dbadm.tmp.XXXXXX"; FILE *f; char *editor; - char *cmd; char line[1024]; /* buffer to hold one line */ char *cp; /* used to interate through a line */ char *user, *select_priv, *insert_priv, *update_priv, *delete_priv, @@ -415,15 +414,13 @@ editperm(MYSQL *pmysql, const char *db) exit(1); } - editor = getenv("EDITOR"); - if (!editor) - editor = "pico"; /* OK since editor won't be freed */ - - cmd = malloc(sizeof(char) * strlen(editor) + 7); - sprintf(cmd, "%s \"$1\"", editor); - - /* sh -c '$EDITOR "$1"' sh "$fn" */ - execlp("sh", "sh", "-c", cmd, "sh", fn, NULL); + /* exec sh -c '${EDITOR:-pico} "$1"' sh /tmp/filename + * + * The parameter expansion syntax doesn't work with old bourne + * shells, but it works with newer bourne as well as POSIX shells, + * so it should be fine. + */ + execlp("sh", "sh", "-c", "${EDITOR:-pico} \"$1\"", "sh", fn, NULL); perror("Failed to execute editor"); fprintf(stderr, "Make sure the EDITOR environment variable contains" " a valid editor\n");