chiark / gitweb /
e169dd5d323cfe8a9113313bc5b45af3aa3502ff
[ypp-sc-tools.main.git] / yarrg / rssetup.c
1
2 #include "rscommon.h"
3
4 sqlite3 *db;
5 sqlite3_stmt *ss_ipair;
6
7 static int busy_handler(void *u, int previous) {
8   if (DEBUGP(sql)) fprintf(stderr,"[[DB BUSY %d]]",previous);
9   sysassert(! usleep(5000) );
10   return 1;
11 }
12
13 void setup(void) {
14   sqlite3_stmt *sst;
15   
16   SQL_MUST( sqlite3_open("OCEAN-Midnight.db", &db) );
17   SQL_MUST( sqlite3_busy_handler(db, busy_handler, 0) );
18
19   SQL_MUST( sqlite3_prepare(db, "BEGIN", -1, &sst, 0) );
20   assert( !SQL_STEP(sst) );
21   sqlite3_finalize(sst);
22
23   setup_value();
24 }
25
26 int sql_step_wrap(sqlite3_stmt *ssh, const char *ssh_string,
27                   const char *file, int line) {
28   for (;;) {
29     int sqr;
30     sqr= sqlite3_step((ssh));
31     switch (sqr) {
32     case SQLITE_DONE:
33       if (DEBUGP(sql))
34         fprintf(stderr,"SQL %s DONE\n",ssh_string);
35       return 0;
36     case SQLITE_ROW:
37       if (DEBUGP(sql)) {
38         int i;
39         fprintf(stderr,"SQL %s R",ssh_string);
40         for (i=0; i<sqlite3_column_count(ssh); i++) {
41           fputc('\t',stderr);
42           fputs((char*)sqlite3_column_text(ssh,i),stderr);
43         }
44         fputs("\n",stderr);
45       }
46       return 1;
47     default: fatal("SQL step failed at %s:%d: code %d: %s: %s",
48                    file, line, sqr, sqlite3_errmsg(db), ssh_string);
49     }
50   }
51 }