int null_init(HNDLE hkey, void **pinfo) { HNDLE hDB, hkeybd; INT size, status; NULL_INFO *info; /* allocate info structure */ info = calloc(1, sizeof(NULL_INFO)); *pinfo = info; cm_get_experiment_database(&hDB, NULL); /* create NULL settings record */ status = db_create_record(hDB, hkey, "BD", NULL_SETTINGS_STR); if (status != DB_SUCCESS) return FE_ERR_ODB; db_find_key(hDB, hkey, "BD", &hkeybd); size = sizeof(info->settings); db_get_record(hDB, hkeybd, &info->settings, &size, 0); /* open port */ info->fd = null_open(info->settings.device); if (info->fd < 0) return FE_ERR_HW; return SUCCESS; }
struct db_conn *db_open(enum backend_type type, const char *name, int flags) { switch (type) { case BE_QDBM: return qdbm_open(name, flags); case BE_BDB: return bdb_open(name, flags); case BE_TC: return tc_open(name, flags); case BE_TDB: return xtdb_open(name, flags); case BE_LEVELDB: return xleveldb_open(name, flags); case BE_NULL: return null_open(name, flags); default: return NULL; } }