Mercurial > audlegacy
annotate Plugins/Input/mpg123/id3_frame_url.c @ 361:db298f2d3dd9 trunk
[svn] Detect files by content; remove quick detect.
author | chainsaw |
---|---|
date | Fri, 30 Dec 2005 17:56:32 -0800 |
parents | 18cb7405b5e9 |
children |
rev | line source |
---|---|
61 | 1 /********************************************************************* |
2 * | |
3 * Copyright (C) 1999, 2001, 2002, | |
4 * Department of Computer Science, University of Tromsų | |
5 * | |
6 * Filename: id3_frame_url.c | |
7 * Description: Code for handling ID3 URL frames. | |
8 * Author: Espen Skoglund <espensk@stud.cs.uit.no> | |
9 * Created at: Tue Feb 9 21:10:45 1999 | |
10 * | |
11 * $Id: id3_frame_url.c,v 1.6 2004/07/20 21:47:22 descender Exp $ | |
12 * | |
13 * This program is free software; you can redistribute it and/or | |
14 * modify it under the terms of the GNU General Public License | |
15 * as published by the Free Software Foundation; either version 2 | |
16 * of the License, or (at your option) any later version. | |
17 * | |
18 * This program is distributed in the hope that it will be useful, | |
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 * GNU General Public License for more details. | |
22 * | |
23 * You should have received a copy of the GNU General Public License | |
24 * along with this program; if not, write to the Free Software | |
25 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
26 * | |
27 ********************************************************************/ | |
28 #include "config.h" | |
29 | |
30 #include "xmms-id3.h" | |
31 #include "id3_header.h" | |
32 | |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
33 |
61 | 34 |
35 /* | |
36 * Function id3_get_url (frame) | |
37 * | |
38 * Return URL of frame. | |
39 * | |
40 */ | |
41 char * | |
42 id3_get_url(struct id3_frame *frame) | |
43 { | |
44 /* Type check */ | |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
45 if (frame->fr_desc->fd_idstr[0] != 'W') |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
46 return NULL; |
61 | 47 |
48 /* Check if frame is compressed */ | |
49 if (id3_decompress_frame(frame) == -1) | |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
50 return NULL; |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
51 |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
52 if (frame->fr_desc->fd_id == ID3_WXXX) { |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
53 /* |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
54 * This is a user defined link frame. Skip the description. |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
55 */ |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
56 switch (*(guint8 *) frame->fr_data) { |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
57 case ID3_ENCODING_ISO_8859_1: |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
58 { |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
59 char *text = (char *) frame->fr_data + 1; |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
60 |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
61 while (*text != 0) |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
62 text++; |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
63 |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
64 return g_strdup(++text); |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
65 } |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
66 case ID3_ENCODING_UTF16: |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
67 { |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
68 gint16 *text16 = (gint16 *) ((glong) frame->fr_data + 1); |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
69 |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
70 while (*text16 != 0) |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
71 text16++; |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
72 |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
73 return g_strdup((char *) (++text16)); |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
74 } |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
75 default: |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
76 return NULL; |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
77 } |
61 | 78 } |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
79 |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
80 return g_strdup((char *) frame->fr_data); |
61 | 81 } |
82 | |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
83 |
61 | 84 /* |
85 * Function id3_get_url_desc (frame) | |
86 * | |
87 * Get description of a URL. | |
88 * | |
89 */ | |
90 char * | |
91 id3_get_url_desc(struct id3_frame *frame) | |
92 { | |
93 /* Type check */ | |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
94 if (frame->fr_desc->fd_idstr[0] != 'W') |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
95 return NULL; |
61 | 96 |
97 /* If predefined link frame, return description. */ | |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
98 if (frame->fr_desc->fd_id != ID3_WXXX) |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
99 return frame->fr_desc->fd_description; |
61 | 100 |
101 /* Check if frame is compressed */ | |
102 if (id3_decompress_frame(frame) == -1) | |
240
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
103 return NULL; |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
104 |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
105 if (*(guint8 *) frame->fr_data == ID3_ENCODING_ISO_8859_1) |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
106 return g_strdup((char *) frame->fr_data + 1); |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
107 else |
18cb7405b5e9
[svn] Revert unicode fixes, cause player to bomb out.
nenolod
parents:
228
diff
changeset
|
108 return id3_utf16_to_ascii((gint16 *) ((glong) frame->fr_data + 1)); |
61 | 109 } |