Index: src/json.c
==================================================================
--- src/json.c
+++ src/json.c
@@ -84,17 +84,17 @@
 ** Print the timing results.
 */
 static double endTimer(void){
   struct rusage sEnd;
   getrusage(RUSAGE_SELF, &sEnd);
-  return timeDiff(&sBegin.ru_utime, &sEnd.ru_utime)
-    + timeDiff(&sBegin.ru_stime, &sEnd.ru_stime);
 #if 0
   printf("CPU Time: user %f sys %f\n",
          timeDiff(&sBegin.ru_utime, &sEnd.ru_utime),
          timeDiff(&sBegin.ru_stime, &sEnd.ru_stime));
 #endif
+  return timeDiff(&sBegin.ru_utime, &sEnd.ru_utime)
+    + timeDiff(&sBegin.ru_stime, &sEnd.ru_stime);
 }
 
 #define BEGIN_TIMER beginTimer()
 #define END_TIMER endTimer()
 #define HAS_TIMER 1
@@ -162,10 +162,11 @@
     FILETIME ftCreation, ftExit, ftKernelEnd, ftUserEnd;
     getProcessTimesAddr(hProcess, &ftCreation, &ftExit, &ftKernelEnd, &ftUserEnd);
     return timeDiff(&ftUserBegin, &ftUserEnd) +
       timeDiff(&ftKernelBegin, &ftKernelEnd);
   }
+  return 0.0;
 }
 
 #define BEGIN_TIMER beginTimer()
 #define END_TIMER endTimer()
 #define HAS_TIMER hasTimer()
@@ -912,11 +913,10 @@
                        cson_array * target ){
   char const * p = zStr /* current byte */;
   char const * head  /* current start-of-token */;
   unsigned int len = 0   /* current token's length */;
   int rc = 0   /* return code (number of added elements)*/;
-  char skipWs = fossil_isspace(separator) ? 0 : 1;
   assert( zStr && target );
   while( fossil_isspace(*p) ){
     ++p;
   }
   head = p;
@@ -1015,11 +1015,10 @@
 ** This must only be called once, or an assertion may be triggered.
 */
 static void json_mode_bootstrap(){
   static char once = 0  /* guard against multiple runs */;
   char const * zPath = P("PATH_INFO");
-  cson_value * pathSplit = NULL;
   assert( (0==once) && "json_mode_bootstrap() called too many times!");
   if( once ){
     return;
   }else{
     once = 1;
@@ -1151,11 +1150,10 @@
     g.json.errorDetailParanoia = 0 /*disable error code dumb-down for CLI mode*/;
   }
 
   {/* set up JSON output formatting options. */
     int indent = -1;
-    char const * indentStr = NULL;
     indent = json_find_option_int("indent",NULL,"I",-1);
     g.json.outOpt.indentation = (0>indent)
       ? (g.isHTTP ? 0 : 1)
       : (unsigned char)indent;
     g.json.outOpt.addNewline = g.isHTTP
@@ -1331,11 +1329,10 @@
   if(!g.json.cmd.a){
     return NULL;
   }else{
     cson_value * rc = NULL;
     Blob path = empty_blob;
-    char const * part;
     unsigned int aLen = g.json.dispatchDepth+1; /*cson_array_length_get(g.json.cmd.a);*/
     unsigned int i = 1;
     for( ; i < aLen; ++i ){
       char const * part = cson_string_cstr(cson_value_get_string(cson_array_get(g.json.cmd.a, i)));
       if(!part){

Index: src/json_artifact.c
==================================================================
--- src/json_artifact.c
+++ src/json_artifact.c
@@ -85,11 +85,10 @@
              );
   if( db_step(&q)==SQLITE_ROW ){
     cson_object * o;
     cson_value * tmpV = NULL;
     const char *zUuid = db_column_text(&q, 0);
-    char * zTmp;
     const char *zUser;
     const char *zComment;
     char * zEUser, * zEComment;
     int mtime, omtime;
     v = cson_value_new_object();

Index: src/json_diff.c
==================================================================
--- src/json_diff.c
+++ src/json_diff.c
@@ -37,11 +37,10 @@
   int fromid;
   int toid;
   int outLen;
   Blob from = empty_blob, to = empty_blob, out = empty_blob;
   cson_value * rc = NULL;
-  char const * zType = "ci";
   int flags = (DIFF_CONTEXT_MASK & nContext)
       | (fSbs ? DIFF_SIDEBYSIDE : 0);
   fromid = name_to_typed_rid(zFrom, "*");
   if(fromid<=0){
       json_set_err(FSL_JSON_E_UNRESOLVED_UUID,

Index: src/json_timeline.c
==================================================================
--- src/json_timeline.c
+++ src/json_timeline.c
@@ -405,11 +405,11 @@
     cson_value_free( cson_string_value(tags) );
     cson_value_free( cson_string_value(isLeaf) );
   }
    
   goto end;
-  error:
+
   assert( 0 != g.json.resultCode );
   cson_value_free(pay);
 
   end:
   return pay;
@@ -429,11 +429,10 @@
   cson_array * list = NULL;
   int check = 0;
   char showFiles = -1/*magic number*/;
   Stmt q = empty_Stmt;
   char warnRowToJsonFailed = 0;
-  char warnStringToArrayFailed = 0;
   Blob sql = empty_blob;
   if( !g.perm.Read ){
     /* IMO this falls more under the category of g.perm.History, but
        i'm following the original timeline impl here.
     */

Index: src/json_wiki.c
==================================================================
--- src/json_wiki.c
+++ src/json_wiki.c
@@ -163,18 +163,13 @@
 /*
 ** Implementation of /json/wiki/get.
 **
 */
 static cson_value * json_wiki_get(){
-  int rid;
-  Manifest *pWiki = 0;
-  char const * zBody = NULL;
   char const * zPageName;
   char const * zFormat = NULL;
-  char * zUuid = NULL;
   char contentFormat = -1;
-  Stmt q;
   if( !g.perm.RdWiki && !g.perm.Read ){
     json_set_err(FSL_JSON_E_DENIED,
                  "Requires 'o' or 'j' access.");
     return NULL;
   }