#include <stdio.h> #include <stdlib.h> #include <string.h> #include "database.h" #include "datastructure.h" #include "tools.h" #include "cds.h" #include "datetime.h" void load() { clearScreen(); FILE *datei = fopen("cds.xml", "r"); if (datei) { loadCD(datei); fclose(datei); waitForEnter(); clearBuffer(); } } void loadCD(FILE *datei) { char zeile[101]; char *zeilenAnfang; int len; if (datei) { do { fscanf(datei, " %101[^\n]", zeile); spacesRemove(&zeilenAnfang, zeile); while (fscanf(datei, " %101[^\n]", zeile) == 1) { if (strncmp(zeilenAnfang, "<CD>", 4) == 0) { while (fscanf(datei, " %101[^\n]", zeile) == 1) { if (strncmp(zeilenAnfang, "<Title>", 7) == 0) { len = strlen(zeilenAnfang + 7) - 8; if (strncmp(zeilenAnfang + 7 + len - 1, "</Title>", 8) == 0) { (CDData + countCDs)->title = calloc(len + 1, sizeof(char)); if ((CDData + countCDs)->title) { strncpy((CDData + countCDs)->title, zeilenAnfang + 7, len - 1); } } } if (strncmp(zeilenAnfang, "<Interpret>", 11) == 0) { len = strlen(zeilenAnfang + 11) - 12; if (strncmp(zeilenAnfang + 11 + len - 1, "</Interpret>", 12) == 0) { (CDData + countCDs)->artist = calloc(len + 1, sizeof(char)); if ((CDData + countCDs)->artist) { strncpy((CDData + countCDs)->artist, zeilenAnfang + 11, len - 1); } } } if (strncmp(zeilenAnfang, "<YearOfAppearance>", 18) == 0) { len = strlen(zeilenAnfang + 18) - 19; if (strncmp(zeilenAnfang + 18 + len - 1, "</YearOfAppearance>", 19) == 0) { char *tmp; tmp = malloc(20 * sizeof(char)); if (tmp) { strncpy(tmp, zeilenAnfang + 18, 4); printf("here is tmp = %s\n", tmp); (CDData + countCDs)->publicationYear = (unsigned int)atoi(tmp); free(tmp); } } } if (strncmp(zeilenAnfang, "<Song>", 6) == 0) { void loadSong(); { while (fscanf(datei, " %101[^\n]", zeile) == 1) { if (strncmp(zeilenAnfang, "<Title>", 7) == 0) { len = strlen(zeilenAnfang + 7) - 8; if (strncmp(zeilenAnfang + 7 + len - 1, "</Title>", 8) == 0) { (CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].title = calloc(len + 1, sizeof(char)); if ((CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].title) { strncpy((CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].title, zeilenAnfang + 7, len - 1); } } } if (strncmp(zeilenAnfang, "<Interpret>", 11) == 0) { len = strlen(zeilenAnfang + 11) - 12; if (strncmp(zeilenAnfang + 11 + len - 1, "</Interpret>", 12) == 0) { (CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].artist = calloc(len + 1, sizeof(char)); if ((CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].artist) { strncpy((CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].artist, zeilenAnfang + 11, len - 1); } } } if (strncmp(zeilenAnfang, "<Duration>", 10) == 0) { len = strlen(zeilenAnfang + 10) - 11; if (strncmp(zeilenAnfang + 10 + len - 1, "</Duration>", 11) == 0) { char *tmp; tmp = malloc(20 * sizeof(char)); if (tmp) { strncpy(tmp, zeilenAnfang + 10, len - 1); getTimeFromString(tmp, &((CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].duration)); free(tmp); } } } if (strncmp(zeilenAnfang, "</Song>", 7) == 0) break; } (CDData + countCDs)->numberOfSongs++; } } if (strncmp(zeilenAnfang, "</CD>", 5) == 0) break; } countCDs++; } } fclose(datei); } while (feof(datei) || strncmp(zeile, "</Data>", 7) != 0); } else puts("datei konnte nicht geoffnet werden\n"); } void loadSong(FILE *datei) { }