1#! /usr/bin/perl
2#
3# Copyright (c) 2001-2020, PostgreSQL Global Development Group
4#
5# src/backend/utils/mb/Unicode/UCS_to_SJIS.pl
6#
7# Generate UTF-8 <=> SJIS code conversion radix tree Generate UTF-8
8# <=> SJIS code conversion radix tree Unfortunately it is prohibited
9# by the organization to distribute the map files. So if you try to
10# use this script, you have to obtain CP932.TXT from the organization's
11# ftp site.
12
13use strict;
14use warnings;
15
16use convutils;
17
18my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_SJIS.pl';
19
20my $mapping = read_source("CP932.TXT");
21
22# Drop these SJIS codes from the source for UTF8=>SJIS conversion
23my @reject_sjis = (
24	0xed40 .. 0xeefc, 0x8754 .. 0x875d, 0x878a, 0x8782,
25	0x8784,           0xfa5b,           0xfa54, 0x8790 .. 0x8792,
26	0x8795 .. 0x8797, 0x879a .. 0x879c);
27
28foreach my $i (@$mapping)
29{
30	my $code = $i->{code};
31	my $ucs  = $i->{ucs};
32
33	if (grep { $code == $_ } @reject_sjis)
34	{
35		$i->{direction} = TO_UNICODE;
36	}
37}
38
39# Add these UTF8->SJIS pairs to the table.
40push @$mapping,
41  ( {
42		direction => FROM_UNICODE,
43		ucs       => 0x00a2,
44		code      => 0x8191,
45		comment   => '# CENT SIGN',
46		f         => $this_script,
47		l         => __LINE__
48	},
49	{
50		direction => FROM_UNICODE,
51		ucs       => 0x00a3,
52		code      => 0x8192,
53		comment   => '# POUND SIGN',
54		f         => $this_script,
55		l         => __LINE__
56	},
57	{
58		direction => FROM_UNICODE,
59		ucs       => 0x00a5,
60		code      => 0x5c,
61		comment   => '# YEN SIGN',
62		f         => $this_script,
63		l         => __LINE__
64	},
65	{
66		direction => FROM_UNICODE,
67		ucs       => 0x00ac,
68		code      => 0x81ca,
69		comment   => '# NOT SIGN',
70		f         => $this_script,
71		l         => __LINE__
72	},
73	{
74		direction => FROM_UNICODE,
75		ucs       => 0x2016,
76		code      => 0x8161,
77		comment   => '# DOUBLE VERTICAL LINE',
78		f         => $this_script,
79		l         => __LINE__
80	},
81	{
82		direction => FROM_UNICODE,
83		ucs       => 0x203e,
84		code      => 0x7e,
85		comment   => '# OVERLINE',
86		f         => $this_script,
87		l         => __LINE__
88	},
89	{
90		direction => FROM_UNICODE,
91		ucs       => 0x2212,
92		code      => 0x817c,
93		comment   => '# MINUS SIGN',
94		f         => $this_script,
95		l         => __LINE__
96	},
97	{
98		direction => FROM_UNICODE,
99		ucs       => 0x301c,
100		code      => 0x8160,
101		comment   => '# WAVE DASH',
102		f         => $this_script,
103		l         => __LINE__
104	});
105
106print_conversion_tables($this_script, "SJIS", $mapping);
107