~ubuntu-branches/ubuntu/hoary/flac/hoary

« back to all changes in this revision

Viewing changes to src/plugin_xmms/charset.c

  • Committer: Bazaar Package Importer
  • Author(s): Matt Zimmerman
  • Date: 2004-04-16 15:14:31 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040416151431-eyloggqxpwbwpogz
Tags: 1.1.0-11
Ensure that libFLAC is linked with -lm on all architectures, and
regardless of whether nasm is present

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* libxmms-flac - XMMS FLAC input plugin
 
2
 * Copyright (C) 2002  Daisuke Shimamura
 
3
 *
 
4
 * Almost from charset.c
 
5
 *  EasyTAG - Tag editor for MP3 and OGG files
 
6
 *  Copyright (C) 1999-2001  H�vard Kv�len <havardk@xmms.org>
 
7
 *
 
8
 * This program is free software; you can redistribute it and/or
 
9
 * modify it under the terms of the GNU General Public License
 
10
 * as published by the Free Software Foundation; either version 2
 
11
 * of the License, or (at your option) any later version.
 
12
 *
 
13
 * This program is distributed in the hope that it will be useful,
 
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
 * GNU General Public License for more details.
 
17
 *
 
18
 * You should have received a copy of the GNU General Public License
 
19
 * along with this program; if not, write to the Free Software
 
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
21
 */
 
22
 
 
23
#include <stdlib.h>
 
24
#include <glib.h>
 
25
#include <string.h>
 
26
#include <errno.h>
 
27
 
 
28
#include "plugin_common/charset.h"
 
29
#include "plugin_common/locale_hack.h"
 
30
#include "charset.h"
 
31
#include "configure.h"
 
32
 
 
33
 
 
34
/****************
 
35
 * Declarations *
 
36
 ****************/
 
37
 
 
38
#define CHARSET_TRANS_ARRAY_LEN ( sizeof(charset_trans_array) / sizeof((charset_trans_array)[0]) )
 
