]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
:-) (CVS 30)
authordrh <drh@noemail.net>
Wed, 31 May 2000 23:33:17 +0000 (23:33 +0000)
committerdrh <drh@noemail.net>
Wed, 31 May 2000 23:33:17 +0000 (23:33 +0000)
FossilOrigin-Name: 9b8458bbcef19882f14f0e96575fc3f0a86df97a

manifest
manifest.uuid
src/shell.c

index 044b5d20582e1dfcd920150a5a1250fee9ef124a..6cce59265a7af53caf88d249e00ae2e01cf46d2f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C :-)\s(CVS\s29)
-D 2000-05-31T22:58:39
+C :-)\s(CVS\s30)
+D 2000-05-31T23:33:17
 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
 F Makefile.in 7ac2fef265940d93a544cb454efa836451559a71
 F README 6b5960603c7f8bf42fc022b4b6436f242f238dbb
@@ -15,7 +15,7 @@ F src/insert.c bd34716d0bba5561f6b55101adbf16fa75f872e8
 F src/main.c a14b1e8837836e59eb4855bf22879c7139892276
 F src/parse.y 16322c46ec117082ef745715f7a4761f2491a0b2
 F src/select.c 25cada7cb2b0b4973b3e17c81ba1b1c887829f71
-F src/shell.c c5752d32cdeaa7d548d4f91177b697b023a00381
+F src/shell.c 9a42923e9c8ec1654dd1ef1aa113eca26dcf30db
 F src/sqlite.h 2397c17a8f4ca90c09acab0100dc7e2f8f441b69
 F src/sqliteInt.h a3c662ff65826f3b51d4aa946b4201e864c4587c
 F src/tclsqlite.c 9efd29f79ded6a900aa3d142169c8bfe03b7affd
@@ -45,7 +45,7 @@ F www/c_interface.tcl f875864edf7974157d1c257ca08de854660882a5
 F www/changes.tcl 37f4906f0b03f2160d2b2e4ed3cedb0b91d253cb
 F www/index.tcl a94e31dc690f07b0dfdb82c5ab6315e4840a336d
 F www/sqlite.tcl 7deb564df188ad4523adecfe2365de6d09f6dfd9
-P 57c5add197c12c919e2556b5ac421803398f2c1b
-R f5b36e27fa2bef5aa09105fe5f4f6aab
+P 09054df318240f2f2b365f7b24655473c1ab6655
+R fc82166dc2a47a40a12fe4f5158b594e
 U drh
-Z 8e27228f5e9143eb165e86ff6773e689
+Z 56c060b93461ac99c13a7f384be1c3c5
index 8c1fc379dcdfa979f984cc77692cabaeebfc7f86..fe16bb7615f7d41011a545efb714cfc1c4644a38 100644 (file)
@@ -1 +1 @@
-09054df318240f2f2b365f7b24655473c1ab6655
\ No newline at end of file
+9b8458bbcef19882f14f0e96575fc3f0a86df97a
\ No newline at end of file
index 4cc8a3032d1e54046394a94329ef0aa270eb3d06..86202d1d24e839c2da0169bd408423c45d154e10 100644 (file)
@@ -24,7 +24,7 @@
 ** This file contains code to implement the "sqlite" command line
 ** utility for accessing SQLite databases.
 **
-** $Id: shell.c,v 1.4 2000/05/31 02:27:49 drh Exp $
+** $Id: shell.c,v 1.5 2000/05/31 23:33:17 drh Exp $
 */
 #include <stdlib.h>
 #include <string.h>
