@@ -103,42 +103,41 @@ static void gen_data(sqlite3 *db){
103
103
sqlite3_exec (db , "INSERT INTO users (id, name) VALUES (3, 'Jim Beam')" , 0 , 0 , 0 );
104
104
}
105
105
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
+
106
127
int main (int argc , char * argv [])
107
128
{
108
129
sqlite3 * db_primary , * db_backup ;
109
130
int rc ;
110
131
111
- rc = sqlite3_open ("primary.db" , & db_primary );
132
+ rc = open_db ("primary.db" , & db_primary );
112
133
if (rc != SQLITE_OK ) {
113
- fprintf (stderr , "Can't open database: %s\n" , sqlite3_errmsg (db_primary ));
114
134
return 1 ;
115
135
}
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
-
123
136
gen_data (db_primary );
124
137
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 );
141
139
sync_db (db_primary , db_backup );
140
+
142
141
if (cmp_data (db_primary , db_backup )) {
143
142
return 1 ;
144
143
}
0 commit comments