Mercurial > audlegacy
annotate audacious/playlist_pls.c @ 1563:c4640c88942d trunk
[svn] - lowlevel plugin stuff
author | nenolod |
---|---|
date | Thu, 10 Aug 2006 20:35:10 -0700 |
parents | 9a1e4bca7d8b |
children |
rev | line source |
---|---|
1554 | 1 /* |
2 * Audacious: A cross-platform multimedia player | |
3 * Copyright (c) 2006 William Pitcock, Tony Vroon, George Averill, | |
4 * Giacomo Lozito, Derek Pomery and Yoshiki Yazawa. | |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * This program is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License | |
17 * along with this program; if not, write to the Free Software | |
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
19 */ | |
20 | |
21 #include <glib.h> | |
22 #include <string.h> | |
23 #include <glib.h> | |
24 #include <glib/gprintf.h> | |
25 #include <stdlib.h> | |
26 #include <string.h> | |
27 #include <time.h> | |
28 | |
29 #include <unistd.h> | |
30 #include <sys/types.h> | |
31 #include <sys/stat.h> | |
32 #include <sys/errno.h> | |
33 | |
1559 | 34 #include "util.h" |
1554 | 35 #include "playlist.h" |
36 #include "playlist_container.h" | |
37 | |
38 static void | |
39 playlist_load_pls(const gchar * filename, gint pos) | |
40 { | |
41 guint i, count, added_count = 0; | |
42 gchar key[10]; | |
43 gchar *line; | |
44 | |
1559 | 45 g_return_if_fail(filename != NULL); |
1554 | 46 |
47 if (!str_has_suffix_nocase(filename, ".pls")) | |
48 return; | |
49 | |
50 if (!(line = read_ini_string(filename, "playlist", "NumberOfEntries"))) | |
51 return; | |
52 | |
53 count = atoi(line); | |
54 g_free(line); | |
55 | |
56 for (i = 1; i <= count; i++) { | |
57 g_snprintf(key, sizeof(key), "File%d", i); | |
58 if ((line = read_ini_string(filename, "playlist", key))) { | |
59 playlist_load_ins_file(line, filename, pos, NULL, -1); | |
60 added_count++; | |
61 | |
62 if (pos >= 0) | |
63 pos++; | |
64 | |
65 g_free(line); | |
66 } | |
67 } | |
68 } | |
69 | |
70 static void | |
1559 | 71 playlist_save_pls(const gchar *filename, gint pos) |
1554 | 72 { |
73 GList *node; | |
74 FILE *file = fopen(filename, "wb"); | |
75 | |
76 g_return_if_fail(file != NULL); | |
77 | |
78 g_fprintf(file, "[playlist]\n"); | |
79 g_fprintf(file, "NumberOfEntries=%d\n", playlist_get_length()); | |
80 | |
81 PLAYLIST_LOCK(); | |
82 | |
83 for (node = playlist_get(); node; node = g_list_next(node)) { | |
84 PlaylistEntry *entry = PLAYLIST_ENTRY(node->data); | |
85 | |
86 g_fprintf(file, "File%d=%s\n", g_list_position(playlist_get(), node) + 1, | |
87 entry->filename); | |
88 } | |
89 | |
90 PLAYLIST_UNLOCK(); | |
91 | |
92 fclose(file); | |
93 } | |
94 | |
95 PlaylistContainer plc_pls = { | |
96 .name = "Winamp .pls Playlist Format", | |
97 .ext = "pls", | |
98 .plc_read = playlist_load_pls, | |
99 .plc_write = playlist_save_pls, | |
100 }; | |
101 | |
1558
a6793cf239e9
[svn] - .pls playlists work again, now to do M3Us.
nenolod
parents:
1554
diff
changeset
|
102 void |
a6793cf239e9
[svn] - .pls playlists work again, now to do M3Us.
nenolod
parents:
1554
diff
changeset
|
103 temporary_pls_register(void) |
a6793cf239e9
[svn] - .pls playlists work again, now to do M3Us.
nenolod
parents:
1554
diff
changeset
|
104 { |
a6793cf239e9
[svn] - .pls playlists work again, now to do M3Us.
nenolod
parents:
1554
diff
changeset
|
105 playlist_container_register(&plc_pls); |
a6793cf239e9
[svn] - .pls playlists work again, now to do M3Us.
nenolod
parents:
1554
diff
changeset
|
106 } |
a6793cf239e9
[svn] - .pls playlists work again, now to do M3Us.
nenolod
parents:
1554
diff
changeset
|
107 |