@@ -137,6 +137,7 @@ struct callback_data {
 #define MODE_Line     0  /* One field per line.  Blank line between records */
 #define MODE_Column   1  /* One record per line in neat columns */
 #define MODE_List     2  /* One record per line with a separator */
+#define MODE_Html     3  /* Generate an XHTML table */
 
 /*
 ** Number of elements in an array
@@ -176,7 +177,8 @@ static int callback(void *pArg, int nArg, char **azArg, char **azCol){
           }else{
              w = 10;
           }
-          fprintf(p->out,"%-*.*s%s",w,w,"-------------------------------------",
+          fprintf(p->out,"%-*.*s%s",w,w,"-------------------------------------"
+                 "------------------------------------------------------------",
                   i==nArg-1 ? "\n": "  ");
         }
       }
@@ -202,6 +204,23 @@ static int callback(void *pArg, int nArg, char **azArg, char **azCol){
       }
       break;
     }
+    case MODE_Html: {
+      if( p->cnt++==0 && p->showHeader ){
+        fprintf(p->out,"<TR>");
+        for(i=0; i<nArg; i++){
+          fprintf(p->out,"<TH>%s</TH>",azCol[i]);
+        }
+        fprintf(p->out,"</TR>\n");
+      }
+      for(i=0; i<nArg; i++){
+        fprintf(p->out,"<TR>");
+        for(i=0; i<nArg; i++){
+          fprintf(p->out,"<TD>%s</TD>",azArg[i]);
+        }
+        fprintf(p->out,"</TD>\n");
+      }
+      break;
+    }
   }      
   return 0;
 }
@@ -215,8 +234,8 @@ static char zHelp[] =
   ".header ON|OFF         Turn display of headers on or off\n"
   ".help                  Show this message\n"
   ".indices TABLE         Show names of all indices on TABLE\n"
-  ".mode MODE             Set mode to one of \"line\", \"column\", or"
-                                      " \"list\"\n"
+  ".mode MODE             Set mode to one of \"line\", \"column\", "
+                                      "\"list\", or \"html\"\n"
   ".output FILENAME       Send output to FILENAME\n"
   ".output stdout         Send output to the screen\n"
   ".schema ?TABLE?        Show the CREATE statements\n"
@@ -317,6 +336,8 @@ static void do_meta_command(char *zLine, sqlite *db, struct callback_data *p){
       p->mode = MODE_Column;
     }else if( strncmp(azArg[1],"list",n2)==0 ){
       p->mode = MODE_List;
+    }else if( strncmp(azArg[1],"html",n2)==0 ){
+      p->mode = MODE_Html;
     }
   }else
 
@@ -391,10 +412,45 @@ static void do_meta_command(char *zLine, sqlite *db, struct callback_data *p){
 int main(int argc, char **argv){
   sqlite *db;
   char *zErrMsg = 0;
+  char *argv0 = argv[0];
   struct callback_data data;
 
+  memset(&data, 0, sizeof(data));
+  data.mode = MODE_List;
+  strcpy(data.separator,"|");
+  data.showHeader = 0;
+  while( argc>=2 && argv[1][0]=='-' ){
+    if( strcmp(argv[1],"-html")==0 ){
+      data.mode = MODE_Html;
+      argc--;
+      argv++;
+    }else if( strcmp(argv[1],"-list")==0 ){
+      data.mode = MODE_List;
+      argc--;
+      argv++;
+    }else if( strcmp(argv[1],"-line")==0 ){
+      data.mode = MODE_Line;
+      argc--;
+      argv++;
+    }else if( argc>=3 && strcmp(argv[0],"-separator")==0 ){
+      sprintf(data.separator,"%.*s",sizeof(data.separator)-1,argv[2]);
+      argc -= 2;
+      argv += 2;
+    }else if( strcmp(argv[1],"-header")==0 ){
+      data.showHeader = 1;
+      argc--;
+      argv++;
+    }else if( strcmp(argv[1],"-noheader")==0 ){
+      data.showHeader = 0;
+      argc--;
+      argv++;
+    }else{
+      fprintf(stderr,"%s: unknown option: %s\n", argv0, argv[1]);
+      return 1;
+    }
+  }
   if( argc!=2 && argc!=3 ){
-    fprintf(stderr,"Usage: %s FILENAME ?SQL?\n", *argv);
+    fprintf(stderr,"Usage: %s ?OPTIONS? FILENAME ?SQL?\n", argv0);
     exit(1);
   }
   db = sqlite_open(argv[1], 0666, &zErrMsg);
@@ -402,11 +458,8 @@ int main(int argc, char **argv){
     fprintf(stderr,"Unable to open database \"%s\": %s\n", argv[1], zErrMsg);
     exit(1);
   }
-  memset(&data, 0, sizeof(data));
   data.out = stdout;
   if( argc==3 ){
-    data.mode = MODE_List;
-    strcpy(data.separator,"|");
     if( sqlite_exec(db, argv[2], callback, &data, &zErrMsg)!=0 && zErrMsg!=0 ){
       fprintf(stderr,"SQL error: %s\n", zErrMsg);
       exit(1);
@@ -416,9 +469,6 @@ int main(int argc, char **argv){
     char *zSql = 0;
     int nSql = 0;
     int istty = isatty(0);
-    data.mode = MODE_Line;
-    strcpy(data.separator,"|");
-    data.showHeader = 0;
     if( istty ){
       printf(
         "Enter \".help\" for instructions\n"
@@ -438,7 +488,7 @@ int main(int argc, char **argv){
         int len = strlen(zLine);
         zSql = realloc( zSql, nSql + len + 2 );
         if( zSql==0 ){
-          fprintf(stderr,"%s: out of memory!\n", *argv);
+          fprintf(stderr,"%s: out of memory!\n", argv0);
           exit(1);
         }
         strcpy(&zSql[nSql++], "\n");