diff options
author | Adrian Negreanu <groleo@gmail.com> | 2013-08-03 12:47:56 (GMT) |
---|---|---|
committer | Adrian Negreanu <groleo@gmail.com> | 2013-08-03 13:08:38 (GMT) |
commit | 7482f0f09f7e85ffb40e3b5c3990576f10628fb8 (patch) | |
tree | bdab701786e2c8f3182b0948bce27b17a3915110 | |
parent | 38f39408be755d67c57a1faf2c67cfe99f9a60e8 (diff) | |
download | Doxygen-7482f0f09f7e85ffb40e3b5c3990576f10628fb8.zip Doxygen-7482f0f09f7e85ffb40e3b5c3990576f10628fb8.tar.gz Doxygen-7482f0f09f7e85ffb40e3b5c3990576f10628fb8.tar.bz2 |
sqlite3: no more exit
Signed-off-by: Adrian Negreanu <groleo@gmail.com>
-rw-r--r-- | src/sqlite3gen.cpp | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp index 6abaeb4..c83b2c7 100644 --- a/src/sqlite3gen.cpp +++ b/src/sqlite3gen.cpp @@ -260,6 +260,7 @@ static int step(sqlite3 *db, sqlite3_stmt *stmt,bool getRowId=FALSE) if (rc!=SQLITE_DONE && rc!=SQLITE_ROW) { msg("sqlite3_step failed: %s\n", sqlite3_errmsg(db)); + return -1; } if (getRowId) id = sqlite3_column_int(stmt, 0); sqlite3_reset(stmt); @@ -285,7 +286,7 @@ static int insertFile(sqlite3 *db, const char* name) return id; } -static void insertMemberReference(sqlite3 *db, const char*src, const char*dst, const char *file, int line, int column) +static int insertMemberReference(sqlite3 *db, const char*src, const char*dst, const char *file, int line, int column) { int id_file = insertFile(db,file); bindTextParameter(i_s_xrefs,":src",src); @@ -295,7 +296,7 @@ static void insertMemberReference(sqlite3 *db, const char*src, const char*dst, c bindIntParameter(i_s_xrefs,":line",line); bindIntParameter(i_s_xrefs,":column",column); - step(db,i_s_xrefs); +return step(db,i_s_xrefs); } static void insertMemberReference(sqlite3 *db, MemberDef *src, MemberDef *dst, const char*floc) @@ -339,7 +340,8 @@ static void writeInnerClasses(sqlite3*db,const ClassSDict *cl) bindTextParameter(i_s_innerclass,":refid",cd->getOutputFileBase()); bindIntParameter(i_s_innerclass,":prot",cd->protection()); bindTextParameter(i_s_innerclass,":name",cd->name()); - step(db,i_s_innerclass); + if (-1==step(db,i_s_innerclass)) + return; } } } @@ -458,7 +460,7 @@ static void pragmaTuning(sqlite3 *db) sqlite3_exec(db, "PRAGMA journal_mode = MEMORY", NULL, NULL, &sErrMsg); } -static void initializeSchema(sqlite3* db) +static int initializeSchema(sqlite3* db) { int rc; sqlite3_stmt *stmt = 0; @@ -473,17 +475,17 @@ static void initializeSchema(sqlite3* db) if (rc != SQLITE_OK) { msg("failed to prepare query: %s\n\t%s\n", q, sqlite3_errmsg(db)); - exit(-1); + return -1; } rc = sqlite3_step(stmt); if (rc != SQLITE_DONE) { msg("failed to execute query: %s\n\t%s\n", q, sqlite3_errmsg(db)); - exit(-1); + return -1; } sqlite3_finalize(stmt); - } + return 0; } ////////////////////////////////////////////////////////////////////////////// @@ -562,7 +564,8 @@ static void generateSqlite3ForFile(sqlite3 *db, FileDef *fd) bindIntParameter(i_s_includes,":local",ii->local); bindIntParameter(i_s_includes,":id_src",id_file); bindTextParameter(i_s_includes,":dst",ii->includeName.data(),FALSE); - step(db,i_s_includes); + if (-1==step(db,i_s_includes)) + return; } } @@ -576,7 +579,8 @@ static void generateSqlite3ForFile(sqlite3 *db, FileDef *fd) bindIntParameter(i_s_includes,":local",ii->local); bindIntParameter(i_s_includes,":id_src",id_file); bindTextParameter(i_s_includes,":dst",fd->absFilePath().data(),FALSE); - step(db,i_s_includes); + if (-1==step(db,i_s_includes)) + return; } } @@ -865,7 +869,8 @@ static void generateSqlite3ForMember(sqlite3*db,MemberDef *md,Definition *def) if (md->getStartBodyLine()!=-1) { int id_bfile = insertFile(db,md->getBodyDef()->absFilePath()); - if (id_bfile == -1) exit(-1); + if (id_bfile == -1) return; + bindIntParameter(i_s_memberdef,":id_ibfile",id_bfile); bindIntParameter(i_s_memberdef,":bline",md->getStartBodyLine()); @@ -875,7 +880,8 @@ static void generateSqlite3ForMember(sqlite3*db,MemberDef *md,Definition *def) } } - step(db,i_s_memberdef); + if (-1==step(db,i_s_memberdef)) + return; /*int id_src =*/ sqlite3_last_insert_rowid(db); // + source references @@ -946,7 +952,8 @@ static void generateSqlite3ForClass(sqlite3 *db, ClassDef *cd) bindIntParameter(i_s_compounddef,":line",cd->getDefLine()); bindIntParameter(i_s_compounddef,":column",cd->getDefColumn()); - step(db,i_s_compounddef); + if (-1==step(db,i_s_compounddef)) + return; // + list of direct super classes if (cd->baseClasses()) @@ -968,7 +975,8 @@ static void generateSqlite3ForClass(sqlite3 *db, ClassDef *cd) bindTextParameter(i_s_basecompoundref,":base",bcd->classDef->displayName()); } bindTextParameter(i_s_basecompoundref,":derived",cd->displayName()); - step(db,i_s_basecompoundref); + if (-1==step(db,i_s_basecompoundref)) + return; } } @@ -984,7 +992,8 @@ static void generateSqlite3ForClass(sqlite3 *db, ClassDef *cd) bindTextParameter(i_s_derivedcompoundref,":refid",bcd->classDef->getOutputFileBase()); bindIntParameter(i_s_derivedcompoundref,":prot",bcd->prot); bindIntParameter(i_s_derivedcompoundref,":virt",bcd->virt); - step(db,i_s_derivedcompoundref); + if (-1==step(db,i_s_derivedcompoundref)) + return; } } @@ -1005,7 +1014,8 @@ static void generateSqlite3ForClass(sqlite3 *db, ClassDef *cd) bindIntParameter(i_s_includes,":local",ii->local); bindIntParameter(i_s_includes,":id_src",id_file); bindTextParameter(i_s_includes,":dst",nm); - step(db,i_s_includes); + if (-1==step(db,i_s_includes)) + return; } } } @@ -1061,12 +1071,14 @@ void generateSqlite3() { sqlite3_close(db); msg("database open failed: %s\n", "doxygen_sqlite3.db"); - exit(-1); + return; } beginTransaction(db); pragmaTuning(db); - initializeSchema(db); + if (-1==initializeSchema(db)) + return; + if ( -1 == prepareStatements(db) ) { err("sqlite generator: prepareStatements failed!"); |