| 974 | #define DB_BERKELEY_METADATA_SIZE 512 |
| 975 | |
| 976 | int load_metadata_defaults(table_p _tp) |
| 977 | { |
| 978 | int ret,n,len; |
| 979 | char dbuf[MAX_ROW_SIZE]; |
| 980 | char * tmp; |
| 981 | char *s = NULL; |
| 982 | char cv[DB_BERKELEY_METADATA_SIZE]; |
| 983 | DB *db = NULL; |
| 984 | DBT key, data; |
| 985 | column_p col; |
| 986 | ret = n = len = 0; |
| 987 | int cvlen = DB_BERKELEY_METADATA_SIZE; |
| 988 | |
| 989 | if(!_tp || !_tp->db) |
| 990 | return -1; |
| 991 | |
| 992 | db = _tp->db; |
| 993 | memset(&key, 0, sizeof(DBT)); |
| 994 | memset(&data, 0, sizeof(DBT)); |
| 995 | memset(dbuf, 0, MAX_ROW_SIZE); |
| 996 | |
| 997 | key.data = METADATA_DEFAULTS; |
| 998 | key.size = strlen(METADATA_DEFAULTS); |
| 999 | |
| 1000 | /*memory for the result*/ |
| 1001 | data.data = dbuf; |
| 1002 | data.ulen = MAX_ROW_SIZE; |
| 1003 | data.flags = DB_DBT_USERMEM; |
| 1004 | |
| 1005 | if ((ret = db->get(db, NULL, &key, &data, 0)) != 0) |
| 1006 | { |
| 1007 | #ifdef BDB_EXTRA_DEBUG |
| 1008 | LM_DBG("NO DEFAULTS ; SETTING ALL columns to NULL! \n" ); |
| 1009 | #endif |
| 1010 | |
| 1011 | /*no defaults in DB; make some up.*/ |
| 1012 | for(n=0; n<_tp->ncols; n++) |
| 1013 | { |
| 1014 | col = _tp->colp[n]; |
| 1015 | if( col ) |
| 1016 | { /*set all columns default value to 'NULL' */ |
| 1017 | len = strlen("NULL"); |
| 1018 | col->dv.s = (char*)pkg_malloc(len * sizeof(char)); |
| 1019 | memcpy(col->dv.s, "NULL", len); |
| 1020 | col->dv.len = len; |
| 1021 | } |
| 1022 | } |
| 1023 | return 0; |
| 1024 | } |
| 1025 | |
| 1026 | /* use the defaults provided*/ |
| 1027 | |
| 1028 | LM_DBG("Found: [%s]\n",dbuf); |
| 1029 | |
| 1030 | tmp = dbuf; |
| 1031 | s = strsep(&tmp, DELIM); |
| 1032 | while(s!=NULL && n< _tp->ncols) |
| 1033 | { |
no outgoing calls
no test coverage detected