annotate Plugins/Input/mpg123/id3_frame_url.c @ 228:08973a746a3e trunk

[svn] GCC2 fixes.
author nenolod
date Fri, 25 Nov 2005 23:14:41 -0800
parents 539a0fa7f030
children 18cb7405b5e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1 /*********************************************************************
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 * Copyright (C) 1999, 2001, 2002,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
4 * Department of Computer Science, University of Tromsų
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 * Filename: id3_frame_url.c
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 * Description: Code for handling ID3 URL frames.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8 * Author: Espen Skoglund <espensk@stud.cs.uit.no>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 * Created at: Tue Feb 9 21:10:45 1999
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 * $Id: id3_frame_url.c,v 1.6 2004/07/20 21:47:22 descender Exp $
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13 * This program is free software; you can redistribute it and/or
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14 * modify it under the terms of the GNU General Public License
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15 * as published by the Free Software Foundation; either version 2
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
16 * of the License, or (at your option) any later version.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 * This program is distributed in the hope that it will be useful,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21 * GNU General Public License for more details.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 * You should have received a copy of the GNU General Public License
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24 * along with this program; if not, write to the Free Software
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 ********************************************************************/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 #include "config.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 #include "xmms-id3.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 #include "id3_header.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32
227
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
33 #include <string.h>
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 * Function id3_get_url (frame)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 * Return URL of frame.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 char *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 id3_get_url(struct id3_frame *frame)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 /* Type check */
227
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
45 if ( frame->fr_desc->fd_idstr[0] != 'W' )
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
46 return NULL;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48 /* Check if frame is compressed */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 if (id3_decompress_frame(frame) == -1)
227
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
50 return NULL;
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
51
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
52 ID3_FRAME_DEFINE_CURSOR(frame);
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
53
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
54 if ( frame->fr_desc->fd_id == ID3_WXXX ) {
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
55 /*
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
56 * This is a user defined link frame. Skip the description.
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
57 */
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
58 guint8 encoding;
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
59 gsize description_size;
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
60
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
61 ID3_FRAME_READ_OR_RETVAL(encoding, NULL);
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
62
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
63 description_size = id3_string_size(encoding, cursor, length);
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
64 if (description_size == 0)
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
65 return NULL;
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
66 cursor += description_size;
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
67 length -= description_size;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 }
227
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
69
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
70 return id3_string_decode(ID3_ENCODING_ISO_8859_1, cursor, length);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 * Function id3_get_url_desc (frame)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76 * Get description of a URL.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 char *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 id3_get_url_desc(struct id3_frame *frame)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 {
228
08973a746a3e [svn] GCC2 fixes.
nenolod
parents: 227
diff changeset
82 guint8 encoding;
08973a746a3e [svn] GCC2 fixes.
nenolod
parents: 227
diff changeset
83
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84 /* Type check */
227
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
85 if ( frame->fr_desc->fd_idstr[0] != 'W' )
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
86 return NULL;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 /* If predefined link frame, return description. */
227
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
89 if ( frame->fr_desc->fd_id != ID3_WXXX )
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
90 return frame->fr_desc->fd_description;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 /* Check if frame is compressed */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 if (id3_decompress_frame(frame) == -1)
227
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
94 return NULL;
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
95
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
96 ID3_FRAME_DEFINE_CURSOR(frame);
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
97 ID3_FRAME_READ_OR_RETVAL(encoding, NULL);
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
98
539a0fa7f030 [svn] Unicode support fixes, based on an XMMS patch written by Ilya Konstantinov. <ikonst@users.sourceforge.net>:
nenolod
parents: 61
diff changeset
99 return id3_string_decode(encoding, cursor, length);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 }