chiark / gitweb /
Minor HTML fixes so website validates
[ypp-sc-tools.db-test.git] / yarrg / convert.c
index 42467f2fe773fe44646d9e804acef067d429f8bc..76a9a7af96ac18c97d0e941496ff2b495551d182 100644 (file)
@@ -94,7 +94,7 @@ static void run_analysis(void) {
   analyse(tf);
 
   if (o_flags & ff_upload) {
-    if (npages<=1)
+    if (o_flags & ff_singlepage)
       fatal("Recognition successful, but refusing to upload partial data\n"
            " (--single-page specified).  Specify an output mode?");
   }
@@ -117,9 +117,9 @@ static void run_analysis(void) {
     }
 
     waitpid_check_exitstatus(processor, "output processor/uploader", 0);
-    fclose(tf);
   }
   
+  fclose(tf);
   progress_log("all complete.");
 }
 
@@ -152,6 +152,32 @@ static void rsync_core(const char *stem, const char *suffix,
 void fetch_with_rsync_gz(const char *stem) { rsync_core(stem,".gz",""); }
 void fetch_with_rsync(const char *stem) { rsync_core(stem,"","z"); }
 
+static void get_timestamp(void) {
+  FILE *tf;
+  pid_t child;
+  sysassert( tf= tmpfile() );
+
+  sysassert( (child= fork()) != -1 );
+  if (!child) {
+    sysassert( dup2(fileno(tf),1)==1 );
+    EXECLP_HELPER("database-info-fetch","timestamp",(char*)0);
+  }
+  waitpid_check_exitstatus(child,"timestamp request",0);
+
+  sysassert( fseek(tf,0,SEEK_SET) == 0 );
+  static char lbuf[30];
+  int l= fread(lbuf,1,sizeof(lbuf),tf);
+  sysassert( !ferror(tf) );
+  assert( feof(tf) );
+  assert( l>1 );
+  l--;
+  assert( lbuf[l]=='\n' );
+  lbuf[l]= 0;
+
+  sysassert(! setenv("YPPSC_DATA_TIMESTAMP",lbuf,1) );
+  fclose(tf);
+}
+
 static void set_server(const char *envname, const char *defprotocol,
                       const char *defvalue, const char *defvalue_test,
                       const char *userspecified,
@@ -236,6 +262,7 @@ int main(int argc, char **argv) {
     else if (IS("--dict-read-only"))   o_flags &= (~ffs_dict | ff_dict_fetch);
     else if (IS("--dict-anon"))        o_flags &= ~ff_dict_pirate;
     else if (IS("--dict-submit"))      o_flags |= ff_dict_fetch|ff_dict_submit;
+    else if (IS("--dict-no-update"))   o_flags &= ~ff_dict_fetch; // testing
     else if (IS("--raw-tsv"))          outputmode(omk_raw,0);
     else if (IS("--upload"))           outputmode_uploads();
     else if (IS("--upload-yarrg"))     outputmode(omk_upload_yarrg,arg+2);
@@ -310,8 +337,8 @@ int main(int argc, char **argv) {
             o_serv_pctb,        o_flags & ff_use_pctb);
             
   set_server("YPPSC_YARRG_DICT_UPDATE",
-            "rsync://",         "rsync.yarrg.chiark.net/pctb",
-                                "rsync.yarrg.chiark.net/pctb/test",
+            "rsync://",         "rsync.yarrg.chiark.net/yarrg",
+                                "rsync.yarrg.chiark.net/yarrg/test",
             o_serv_dict_fetch,   o_flags & ff_dict_fetch);
 
   set_server("YPPSC_YARRG_DICT_SUBMIT",
@@ -323,6 +350,9 @@ int main(int argc, char **argv) {
     o_screenshot_fn= masprintf("%s/_pages.ppm.gz", get_vardir());
 
   /* Actually do the work */
+
+  if ((o_flags & ff_upload) && (o_flags & ff_use_yarrg))
+    get_timestamp();
             
   canon_colour_prepare();