Changeset 17854 for trunk/ippTools/src/pxadmin.c
- Timestamp:
- May 29, 2008, 11:59:21 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/pxadmin.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/pxadmin.c
r11840 r17854 23 23 24 24 #include <stdlib.h> 25 #include <string.h> 25 26 26 27 #include "pxtools.h" 27 28 #include "pxadmin.h" 29 30 bool deleteMode(pxConfig *config); 28 31 29 32 int main(int argc, char **argv) … … 39 42 switch (config->mode) { 40 43 case PXADMIN_MODE_RECREATE: 41 if (! pxDeleteTables(config)) {44 if (!deleteMode(config)) { 42 45 goto FAIL; 43 46 } … … 49 52 break; 50 53 case PXADMIN_MODE_DELETE: 51 if (! pxDeleteTables(config)) {54 if (!deleteMode(config)) { 52 55 goto FAIL; 53 56 } … … 74 77 exit(exit_status); 75 78 } 79 80 bool deleteMode(pxConfig *config) 81 { 82 PS_ASSERT_PTR_NON_NULL(config, false); 83 84 psString query = pxDataGet("pxadmin_drop_tables.sql"); 85 if (!query) { 86 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 87 return false; 88 } 89 90 // BEGIN 91 if (!psDBTransaction(config->dbh)) { 92 psError(PS_ERR_UNKNOWN, false, "database error"); 93 return false; 94 } 95 96 // loop over all statements in string 97 psList *statements = psStringSplit(query, ";", false); 98 psFree(query); 99 100 psString q = NULL; 101 psListIterator *iter = psListIteratorAlloc(statements, PS_LIST_HEAD, false); 102 while ((q = psListGetAndIncrement(iter))) { 103 if (!p_psDBRunQuery(config->dbh, q)) { 104 if (!psDBRollback(config->dbh)) { 105 psError(PS_ERR_UNKNOWN, false, "database error"); 106 } 107 psError(PS_ERR_UNKNOWN, false, "database error"); 108 psFree(iter); 109 psFree(statements); 110 return false; 111 } 112 } 113 psFree(iter); 114 psFree(statements); 115 116 // COMMIT 117 if (!psDBCommit(config->dbh)) { 118 psError(PS_ERR_UNKNOWN, false, "database error"); 119 return false; 120 } 121 122 return true; 123 }
Note:
See TracChangeset
for help on using the changeset viewer.
