Index: src/add.c
==================================================================
--- src/add.c
+++ src/add.c
@@ -39,12 +39,16 @@
   file_tree_name(zName, &pathname, 1);
   zPath = blob_str(&pathname);
   if( strcmp(zPath, "manifest")==0
    || strcmp(zPath, "_FOSSIL_")==0
    || strcmp(zPath, "_FOSSIL_-journal")==0
+   || strcmp(zPath, "_FOSSIL_-wal")==0
+   || strcmp(zPath, "_FOSSIL_-shm")==0
    || strcmp(zPath, ".fos")==0
    || strcmp(zPath, ".fos-journal")==0
+   || strcmp(zPath, ".fos-wal")==0
+   || strcmp(zPath, ".fos-shm")==0
    || strcmp(zPath, "manifest.uuid")==0
    || blob_compare(&pathname, pOmit)==0
   ){
     fossil_warning("cannot add %s", zPath);
   }else{
@@ -223,22 +227,22 @@
   blob_reset(&path);
 }
 
 /*
 ** COMMAND: rm
-** COMMAND: del
+** COMMAND: delete
 **
 ** Usage: %fossil rm FILE...
-**    or: %fossil del FILE...
+**    or: %fossil delete FILE...
 **
 ** Remove one or more files from the tree.
 **
 ** This command does not remove the files from disk.  It just marks the
 ** files as no longer being part of the project.  In other words, future
 ** changes to the named files will not be versioned.
 */
-void del_cmd(void){
+void delete_cmd(void){
   int i;
   int vid;
 
   db_must_be_within_tree();
   vid = db_lget_int("checkout", 0);

Index: src/checkin.c
==================================================================
--- src/checkin.c
+++ src/checkin.c
@@ -271,11 +271,13 @@
   }
   vfile_scan(0, &path, blob_size(&path), allFlag);
   db_prepare(&q, 
       "SELECT x FROM sfile"
       " WHERE x NOT IN ('manifest','manifest.uuid','_FOSSIL_',"
-                         "'_FOSSIL_-journal','.fos','.fos-journal')"
+                       "'_FOSSIL_-journal','.fos','.fos-journal',"
+                       "'_FOSSIL_-wal','_FOSSIL_-shm','.fos-wal',"
+                       "'.fos-shm')"
       "   AND NOT %s"
       " ORDER BY 1",
       glob_expr("x", zIgnoreFlag)
   );
   if( file_tree_name(g.zRepositoryName, &repo, 0) ){
@@ -317,11 +319,13 @@
   blob_init(&path, g.zLocalRoot, n-1);
   vfile_scan(0, &path, blob_size(&path), dotfilesFlag);
   db_prepare(&q, 
       "SELECT %Q || x FROM sfile"
       " WHERE x NOT IN ('manifest','manifest.uuid','_FOSSIL_',"
-                       "'_FOSSIL_-journal','.fos','.fos-journal')"
+                       "'_FOSSIL_-journal','.fos','.fos-journal',"
+                       "'_FOSSIL_-wal','_FOSSIL_-shm','.fos-wal',"
+                       "'.fos-shm')"
       " ORDER BY 1", g.zLocalRoot);
   if( file_tree_name(g.zRepositoryName, &repo, 0) ){
     db_multi_exec("DELETE FROM sfile WHERE x=%B", &repo);
   }
   while( db_step(&q)==SQLITE_ROW ){

Index: src/checkout.c
==================================================================
--- src/checkout.c
+++ src/checkout.c
@@ -232,12 +232,16 @@
 */
 void unlink_local_database(void){
   static const char *azFile[] = {
      "%s_FOSSIL_",
      "%s_FOSSIL_-journal",
+     "%s_FOSSIL_-wal",
+     "%s_FOSSIL_-shm",
      "%s.fos",
      "%s.fos-journal",
+     "%s.fos-wal",
+     "%s.fos-shm",
   };
   int i;
   for(i=0; i<sizeof(azFile)/sizeof(azFile[0]); i++){
     char *z = mprintf(azFile[i], g.zLocalRoot);
     unlink(z);