void free_wiredb(wire_db_t *wires) { GStringChunk *wirenames = wires->wirenames; if (wirenames) g_string_chunk_free(wirenames); g_free((void *)wires->details); g_free(wires->names); empty_db(wires, wires->dblen); g_free((void *)wires->wires); g_free(wires); }
/* This sets the working directory. save_db() calls rely on the working directory being unchanged after the call. Probably shouldn't rely on that side effect */ note_db_t get_db(enum db which_db){ if(which_db==DB_GLOBAL){ chdir(getenv("HOME")); }else if(which_db==DB_STD){ char cwd[1024]; while(access(NOTESFILE, F_OK) == -1){ if(!strcmp(getcwd(cwd, 1024), "/")){ chdir(getenv("HOME")); break; } chdir(".."); } } if(access(NOTESFILE, F_OK) != -1) return load_db(NOTESFILE); else return empty_db(); }