Mercurial > hg > xmms-sid
comparison src/xs_length.c @ 751:55eea3fa8868
Rename some structures.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 05 Nov 2012 18:42:57 +0200 |
parents | 9321ffa2ea7e |
children | 15f0c8e11338 |
comparison
equal
deleted
inserted
replaced
750:3180bf22090f | 751:55eea3fa8868 |
---|---|
28 #include <string.h> | 28 #include <string.h> |
29 | 29 |
30 | 30 |
31 /* Free memory allocated for given SLDB node | 31 /* Free memory allocated for given SLDB node |
32 */ | 32 */ |
33 static void xs_sldb_node_free(sldb_node_t *node) | 33 static void xs_sldb_node_free(XSSLDBNode *node) |
34 { | 34 { |
35 if (node) { | 35 if (node) { |
36 /* Nothing much to do here ... */ | 36 /* Nothing much to do here ... */ |
37 g_free(node->lengths); | 37 g_free(node->lengths); |
38 g_free(node); | 38 g_free(node); |
40 } | 40 } |
41 | 41 |
42 | 42 |
43 /* Insert given node to db linked list | 43 /* Insert given node to db linked list |
44 */ | 44 */ |
45 static void xs_sldb_node_insert(xs_sldb_t *db, sldb_node_t *node) | 45 static void xs_sldb_node_insert(XSSLDB *db, XSSLDBNode *node) |
46 { | 46 { |
47 assert(db); | 47 assert(db); |
48 | 48 |
49 if (db->nodes) { | 49 if (db->nodes) { |
50 /* The first node's prev points to last node */ | 50 /* The first node's prev points to last node */ |
98 } | 98 } |
99 | 99 |
100 | 100 |
101 /* Parse one SLDB definition line, return SLDB node | 101 /* Parse one SLDB definition line, return SLDB node |
102 */ | 102 */ |
103 sldb_node_t * xs_sldb_read_entry(gchar *inLine) | 103 XSSLDBNode * xs_sldb_read_entry(gchar *inLine) |
104 { | 104 { |
105 size_t linePos; | 105 size_t linePos; |
106 gint i; | 106 gint i; |
107 gboolean isOK; | 107 gboolean isOK; |
108 sldb_node_t *tmnode; | 108 XSSLDBNode *tmnode; |
109 | 109 |
110 /* Allocate new node */ | 110 /* Allocate new node */ |
111 tmnode = (sldb_node_t *) g_malloc0(sizeof(sldb_node_t)); | 111 tmnode = (XSSLDBNode *) g_malloc0(sizeof(XSSLDBNode)); |
112 if (!tmnode) { | 112 if (!tmnode) { |
113 xs_error("Error allocating new node. Fatal error.\n"); | 113 xs_error("Error allocating new node. Fatal error.\n"); |
114 return NULL; | 114 return NULL; |
115 } | 115 } |
116 | 116 |
189 } | 189 } |
190 | 190 |
191 | 191 |
192 /* Read database to memory | 192 /* Read database to memory |
193 */ | 193 */ |
194 gint xs_sldb_read(xs_sldb_t *db, const gchar *dbFilename) | 194 gint xs_sldb_read(XSSLDB *db, const gchar *dbFilename) |
195 { | 195 { |
196 FILE *inFile; | 196 FILE *inFile; |
197 gchar inLine[XS_BUF_SIZE]; | 197 gchar inLine[XS_BUF_SIZE]; |
198 size_t lineNum; | 198 size_t lineNum; |
199 sldb_node_t *tmnode; | 199 XSSLDBNode *tmnode; |
200 assert(db); | 200 assert(db); |
201 | 201 |
202 /* Try to open the file */ | 202 /* Try to open the file */ |
203 if ((inFile = fopen(dbFilename, "ra")) == NULL) { | 203 if ((inFile = fopen(dbFilename, "ra")) == NULL) { |
204 xs_error("Could not open SongLengthDB '%s'\n", dbFilename); | 204 xs_error("Could not open SongLengthDB '%s'\n", dbFilename); |
267 */ | 267 */ |
268 static gint xs_sldb_cmp(const void *node1, const void *node2) | 268 static gint xs_sldb_cmp(const void *node1, const void *node2) |
269 { | 269 { |
270 /* We assume here that we never ever get NULL-pointers or similar */ | 270 /* We assume here that we never ever get NULL-pointers or similar */ |
271 return xs_sldb_cmphash( | 271 return xs_sldb_cmphash( |
272 (*(sldb_node_t **) node1)->md5Hash, | 272 (*(XSSLDBNode **) node1)->md5Hash, |
273 (*(sldb_node_t **) node2)->md5Hash); | 273 (*(XSSLDBNode **) node2)->md5Hash); |
274 } | 274 } |
275 | 275 |
276 | 276 |
277 /* (Re)create index | 277 /* (Re)create index |
278 */ | 278 */ |
279 gint xs_sldb_index(xs_sldb_t * db) | 279 gint xs_sldb_index(XSSLDB * db) |
280 { | 280 { |
281 sldb_node_t *pCurr; | 281 XSSLDBNode *pCurr; |
282 size_t i; | 282 size_t i; |
283 assert(db); | 283 assert(db); |
284 | 284 |
285 /* Free old index */ | 285 /* Free old index */ |
286 if (db->pindex) { | 286 if (db->pindex) { |
297 } | 297 } |
298 | 298 |
299 /* Check number of nodes */ | 299 /* Check number of nodes */ |
300 if (db->n > 0) { | 300 if (db->n > 0) { |
301 /* Allocate memory for index-table */ | 301 /* Allocate memory for index-table */ |
302 db->pindex = (sldb_node_t **) g_malloc(sizeof(sldb_node_t *) * db->n); | 302 db->pindex = (XSSLDBNode **) g_malloc(sizeof(XSSLDBNode *) * db->n); |
303 if (!db->pindex) | 303 if (!db->pindex) |
304 return -1; | 304 return -1; |
305 | 305 |
306 /* Get node-pointers to table */ | 306 /* Get node-pointers to table */ |
307 i = 0; | 307 i = 0; |
310 db->pindex[i++] = pCurr; | 310 db->pindex[i++] = pCurr; |
311 pCurr = pCurr->next; | 311 pCurr = pCurr->next; |
312 } | 312 } |
313 | 313 |
314 /* Sort the indexes */ | 314 /* Sort the indexes */ |
315 qsort(db->pindex, db->n, sizeof(sldb_node_t *), xs_sldb_cmp); | 315 qsort(db->pindex, db->n, sizeof(XSSLDBNode *), xs_sldb_cmp); |
316 } | 316 } |
317 | 317 |
318 return 0; | 318 return 0; |
319 } | 319 } |
320 | 320 |
321 | 321 |
322 /* Free a given song-length database | 322 /* Free a given song-length database |
323 */ | 323 */ |
324 void xs_sldb_free(xs_sldb_t * db) | 324 void xs_sldb_free(XSSLDB * db) |
325 { | 325 { |
326 sldb_node_t *pCurr, *next; | 326 XSSLDBNode *pCurr, *next; |
327 | 327 |
328 if (!db) | 328 if (!db) |
329 return; | 329 return; |
330 | 330 |
331 /* Free the memory allocated for nodes */ | 331 /* Free the memory allocated for nodes */ |
375 } psidv2_header_t; | 375 } psidv2_header_t; |
376 | 376 |
377 | 377 |
378 static gint xs_get_sid_hash(const gchar *filename, xs_md5hash_t hash) | 378 static gint xs_get_sid_hash(const gchar *filename, xs_md5hash_t hash) |
379 { | 379 { |
380 xs_file_t *inFile; | 380 XSFile *inFile; |
381 xs_md5state_t inState; | 381 xs_md5state_t inState; |
382 psidv1_header_t psidH; | 382 psidv1_header_t psidH; |
383 psidv2_header_t psidH2; | 383 psidv2_header_t psidH2; |
384 guint8 *songData; | 384 guint8 *songData; |
385 guint8 ib8[2], i8; | 385 guint8 ib8[2], i8; |
492 } | 492 } |
493 | 493 |
494 | 494 |
495 /* Get node from db index via binary search | 495 /* Get node from db index via binary search |
496 */ | 496 */ |
497 sldb_node_t *xs_sldb_get(xs_sldb_t *db, const gchar *filename) | 497 XSSLDBNode *xs_sldb_get(XSSLDB *db, const gchar *filename) |
498 { | 498 { |
499 sldb_node_t keyItem, *key, **item; | 499 XSSLDBNode keyItem, *key, **item; |
500 | 500 |
501 /* Check the database pointers */ | 501 /* Check the database pointers */ |
502 if (!db || !db->nodes || !db->pindex) | 502 if (!db || !db->nodes || !db->pindex) |
503 return NULL; | 503 return NULL; |
504 | 504 |