Changeset 15188
- Timestamp:
- Oct 3, 2007, 12:55:03 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/magictool.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/magictool.c
r14689 r15188 296 296 297 297 298 pxNode *pxTreeFromMagicTreeRows(psArray *rows)299 {300 psHash *nodeNames = psHashAlloc(10);301 302 for (long i = 0; i < psArrayLength(rows); i++) {303 magicTreeRow *row = rows->data[i];304 pxNode *parent = psHashLookup(nodeNames, row->dep);305 pxNode *node = pxNodeAlloc(row->node, parent);306 psHashAdd(nodeNames, row->node, node);307 psFree(node);308 }309 310 pxNode *root = psHashLookup(nodeNames, "root");311 psFree(nodeNames);312 313 return root;314 }315 316 298 static bool toprocessMode(pxConfig *config) 317 299 { … … 325 307 } 326 308 327 psMetadata *where = NULL; 309 psString query = pxDataGet("magictool_toprocess.sql"); 310 if (!query) { 311 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 312 return false; 313 } 314 315 328 316 if (magic_id) { 329 317 psMetadata *where = psMetadataAlloc(); 330 318 psMetadataAddS64(where, PS_LIST_TAIL, "magic_id", 0, "==", (psS64)atoll(magic_id)); 331 } 332 333 psArray *rows = magicTreeSelectRowObjects( 334 config->dbh, 335 where, 336 0 // limit 337 ); 338 psFree(where); 339 340 pxNode *root = pxTreeFromMagicTreeRows(rows); 341 psFree(rows); 319 psString whereClause = psDBGenerateWhereSQL(where, NULL); 320 psFree(where); 321 psStringAppend(&query, " %s", whereClause); 322 psFree(whereClause); 323 } 324 325 if (!p_psDBRunQuery(config->dbh, query)) { 326 psError(PS_ERR_UNKNOWN, false, "database error"); 327 psFree(query); 328 return false; 329 } 330 psFree(query); 331 332 psArray *output = p_psDBFetchResult(config->dbh); 333 if (!output) { 334 psErrorCode err = psErrorCodeLast(); 335 switch (err) { 336 case PS_ERR_DB_CLIENT: 337 psError(PXTOOLS_ERR_SYS, false, "database error"); 338 case PS_ERR_DB_SERVER: 339 psError(PXTOOLS_ERR_PROG, false, "database error"); 340 default: 341 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 342 } 343 344 return false; 345 } 346 if (!psArrayLength(output)) { 347 psTrace("magictool", PS_LOG_INFO, "no rows found"); 348 psFree(output); 349 return true; 350 } 351 352 psMetadata *deps = psMetadataAlloc(); 353 // convert the array of metadata into a single flat metadata 354 for (long i = 0; i < psArrayLength(output); i++) { 355 psMetadataCopy(deps, output->data[i]); 356 } 357 psFree(output); 358 359 pxNode *root = pxTreeFromMetadata(deps); 360 psFree(deps); 361 342 362 // silence unused warnings... 343 363 if (root) {}
Note:
See TracChangeset
for help on using the changeset viewer.
