Mercurial > hg > xmms-sid
annotate src/xs_stil.c @ 648:a8ceae9ae8e3
Parse certain STIL fields bit differently.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 20 Sep 2007 19:52:05 +0000 |
parents | dcd9d179e217 |
children | acaba070cf49 |
rev | line source |
---|---|
1 | 1 /* |
103
fe83646e6baa
Changed plrFillBuffer()-functions to return actual number of samples computed.
Matti Hamalainen <ccr@tnsp.org>
parents:
101
diff
changeset
|
2 XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS) |
1 | 3 |
103
fe83646e6baa
Changed plrFillBuffer()-functions to return actual number of samples computed.
Matti Hamalainen <ccr@tnsp.org>
parents:
101
diff
changeset
|
4 STIL-database handling functions |
1 | 5 |
324 | 6 Programmed and designed by Matti 'ccr' Hamalainen <ccr@tnsp.org> |
422 | 7 (C) Copyright 1999-2007 Tecnic Software productions (TNSP) |
1 | 8 |
9 This program is free software; you can redistribute it and/or modify | |
10 it under the terms of the GNU General Public License as published by | |
11 the Free Software Foundation; either version 2 of the License, or | |
12 (at your option) any later version. | |
13 | |
14 This program is distributed in the hope that it will be useful, | |
15 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 GNU General Public License for more details. | |
18 | |
412
7f694e5a1493
Updated GNU GPL (new FSF address) and some cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
402
diff
changeset
|
19 You should have received a copy of the GNU General Public License along |
7f694e5a1493
Updated GNU GPL (new FSF address) and some cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
402
diff
changeset
|
20 with this program; if not, write to the Free Software Foundation, Inc., |
7f694e5a1493
Updated GNU GPL (new FSF address) and some cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
402
diff
changeset
|
21 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
1 | 22 */ |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
23 #include "xs_stil.h" |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
24 #include "xs_support.h" |
1 | 25 #include <stdio.h> |
223
16e3b2446a73
On some systems stdlib.h has prerequisite of stdio.h, corrected order of
Matti Hamalainen <ccr@tnsp.org>
parents:
214
diff
changeset
|
26 #include <stdlib.h> |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
27 #include <ctype.h> |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
28 #include <stdarg.h> |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
29 |
103
fe83646e6baa
Changed plrFillBuffer()-functions to return actual number of samples computed.
Matti Hamalainen <ccr@tnsp.org>
parents:
101
diff
changeset
|
30 |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
31 /* Database handling functions |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
32 */ |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
33 static gboolean xs_stildb_node_realloc(t_xs_stil_node *pNode, gint nsubTunes) |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
34 { |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
35 if (!pNode) return FALSE; |
429 | 36 |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
37 /* Re-allocate subTune structure if needed */ |
473 | 38 if (nsubTunes > pNode->nsubTunes) { |
635
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
39 gint clearIndex, clearLength; |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
40 |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
41 pNode->subTunes = |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
42 (t_xs_stil_subnode **) g_realloc(pNode->subTunes, |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
43 (nsubTunes + 1) * sizeof(t_xs_stil_subnode **)); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
44 |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
45 if (!pNode->subTunes) { |
424
faf12767a6f1
Preparing for internationalization.
Matti Hamalainen <ccr@tnsp.org>
parents:
422
diff
changeset
|
46 xs_error(_("SubTune pointer structure realloc failed.\n")); |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
47 return FALSE; |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
48 } |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
49 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
50 /* Clear the newly allocated memory */ |
635
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
51 if (pNode->nsubTunes == 0) { |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
52 clearIndex = 0; |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
53 clearLength = nsubTunes + 1; |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
54 } else { |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
55 clearIndex = pNode->nsubTunes + 1; |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
56 clearLength = (nsubTunes - clearIndex + 1); |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
57 } |
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
58 xs_memset(&(pNode->subTunes[clearIndex]), 0, clearLength * sizeof(t_xs_stil_subnode **)); |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
59 |
429 | 60 pNode->nsubTunes = nsubTunes; |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
61 } |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
62 |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
63 /* Allocate memory for subTune */ |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
64 if (!pNode->subTunes[nsubTunes]) { |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
65 pNode->subTunes[nsubTunes] = (t_xs_stil_subnode *) |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
66 g_malloc0(sizeof(t_xs_stil_subnode)); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
67 |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
68 if (!pNode->subTunes[nsubTunes]) { |
424
faf12767a6f1
Preparing for internationalization.
Matti Hamalainen <ccr@tnsp.org>
parents:
422
diff
changeset
|
69 xs_error(_("SubTune structure malloc failed!\n")); |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
70 return FALSE; |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
71 } |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
72 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
73 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
74 return TRUE; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
75 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
76 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
77 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
78 static void xs_stildb_node_free(t_xs_stil_node *pNode) |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
79 { |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
80 gint i; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
81 t_xs_stil_subnode *pSub; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
82 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
83 if (pNode) { |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
84 /* Free subtune information */ |
429 | 85 for (i = 0; i <= pNode->nsubTunes; i++) { |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
86 pSub = pNode->subTunes[i]; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
87 if (pSub) { |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
88 g_free(pSub->pName); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
89 g_free(pSub->pAuthor); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
90 g_free(pSub->pInfo); |
473 | 91 g_free(pSub->pTitle); |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
92 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
93 g_free(pSub); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
94 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
95 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
96 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
97 g_free(pNode->subTunes); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
98 g_free(pNode->pcFilename); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
99 g_free(pNode); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
100 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
101 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
102 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
103 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
104 static t_xs_stil_node *xs_stildb_node_new(gchar *pcFilename) |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
105 { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
106 t_xs_stil_node *pResult; |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
107 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
108 /* Allocate memory for new node */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
109 pResult = (t_xs_stil_node *) g_malloc0(sizeof(t_xs_stil_node)); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
110 if (!pResult) |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
111 return NULL; |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
112 |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
113 /* Allocate filename and initial space for one subtune */ |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
114 pResult->pcFilename = g_strdup(pcFilename); |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
115 if (!pResult->pcFilename || !xs_stildb_node_realloc(pResult, 1)) { |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
116 xs_stildb_node_free(pResult); |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
117 return NULL; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
118 } |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
119 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
120 return pResult; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
121 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
122 |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
123 |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
124 /* Insert given node to db linked list |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
125 */ |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
126 static void xs_stildb_node_insert(t_xs_stildb *db, t_xs_stil_node *pNode) |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
127 { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
128 assert(db); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
129 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
130 if (db->pNodes) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
131 /* The first node's pPrev points to last node */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
132 LPREV = db->pNodes->pPrev; /* New node's prev = Previous last node */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
133 db->pNodes->pPrev->pNext = pNode; /* Previous last node's next = New node */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
134 db->pNodes->pPrev = pNode; /* New last node = New node */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
135 LNEXT = NULL; /* But next is NULL! */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
136 } else { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
137 db->pNodes = pNode; /* First node ... */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
138 LPREV = pNode; /* ... it's also last */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
139 LNEXT = NULL; /* But next is NULL! */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
140 } |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
141 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
142 |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
143 |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
144 /* Read database (additively) to given db-structure |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
145 */ |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
146 #define XS_STILDB_MULTI \ |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
147 if (isMulti) { \ |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
148 isMulti = FALSE; \ |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
149 xs_pstrcat(&(tmpNode->subTunes[subEntry]->pInfo), "\n");\ |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
150 } |
240
f436e16fa6d9
Fixed cosmetic bug in handling of multi-line fields (COMMENT).
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
151 |
461
a1224c1f8670
STILdb handling glue moved to xmms-sid.c
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
152 static void XS_STILDB_ERR(gint lineNum, gchar *inLine, const char *fmt, ...) |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
153 { |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
154 va_list ap; |
240
f436e16fa6d9
Fixed cosmetic bug in handling of multi-line fields (COMMENT).
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
155 |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
156 va_start(ap, fmt); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
157 xs_error(fmt, ap); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
158 va_end(ap); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
159 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
160 fprintf(stderr, "#%d: '%s'\n", lineNum, inLine); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
161 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
162 |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
163 gint xs_stildb_read(t_xs_stildb *db, gchar *dbFilename) |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
164 { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
165 FILE *inFile; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
166 gchar inLine[XS_BUF_SIZE + 16]; /* Since we add some chars here and there */ |
453 | 167 size_t lineNum; |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
168 t_xs_stil_node *tmpNode; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
169 gboolean isError, isMulti; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
170 gint subEntry; |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
171 gchar *tmpLine = inLine; |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
172 assert(db); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
173 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
174 /* Try to open the file */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
175 if ((inFile = fopen(dbFilename, "ra")) == NULL) { |
424
faf12767a6f1
Preparing for internationalization.
Matti Hamalainen <ccr@tnsp.org>
parents:
422
diff
changeset
|
176 xs_error(_("Could not open STILDB '%s'\n"), |
faf12767a6f1
Preparing for internationalization.
Matti Hamalainen <ccr@tnsp.org>
parents:
422
diff
changeset
|
177 dbFilename); |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
178 return -1; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
179 } |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
180 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
181 /* Read and parse the data */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
182 lineNum = 0; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
183 isError = FALSE; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
184 isMulti = FALSE; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
185 tmpNode = NULL; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
186 subEntry = 0; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
187 |
509
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
188 while (!isError && fgets(inLine, XS_BUF_SIZE, inFile) != NULL) { |
591 | 189 size_t linePos = 0, eolPos = 0; |
190 xs_findeol(inLine, &eolPos); | |
191 inLine[eolPos] = 0; | |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
192 lineNum++; |
622
d7389ea52113
Move SLDB and STIL utility functions to xs_slsup.[ch] and amend some changes between XMMS-SID and Aud-SID via a macro mess.
Matti Hamalainen <ccr@tnsp.org>
parents:
591
diff
changeset
|
193 |
d7389ea52113
Move SLDB and STIL utility functions to xs_slsup.[ch] and amend some changes between XMMS-SID and Aud-SID via a macro mess.
Matti Hamalainen <ccr@tnsp.org>
parents:
591
diff
changeset
|
194 tmpLine = XS_CS_STIL(inLine); |
103
fe83646e6baa
Changed plrFillBuffer()-functions to return actual number of samples computed.
Matti Hamalainen <ccr@tnsp.org>
parents:
101
diff
changeset
|
195 |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
196 switch (tmpLine[0]) { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
197 case '/': |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
198 /* Check if we are already parsing entry */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
199 isMulti = FALSE; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
200 if (tmpNode) { |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
201 XS_STILDB_ERR(lineNum, tmpLine, |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
202 "New entry found before end of current ('%s')!\n", |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
203 tmpNode->pcFilename); |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
204 xs_stildb_node_free(tmpNode); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
205 } |
109
578b71b62eeb
Fileinfo now basically working, STIL COMMENT-fields are not yet parsed or shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
206 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
207 /* A new node */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
208 subEntry = 0; |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
209 tmpNode = xs_stildb_node_new(tmpLine); |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
210 if (!tmpNode) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
211 /* Allocation failed */ |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
212 XS_STILDB_ERR(lineNum, tmpLine, |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
213 "Could not allocate new STILdb-node!\n"); |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
214 isError = TRUE; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
215 } |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
216 break; |
103
fe83646e6baa
Changed plrFillBuffer()-functions to return actual number of samples computed.
Matti Hamalainen <ccr@tnsp.org>
parents:
101
diff
changeset
|
217 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
218 case '(': |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
219 /* A new sub-entry */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
220 isMulti = FALSE; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
221 linePos++; |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
222 if (tmpLine[linePos] == '#') { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
223 linePos++; |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
224 if (isdigit(tmpLine[linePos])) { |
473 | 225 size_t savePos = linePos; |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
226 xs_findnum(tmpLine, &linePos); |
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
227 tmpLine[linePos] = 0; |
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
228 subEntry = atol(&tmpLine[savePos]); |
109
578b71b62eeb
Fileinfo now basically working, STIL COMMENT-fields are not yet parsed or shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
229 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
230 /* Sanity check */ |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
231 if (subEntry < 1) { |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
232 XS_STILDB_ERR(lineNum, tmpLine, |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
233 "Number of subEntry (%i) for '%s' is invalid\n", |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
234 subEntry, tmpNode->pcFilename); |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
235 subEntry = 0; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
236 } |
473 | 237 } else { |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
238 XS_STILDB_ERR(lineNum, tmpLine, |
473 | 239 "Syntax error, expected subEntry number.\n"); |
240 subEntry = 0; | |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
241 } |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
242 } else { |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
243 XS_STILDB_ERR(lineNum, tmpLine, |
473 | 244 "Syntax error, expected '#' before subEntry number.\n"); |
245 subEntry = 0; | |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
246 } |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
247 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
248 break; |
109
578b71b62eeb
Fileinfo now basically working, STIL COMMENT-fields are not yet parsed or shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
249 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
250 case 0: |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
251 case '#': |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
252 case '\n': |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
253 case '\r': |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
254 /* End of entry/field */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
255 isMulti = FALSE; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
256 if (tmpNode) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
257 /* Insert to database */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
258 xs_stildb_node_insert(db, tmpNode); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
259 tmpNode = NULL; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
260 } |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
261 break; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
262 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
263 default: |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
264 /* Check if we are parsing an entry */ |
648
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
265 xs_findnext(tmpLine, &linePos); |
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
266 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
267 if (!tmpNode) { |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
268 XS_STILDB_ERR(lineNum, tmpLine, |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
269 "Entry data encountered outside of entry or syntax error!\n"); |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
270 break; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
271 } |
117
453ac1293f6a
Fixed severe bug in xs_strmcat()
Matti Hamalainen <ccr@tnsp.org>
parents:
110
diff
changeset
|
272 |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
273 if (!xs_stildb_node_realloc(tmpNode, subEntry)) { |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
274 XS_STILDB_ERR(lineNum, tmpLine, |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
275 "Could not (re)allocate memory for subEntries!\n"); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
276 isError = TRUE; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
277 break; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
278 } |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
279 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
280 /* Some other type */ |
635
dcd9d179e217
The reallocation function was buggy and subtune entries were not being stored at all, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
622
diff
changeset
|
281 if (strncmp(tmpLine, " NAME:", 8) == 0) { |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
282 XS_STILDB_MULTI; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
283 g_free(tmpNode->subTunes[subEntry]->pName); |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
284 tmpNode->subTunes[subEntry]->pName = g_strdup(&tmpLine[9]); |
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
285 } else if (strncmp(tmpLine, " TITLE:", 8) == 0) { |
473 | 286 XS_STILDB_MULTI; |
648
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
287 isMulti = TRUE; |
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
288 if (!tmpNode->subTunes[subEntry]->pTitle) |
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
289 tmpNode->subTunes[subEntry]->pTitle = g_strdup(&tmpLine[9]); |
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
290 xs_pstrcat(&(tmpNode->subTunes[subEntry]->pInfo), &tmpLine[2]); |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
291 } else if (strncmp(tmpLine, " AUTHOR:", 8) == 0) { |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
292 XS_STILDB_MULTI; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
293 g_free(tmpNode->subTunes[subEntry]->pAuthor); |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
294 tmpNode->subTunes[subEntry]->pAuthor = g_strdup(&tmpLine[9]); |
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
295 } else if (strncmp(tmpLine, " ARTIST:", 8) == 0) { |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
296 XS_STILDB_MULTI; |
402
f997b79a7251
More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents:
395
diff
changeset
|
297 isMulti = TRUE; |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
298 xs_pstrcat(&(tmpNode->subTunes[subEntry]->pInfo), &tmpLine[1]); |
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
299 } else if (strncmp(tmpLine, "COMMENT:", 8) == 0) { |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
300 XS_STILDB_MULTI; |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
301 isMulti = TRUE; |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
302 xs_pstrcat(&(tmpNode->subTunes[subEntry]->pInfo), tmpLine); |
648
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
303 } else { |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
304 if (isMulti) { |
648
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
305 xs_pstrcat(&(tmpNode->subTunes[subEntry]->pInfo), " "); |
a8ceae9ae8e3
Parse certain STIL fields bit differently.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
306 xs_pstrcat(&(tmpNode->subTunes[subEntry]->pInfo), &tmpLine[linePos]); |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
307 } else { |
550
4333288a0168
Some changes to accomodate for Audacious differences.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
308 XS_STILDB_ERR(lineNum, tmpLine, |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
309 "Entry continuation found when isMulti == FALSE.\n"); |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
310 } |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
311 } |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
312 break; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
313 } |
622
d7389ea52113
Move SLDB and STIL utility functions to xs_slsup.[ch] and amend some changes between XMMS-SID and Aud-SID via a macro mess.
Matti Hamalainen <ccr@tnsp.org>
parents:
591
diff
changeset
|
314 |
d7389ea52113
Move SLDB and STIL utility functions to xs_slsup.[ch] and amend some changes between XMMS-SID and Aud-SID via a macro mess.
Matti Hamalainen <ccr@tnsp.org>
parents:
591
diff
changeset
|
315 XS_CS_FREE(tmpLine); |
240
f436e16fa6d9
Fixed cosmetic bug in handling of multi-line fields (COMMENT).
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
316 |
453 | 317 } /* while */ |
240
f436e16fa6d9
Fixed cosmetic bug in handling of multi-line fields (COMMENT).
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
318 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
319 /* Check if there is one remaining node */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
320 if (tmpNode) |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
321 xs_stildb_node_insert(db, tmpNode); |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
322 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
323 /* Close the file */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
324 fclose(inFile); |
109
578b71b62eeb
Fileinfo now basically working, STIL COMMENT-fields are not yet parsed or shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
325 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
326 return 0; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
327 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
328 |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
329 |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
330 /* Compare two nodes |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
331 */ |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
332 static gint xs_stildb_cmp(const void *pNode1, const void *pNode2) |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
333 { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
334 /* We assume here that we never ever get NULL-pointers or similar */ |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
335 return strcmp( |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
336 (*(t_xs_stil_node **) pNode1)->pcFilename, |
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
337 (*(t_xs_stil_node **) pNode2)->pcFilename); |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
338 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
339 |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
340 |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
341 /* (Re)create index |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
342 */ |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
343 gint xs_stildb_index(t_xs_stildb *db) |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
344 { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
345 t_xs_stil_node *pCurr; |
509
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
346 size_t i; |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
347 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
348 /* Free old index */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
349 if (db->ppIndex) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
350 g_free(db->ppIndex); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
351 db->ppIndex = NULL; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
352 } |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
353 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
354 /* Get size of db */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
355 pCurr = db->pNodes; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
356 db->n = 0; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
357 while (pCurr) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
358 db->n++; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
359 pCurr = pCurr->pNext; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
360 } |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
361 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
362 /* Check number of nodes */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
363 if (db->n > 0) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
364 /* Allocate memory for index-table */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
365 db->ppIndex = (t_xs_stil_node **) g_malloc(sizeof(t_xs_stil_node *) * db->n); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
366 if (!db->ppIndex) |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
367 return -1; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
368 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
369 /* Get node-pointers to table */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
370 i = 0; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
371 pCurr = db->pNodes; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
372 while (pCurr && (i < db->n)) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
373 db->ppIndex[i++] = pCurr; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
374 pCurr = pCurr->pNext; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
375 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
376 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
377 /* Sort the indexes */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
378 qsort(db->ppIndex, db->n, sizeof(t_xs_stil_node *), xs_stildb_cmp); |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
379 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
380 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
381 return 0; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
382 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
383 |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
384 |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
385 /* Free a given STIL database |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
386 */ |
392
b09d74eb71e6
Working on getting STIL and SLDB using completely dynamically allocated
Matti Hamalainen <ccr@tnsp.org>
parents:
369
diff
changeset
|
387 void xs_stildb_free(t_xs_stildb *db) |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
388 { |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
389 t_xs_stil_node *pCurr, *pNext; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
390 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
391 if (!db) |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
392 return; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
393 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
394 /* Free the memory allocated for nodes */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
395 pCurr = db->pNodes; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
396 while (pCurr) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
397 pNext = pCurr->pNext; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
398 xs_stildb_node_free(pCurr); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
399 pCurr = pNext; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
400 } |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
401 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
402 db->pNodes = NULL; |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
403 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
404 /* Free memory allocated for index */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
405 if (db->ppIndex) { |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
406 g_free(db->ppIndex); |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
407 db->ppIndex = NULL; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
408 } |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
409 |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
410 /* Free structure */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
411 db->n = 0; |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
412 g_free(db); |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
413 } |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
414 |
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
415 |
227
92bad4c7b998
Improved modularization of STIL and song-length database subsystems.
Matti Hamalainen <ccr@tnsp.org>
parents:
224
diff
changeset
|
416 /* Get STIL information node from database |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
417 */ |
461
a1224c1f8670
STILdb handling glue moved to xmms-sid.c
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
418 t_xs_stil_node *xs_stildb_get_node(t_xs_stildb *db, gchar *pcFilename) |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
419 { |
509
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
420 t_xs_stil_node keyItem, *key, **item; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
421 |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
422 /* Check the database pointers */ |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
423 if (!db || !db->pNodes || !db->ppIndex) |
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
424 return NULL; |
109
578b71b62eeb
Fileinfo now basically working, STIL COMMENT-fields are not yet parsed or shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
425 |
509
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
426 /* Look-up index using binary search */ |
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
427 keyItem.pcFilename = pcFilename; |
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
428 key = &keyItem; |
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
429 item = bsearch(&key, db->ppIndex, db->n, sizeof(t_xs_stil_node *), xs_stildb_cmp); |
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
430 if (item) |
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
431 return *item; |
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
432 else |
81756f412b43
Changes based on patch from Heikki 'shd' Orsila: Fix a crash on 64-bit
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
433 return NULL; |
94
086681f70910
Start of re-write of STIL-support
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
434 } |