Newer
Older
#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()
{
FILE *datei = fopen("cds.xml", "r");
if (datei)
{
loadCD(datei);
fclose(datei);
waitForEnter();
}
}
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)
{
loadedCDcounter++;
delay(0.1);
printf("° CD %.2i has been succefully loaded .... \n ", loadedCDcounter);
loadedSongCounnter = 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)->title = calloc(len + 1, sizeof(char));
if ((CDData)->title)
}
}
}
if (strncmp(zeilenAnfang, "<Interpret>", 11) == 0)
{
len = strlen(zeilenAnfang + 11) - 12;
if (strncmp(zeilenAnfang + 11 + len - 1, "</Interpret>", 12) == 0)
{
(CDData)->artist = calloc(len + 1, sizeof(char));
if ((CDData)->artist)
}
}
}
if (strncmp(zeilenAnfang, "<YearOfAppearance>", 18) == 0)
{
len = strlen(zeilenAnfang + 18) - 19;
if (strncmp(zeilenAnfang + 18 + len - 1, "</YearOfAppearance>", 19) == 0)
{
char *tmp;
loadedSongCounnter++;
delay(0.1);
printf(" ° Song %.2i has been succefully loaded .... \n ", loadedSongCounnter);
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)->Songs[(CDData)->numberOfSongs].title = calloc(len + 1, sizeof(char));
if ((CDData)->Songs[(CDData)->numberOfSongs].title)
strncpy((CDData)->Songs[(CDData)->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)->Songs[(CDData)->numberOfSongs].artist = calloc(len + 1, sizeof(char));
if ((CDData)->Songs[(CDData)->numberOfSongs].artist)
strncpy((CDData)->Songs[(CDData)->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)->Songs[(CDData)->numberOfSongs].duration));
free(tmp);
}
}
}
if (strncmp(zeilenAnfang, "</Song>", 7) == 0)
break;
}
}
countCDs++;
}
}
fclose(datei);
} while (feof(datei) || strncmp(zeile, "</Data>", 7) != 0);
}
else
puts("datei konnte nicht geoffnet werden\n");
}
void save(FILE *datei)
{
datei = fopen("FinalCDS.xml", "w");
if (datei)
{
if (askYesOrNo("Do you want to save to save to created or loaded CD to an extern XMl file ?(J/n)"))
{
saveCd(datei);
fclose(datei);
puts("Loaded or created CDs have been saved succefully to an External XML file!");
}
else
{
int remove(const char *datei);
puts("Nothing have been saved and existing file has been succefully cleared!");
}
waitForEnter();
}
}
void saveCd(FILE *datei)
fprintf(datei, " <Title>%s</Title>\n", (CDData)->title);
if ((CDData)->artist != NULL)
fprintf(datei, " <YearOfAppearance>%i</YearOfAppearance>\n", (CDData)->publicationYear);
fprintf(datei, " <Title>%s</Title>\n", (CDData)->Songs[j].title);
if ((CDData)->Songs[j].artist != NULL)
fprintf(datei, " <Interpret>%s</Interpret>\n", (CDData)->Songs[j].artist);
fprintf(datei, " </Song>\n");
}
fprintf(datei, " </CD>\n");