LIB_EXPORT rc_t CC KDBManagerCreateDB ( KDBManager *self, KDatabase **db, KCreateMode cmode, const char *path, ... ) { rc_t rc; va_list args; va_start ( args, path ); rc = KDBManagerVCreateDB ( self, db, cmode, path, args ); va_end ( args ); return rc; }
/* CreateDB * VCreateDB * create a new or open an existing database * * "db" [ OUT ] - return parameter for newly opened database * * "schema" [ IN ] - schema object containg database * declaration to be used in creating db [ needed by manager ]. * * "decl" [ IN ] - type and optionally version of db schema * * "cmode" [ IN ] - creation mode * * "path" [ IN ] - NUL terminated string in * wd-native character set giving path to database */ LIB_EXPORT rc_t CC VDBManagerVCreateDB ( VDBManager *self, VDatabase **dbp, const VSchema *schema, const char *decl, KCreateMode cmode, const char *path, va_list args ) { rc_t rc; if ( dbp == NULL ) rc = RC ( rcVDB, rcMgr, rcCreating, rcParam, rcNull ); else { if ( self == NULL ) rc = RC ( rcVDB, rcMgr, rcCreating, rcSelf, rcNull ); else if ( schema == NULL ) rc = RC ( rcVDB, rcMgr, rcOpening, rcSchema, rcNull ); else if ( decl == NULL ) rc = RC ( rcVDB, rcMgr, rcOpening, rcName, rcNull ); else if ( decl [ 0 ] == 0 ) rc = RC ( rcVDB, rcMgr, rcOpening, rcName, rcEmpty ); else { rc = VDatabaseMake ( dbp, self, NULL, schema ); if ( rc == 0 ) { VDatabase *db = * dbp; rc = KDBManagerVCreateDB ( self -> kmgr, & db -> kdb, cmode, path, args ); if ( rc == 0 ) { rc = VDatabaseOpenUpdate ( db, decl ); if ( rc == 0 ) return 0; rc = ResetRCContext ( rc, rcVDB, rcMgr, rcCreating ); } VDatabaseWhack ( db ); } } * dbp = NULL; } return rc; }