--- client/mysql.cc.orig	2008-04-16 16:46:51.000000000 -0400
+++ client/mysql.cc	2008-04-16 23:39:42.000000000 -0400
@@ -200,6 +200,7 @@
 	   com_rehash(String *str, char*), com_tee(String *str, char*),
            com_notee(String *str, char*), com_charset(String *str,char*),
            com_prompt(String *str, char*), com_delimiter(String *str, char*),
+           com_ls(String *str, char*),
      com_warnings(String *str, char*), com_nowarnings(String *str, char*);
 
 #ifdef USE_POPEN
@@ -238,6 +239,7 @@
 
 static COMMANDS commands[] = {
   { "?",      '?', com_help,   1, "Synonym for `help'." },
+  { "cd",     'C', com_use,    1, "Synonym for `use'." },
   { "clear",  'c', com_clear,  0, "Clear command."},
   { "connect",'r', com_connect,1,
     "Reconnect to the server. Optional arguments are db and host." },
@@ -250,6 +252,7 @@
     "Send command to mysql server, display result vertically."},
   { "exit",   'q', com_quit,   0, "Exit mysql. Same as quit."},
   { "go",     'g', com_go,     0, "Send command to mysql server." },
+  { "ls",     'l', com_ls,     0, "List databases or tables." },
   { "help",   'h', com_help,   1, "Display this help." },
 #ifdef USE_POPEN
   { "nopager",'n', com_nopager,0, "Disable pager, print to stdout." },
@@ -2249,6 +2252,25 @@
 #endif
 }
 
+static int
+com_ls(String *buffer __attribute__((unused)), char *line)
+{
+
+  if (!connected && reconnect())
+    return status.batch ? 1 : -1;
+
+  if (!current_db)
+  {
+    buffer->set_ascii("SHOW DATABASES", 14);
+    com_go(buffer, 0);
+  }
+  else
+  {
+    buffer->set_ascii("SHOW TABLES", 11);
+    com_go(buffer, 0);
+  }
+  return 0;
+}
 
 static void init_tee(const char *file_name)
 {
