#include "namesarchive.h" #include #include #include #define INDEX_NOT_FOUND -1 static char **names = NULL; static unsigned int numberOfEntries = 0; int addName(const char *name) { char **oldPtr = names; names = realloc(names, sizeof(char*)*(numberOfEntries+1)); if(names != NULL) { names[numberOfEntries] = malloc((strlen(name)+1) * sizeof(sizeof(char))); if(names[numberOfEntries] != NULL) { strcpy(names[numberOfEntries], name); numberOfEntries++; return 1; } } else names = oldPtr; return 0; } void printNames() { for(int i = 0; i < numberOfEntries; i++) { printf("%s\n", names[i]); } } static int getNameIdx(const char *name) { for(int i = 0; i < numberOfEntries; i++) { if(strcmp(name, names[i]) == 0) return i; } return INDEX_NOT_FOUND; } static void removeAt(int idx) { for(int i = idx; i < numberOfEntries-1; i++) { free(names[i]); names[i] = names[i+1]; } numberOfEntries--; names = realloc(names, numberOfEntries*sizeof(char*)); } int removeName(const char *name) { int idx = getNameIdx(name); if(idx == INDEX_NOT_FOUND) { return 0; } else { removeAt(idx); return 1; } } void clearArchive() { for(int i = 0; i < numberOfEntries; i++) { free(names[i]); names[i] = NULL; } free(names); names = NULL; numberOfEntries = 0; }