~ubuntu-branches/ubuntu/hardy/php5/hardy-updates

« back to all changes in this revision

Viewing changes to ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.c

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-10-09 03:14:32 UTC
  • Revision ID: james.westby@ubuntu.com-20051009031432-kspik3lobxstafv9
Tags: upstream-5.0.5
ImportĀ upstreamĀ versionĀ 5.0.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * "streamable kanji code filter and converter"
 
3
 * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
 
4
 *
 
5
 * LICENSE NOTICES
 
6
 *
 
7
 * This file is part of "streamable kanji code filter and converter",
 
8
 * which is distributed under the terms of GNU Lesser General Public 
 
9
 * License (version 2) as published by the Free Software Foundation.
 
10
 *
 
11
 * This software 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 Lesser General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU Lesser General Public
 
17
 * License along with "streamable kanji code filter and converter";
 
18
 * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 
19
 * Suite 330, Boston, MA  02111-1307  USA
 
20
 *
 
21
 * The author of this file:
 
22
 *
 
23
 */
 
24
/*
 
25
 * The source code included in this files was separated from mbfilter.c
 
26
 * by moriyoshi koizumi <moriyoshi@php.net> on 4 dec 2002.
 
27
 * 
 
28
 */
 
29
 
 
30
#ifdef HAVE_CONFIG_H
 
31
#include "config.h"
 
32
#endif
 
33
 
 
34
#include "mbfilter.h"
 
35
#include "mbfilter_iso8859_1.h"
 
36
 
 
37
static const char *mbfl_encoding_8859_1_aliases[] = {"ISO_8859-1", "latin1", NULL};
 
38
 
 
39
const mbfl_encoding mbfl_encoding_8859_1 = {
 
40
        mbfl_no_encoding_8859_1,
 
41
        "ISO-8859-1",
 
42
        "ISO-8859-1",
 
43
        (const char *(*)[])&mbfl_encoding_8859_1_aliases,
 
44
        NULL,
 
45
        MBFL_ENCTYPE_SBCS
 
46
};
 
47
 
 
48
const struct mbfl_identify_vtbl vtbl_identify_8859_1 = {
 
49
        mbfl_no_encoding_8859_1,
 
50
        mbfl_filt_ident_common_ctor,
 
51
        mbfl_filt_ident_common_dtor,
 
52
        mbfl_filt_ident_true
 
53
};
 
54
 
 
55
const struct mbfl_convert_vtbl vtbl_8859_1_wchar = {
 
56
        mbfl_no_encoding_8859_1,
 
57
        mbfl_no_encoding_wchar,
 
58
        mbfl_filt_conv_common_ctor,
 
59
        mbfl_filt_conv_common_dtor,
 
60
        mbfl_filt_conv_8859_1_wchar,
 
61
        mbfl_filt_conv_common_flush
 
62
};
 
63
 
 
64
const struct mbfl_convert_vtbl vtbl_wchar_8859_1 = {
 
65
        mbfl_no_encoding_wchar,
 
66
        mbfl_no_encoding_8859_1,
 
67
        mbfl_filt_conv_common_ctor,
 
68
        mbfl_filt_conv_common_dtor,
 
69
        mbfl_filt_conv_wchar_8859_1,
 
70
        mbfl_filt_conv_common_flush
 
71
};
 
72
 
 
73
 
 
74
#define CK(statement)   do { if ((statement) < 0) return (-1); } while (0)
 
75
 
 
76
/*
 
77
 * ISO-8859-1 => wchar
 
78
 */
 
79
int mbfl_filt_conv_8859_1_wchar(int c, mbfl_convert_filter *filter)
 
80
{
 
81
        return (*filter->output_function)(c, filter->data);
 
82
}
 
83
 
 
84
/*
 
85
 * wchar => ISO-8859-1
 
86
 */
 
87
int mbfl_filt_conv_wchar_8859_1(int c, mbfl_convert_filter *filter)
 
88
{
 
89
        if (c >= 0 && c < 0x100) {
 
90
                CK((*filter->output_function)(c, filter->data));
 
91
        } else {
 
92
                if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) {
 
93
                        CK(mbfl_filt_conv_illegal_output(c, filter));
 
94
                }
 
95
        }
 
96
 
 
97
        return c;
 
98
}
 
99
 
 
100