Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#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)
{
}