39
const CharsetInfo charset_trans_array[] = {
 
40
        {N_("Arabic (IBM-864)"),                  "IBM864"        },
 
41
        {N_("Arabic (ISO-8859-6)"),               "ISO-8859-6"    },
 
42
        {N_("Arabic (Windows-1256)"),             "windows-1256"  },
 
43
        {N_("Baltic (ISO-8859-13)"),              "ISO-8859-13"   },
 
44
        {N_("Baltic (ISO-8859-4)"),               "ISO-8859-4"    },
 
45
        {N_("Baltic (Windows-1257)"),             "windows-1257"  },
 
46
        {N_("Celtic (ISO-8859-14)"),              "ISO-8859-14"   },
 
47
        {N_("Central European (IBM-852)"),        "IBM852"        },
 
48
        {N_("Central European (ISO-8859-2)"),     "ISO-8859-2"    },
 
49
        {N_("Central European (Windows-1250)"),   "windows-1250"  },
 
50
        {N_("Chinese Simplified (GB18030)"),      "gb18030"       },
 
51
        {N_("Chinese Simplified (GB2312)"),       "GB2312"        },
 
52
        {N_("Chinese Traditional (Big5)"),        "Big5"          },
 
53
        {N_("Chinese Traditional (Big5-HKSCS)"),  "Big5-HKSCS"    },
 
54
        {N_("Cyrillic (IBM-855)"),                "IBM855"        },
 
55
        {N_("Cyrillic (ISO-8859-5)"),             "ISO-8859-5"    },
 
56
        {N_("Cyrillic (ISO-IR-111)"),             "ISO-IR-111"    },
 
57
        {N_("Cyrillic (KOI8-R)"),                 "KOI8-R"        },
 
58
        {N_("Cyrillic (Windows-1251)"),           "windows-1251"  },
 
59
        {N_("Cyrillic/Russian (CP-866)"),         "IBM866"        },
 
60
        {N_("Cyrillic/Ukrainian (KOI8-U)"),       "KOI8-U"        },
 
61
        {N_("English (US-ASCII)"),                "us-ascii"      },
 
62
        {N_("Greek (ISO-8859-7)"),                "ISO-8859-7"    },
 
63
        {N_("Greek (Windows-1253)"),              "windows-1253"  },
 
64
        {N_("Hebrew (IBM-862)"),                  "IBM862"        },
 
65
        {N_("Hebrew (Windows-1255)"),             "windows-1255"  },
 
66
        {N_("Japanese (EUC-JP)"),                 "EUC-JP"        },
 
67
        {N_("Japanese (ISO-2022-JP)"),            "ISO-2022-JP"   },
 
68
        {N_("Japanese (Shift_JIS)"),              "Shift_JIS"     },
 
69
        {N_("Korean (EUC-KR)"),                   "EUC-KR"        },
 
70
        {N_("Nordic (ISO-8859-10)"),              "ISO-8859-10"   },
 
71
        {N_("South European (ISO-8859-3)"),       "ISO-8859-3"    },
 
72
        {N_("Thai (TIS-620)"),                    "TIS-620"       },
 
73
        {N_("Turkish (IBM-857)"),                 "IBM857"        },
 
74
        {N_("Turkish (ISO-8859-9)"),              "ISO-8859-9"    },
 
75
        {N_("Turkish (Windows-1254)"),            "windows-1254"  },
 
76
        {N_("Unicode (UTF-7)"),                   "UTF-7"         },
 
77
        {N_("Unicode (UTF-8)"),                   "UTF-8"         },
 
78
        {N_("Unicode (UTF-16BE)"),                "UTF-16BE"      },
 
79
        {N_("Unicode (UTF-16LE)"),                "UTF-16LE"      },
 
80
        {N_("Unicode (UTF-32BE)"),                "UTF-32BE"      },
 
81
        {N_("Unicode (UTF-32LE)"),                "UTF-32LE"      },
 
82
        {N_("Vietnamese (VISCII)"),               "VISCII"        },
 
83
        {N_("Vietnamese (Windows-1258)"),         "windows-1258"  },
 
84
        {N_("Visual Hebrew (ISO-8859-8)"),        "ISO-8859-8"    },
 
85
        {N_("Western (IBM-850)"),                 "IBM850"        },
 
86
        {N_("Western (ISO-8859-1)"),              "ISO-8859-1"    },
 
87
        {N_("Western (ISO-8859-15)"),             "ISO-8859-15"   },
 
88
        {N_("Western (Windows-1252)"),            "windows-1252"  }
 
89
 
 
90
        /*
 
91
         * From this point, character sets aren't supported by iconv
 
92
         */
 
93
#if 0
 
94
        {N_("Arabic (IBM-864-I)"),                "IBM864i"              },
 
95
        {N_("Arabic (ISO-8859-6-E)"),             "ISO-8859-6-E"         },
 
96
        {N_("Arabic (ISO-8859-6-I)"),             "ISO-8859-6-I"         },
 
97
        {N_("Arabic (MacArabic)"),                "x-mac-arabic"         },
 
98
        {N_("Armenian (ARMSCII-8)"),              "armscii-8"            },
 
99
        {N_("Central European (MacCE)"),          "x-mac-ce"             },
 
100
        {N_("Chinese Simplified (GBK)"),          "x-gbk"                },
 
101
        {N_("Chinese Simplified (HZ)"),           "HZ-GB-2312"           },
 
102
        {N_("Chinese Traditional (EUC-TW)"),      "x-euc-tw"             },
 
103
        {N_("Croatian (MacCroatian)"),            "x-mac-croatian"       },
 
104
        {N_("Cyrillic (MacCyrillic)"),            "x-mac-cyrillic"       },
 
105
        {N_("Cyrillic/Ukrainian (MacUkrainian)"), "x-mac-ukrainian"      },
 
106
        {N_("Farsi (MacFarsi)"),                  "x-mac-farsi"},
 
107
        {N_("Greek (MacGreek)"),                  "x-mac-greek"          },
 
108
        {N_("Gujarati (MacGujarati)"),            "x-mac-gujarati"       },
 
109
        {N_("Gurmukhi (MacGurmukhi)"),            "x-mac-gurmukhi"       },
 
110
        {N_("Hebrew (ISO-8859-8-E)"),             "ISO-8859-8-E"         },
 
111
        {N_("Hebrew (ISO-8859-8-I)"),             "ISO-8859-8-I"         },
 
112
        {N_("Hebrew (MacHebrew)"),                "x-mac-hebrew"         },
 
113
        {N_("Hindi (MacDevanagari)"),             "x-mac-devanagari"     },
 
114
        {N_("Icelandic (MacIcelandic)"),          "x-mac-icelandic"      },
 
115
        {N_("Korean (JOHAB)"),                    "x-johab"              },
 
116
        {N_("Korean (UHC)"),                      "x-windows-949"        },
 
117
        {N_("Romanian (MacRomanian)"),            "x-mac-romanian"       },
 
118
        {N_("Turkish (MacTurkish)"),              "x-mac-turkish"        },
 
119
        {N_("User Defined"),                      "x-user-defined"       },
 
120
        {N_("Vietnamese (TCVN)"),                 "x-viet-tcvn5712"      },
 
121
        {N_("Vietnamese (VPS)"),                  "x-viet-vps"           },
 
122
        {N_("Western (MacRoman)"),                "x-mac-roman"          },
 
123
        /* charsets whithout posibly translatable names */
 
124
        {"T61.8bit",                              "T61.8bit"             },
 
125
        {"x-imap4-modified-utf7",                 "x-imap4-modified-utf7"},
 
126
        {"x-u-escaped",                           "x-u-escaped"          },
 
127
        {"windows-936",                           "windows-936"          }
 
128
#endif
 
129
};
 
