Changeset 15569 for trunk/ippdb/src/ippdb.c
- Timestamp:
- Nov 9, 2007, 3:55:36 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ippdb/src/ippdb.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippdb/src/ippdb.c
r15533 r15569 79 79 #define MAGICMASK_TABLE_NAME "magicMask" 80 80 #define MAGICSKYFILEMASK_TABLE_NAME "magicSkyfileMask" 81 #define CALDB_TABLE_NAME "calDB" 82 #define CALRUN_TABLE_NAME "calRun" 81 83 #define MAX_STRING_LENGTH 1024 82 84 … … 22042 22044 return true; 22043 22045 } 22046 static void calDBRowFree(calDBRow *object); 22047 22048 calDBRow *calDBRowAlloc(psS64 cal_id, const char *catdir, const char *state) 22049 { 22050 calDBRow *_object; 22051 22052 _object = psAlloc(sizeof(calDBRow)); 22053 psMemSetDeallocator(_object, (psFreeFunc)calDBRowFree); 22054 22055 _object->cal_id = cal_id; 22056 _object->catdir = psStringCopy(catdir); 22057 _object->state = psStringCopy(state); 22058 22059 return _object; 22060 } 22061 22062 static void calDBRowFree(calDBRow *object) 22063 { 22064 psFree(object->catdir); 22065 psFree(object->state); 22066 } 22067 22068 bool calDBCreateTable(psDB *dbh) 22069 { 22070 psMetadata *md = psMetadataAlloc(); 22071 if (!psMetadataAdd(md, PS_LIST_TAIL, "cal_id", PS_DATA_S64, "Primary Key AUTO_INCREMENT", 0)) { 22072 psError(PS_ERR_UNKNOWN, false, "failed to add item cal_id"); 22073 psFree(md); 22074 return false; 22075 } 22076 if (!psMetadataAdd(md, PS_LIST_TAIL, "catdir", PS_DATA_STRING, NULL, "64")) { 22077 psError(PS_ERR_UNKNOWN, false, "failed to add item catdir"); 22078 psFree(md); 22079 return false; 22080 } 22081 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, "64")) { 22082 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); 22083 psFree(md); 22084 return false; 22085 } 22086 22087 bool status = psDBCreateTable(dbh, CALDB_TABLE_NAME, md); 22088 22089 psFree(md); 22090 22091 return status; 22092 } 22093 22094 bool calDBDropTable(psDB *dbh) 22095 { 22096 return psDBDropTable(dbh, CALDB_TABLE_NAME); 22097 } 22098 22099 bool calDBInsert(psDB * dbh, psS64 cal_id, const char *catdir, const char *state) 22100 { 22101 psMetadata *md = psMetadataAlloc(); 22102 if (!psMetadataAdd(md, PS_LIST_TAIL, "cal_id", PS_DATA_S64, NULL, cal_id)) { 22103 psError(PS_ERR_UNKNOWN, false, "failed to add item cal_id"); 22104 psFree(md); 22105 return false; 22106 } 22107 if (!psMetadataAdd(md, PS_LIST_TAIL, "catdir", PS_DATA_STRING, NULL, catdir)) { 22108 psError(PS_ERR_UNKNOWN, false, "failed to add item catdir"); 22109 psFree(md); 22110 return false; 22111 } 22112 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) { 22113 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); 22114 psFree(md); 22115 return false; 22116 } 22117 22118 bool status = psDBInsertOneRow(dbh, CALDB_TABLE_NAME, md); 22119 psFree(md); 22120 22121 return status; 22122 } 22123 22124 long long calDBDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 22125 { 22126 long long deleted = 0; 22127 22128 long long count = psDBDeleteRows(dbh, CALDB_TABLE_NAME, where, limit); 22129 if (count < 0) { 22130 psError(PS_ERR_UNKNOWN, true, "failed to delete row from calDB"); 22131 return count; 22132 22133 deleted += count; 22134 } 22135 22136 return deleted; 22137 } 22138 bool calDBInsertObject(psDB *dbh, calDBRow *object) 22139 { 22140 return calDBInsert(dbh, object->cal_id, object->catdir, object->state); 22141 } 22142 22143 bool calDBInsertObjects(psDB *dbh, psArray *objects) 22144 { 22145 for (long i = 0; i < psArrayLength(objects); i++) { 22146 if (!calDBInsertObject(dbh, objects->data[i])) { 22147 return false; 22148 } 22149 } 22150 22151 return true; 22152 } 22153 22154 bool calDBInsertFits(psDB *dbh, const psFits *fits) 22155 { 22156 psArray *rowSet; 22157 22158 // move to (the first?) extension named CALDB_TABLE_NAME 22159 if (!psFitsMoveExtName(fits, CALDB_TABLE_NAME)) { 22160 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CALDB_TABLE_NAME); 22161 return false; 22162 } 22163 22164 // check HDU type 22165 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 22166 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 22167 return false; 22168 } 22169 22170 // read fits table 22171 rowSet = psFitsReadTable(fits); 22172 if (!rowSet) { 22173 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 22174 psFree(rowSet); 22175 return false; 22176 } 22177 22178 if (!psDBInsertRows(dbh, CALDB_TABLE_NAME, rowSet)) { 22179 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 22180 psFree(rowSet); 22181 return false; 22182 } 22183 22184 psFree(rowSet); 22185 22186 return true; 22187 } 22188 22189 bool calDBSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 22190 { 22191 psArray *rowSet; 22192 22193 rowSet = psDBSelectRows(dbh, CALDB_TABLE_NAME, where, limit); 22194 if (!rowSet) { 22195 return false; 22196 } 22197 22198 // output to fits 22199 if (!psFitsWriteTable(fits, NULL, rowSet, CALDB_TABLE_NAME)) { 22200 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 22201 psFree(rowSet); 22202 return false; 22203 } 22204 22205 psFree(rowSet); 22206 22207 return true; 22208 } 22209 22210 psMetadata *calDBMetadataFromObject(const calDBRow *object) 22211 { 22212 psMetadata *md = psMetadataAlloc(); 22213 if (!psMetadataAdd(md, PS_LIST_TAIL, "cal_id", PS_DATA_S64, NULL, object->cal_id)) { 22214 psError(PS_ERR_UNKNOWN, false, "failed to add item cal_id"); 22215 psFree(md); 22216 return false; 22217 } 22218 if (!psMetadataAdd(md, PS_LIST_TAIL, "catdir", PS_DATA_STRING, NULL, object->catdir)) { 22219 psError(PS_ERR_UNKNOWN, false, "failed to add item catdir"); 22220 psFree(md); 22221 return false; 22222 } 22223 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) { 22224 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); 22225 psFree(md); 22226 return false; 22227 } 22228 22229 22230 return md; 22231 } 22232 22233 calDBRow *calDBObjectFromMetadata(psMetadata *md) 22234 { 22235 22236 bool status = false; 22237 psS64 cal_id = psMetadataLookupS64(&status, md, "cal_id"); 22238 if (!status) { 22239 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item cal_id"); 22240 return false; 22241 } 22242 char* catdir = psMetadataLookupPtr(&status, md, "catdir"); 22243 if (!status) { 22244 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item catdir"); 22245 return false; 22246 } 22247 char* state = psMetadataLookupPtr(&status, md, "state"); 22248 if (!status) { 22249 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state"); 22250 return false; 22251 } 22252 22253 return calDBRowAlloc(cal_id, catdir, state); 22254 } 22255 psArray *calDBSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 22256 { 22257 psArray *rowSet; 22258 psArray *returnSet; 22259 psU64 i; 22260 22261 rowSet = psDBSelectRows(dbh, CALDB_TABLE_NAME, where, limit); 22262 if (!rowSet) { 22263 return NULL; 22264 } 22265 22266 // convert psMetadata rows to row objects 22267 22268 returnSet = psArrayAllocEmpty(rowSet->n); 22269 22270 for (i = 0; i < rowSet->n; i++) { 22271 calDBRow *object = calDBObjectFromMetadata(rowSet->data[i]); 22272 psArrayAdd(returnSet, 0, object); 22273 psFree(object); 22274 } 22275 22276 psFree(rowSet); 22277 22278 return returnSet; 22279 } 22280 bool calDBDeleteObject(psDB *dbh, const calDBRow *object) 22281 { 22282 psMetadata *where = calDBMetadataFromObject(object); 22283 long long count = psDBDeleteRows(dbh, CALDB_TABLE_NAME, where, 0); 22284 psFree(where); 22285 if (count < 0) { 22286 psError(PS_ERR_UNKNOWN, true, "failed to delete row from calDB"); 22287 return false; 22288 } 22289 if (count > 1) { 22290 // XXX should this be a psAbort() instead? It is possible that 22291 // having an object match multiple rows was by design. 22292 psError(PS_ERR_UNKNOWN, true, "calDBRow object matched more then one row. Check your database schema"); 22293 return false; 22294 } 22295 22296 return true; 22297 } 22298 long long calDBDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 22299 { 22300 long long deleted = 0; 22301 22302 for (long long i = 0; i < objects->n; i++) { 22303 calDBRow *object = objects->data[i]; 22304 psMetadata *where = calDBMetadataFromObject(object); 22305 long long count = psDBDeleteRows(dbh, CALDB_TABLE_NAME, where, limit); 22306 psFree(where); 22307 if (count < 0) { 22308 psError(PS_ERR_UNKNOWN, true, "failed to delete row from calDB"); 22309 return count; 22310 } 22311 22312 deleted += count; 22313 } 22314 22315 return deleted; 22316 } 22317 bool calDBPrintObjects(FILE *stream, psArray *objects, bool mdcf) 22318 { 22319 PS_ASSERT_PTR_NON_NULL(objects, false); 22320 22321 psMetadata *output = psMetadataAlloc(); 22322 for (long i = 0; i < psArrayLength(objects); i++) { 22323 psMetadata *md = calDBMetadataFromObject(objects->data[i]); 22324 if (!psMetadataAddMetadata( 22325 output, 22326 PS_LIST_TAIL, 22327 CALDB_TABLE_NAME, 22328 PS_META_DUPLICATE_OK, 22329 NULL, 22330 md 22331 )) { 22332 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 22333 psFree(md); 22334 psFree(output); 22335 return false; 22336 } 22337 psFree(md); 22338 } 22339 22340 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 22341 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 22342 psFree(output); 22343 } 22344 psFree(output); 22345 22346 return true; 22347 } 22348 bool calDBPrintObject(FILE *stream, calDBRow *object, bool mdcf) 22349 { 22350 PS_ASSERT_PTR_NON_NULL(object, false); 22351 22352 psMetadata *md = calDBMetadataFromObject(object); 22353 22354 if (!ippdbPrintMetadataRaw(stream, md, mdcf)) { 22355 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 22356 psFree(md); 22357 } 22358 22359 psFree(md); 22360 22361 return true; 22362 } 22363 static void calRunRowFree(calRunRow *object); 22364 22365 calRunRow *calRunRowAlloc(psS64 cal_id, const char *region, const char *last_step, const char *state) 22366 { 22367 calRunRow *_object; 22368 22369 _object = psAlloc(sizeof(calRunRow)); 22370 psMemSetDeallocator(_object, (psFreeFunc)calRunRowFree); 22371 22372 _object->cal_id = cal_id; 22373 _object->region = psStringCopy(region); 22374 _object->last_step = psStringCopy(last_step); 22375 _object->state = psStringCopy(state); 22376 22377 return _object; 22378 } 22379 22380 static void calRunRowFree(calRunRow *object) 22381 { 22382 psFree(object->region); 22383 psFree(object->last_step); 22384 psFree(object->state); 22385 } 22386 22387 bool calRunCreateTable(psDB *dbh) 22388 { 22389 psMetadata *md = psMetadataAlloc(); 22390 if (!psMetadataAdd(md, PS_LIST_TAIL, "cal_id", PS_DATA_S64, "Primary Key AUTO_INCREMENT", 0)) { 22391 psError(PS_ERR_UNKNOWN, false, "failed to add item cal_id"); 22392 psFree(md); 22393 return false; 22394 } 22395 if (!psMetadataAdd(md, PS_LIST_TAIL, "region", PS_DATA_STRING, "success or failure", "64")) { 22396 psError(PS_ERR_UNKNOWN, false, "failed to add item region"); 22397 psFree(md); 22398 return false; 22399 } 22400 if (!psMetadataAdd(md, PS_LIST_TAIL, "last_step", PS_DATA_STRING, "fkey(cal_id) ref calDB(cal_id)", "64")) { 22401 psError(PS_ERR_UNKNOWN, false, "failed to add item last_step"); 22402 psFree(md); 22403 return false; 22404 } 22405 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, "64")) { 22406 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); 22407 psFree(md); 22408 return false; 22409 } 22410 22411 bool status = psDBCreateTable(dbh, CALRUN_TABLE_NAME, md); 22412 22413 psFree(md); 22414 22415 return status; 22416 } 22417 22418 bool calRunDropTable(psDB *dbh) 22419 { 22420 return psDBDropTable(dbh, CALRUN_TABLE_NAME); 22421 } 22422 22423 bool calRunInsert(psDB * dbh, psS64 cal_id, const char *region, const char *last_step, const char *state) 22424 { 22425 psMetadata *md = psMetadataAlloc(); 22426 if (!psMetadataAdd(md, PS_LIST_TAIL, "cal_id", PS_DATA_S64, NULL, cal_id)) { 22427 psError(PS_ERR_UNKNOWN, false, "failed to add item cal_id"); 22428 psFree(md); 22429 return false; 22430 } 22431 if (!psMetadataAdd(md, PS_LIST_TAIL, "region", PS_DATA_STRING, NULL, region)) { 22432 psError(PS_ERR_UNKNOWN, false, "failed to add item region"); 22433 psFree(md); 22434 return false; 22435 } 22436 if (!psMetadataAdd(md, PS_LIST_TAIL, "last_step", PS_DATA_STRING, NULL, last_step)) { 22437 psError(PS_ERR_UNKNOWN, false, "failed to add item last_step"); 22438 psFree(md); 22439 return false; 22440 } 22441 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) { 22442 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); 22443 psFree(md); 22444 return false; 22445 } 22446 22447 bool status = psDBInsertOneRow(dbh, CALRUN_TABLE_NAME, md); 22448 psFree(md); 22449 22450 return status; 22451 } 22452 22453 long long calRunDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 22454 { 22455 long long deleted = 0; 22456 22457 long long count = psDBDeleteRows(dbh, CALRUN_TABLE_NAME, where, limit); 22458 if (count < 0) { 22459 psError(PS_ERR_UNKNOWN, true, "failed to delete row from calRun"); 22460 return count; 22461 22462 deleted += count; 22463 } 22464 22465 return deleted; 22466 } 22467 bool calRunInsertObject(psDB *dbh, calRunRow *object) 22468 { 22469 return calRunInsert(dbh, object->cal_id, object->region, object->last_step, object->state); 22470 } 22471 22472 bool calRunInsertObjects(psDB *dbh, psArray *objects) 22473 { 22474 for (long i = 0; i < psArrayLength(objects); i++) { 22475 if (!calRunInsertObject(dbh, objects->data[i])) { 22476 return false; 22477 } 22478 } 22479 22480 return true; 22481 } 22482 22483 bool calRunInsertFits(psDB *dbh, const psFits *fits) 22484 { 22485 psArray *rowSet; 22486 22487 // move to (the first?) extension named CALRUN_TABLE_NAME 22488 if (!psFitsMoveExtName(fits, CALRUN_TABLE_NAME)) { 22489 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CALRUN_TABLE_NAME); 22490 return false; 22491 } 22492 22493 // check HDU type 22494 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 22495 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 22496 return false; 22497 } 22498 22499 // read fits table 22500 rowSet = psFitsReadTable(fits); 22501 if (!rowSet) { 22502 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 22503 psFree(rowSet); 22504 return false; 22505 } 22506 22507 if (!psDBInsertRows(dbh, CALRUN_TABLE_NAME, rowSet)) { 22508 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 22509 psFree(rowSet); 22510 return false; 22511 } 22512 22513 psFree(rowSet); 22514 22515 return true; 22516 } 22517 22518 bool calRunSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 22519 { 22520 psArray *rowSet; 22521 22522 rowSet = psDBSelectRows(dbh, CALRUN_TABLE_NAME, where, limit); 22523 if (!rowSet) { 22524 return false; 22525 } 22526 22527 // output to fits 22528 if (!psFitsWriteTable(fits, NULL, rowSet, CALRUN_TABLE_NAME)) { 22529 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 22530 psFree(rowSet); 22531 return false; 22532 } 22533 22534 psFree(rowSet); 22535 22536 return true; 22537 } 22538 22539 psMetadata *calRunMetadataFromObject(const calRunRow *object) 22540 { 22541 psMetadata *md = psMetadataAlloc(); 22542 if (!psMetadataAdd(md, PS_LIST_TAIL, "cal_id", PS_DATA_S64, NULL, object->cal_id)) { 22543 psError(PS_ERR_UNKNOWN, false, "failed to add item cal_id"); 22544 psFree(md); 22545 return false; 22546 } 22547 if (!psMetadataAdd(md, PS_LIST_TAIL, "region", PS_DATA_STRING, NULL, object->region)) { 22548 psError(PS_ERR_UNKNOWN, false, "failed to add item region"); 22549 psFree(md); 22550 return false; 22551 } 22552 if (!psMetadataAdd(md, PS_LIST_TAIL, "last_step", PS_DATA_STRING, NULL, object->last_step)) { 22553 psError(PS_ERR_UNKNOWN, false, "failed to add item last_step"); 22554 psFree(md); 22555 return false; 22556 } 22557 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) { 22558 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); 22559 psFree(md); 22560 return false; 22561 } 22562 22563 22564 return md; 22565 } 22566 22567 calRunRow *calRunObjectFromMetadata(psMetadata *md) 22568 { 22569 22570 bool status = false; 22571 psS64 cal_id = psMetadataLookupS64(&status, md, "cal_id"); 22572 if (!status) { 22573 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item cal_id"); 22574 return false; 22575 } 22576 char* region = psMetadataLookupPtr(&status, md, "region"); 22577 if (!status) { 22578 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item region"); 22579 return false; 22580 } 22581 char* last_step = psMetadataLookupPtr(&status, md, "last_step"); 22582 if (!status) { 22583 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item last_step"); 22584 return false; 22585 } 22586 char* state = psMetadataLookupPtr(&status, md, "state"); 22587 if (!status) { 22588 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state"); 22589 return false; 22590 } 22591 22592 return calRunRowAlloc(cal_id, region, last_step, state); 22593 } 22594 psArray *calRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 22595 { 22596 psArray *rowSet; 22597 psArray *returnSet; 22598 psU64 i; 22599 22600 rowSet = psDBSelectRows(dbh, CALRUN_TABLE_NAME, where, limit); 22601 if (!rowSet) { 22602 return NULL; 22603 } 22604 22605 // convert psMetadata rows to row objects 22606 22607 returnSet = psArrayAllocEmpty(rowSet->n); 22608 22609 for (i = 0; i < rowSet->n; i++) { 22610 calRunRow *object = calRunObjectFromMetadata(rowSet->data[i]); 22611 psArrayAdd(returnSet, 0, object); 22612 psFree(object); 22613 } 22614 22615 psFree(rowSet); 22616 22617 return returnSet; 22618 } 22619 bool calRunDeleteObject(psDB *dbh, const calRunRow *object) 22620 { 22621 psMetadata *where = calRunMetadataFromObject(object); 22622 long long count = psDBDeleteRows(dbh, CALRUN_TABLE_NAME, where, 0); 22623 psFree(where); 22624 if (count < 0) { 22625 psError(PS_ERR_UNKNOWN, true, "failed to delete row from calRun"); 22626 return false; 22627 } 22628 if (count > 1) { 22629 // XXX should this be a psAbort() instead? It is possible that 22630 // having an object match multiple rows was by design. 22631 psError(PS_ERR_UNKNOWN, true, "calRunRow object matched more then one row. Check your database schema"); 22632 return false; 22633 } 22634 22635 return true; 22636 } 22637 long long calRunDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 22638 { 22639 long long deleted = 0; 22640 22641 for (long long i = 0; i < objects->n; i++) { 22642 calRunRow *object = objects->data[i]; 22643 psMetadata *where = calRunMetadataFromObject(object); 22644 long long count = psDBDeleteRows(dbh, CALRUN_TABLE_NAME, where, limit); 22645 psFree(where); 22646 if (count < 0) { 22647 psError(PS_ERR_UNKNOWN, true, "failed to delete row from calRun"); 22648 return count; 22649 } 22650 22651 deleted += count; 22652 } 22653 22654 return deleted; 22655 } 22656 bool calRunPrintObjects(FILE *stream, psArray *objects, bool mdcf) 22657 { 22658 PS_ASSERT_PTR_NON_NULL(objects, false); 22659 22660 psMetadata *output = psMetadataAlloc(); 22661 for (long i = 0; i < psArrayLength(objects); i++) { 22662 psMetadata *md = calRunMetadataFromObject(objects->data[i]); 22663 if (!psMetadataAddMetadata( 22664 output, 22665 PS_LIST_TAIL, 22666 CALRUN_TABLE_NAME, 22667 PS_META_DUPLICATE_OK, 22668 NULL, 22669 md 22670 )) { 22671 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 22672 psFree(md); 22673 psFree(output); 22674 return false; 22675 } 22676 psFree(md); 22677 } 22678 22679 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 22680 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 22681 psFree(output); 22682 } 22683 psFree(output); 22684 22685 return true; 22686 } 22687 bool calRunPrintObject(FILE *stream, calRunRow *object, bool mdcf) 22688 { 22689 PS_ASSERT_PTR_NON_NULL(object, false); 22690 22691 psMetadata *md = calRunMetadataFromObject(object); 22692 22693 if (!ippdbPrintMetadataRaw(stream, md, mdcf)) { 22694 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 22695 psFree(md); 22696 } 22697 22698 psFree(md); 22699 22700 return true; 22701 }
Note:
See TracChangeset
for help on using the changeset viewer.
