/** @brief Runs the program and calls funcitons from the headerfile lagerhantering.h @return always 0 */ int main() { bool should_continue = true; db_t db1 = malloc(sizeof(struct db_t)); db1->amount = 0; db_t backup; int i = 0; while (should_continue) { print_menu(); switch (ask_char_question("What do you want to do?", "AaRrEeUuPpQq")){ // Add case 'a': puts("You chose 'Add'"); if (i > 0){ free_db(backup); } backup = db_copy(db1); i++; add_item(db1); break; // Remove case 'r': puts("You chose 'Remove'"); if(i>0){ free_db(backup); } backup = db_copy(db1); i++; remove_item(db1); break; // Edit case 'e': puts("You chose 'Edit'"); if (i>0){ free_db(backup); } backup = db_copy(db1); i++; edit_item(db1); break; // Undo case 'u': puts("You chose 'Undo'"); if(i>0){ free_db(db1); } db1 = db_copy(backup); i++; // backup = db_copy(db1); break; // Print case 'p': puts("You chose 'Print'"); print_db(db1); break; // Quit case 'q': if (ask_char_question("Do you wish to exit the programme?", "YyNn") == 'y') { puts("Goodbye!"); should_continue = false; free_db(db1); if(i > 0){ free_db(backup); } /* if(db1 != NULL){ free_db(db1); } else free(db1); if (backup != NULL) { free_db(backup); } else if(backup == NULL){ free(backup); }*/ } break; default: puts("Did not enter any valid command, please try again.\n"); } } return 0; }
void process_commands(enum CID cid) { cursor_t old_c; char * dbName; switch (cid) { case NOPE: puts("-- команда не распознана --"); break; case SET_NAME: if (db_ship()) { printf("Имя>"); strncpy(db_ship()->name,input_str(),64); show(); } break; case SET_YEAR: if (db_ship()) { printf("Год>"); db_ship()->year = strtoul( input_str(),NULL, 10); show(); } break; case COPY: db_copy(); break; case PASTE: db_paste(); show(); break; case ALL: old_c = db_get_cursor(); db_first(); while (db_get_cursor() != db_get_end()) { db_load(); if (!db_is_deleted()) show(); db_next(); } db_set_cursor(old_c); db_load(); break; case REFRESH: db_load(); case SHOW: show(); break; case NEW: db_new(); show(); break; case REMOVE: db_delete(); break; case SAVE: db_save(); break; case HELP: show_help(); break; case OPEN: printf("Файл>"); dbName = input_str(); db_open( strlen(dbName) == 0 ? "ships.db" : dbName); break; case CLOSE: db_close(); break; case FIRST: first: db_first(); while (db_get_cursor() != db_get_end()) { db_load(); if (!db_is_deleted()) { show(); return; } db_next(); } puts("-- в базе нет записей. --"); break; case NEXT: db_next(); while (db_get_cursor() != db_get_end()) { db_load(); if (!db_is_deleted()) { show(); return; } db_next(); } puts("-- больше записей нет. перемотка в начало. --"); goto first; case PREV: while (db_get_cursor() != db_get_begin()) { db_prev(); db_load(); if (!db_is_deleted()) { show(); return; } } puts("-- первая запись --"); goto first; break; default: puts("== команда не обработана =="); } }