130
 
 
131
/*************
 
132
 * Functions *
 
133
 *************/
 
134
 
 
135
/*
 
136
 * Commons conversion functions
 
137
 */
 
138
char *convert_from_file_to_user(const char *string)
 
139
{
 
140
        return FLAC_plugin__charset_convert_string(string, flac_cfg.title.file_char_set, flac_cfg.title.user_char_set);
 
141
}
 
142
 
 
143
char *convert_from_user_to_file(const char *string)
 
144
{
 
145
        return FLAC_plugin__charset_convert_string(string, flac_cfg.title.user_char_set, flac_cfg.title.file_char_set);
 
146
}
 
147
 
 
148
void convert_from_file_to_user_in_place(char **string)
 
149
{
 
150
        if(0 != *string) {
 
151
                char *tmp;
 
152
 
 
153
                tmp = convert_from_file_to_user(*string);
 
154
                free(*string);
 
155
                *string = tmp;
 
156
        }
 
157
}
 
158
 
 
159
void convert_from_user_to_file_in_place(char **string)
 
160
{
 
161
        if(0 != *string) {
 
162
                char *tmp;
 
163
 
 
164
                tmp = convert_from_user_to_file(*string);
 
165
                free(*string);
 
166
                *string = tmp;
 
167
        }
 
168
}
 
169
 
 
170
GList *Charset_Create_List (void)
 
171
{
 
172
        GList *list = NULL;
 
173
        guint i;
 
174
 
 
175
        for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
 
176
                list = g_list_append(list,_(charset_trans_array[i].charset_title));
 
177
        return list;
 
178
}
 
179
 
 
180
 
 
181
/*
 
182
 * Return charset_name from charset_title
 
183
 */
 
184
gchar *Charset_Get_Name_From_Title (gchar *charset_title)
 
185
{
 
186
        guint i;
 
187
 
 
188
        if (charset_title)
 
189
                for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
 
190
                        if ( strcasecmp(_(charset_title),_(charset_trans_array[i].charset_title)) == 0 )
 
191
                                return charset_trans_array[i].charset_name;
 
192
        return "";
 
193
}
 
194
 
 
195
 
 
196
/*
 
197
 * Return charset_title from charset_name
 
198
 */
 
199
gchar *Charset_Get_Title_From_Name (gchar *charset_name)
 
200
{
 
201
        guint i;
 
202
 
 
203
        if (charset_name)
 
204
                for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
 
205
                        if ( strcasecmp(charset_name,charset_trans_array[i].charset_name) == 0 )
 
206
                                return _(charset_trans_array[i].charset_title);
 
207
        return "";
 
208
}