37int dataworks_database_create_table(
struct dataworks_db* db,
const char* name,
char** fields,
const char* fieldtypes) {
39 __dw_lockfile(db->
fp);
40 fseek(db->
fp, 3 + 10, SEEK_SET);
43 char* buf = malloc(1 + 8 + 1 + 256 + 4096);
44 for(i = 0; i < 256; i++) {
45 fread(buf, 1, 1 + 8 + 1 + 256 + 4096, db->
fp);
46 __dw_buffer_to_db_v1_indexentry(buf, index);
48 char* dbname = malloc(index.dbname_len + 1);
49 memcpy(dbname, index.dbname, index.dbname_len);
50 dbname[index.dbname_len] = 0;
51 if(strcmp(name, dbname) == 0) {
54 __dw_unlockfile(db->
fp);
59 fseek(db->
fp, 3 + 10, SEEK_SET);
60 for(i = 0; i < 256; i++) {
61 fread(buf, 1, 1 + 8 + 1 + 256 + 4096, db->
fp);
62 __dw_buffer_to_db_v1_indexentry(buf, index);
64 fseek(db->
fp, -(1 + 8 + 1 + 256 + 4096), SEEK_CUR);
66 buf[8 + 1] = strlen(name);
67 memcpy(buf + 1 + 8 + 1, name, strlen(name));
68 fwrite(buf, 1, 1 + 8 + 1 + 256, db->
fp);
70 for(j = 0; fieldtypes[j] != 0; j++) {
71 fwrite(fieldtypes + j, 1, 1, db->
fp);
72 fwrite(fields[j], 1, strlen(fields[j]), db->
fp);
73 fwrite(
"\0", 1, 1, db->
fp);
75 fwrite(
"\0", 1, 1, db->
fp);
80 __dw_unlockfile(db->
fp);
87 __dw_lockfile(db->
fp);
88 fseek(db->
fp, 3 + 10, SEEK_SET);
91 char* buf = malloc(1 + 8 + 1 + 256 + 4096);
93 for(i = 0; i < 256; i++) {
94 fread(buf, 1, 1 + 8 + 1 + 256 + 4096, db->
fp);
95 __dw_buffer_to_db_v1_indexentry(buf, index);
100 char** list = malloc(
sizeof(*list) * (c + 1));
101 fseek(db->
fp, 3 + 10, SEEK_SET);
103 for(i = 0; i < 256; i++) {
104 fread(buf, 1, 1 + 8 + 1 + 256 + 4096, db->
fp);
105 __dw_buffer_to_db_v1_indexentry(buf, index);
107 list[c] = malloc(index.dbname_len + 1);
108 memcpy(list[c], index.dbname, index.dbname_len);
109 list[c][index.dbname_len] = 0;
115 __dw_unlockfile(db->
fp);
indexentry for v1 database.