[BACK]Return to mandocdb.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/mandocdb.c between version 1.105 and 1.106

version 1.105, 2014/01/06 13:54:17 version 1.106, 2014/01/06 15:32:47
Line 700  filescan(const char *file)
Line 700  filescan(const char *file)
                 exitcode = (int)MANDOCLEVEL_BADARG;                  exitcode = (int)MANDOCLEVEL_BADARG;
                 say(file, NULL);                  say(file, NULL);
                 return;                  return;
         } else if (OP_TEST != op && strstr(buf, basedir) != buf) {          }
   
           if (strstr(buf, basedir) == buf)
                   start = buf + strlen(basedir) + 1;
           else if (OP_TEST == op)
                   start = buf;
           else {
                 exitcode = (int)MANDOCLEVEL_BADARG;                  exitcode = (int)MANDOCLEVEL_BADARG;
                 say("", "%s: outside base directory", buf);                  say("", "%s: outside base directory", buf);
                 return;                  return;
         } else if (-1 == stat(buf, &st)) {          }
   
           if (-1 == stat(buf, &st)) {
                 exitcode = (int)MANDOCLEVEL_BADARG;                  exitcode = (int)MANDOCLEVEL_BADARG;
                 say(file, NULL);                  say(file, NULL);
                 return;                  return;
Line 713  filescan(const char *file)
Line 721  filescan(const char *file)
                 say(file, "Not a regular file");                  say(file, "Not a regular file");
                 return;                  return;
         }          }
         start = buf + strlen(basedir);  
         mlink = mandoc_calloc(1, sizeof(struct mlink));          mlink = mandoc_calloc(1, sizeof(struct mlink));
         strlcpy(mlink->file, start, sizeof(mlink->file));          strlcpy(mlink->file, start, sizeof(mlink->file));
   
Line 1791  dbprune(void)
Line 1799  dbprune(void)
         size_t           i;          size_t           i;
         unsigned int     slot;          unsigned int     slot;
   
         if (nodb)          if (0 == nodb)
                 return;                  SQL_EXEC("BEGIN TRANSACTION");
   
         mpage = ohash_first(&mpages, &slot);          for (mpage = ohash_first(&mpages, &slot); NULL != mpage;
         while (NULL != mpage) {               mpage = ohash_next(&mpages, &slot)) {
                 mlink = mpage->mlinks;                  mlink = mpage->mlinks;
                 i = 1;  
                 SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE], i, mlink->file);  
                 SQL_STEP(stmts[STMT_DELETE_PAGE]);  
                 sqlite3_reset(stmts[STMT_DELETE_PAGE]);  
                 if (verb)                  if (verb)
                         say(mlink->file, "Deleted from database");                          say(mlink->file, "Deleting from database");
                 mpage = ohash_next(&mpages, &slot);                  if (nodb)
                           continue;
                   for ( ; NULL != mlink; mlink = mlink->next) {
                           i = 1;
                           SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE],
                               i, mlink->dsec);
                           SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE],
                               i, mlink->arch);
                           SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE],
                               i, mlink->name);
                           SQL_STEP(stmts[STMT_DELETE_PAGE]);
                           sqlite3_reset(stmts[STMT_DELETE_PAGE]);
                   }
         }          }
   
           if (0 == nodb)
                   SQL_EXEC("END TRANSACTION");
 }  }
   
 /*  /*
Line 1915  dbopen(int real)
Line 1934  dbopen(int real)
   
 prepare_statements:  prepare_statements:
         SQL_EXEC("PRAGMA foreign_keys = ON");          SQL_EXEC("PRAGMA foreign_keys = ON");
         sql = "DELETE FROM mpages where file=?";          sql = "DELETE FROM mpages WHERE id IN "
                   "(SELECT pageid FROM mlinks WHERE "
                   "sec=? AND arch=? AND name=?)";
         sqlite3_prepare_v2(db, sql, -1, &stmts[STMT_DELETE_PAGE], NULL);          sqlite3_prepare_v2(db, sql, -1, &stmts[STMT_DELETE_PAGE], NULL);
         sql = "INSERT INTO mpages "          sql = "INSERT INTO mpages "
                 "(form) VALUES (?)";                  "(form) VALUES (?)";

Legend:
Removed from v.1.105  
changed lines
  Added in v.1.106

CVSweb