From 127d1e191770d890728960881c02d0e278fd8991 Mon Sep 17 00:00:00 2001 From: managerof Date: Sun, 2 Mar 2025 23:27:42 +0000 Subject: [PATCH 1/2] Refactored code. Cleaned build files --- bin/main | Bin 45696 -> 0 bytes src/db.c | 158 ++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 103 insertions(+), 55 deletions(-) delete mode 100755 bin/main diff --git a/bin/main b/bin/main deleted file mode 100755 index 7ca1b23cd56c860d960190f21145a90b3ba5b587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45696 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 nOxuw(pJjK8table_count; i++) + for (i = 0; i < db->table_count; i++) { - Table *currTable = db->tables[i]; + currTable = db->tables[i]; free(currTable->name); - for (int j = 0; j < currTable->column_count; j++) + for (j = 0; j < currTable->column_count; j++) { - Column *currColumn = currTable->columns[j]; + currColumn = currTable->columns[j]; free(currColumn->name); - for (int r = 0; r < currTable->row_count; r++) + for (r = 0; r < currTable->row_count; r++) { free(currColumn->data[r]); } @@ -160,7 +170,9 @@ void free_database(Database *db) */ Table *find_table(Database *db, const char *table_name) { - for (int i = 0; i < db->table_count; i++) + int i; + + for (i = 0; i < db->table_count; i++) { if (strcmp(db->tables[i]->name, table_name) == 0) { @@ -174,13 +186,18 @@ Table *find_table(Database *db, const char *table_name) */ void create_table(Database *db, const char *table_name, const char *columns_str) { + Table *table; + char *cols_copy; + char *token; + Column *col; + if (find_table(db, table_name) != NULL) { printf("Error: Table '%s' already exists.\n", table_name); return; } - Table *table = malloc(sizeof(Table)); + table = malloc(sizeof(Table)); if (table == NULL) { printf("Error: Memory allocation failed for table '%s'.\n", table_name); @@ -191,7 +208,7 @@ void create_table(Database *db, const char *table_name, const char *columns_str) table->column_count = 0; table->columns = NULL; - char *cols_copy = strdup(columns_str); + cols_copy = strdup(columns_str); if (cols_copy == NULL) { printf("Error: Memory allocation failed for columns copy.\n"); @@ -199,11 +216,11 @@ void create_table(Database *db, const char *table_name, const char *columns_str) return; } - char *token = strtok(cols_copy, ","); + token = strtok(cols_copy, ","); while (token != NULL) { token = trim_whitespace(token); - Column *col = malloc(sizeof(Column)); + col = malloc(sizeof(Column)); if (col == NULL) { printf("Error: Memory allocation failed for column '%s'.\n", token); @@ -251,23 +268,31 @@ void create_table(Database *db, const char *table_name, const char *columns_str) */ void insert_into_table(Database *db, const char *table_name, const char *values_str) { - Table *table = find_table(db, table_name); + Table *table; + char *vals_copy; + char *token; + int col_index; + char **values; + int i; + Column *col; + + table = find_table(db, table_name); if (table == NULL) { printf("Error: Table '%s' does not exist.\n", table_name); return; } - char *vals_copy = strdup(values_str); + vals_copy = strdup(values_str); if (vals_copy == NULL) { printf("Error: Memory allocation failed for values copy.\n"); return; } - char *token = strtok(vals_copy, ","); - int col_index = 0; - char **values = malloc(sizeof(char*) * table->column_count); + token = strtok(vals_copy, ","); + col_index = 0; + values = malloc(sizeof(char*) * table->column_count); if (values == NULL) { printf("Error: Memory allocation failed for values array.\n"); @@ -285,7 +310,7 @@ void insert_into_table(Database *db, const char *table_name, const char *values_ { printf("Error: Invalid IPv4 address '%s'.\n", token); free(vals_copy); - for (int i = 0; i < col_index; i++) + for (i = 0; i < col_index; i++) { free(values[i]); } @@ -301,7 +326,7 @@ void insert_into_table(Database *db, const char *table_name, const char *values_ if (col_index != table->column_count) { printf("Error: Column count mismatch for table '%s'.\n", table_name); - for (int i = 0; i < col_index; i++) + for (i = 0; i < col_index; i++) { free(values[i]); } @@ -309,9 +334,9 @@ void insert_into_table(Database *db, const char *table_name, const char *values_ return; } - for (int i = 0; i < table->column_count; i++) + for (i = 0; i < table->column_count; i++) { - Column *col = table->columns[i]; + col = table->columns[i]; col->data = realloc(col->data, sizeof(char*) * (table->row_count + 1)); if (col->data == NULL) { @@ -330,7 +355,10 @@ void insert_into_table(Database *db, const char *table_name, const char *values_ */ void select_from_table(Database *db, const char *table_name) { - Table *table = find_table(db, table_name); + Table *table; + int i, c, r; + + table = find_table(db, table_name); if (table == NULL) { printf("Error: Table '%s' does not exist.\n", table_name); @@ -338,15 +366,15 @@ void select_from_table(Database *db, const char *table_name) } printf("Table: %s\n", table->name); - for (int i = 0; i < table->column_count; i++) + for (i = 0; i < table->column_count; i++) { printf("%s\t", table->columns[i]->name); } printf("\n"); - for (int r = 0; r < table->row_count; r++) + for (r = 0; r < table->row_count; r++) { - for (int c = 0; c < table->column_count; c++) + for (c = 0; c < table->column_count; c++) { printf("%s\t", table->columns[c]->data[r]); } @@ -358,7 +386,12 @@ void select_from_table(Database *db, const char *table_name) */ void save_database_to_file(Database *db, const char *filename) { - FILE *file = fopen(filename, "wb"); + FILE *file; + int i, j, r; + Table *table; + Column *col; + + file = fopen(filename, "wb"); if (file == NULL) { printf("Error: Could not open file '%s' for writing.\n", filename); @@ -366,18 +399,18 @@ void save_database_to_file(Database *db, const char *filename) } fwrite(&db->table_count, sizeof(int), 1, file); - for (int i = 0; i < db->table_count; i++) + for (i = 0; i < db->table_count; i++) { - Table *table = db->tables[i]; + table = db->tables[i]; write_string(file, table->name); fwrite(&table->column_count, sizeof(int), 1, file); fwrite(&table->row_count, sizeof(int), 1, file); - for (int j = 0; j < table->column_count; j++) + for (j = 0; j < table->column_count; j++) { - Column *col = table->columns[j]; + col = table->columns[j]; write_string(file, col->name); - for (int r = 0; r < table->row_count; r++) + for (r = 0; r < table->row_count; r++) { write_string(file, col->data[r]); } @@ -392,7 +425,15 @@ void save_database_to_file(Database *db, const char *filename) */ Database *load_database_from_file(Database *db, const char *filename) { - FILE *file = fopen(filename, "rb"); + FILE *file; + Database *new_db; + int table_count; + int i, j, r; + Table *table; + Column *col; + char *cell; + + file = fopen(filename, "rb"); if (file == NULL) { printf("Error: Could not open file '%s' for reading.\n", filename); @@ -400,18 +441,18 @@ Database *load_database_from_file(Database *db, const char *filename) } free_database(db); - Database *new_db = create_db(); + new_db = create_db(); if (new_db == NULL) { fclose(file); return NULL; } - int table_count = 0; + table_count = 0; fread(&table_count, sizeof(int), 1, file); - for (int i = 0; i < table_count; i++) + for (i = 0; i < table_count; i++) { - Table *table = malloc(sizeof(Table)); + table = malloc(sizeof(Table)); if (table == NULL) { printf("Error: Memory allocation failed while loading table.\n"); @@ -423,9 +464,9 @@ Database *load_database_from_file(Database *db, const char *filename) fread(&table->row_count, sizeof(int), 1, file); table->columns = NULL; - for (int j = 0; j < table->column_count; j++) + for (j = 0; j < table->column_count; j++) { - Column *col = malloc(sizeof(Column)); + col = malloc(sizeof(Column)); if (col == NULL) { printf("Error: Memory allocation failed while loading column.\n"); @@ -434,9 +475,9 @@ Database *load_database_from_file(Database *db, const char *filename) col->name = read_string(file); col->data = NULL; - for (int r = 0; r < table->row_count; r++) + for (r = 0; r < table->row_count; r++) { - char *cell = read_string(file); + cell = read_string(file); col->data = realloc(col->data, sizeof(char*) * (r + 1)); if (col->data == NULL) { @@ -476,10 +517,17 @@ Database *load_database_from_file(Database *db, const char *filename) Database *parse_query(Database *db, const char *query) { char query_copy[MAX_QUERY_LENGTH]; + char *command; + char *next_token; + char *table_name; + char *columns; + char *closing_paren; + char *values; + strncpy(query_copy, query, MAX_QUERY_LENGTH - 1); query_copy[MAX_QUERY_LENGTH - 1] = '\0'; - char *command = strtok(query_copy, " "); + command = strtok(query_copy, " "); if (command == NULL) { printf("Error: Empty query.\n"); @@ -488,28 +536,28 @@ Database *parse_query(Database *db, const char *query) if (strcmp(command, "CREATE") == 0) { - char *next_token = strtok(NULL, " "); + next_token = strtok(NULL, " "); if (next_token == NULL || strcmp(next_token, "TABLE") != 0) { printf("Error: Invalid CREATE TABLE syntax.\n"); return db; } - char *table_name = strtok(NULL, " "); + table_name = strtok(NULL, " "); if (table_name == NULL) { printf("Error: Table name is missing.\n"); return db; } - char *columns = strchr(query, '('); + columns = strchr(query, '('); if (columns == NULL) { printf("Error: Missing column definitions.\n"); return db; } columns++; - char *closing_paren = strchr(columns, ')'); + closing_paren = strchr(columns, ')'); if (closing_paren == NULL) { printf("Error: Missing closing parenthesis in column definitions.\n"); @@ -527,28 +575,28 @@ Database *parse_query(Database *db, const char *query) } else if (strcmp(command, "INSERT") == 0) { - char *next_token = strtok(NULL, " "); + next_token = strtok(NULL, " "); if (next_token == NULL || strcmp(next_token, "INTO") != 0) { printf("Error: Invalid INSERT INTO syntax.\n"); return db; } - char *table_name = strtok(NULL, " "); + table_name = strtok(NULL, " "); if (table_name == NULL) { printf("Error: Table name is missing.\n"); return db; } - char *values = strchr(query, '('); + values = strchr(query, '('); if (values == NULL) { printf("Error: Missing values.\n"); return db; } values++; - char *closing_paren = strchr(values, ')'); + closing_paren = strchr(values, ')'); if (closing_paren == NULL) { printf("Error: Missing closing parenthesis in values.\n"); @@ -567,9 +615,9 @@ Database *parse_query(Database *db, const char *query) else if (strcmp(command, "SELECT") == 0) { /* Expected syntax: SELECT * FROM table_name */ - strtok(NULL, " "); // Skip '*' - strtok(NULL, " "); // Skip 'FROM' - char *table_name = strtok(NULL, " "); + strtok(NULL, " "); /* Skip '*' */ + strtok(NULL, " "); /* Skip 'FROM' */ + table_name = strtok(NULL, " "); if (table_name == NULL) { printf("Error: Table name is missing in SELECT query.\n"); From 5880b399d177e51a07eaf6d95e528c00595d4186 Mon Sep 17 00:00:00 2001 From: managerof Date: Sun, 2 Mar 2025 23:41:35 +0000 Subject: [PATCH 2/2] Renamed declarations for clarity. --- database.db | Bin 110 -> 0 bytes src/db.c | 116 ++++++++++++++++++++++++++++------------------------ 2 files changed, 63 insertions(+), 53 deletions(-) delete mode 100644 database.db diff --git a/database.db b/database.db deleted file mode 100644 index 86ff8a4fa2fb321f6d4a5e81eedda171825e9b37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmZQ#U|`?`;^30fl+?VEVg@E42ZWh{*wY2fGys!^46HyQzr@^BFvGJfF%PWMx3Va| cI47};feR=do{?FSnv+>v!oUdRfiQ|W06U`(X#fBK diff --git a/src/db.c b/src/db.c index ab4148f..81bb19a 100644 --- a/src/db.c +++ b/src/db.c @@ -10,6 +10,7 @@ static void write_string(FILE *file, const char *str) { int len; + len = (int)strlen(str) + 1; fwrite(&len, sizeof(int), 1, file); fwrite(str, sizeof(char), len, file); @@ -73,7 +74,8 @@ char *trim_whitespace(char *str) */ int validate_ipv4_address(const char *ip) { - int segments, ch_count; + int segments; + int ch_count; const char *ptr; segments = 0; @@ -132,7 +134,9 @@ Database *create_db(void) */ void free_database(Database *db) { - int i, j, r; + int iter1; + int iter2; + int row; Table *currTable; Column *currColumn; @@ -141,19 +145,19 @@ void free_database(Database *db) return; } - for (i = 0; i < db->table_count; i++) + for (iter1 = 0; iter1 < db->table_count; iter1++) { - currTable = db->tables[i]; + currTable = db->tables[iter1]; free(currTable->name); - for (j = 0; j < currTable->column_count; j++) + for (iter2 = 0; iter2 < currTable->column_count; iter2++) { - currColumn = currTable->columns[j]; + currColumn = currTable->columns[iter2]; free(currColumn->name); - for (r = 0; r < currTable->row_count; r++) + for (row = 0; row < currTable->row_count; row++) { - free(currColumn->data[r]); + free(currColumn->data[row]); } free(currColumn->data); free(currColumn); @@ -170,13 +174,13 @@ void free_database(Database *db) */ Table *find_table(Database *db, const char *table_name) { - int i; + int iter; - for (i = 0; i < db->table_count; i++) + for (iter = 0; iter < db->table_count; iter++) { - if (strcmp(db->tables[i]->name, table_name) == 0) + if (strcmp(db->tables[iter]->name, table_name) == 0) { - return db->tables[i]; + return db->tables[iter]; } } return NULL; @@ -269,12 +273,12 @@ void create_table(Database *db, const char *table_name, const char *columns_str) void insert_into_table(Database *db, const char *table_name, const char *values_str) { Table *table; + Column *column; + int iter; + int column_index; char *vals_copy; char *token; - int col_index; char **values; - int i; - Column *col; table = find_table(db, table_name); if (table == NULL) @@ -291,7 +295,7 @@ void insert_into_table(Database *db, const char *table_name, const char *values_ } token = strtok(vals_copy, ","); - col_index = 0; + column_index = 0; values = malloc(sizeof(char*) * table->column_count); if (values == NULL) { @@ -300,51 +304,51 @@ void insert_into_table(Database *db, const char *table_name, const char *values_ return; } - while (token != NULL && col_index < table->column_count) + while (token != NULL && column_index < table->column_count) { token = trim_whitespace(token); /* Validate IPv4 address if required */ - if (strcmp(table->columns[col_index]->name, "IPv4") == 0) + if (strcmp(table->columns[column_index]->name, "IPv4") == 0) { if (!validate_ipv4_address(token)) { printf("Error: Invalid IPv4 address '%s'.\n", token); free(vals_copy); - for (i = 0; i < col_index; i++) + for (iter = 0; iter < column_index; iter++) { - free(values[i]); + free(values[iter]); } free(values); return; } } - values[col_index++] = strdup(token); + values[column_index++] = strdup(token); token = strtok(NULL, ","); } free(vals_copy); - if (col_index != table->column_count) + if (column_index != table->column_count) { printf("Error: Column count mismatch for table '%s'.\n", table_name); - for (i = 0; i < col_index; i++) + for (iter = 0; iter < column_index; iter++) { - free(values[i]); + free(values[iter]); } free(values); return; } - for (i = 0; i < table->column_count; i++) + for (iter = 0; iter < table->column_count; iter++) { - col = table->columns[i]; - col->data = realloc(col->data, sizeof(char*) * (table->row_count + 1)); - if (col->data == NULL) + column = table->columns[iter]; + column->data = realloc(column->data, sizeof(char*) * (table->row_count + 1)); + if (column->data == NULL) { printf("Error: Memory allocation failed while inserting row.\n"); free(values); return; } - col->data[table->row_count] = values[i]; + column->data[table->row_count] = values[iter]; } free(values); table->row_count++; @@ -356,7 +360,9 @@ void insert_into_table(Database *db, const char *table_name, const char *values_ void select_from_table(Database *db, const char *table_name) { Table *table; - int i, c, r; + int iter; + int column; + int row; table = find_table(db, table_name); if (table == NULL) @@ -366,17 +372,17 @@ void select_from_table(Database *db, const char *table_name) } printf("Table: %s\n", table->name); - for (i = 0; i < table->column_count; i++) + for (iter = 0; iter < table->column_count; iter++) { - printf("%s\t", table->columns[i]->name); + printf("%s\t", table->columns[iter]->name); } printf("\n"); - for (r = 0; r < table->row_count; r++) + for (row = 0; row < table->row_count; row++) { - for (c = 0; c < table->column_count; c++) + for (column = 0; column < table->column_count; column++) { - printf("%s\t", table->columns[c]->data[r]); + printf("%s\t", table->columns[column]->data[row]); } printf("\n"); } @@ -387,9 +393,11 @@ void select_from_table(Database *db, const char *table_name) void save_database_to_file(Database *db, const char *filename) { FILE *file; - int i, j, r; Table *table; Column *col; + int iter1; + int iter2; + int row; file = fopen(filename, "wb"); if (file == NULL) @@ -399,20 +407,20 @@ void save_database_to_file(Database *db, const char *filename) } fwrite(&db->table_count, sizeof(int), 1, file); - for (i = 0; i < db->table_count; i++) + for (iter1 = 0; iter1 < db->table_count; iter1++) { - table = db->tables[i]; + table = db->tables[iter1]; write_string(file, table->name); fwrite(&table->column_count, sizeof(int), 1, file); fwrite(&table->row_count, sizeof(int), 1, file); - for (j = 0; j < table->column_count; j++) + for (iter2 = 0; iter2 < table->column_count; iter2++) { - col = table->columns[j]; + col = table->columns[iter2]; write_string(file, col->name); - for (r = 0; r < table->row_count; r++) + for (row = 0; row < table->row_count; row++) { - write_string(file, col->data[r]); + write_string(file, col->data[row]); } } } @@ -427,10 +435,12 @@ Database *load_database_from_file(Database *db, const char *filename) { FILE *file; Database *new_db; - int table_count; - int i, j, r; Table *table; Column *col; + int table_count; + int iter1; + int iter2; + int row; char *cell; file = fopen(filename, "rb"); @@ -450,7 +460,7 @@ Database *load_database_from_file(Database *db, const char *filename) table_count = 0; fread(&table_count, sizeof(int), 1, file); - for (i = 0; i < table_count; i++) + for (iter1 = 0; iter1 < table_count; iter1++) { table = malloc(sizeof(Table)); if (table == NULL) @@ -464,7 +474,7 @@ Database *load_database_from_file(Database *db, const char *filename) fread(&table->row_count, sizeof(int), 1, file); table->columns = NULL; - for (j = 0; j < table->column_count; j++) + for (iter2 = 0; iter2 < table->column_count; iter2++) { col = malloc(sizeof(Column)); if (col == NULL) @@ -475,35 +485,35 @@ Database *load_database_from_file(Database *db, const char *filename) col->name = read_string(file); col->data = NULL; - for (r = 0; r < table->row_count; r++) + for (row = 0; row < table->row_count; row++) { cell = read_string(file); - col->data = realloc(col->data, sizeof(char*) * (r + 1)); + col->data = realloc(col->data, sizeof(char*) * (row + 1)); if (col->data == NULL) { printf("Error: Memory allocation failed while loading row data.\n"); free(cell); continue; } - col->data[r] = cell; + col->data[row] = cell; } - table->columns = realloc(table->columns, sizeof(Column*) * (j + 1)); + table->columns = realloc(table->columns, sizeof(Column*) * (iter2 + 1)); if (table->columns == NULL) { printf("Error: Memory allocation failed while loading columns array.\n"); free(col); continue; } - table->columns[j] = col; + table->columns[iter2] = col; } - new_db->tables = realloc(new_db->tables, sizeof(Table*) * (i + 1)); + new_db->tables = realloc(new_db->tables, sizeof(Table*) * (iter1 + 1)); if (new_db->tables == NULL) { printf("Error: Memory allocation failed while adding table to database.\n"); free(table); continue; } - new_db->tables[i] = table; + new_db->tables[iter1] = table; new_db->table_count++; } fclose(file);