@@ -103,42 +103,41 @@ static void gen_data(sqlite3 *db){
103103 sqlite3_exec (db , "INSERT INTO users (id, name) VALUES (3, 'Jim Beam')" , 0 , 0 , 0 );
104104}
105105
106+ int open_db (const char * path , sqlite3 * * db ) {
107+ int rc ;
108+
109+ rc = sqlite3_open (path , db );
110+ if (rc != SQLITE_OK ) {
111+ fprintf (stderr , "Can't open database %s: %s\n" , path , sqlite3_errmsg (* db ));
112+ return rc ;
113+ }
114+ rc = sqlite3_exec (* db , "PRAGMA journal_mode=WAL" , NULL , NULL , NULL );
115+ if (rc != SQLITE_OK ) {
116+ fprintf (stderr , "Can't set journal mode for %s: %s\n" , path , sqlite3_errmsg (* db ));
117+ return rc ;
118+ }
119+ rc = sqlite3_wal_autocheckpoint (* db , 0 );
120+ if (rc != SQLITE_OK ) {
121+ fprintf (stderr , "Can't disable checkpointing for %s: %s\n" , path , sqlite3_errmsg (* db ));
122+ return rc ;
123+ }
124+ return rc ;
125+ }
126+
106127int main (int argc , char * argv [])
107128{
108129 sqlite3 * db_primary , * db_backup ;
109130 int rc ;
110131
111- rc = sqlite3_open ("primary.db" , & db_primary );
132+ rc = open_db ("primary.db" , & db_primary );
112133 if (rc != SQLITE_OK ) {
113- fprintf (stderr , "Can't open database: %s\n" , sqlite3_errmsg (db_primary ));
114134 return 1 ;
115135 }
116- rc = sqlite3_wal_autocheckpoint (db_primary , 0 );
117- if (rc != SQLITE_OK ) {
118- fprintf (stderr , "Can't disable checkpointing: %s\n" , sqlite3_errmsg (db_primary ));
119- return 1 ;
120- }
121- sqlite3_exec (db_primary , "PRAGMA journal_mode=WAL" , NULL , NULL , NULL );
122-
123136 gen_data (db_primary );
124137
125- rc = sqlite3_open ("backup.db" , & db_backup );
126- if (rc != SQLITE_OK ) {
127- fprintf (stderr , "Can't open database: %s\n" , sqlite3_errmsg (db_backup ));
128- return 1 ;
129- }
130- rc = sqlite3_wal_autocheckpoint (db_backup , 0 );
131- if (rc != SQLITE_OK ) {
132- fprintf (stderr , "Can't disable checkpointing: %s\n" , sqlite3_errmsg (db_backup ));
133- return 1 ;
134- }
135- rc = sqlite3_exec (db_backup , "PRAGMA journal_mode=WAL" , NULL , NULL , NULL );
136- if (rc != SQLITE_OK ) {
137- fprintf (stderr , "Can't set journal mode: %s\n" , sqlite3_errmsg (db_backup ));
138- return 1 ;
139- }
140-
138+ rc = open_db ("backup.db" , & db_backup );
141139 sync_db (db_primary , db_backup );
140+
142141 if (cmp_data (db_primary , db_backup )) {
143142 return 1 ;
144143 }
0 commit comments