Upstream Links 2.23
This commit is contained in:
commit
8d7a59beb5
|
@ -0,0 +1,391 @@
|
|||
Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
|
||||
Petr Kulhavy <brain@artax.karlin.mff.cuni.cz>
|
||||
Karel Kulhavy <twibright@hispeed.ch>
|
||||
Martin Pergel <mper7437@artax.karlin.mff.cuni.cz>
|
||||
|
||||
http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/links/
|
||||
|
||||
Unicode2ascii replacement and entity name tables are taken from Lynx.
|
||||
|
||||
People who contributed to links:
|
||||
|
||||
Unai Uribarri <unai@telecable.es>
|
||||
History
|
||||
|
||||
Uwe Hermann <uh1763@bingo-ev.de>
|
||||
Manpage
|
||||
Command line switch -version
|
||||
Open link in new xterm
|
||||
|
||||
Sebastian Zagrodzki <s.zagrodzki@sith.mimuw.edu.pl>
|
||||
Shift-G opens dialog with pre-displayed current URL
|
||||
|
||||
Alexander Mai <st002279@hrzpub.tu-darmstadt.de>
|
||||
OS/2 xterm support
|
||||
Fix includes for AIX
|
||||
Updated manpage
|
||||
|
||||
Dakshinamurthy Karra <kd@blr.vsnl.net.in>
|
||||
Win NT port
|
||||
Saving goto history
|
||||
|
||||
Peter Gervai <grin@tolna.net>
|
||||
Manpage updates
|
||||
Mailcap to links.cfg convertor
|
||||
|
||||
Arkadiusz Miskiewicz <misiek@pld.org.pl>
|
||||
Internationalization (GNU gettext)
|
||||
|
||||
Oleg Deribas <older@iname.com>
|
||||
Window title and clipboard support in OS/2
|
||||
|
||||
Felix von Leitner <felix@convergence.de>
|
||||
Set file date/time when downloading
|
||||
|
||||
Arkadiusz Sochala <jojoro@priv2.onet.pl>
|
||||
Polish translation
|
||||
|
||||
Petr Cech <cech@atrey.karlin.mff.cuni.cz>
|
||||
Allow spaces at the beginning of url
|
||||
|
||||
Dmitry M. Klimov <dmk@gtrk.kmtn.ru>
|
||||
KOI8-R frames
|
||||
Russian localization
|
||||
|
||||
Yurii Rashkovskii <yrashk@univer.kharkov.ua>
|
||||
Updated Russian localization
|
||||
|
||||
Lukasz Dobrek <dobrek@student.ifpan.edu.pl>
|
||||
$CONFIG_DIR for config directory
|
||||
|
||||
beckers <beckers@st-oneline.de>
|
||||
German translation
|
||||
|
||||
Evan Hughes <hughes@lab43.org>
|
||||
Bookmarks
|
||||
|
||||
Armon Red <armon@islandia.isarmon@islandia.is>
|
||||
Icelandic translation
|
||||
|
||||
M.K.Srikant <srix@vsnl.com>
|
||||
Small fix in forms
|
||||
|
||||
Cliff Cunnington <cliff@ccnet.demon.nl>
|
||||
User's manual at http://links.sourceforge.net/docs/manual-0.82-en/
|
||||
|
||||
Wojtek Bojdo/l <wojboj@lp.net.pl>
|
||||
Updated Polish localization
|
||||
|
||||
Jan Bobrowski <jb@mohan.krakow.pl>
|
||||
Small optimization in file listing
|
||||
|
||||
Serge Winitzki <serge at mendax dot phys dot cwru dot edu>,
|
||||
<serge at cosmos dot phy dot tufts dot edu>
|
||||
Upadted Russian localization
|
||||
Updated German localication
|
||||
SSL detection fix
|
||||
|
||||
Alex Antropoff <alex@tirastel.md>
|
||||
'charset' attribute of META element
|
||||
|
||||
Aurimas Mikalauskas <inner@dammit.lt>
|
||||
Lithuanian translation
|
||||
|
||||
Martin Norback <d95mback@dtek.chalmers.se>
|
||||
Swedish translation
|
||||
|
||||
Jimenez Martinez Angel Luis <al026635@alumail.uji.es>
|
||||
David Mediavilla Ezquibela <davidme.forum@bigfoot.com>
|
||||
Spanish translation
|
||||
|
||||
Suveg Gabor <gsuveg@sgmobil2000.hu>
|
||||
Hungarian translation
|
||||
|
||||
Gianluca Montecchi <gianluca@pluto.linux.it>
|
||||
Italian translation
|
||||
|
||||
Sergei Borushevsky <b_sp@usa.net>
|
||||
No-proxy-for, HTTP auth, Ctrl-W completion
|
||||
SSL
|
||||
|
||||
Fabrice Haberer-Proust <fric@gmx.li>
|
||||
French translation
|
||||
|
||||
Cristiano Guadagnino <cris@geppo.cmb2000.it>
|
||||
Updated italian translation
|
||||
|
||||
Fabio Junior Beneditto <betatest@catolico.com.br>
|
||||
Brazilian Portuguese translation
|
||||
|
||||
Martin Kavalec <martin@penguin.cz>
|
||||
Fixed redundant ':' in host header
|
||||
|
||||
Peter Wang <tjaden@alphalink.com.au>
|
||||
Rebindable keys, /etc/links.cfg
|
||||
|
||||
Mike Swieton <pyromage@pyromage.net>
|
||||
Fixed bug: Form is not posted when jumping to field by number
|
||||
|
||||
Kaloian Doganov <kaloian@europe.com>
|
||||
Bulgarian translation
|
||||
|
||||
Baris Metin <baris@gelecek.com.tr>
|
||||
Emir Yasin SARI <bitigchi@me.com>
|
||||
Turkish translation
|
||||
|
||||
Dmitry Pinchukov <dpinch@mail.ru>
|
||||
Ukrainian translation
|
||||
|
||||
Kalev Lember <kalev@colleduc.ee>
|
||||
Taniel Kirikal <taniel@colleduc.ee>
|
||||
Estonian translation
|
||||
|
||||
zas <zas@norz.org>
|
||||
Updated French translation
|
||||
Table frame and rules when no border attribute present
|
||||
|
||||
Oleg Belousov <strijar@urai.ru>
|
||||
"Ignore charset info sent by server" is saved din config file
|
||||
|
||||
Nuno Miguel Rodrigues <nmr@europa.net.dhis.org>
|
||||
Unixware console fix
|
||||
|
||||
Adam Harvey <matlhdam@iinet.net.au>
|
||||
Fixed sometimes badly posted form
|
||||
|
||||
Alberto García <berto@gpul.org>
|
||||
Galician translation
|
||||
|
||||
Radovan Stas <radoone@skmi.science.upjs.sk>
|
||||
Slovak translation
|
||||
|
||||
Marco Bodrato <bodrato@linuz.sns.it>
|
||||
Twinterm support
|
||||
|
||||
Kaloian Doganov <kaloian@europe.com>
|
||||
Bulgarian translation update
|
||||
|
||||
Olexander Kunytsa <kunia@istc.kiev.ua>
|
||||
Ukrainian translation update
|
||||
|
||||
Marius Gedminas <marius.gedminas@uosis.mif.vu.lt>
|
||||
Fixed reversed HOME/END on RXVT
|
||||
|
||||
Mediavilla David <f4j900zx001@NOSPAMsneakemail.com>
|
||||
Updated Spanish translation
|
||||
|
||||
Simos Xenitellis <simos@hellug.gr>
|
||||
Alejandros Diamandidis <adia@egnatia.ee.auth.gr>
|
||||
Greek codepages & translation
|
||||
|
||||
Anton Voloshin <vav@isv.ru>
|
||||
Proper encoding of form entries
|
||||
|
||||
Michail Litvak <mci@owl.openwall.com>
|
||||
Patch configure.in to force error if OpenSSL not found
|
||||
|
||||
Nalin Dahyabhai <nalin@redhat.com>
|
||||
Fixed occasional destroying of read buffer on Alpha
|
||||
|
||||
Andrew Rodionoff <arnost@mail.ru>
|
||||
Fixed minor bug in kbd binding
|
||||
|
||||
Stefan de Groot <stefan@nllinux.nl>
|
||||
Dutch translation
|
||||
|
||||
Carles Sadurní Anguita <isard@ctv.es>
|
||||
Catalan translation
|
||||
|
||||
Ionel Mugurel Ciobîcă
|
||||
Romanian translation
|
||||
|
||||
Petr Baudis <pasky@pasky.ji.cz>
|
||||
Use "imgtitle" if there's no "alt"
|
||||
Fix relative redirect on -dump and -source
|
||||
Add "LISTING" tag
|
||||
Fix stripping '?' out of form url
|
||||
Cookie expiration
|
||||
Manpage update
|
||||
Fixed one small leak when links goes out of memory
|
||||
Do not call memset from signal handler
|
||||
Fixed user in smb
|
||||
|
||||
Jacek Fedorynski <jfedor@jfedor.org>
|
||||
Fixed segfault when posting large forms
|
||||
|
||||
Aldy Hernandez <aldyh@cygnus.com>
|
||||
MacOS address resolution fix
|
||||
|
||||
Muhamad Faizal <faizal@mfaizal.net>
|
||||
Indonesian translation
|
||||
|
||||
Peter Naulls <peter@chocky.org>
|
||||
RiscOS support
|
||||
|
||||
Jonas Fonseca <fonseca@diku.dk>
|
||||
Danish translation
|
||||
|
||||
David O'Brien <obrien@FreeBSD.org>
|
||||
-force-html
|
||||
|
||||
Sergey Karpov <karpov@sai.msu.su>
|
||||
Updated russian translation
|
||||
Fixed image alt displayed in incorrect codepage
|
||||
|
||||
Simen Graaten <simeng@slarkware.com>
|
||||
Norwegian translation
|
||||
|
||||
Miroslav Rudisin <miero@atrey.karlin.mff.cuni.cz>:
|
||||
Updated Slovak translation
|
||||
|
||||
Varga Balázs <vinnui@broadband.hu>, <vinnui@ent.hu>
|
||||
Updated Hungarian translation
|
||||
|
||||
Denis Lackovic <delacko@fly.srk.fer.hr>
|
||||
Croatian translation
|
||||
|
||||
Richard Pecl <pecl@unicontrols.cz>
|
||||
Use threads on windows
|
||||
|
||||
Chris Lightfoot <chris@ex-parrot.com>
|
||||
\xab parsing in strings in Javascript
|
||||
|
||||
Yevgeny Gromov <yevgeny@tut.by>
|
||||
Belarusian translation
|
||||
|
||||
William Yodlowsky <wyodlows@andromeda.rutgers.edu>
|
||||
SSL patch for Solaris and other systems without /dev/random
|
||||
|
||||
Koblinger Egmont <egmont@cs.bme.hu>
|
||||
Updated Hungarian translation
|
||||
|
||||
Ludvik Tesar <tesar@mee.tcd.ie>
|
||||
URL to clipboard copying in X.
|
||||
|
||||
Stanson <stanson@btv.ru>
|
||||
Clipboard pasting into links (works from all applications)
|
||||
|
||||
Andre Valente <a.valente@netcabo.pt>
|
||||
Portuguese translation
|
||||
|
||||
Sven Neumann <sven@convergence.de>
|
||||
DirectFB graphics driver
|
||||
|
||||
Mátyás János <jani@mail.xubion.hu>
|
||||
Updated Hungarian translation
|
||||
|
||||
Anton 'Keeper' Kopyov <keeper@dfipm.vpti.vladimir.ru>
|
||||
Updated Russian translation
|
||||
|
||||
Karvinen Ilkka <ik@cs.tut.fi>
|
||||
Updated Finnish translation
|
||||
|
||||
Guido Schimmels <guido.schimmels@freenet.de>
|
||||
Updated German translation
|
||||
|
||||
Tamas Gervai <crown@tolna.net>
|
||||
Links icons
|
||||
|
||||
Daniel Berlin <dan@cgsoftware.com>
|
||||
Cookies can contain whitespace (fixes bugzilla)
|
||||
|
||||
Thomas Klausner <tk@giga.or.at>
|
||||
Support for 16-bit 565 RGB big endian
|
||||
Fix for 24-bit RGB big endian
|
||||
libpng-1.5 support
|
||||
|
||||
Strahinya Radich <mr99164@alas.matf.bg.ac.yu>
|
||||
Serbian translation
|
||||
Serbian Cyrillic letters
|
||||
|
||||
Andrei Paskevich <andrei@capet.iut-fbleau.fr>
|
||||
Image view & download with 'i', '*' to change inlined image display
|
||||
Fix tokenizer of javascript when it encounters 0xff character
|
||||
|
||||
Wojciech Puchar <wojtek@tensor.3miasto.net>
|
||||
SunOS 4 portability fixes
|
||||
|
||||
Marc Zonzon <Marc.Zonzon@univ-rennes1.fr>
|
||||
Disable AC_BIG_ENDIAN and AC_LITTLE_ENDIAN name clash
|
||||
Use pkg-config to find openssl
|
||||
|
||||
Eduard Werner <edi.werner@gmx.de>
|
||||
Upper Sorbian translation
|
||||
Updated Polish translation
|
||||
|
||||
Vladimir Marek <marek@printsoft.cz>
|
||||
Fixed --disable-graphics and --disable-javascript
|
||||
|
||||
Sam <sam@frida.fri.utc.sk>
|
||||
SDL graphics driver
|
||||
|
||||
Karel Karlik <kkar8447@ss1000.ms.mff.cuni.cz>
|
||||
Fixed framebuffer in 15 and 16-bit modes
|
||||
|
||||
Edward Rosten <er258@hermes.cam.ac.uk>
|
||||
Block ad images
|
||||
|
||||
Dieter <netbsd@sopwith.solgatos.com>
|
||||
Fix warnings on 64-bit machines
|
||||
|
||||
Jakub Bogusz <qboosh@pld-linux.org>
|
||||
Updated Polish translation
|
||||
Fixed memory corruption when passing parameters to framebuffer driver
|
||||
|
||||
Federico G. Schwindt <fgsch@lodoss.net>
|
||||
Use MD5 functions from libc when available
|
||||
|
||||
Rezzie <rezzie@telkom.net>
|
||||
Updated Indonesian translation
|
||||
|
||||
Konstantin S. Kravtsov <k6@pisem.net>
|
||||
Regular expressions for javascript
|
||||
|
||||
Lech Lorens <lech_lorens@interia.pl>
|
||||
Optional scrollbars in frames
|
||||
|
||||
Matthew Fischer <futhark@mchsi.com>
|
||||
Fixed Japanese fonts
|
||||
|
||||
Jindrich Makovicka <makovick@gmail.com>
|
||||
Fixed memory corruption when redirecting URLs with user:password
|
||||
|
||||
Carles Pina i Estany <carles@pina.cat>
|
||||
Add more top-level domains
|
||||
|
||||
Didier Mequignon <didiermequignon@wanadoo.fr>
|
||||
Updated French translation
|
||||
|
||||
Ben Secrest <blsecres@gmail.com>
|
||||
Don't change Xwindow class
|
||||
|
||||
mab
|
||||
Swiss German (Zueriduetsch) translation
|
||||
|
||||
Christian Biere <christianbiere@gmx.de>
|
||||
magnet: URL support
|
||||
|
||||
Hazel Russman <hazeldebian@googlemail.com>
|
||||
Updated Links manual
|
||||
|
||||
Egmont Koblinger <egmont@gmail.com>
|
||||
Support for large mouse coordinates in text mode using the protocol 1006
|
||||
|
||||
Volker Schatz <linksbrowser@volkerschatz.com>
|
||||
Do not misreport Date header value as last-modified date
|
||||
in the info box popping up on "=".
|
||||
New graphics glyphs
|
||||
|
||||
Daniel Stenberg <daniel@haxx.se>
|
||||
A piece of code from the curl library was taken to verify SSL host name
|
||||
|
||||
Luc Schrijvers <begasus@gmail.com>
|
||||
Leorize <leorize+oss@disroot.org>
|
||||
Francois Revol
|
||||
Haiku support
|
||||
|
||||
pluvano <me@pluvano.com>
|
||||
Delete the 4-pixel border in Xwindow
|
||||
|
||||
Ing. Daniel G. Gionco <dggionco@hotmail.com>
|
||||
Updated the Spanish translation
|
|
@ -0,0 +1,29 @@
|
|||
Braille terminal support in Links
|
||||
=================================
|
||||
|
||||
1) To turn on braille support:
|
||||
==============================
|
||||
- run Links in text mode
|
||||
- check "Braille terminal" in menu Setup->Terminal options
|
||||
|
||||
2) What does it do:
|
||||
===================
|
||||
|
||||
- all menu and dialogs are displayed full-screen
|
||||
- menu hot keys are displayed in front of the menu item (e.g. "O Html options")
|
||||
- in bookmark manager, associations manager and extensions manager:
|
||||
keys up/down move cursor through the bookmarks and keys left/right move the
|
||||
cursor through the buttons (add, delete, edit, ...)
|
||||
- all links are prepended with '~' (tilde) character
|
||||
- text fields are indicated with '>' character
|
||||
- arrow keys move the cursor around the page
|
||||
- key '{' (left bracket with shift) moves cursor to the beginning of a line
|
||||
- key '}' (right bracket with shift) moves cursor to the end of a line
|
||||
- to go to previous page: use 'z' key
|
||||
- key 'a' moves cursor to status bar
|
||||
- key 'w' moves cursor to title bar
|
||||
- key 't' moves to the previous word
|
||||
- key 'y' moves to the next word
|
||||
- key Ctrl-T moves to the previous link
|
||||
- key Ctrl-Y moves to the next link
|
||||
- key Ctrl-O moves to the next form field
|
|
@ -0,0 +1,353 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
||||
In addition, as a special exception, the copyright holders give
|
||||
permission to link the code of portions of this program with the
|
||||
OpenSSL library under certain conditions as described in each
|
||||
individual source file, and distribute linked combinations
|
||||
including the two.
|
||||
You must obey the GNU General Public License in all respects
|
||||
for all of the code used other than OpenSSL. If you modify
|
||||
file(s) with this exception, you may extend this exception to your
|
||||
version of the file(s), but you are not obligated to do so. If you
|
||||
do not wish to do so, delete this exception statement from your
|
||||
version. If you delete this exception statement from all source
|
||||
files in the program, then also delete it here.
|
|
@ -0,0 +1,114 @@
|
|||
Links 2.23 -- How To Install
|
||||
----------------------------
|
||||
|
||||
Follow this step-by-step:
|
||||
0) Check you have installed the following libraries and are able to compile with
|
||||
them. On a package-driven distribution, you will need both "library" and
|
||||
"library-dev(el)":
|
||||
|
||||
Mandatory libraries
|
||||
-------------------
|
||||
libpng - required to compile links in graphics mode (not required in text
|
||||
mode). Libpng 2.1.18 has a bug and must be patched by the patch
|
||||
libpng-1.2.18.patch which is shipped with Links.
|
||||
IJG libjpeg - if you want to display JPEG's (probably yes).
|
||||
TIFF Library - if you want TIFFs.
|
||||
SVGAlib - if you want Links to be able to display on SVGAlib.
|
||||
OpenSSL and zlib - if you want SSL connections. zlib is not necessary if you
|
||||
know the SSL is compiled without zlib.
|
||||
|
||||
Optional libraries
|
||||
------------------
|
||||
zlib - shows gzipped pages
|
||||
libbz2 - shows bzipped content
|
||||
lzma - shows content compressed with lzma
|
||||
|
||||
If any of the library is not present on the system or is unusably old and you cannot install it
|
||||
(typically because you are not a root), then go to 11) Compiling with
|
||||
user-supplied libraries.
|
||||
1) Do not forget to run "ldconfig" if you have installed any new libraries :-)
|
||||
2) "./configure --help"
|
||||
Read the output and choose which options you want to give ./configure.
|
||||
Probably you will want --enable-graphics
|
||||
3) "./configure <your options>"
|
||||
4) Check the output of ./configure (in the table at the end) whether you really
|
||||
get what you want
|
||||
5) "make"
|
||||
6) If you are a root, "make install" with root privileges. If not, copy the
|
||||
resulting "links" executable into some suitable place, preferrably within
|
||||
your $PATH. The whole browser is just one executable.
|
||||
7) If you haven't got a permanent Internet connection, save the "doc/"
|
||||
subdirectory into some suitable place (/usr/share/, /usr/local/share). The
|
||||
most important part is the "doc/links_cal/" subdirectory which contains a calibration pattern
|
||||
(calibration.html in English, kalibrace.html in Czech)
|
||||
you will need to get a flawless picture on your monitor.
|
||||
8) If you want to supply a Links icon into your X Window System windowmanager,
|
||||
you will find a suitable 48x48 icon in graphics/links.xpm
|
||||
9) Delete the archive and source directory - no more needed
|
||||
10) The browser is ready now. You just have to calibrate it to get a flawless
|
||||
picture (see doc/calibration.html or the Links homepage, which is in default
|
||||
bookmarks).
|
||||
|
||||
11) Compiling with user-supplied libraries.
|
||||
This describes how to compile Links with user-supplied libraries zlib,
|
||||
libpng, libpjpeg and libtiff. If you want to use any of these libraries from
|
||||
the system, omit appropriate references. The versions are just for example:
|
||||
|
||||
Download libpng-1.2.3, zlib-1.1.4, libjpeg-6b and libtiff-v3.5.7
|
||||
archives and unpack them. Build the libraries according to their
|
||||
instructions to get static (*.a) library in each.
|
||||
|
||||
Please note libpng-1.2.18 is buggy and must be patched with
|
||||
libpng-1.2.18.patch which is shipped with Links.
|
||||
|
||||
export CPPFLAGS="-I../zlib-1.1.4 -I../libpng-1.2.3 -I../jpeg-6b
|
||||
-I../tiff-v3.5.7/libtiff"
|
||||
export LDFLAGS="=L../zlib-1.1.4 -L../libpng-1.2.3 -L../jpeg-6b
|
||||
-L ../tiff-v3.5.7/libtiff"
|
||||
goto 2)
|
||||
|
||||
PITFALLS
|
||||
--------
|
||||
|
||||
Compile:
|
||||
|
||||
Unix - use ./configure; make
|
||||
in some FreeBSD 3 distributions you have to set CFLAGS=-aout before
|
||||
running ./configure
|
||||
Tested on Linux, FreeBSD, Solaris, IRIX
|
||||
|
||||
OS/2 - use ./configure; make
|
||||
You must have GNU bash and GNU text/shell/file utilities so that
|
||||
configure can run
|
||||
The only supported compiler is EMX, you probably won't be able to
|
||||
compile it with anything else
|
||||
|
||||
configure under OS/2 needs to know paths to gcc, make anb bash. Set (for
|
||||
example):
|
||||
SET HOSTTYPE=i586
|
||||
SET MACHTYPE=i586-pc-os2
|
||||
SET CONFIG_SHELL=d:/prg/gnu/bin/bash.exe
|
||||
SET CC=d:/prg/emx/bin/gcc.exe
|
||||
SET MAKE=d:/prg/emx/bin/make.exe
|
||||
SET EMXOPT=-h100
|
||||
|
||||
Windows - you must have Cygwin or Interix environment
|
||||
Otherwise, compile it just like on Unix
|
||||
|
||||
Install:
|
||||
|
||||
Unix - make install
|
||||
|
||||
OS/2 - copy file links.exe somewhere to your path or create CMD file that runs
|
||||
links
|
||||
|
||||
WARNING: EMX has nasty limit of open files. Links will work badly or won't work
|
||||
with default settings. Set variable EMXOPT=-h100 before you run links.
|
||||
|
||||
libpng-1.2.18 - "Error when loading compiled-in font: png_do_rgb_to_gray found
|
||||
nongray pixel. libpng error: png_do_rgb_to_gray found nongray
|
||||
pixel Abort." This is caused by a bug in libpng and
|
||||
libpng-1.2.18.patch shipped with Links must be used to patch
|
||||
libpng to fix the bug.
|
||||
|
||||
vim: textwidth=80
|
|
@ -0,0 +1,77 @@
|
|||
GENERAL
|
||||
-------
|
||||
ESC show menu
|
||||
^C, q, Q quit
|
||||
ALT-1 ... ALT-9 select virtual screen (framebuffer, svgalib only)
|
||||
g goto URL
|
||||
G goto URL based on current URL
|
||||
^G goto URL based on current link
|
||||
s bookmark manager
|
||||
^R reload page
|
||||
pressed 2x=reload without internal cache
|
||||
pressed 3x=force reload through all proxy caches
|
||||
f frame to full screen
|
||||
i view image
|
||||
d download link
|
||||
I download image
|
||||
* toggle displaying image links
|
||||
\ toggle document source
|
||||
= document info
|
||||
| HTTP header info
|
||||
|
||||
|
||||
BASIC NAVIGATION
|
||||
----------------
|
||||
UP/DOWN select link
|
||||
RIGHT, ENTER follow link
|
||||
LEFT, z go back
|
||||
', x go forward
|
||||
^P, INS scroll up
|
||||
^N, DEL scroll down
|
||||
[ scroll left
|
||||
] scroll right
|
||||
PAGE_UP, ^B previous page
|
||||
PAGE_DOWN, ^F next page
|
||||
HOME, ^A go to start of the document
|
||||
END, ^E go to end of the document
|
||||
TAB switch frames
|
||||
1-9 count to repeat the next move (only text)
|
||||
(you can press more number keys to repeat more than 9 times)
|
||||
ALT-1 ... ALT-9 the same as previous --- if you have numbered links
|
||||
(only text)
|
||||
|
||||
|
||||
SEARCH
|
||||
------
|
||||
/ search
|
||||
? search back
|
||||
n find next
|
||||
N find previous
|
||||
|
||||
|
||||
DIALOGS, CLIPBOARD
|
||||
------------------
|
||||
^A go to beginning
|
||||
^E go to end
|
||||
^W complete string in a dialog (e.g. URL or search dialog)
|
||||
^B, ^INS copy text to clipboard
|
||||
^X, SH-DEL cut text to clipboard
|
||||
^V, SH-INS paste from clipboard
|
||||
^U delete text from cursor position to start of the line
|
||||
(or field, textarea)
|
||||
^K delete line (in textarea) or text to end (in field)
|
||||
^INS copy current link to clipboard
|
||||
|
||||
|
||||
BRAILLE TERMINAL
|
||||
----------------
|
||||
^T, ^TAB previous link
|
||||
^Y, TAB next link
|
||||
t previous word
|
||||
y next word
|
||||
^O next form field
|
||||
LEFT, RIGHT, UP, DOWN move cursor around
|
||||
a move cursor to status bar
|
||||
w move curosor to title bar
|
||||
{ move cursor to start of current line
|
||||
} move cursor to end of current line
|
Binary file not shown.
After Width: | Height: | Size: 650 B |
|
@ -0,0 +1,48 @@
|
|||
# Makefile.am
|
||||
# (c) 2002 Mikulas Patocka, Karel 'Clock' Kulhavy, Petr 'Brain' Kulhavy,
|
||||
# Martin 'PerM' Pergel
|
||||
|
||||
man_MANS=links.1
|
||||
|
||||
EXTRA_DIST=$(man_MANS) atheos.cpp haiku.cpp BRAILLE_HOWTO KEYS SITES descrip.mms *.opt framebuffer-accelerator.patch gpm-1.20.0-smooth-cursor.patch libpng-1.2.18.patch mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* certs/[!C]* intl/[!C]* suffix/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/font/bold/*.png graphics/font/monospaced/*.png graphics/font/normal/*.png graphics/font/system/*.png doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png pkg-config.m4 *.xpm *.ico *.rc links-haiku.rdef mk-release-os2 mk-release-win mk-dos mk-dos83.cmd links.wis *.nsi
|
||||
# parser/gen parser/javascr.l parser/javascript.y
|
||||
|
||||
bin_PROGRAMS=links
|
||||
|
||||
if ATHEOS_GR
|
||||
links_LDADD=atheos.o
|
||||
endif
|
||||
if HAIKU_GR
|
||||
links_LDADD=haiku.o
|
||||
all-redirect: all-am $(srcdir)/links-haiku.rdef
|
||||
rc -o links-haiku.rsrc $(srcdir)/links-haiku.rdef
|
||||
xres -o links$(EXEEXT) links-haiku.rsrc
|
||||
mimeset links$(EXEEXT)
|
||||
rm -f links-haiku.rsrc
|
||||
endif
|
||||
if JAVASCRIPT
|
||||
links_LDADD=builtin.o context.o ipret.o javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o regexp.o
|
||||
endif
|
||||
|
||||
links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c dos.c drivers.c error.c file.c finger.c fn_impl.c fontconf.c font_inc.c framebuf.c freetype.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc
|
||||
# builtin.c context.c ipret.c javascr.c javascript.c md5.c md5hl.c ns.c pomocny.c regexp.c md5.h ns.h struct.h tree.h typy.h ipret.h javascript.h builtin.h builtin_keys.h
|
||||
|
||||
dist-hook:
|
||||
#remove the symlinka:
|
||||
rm $(distdir)/INSTALL
|
||||
echo Links $(VERSION) -- How To Install > $(distdir)/INSTALL
|
||||
echo Links $(VERSION) -- How To Install | tr -c '\n' '-' >> $(distdir)/INSTALL
|
||||
echo >> $(distdir)/INSTALL
|
||||
cat $(srcdir)/INSTALL >> $(distdir)/INSTALL
|
||||
|
||||
CXXFLAGS=@CXXFLAGS@
|
||||
|
||||
atheos.o: $(srcdir)/atheos.cpp
|
||||
$(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c $(srcdir)/atheos.cpp
|
||||
|
||||
haiku.o: $(srcdir)/haiku.cpp
|
||||
$(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c $(srcdir)/haiku.cpp
|
||||
|
||||
datadir = $(prefix)/@DATADIRNAME@
|
||||
LIBS = @LIBS@
|
||||
|
|
@ -0,0 +1,590 @@
|
|||
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
# Makefile.am
|
||||
# (c) 2002 Mikulas Patocka, Karel 'Clock' Kulhavy, Petr 'Brain' Kulhavy,
|
||||
# Martin 'PerM' Pergel
|
||||
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DESTDIR =
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = .
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
CC = @CC@
|
||||
CXX = @CXX@
|
||||
DIRECTFB_CONFIG = @DIRECTFB_CONFIG@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
PACKAGE = @PACKAGE@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
VERSION = @VERSION@
|
||||
|
||||
man_MANS = links.1
|
||||
|
||||
EXTRA_DIST = $(man_MANS) atheos.cpp haiku.cpp BRAILLE_HOWTO KEYS SITES descrip.mms *.opt framebuffer-accelerator.patch gpm-1.20.0-smooth-cursor.patch libpng-1.2.18.patch mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* certs/[!C]* intl/[!C]* suffix/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/font/bold/*.png graphics/font/monospaced/*.png graphics/font/normal/*.png graphics/font/system/*.png doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png pkg-config.m4 *.xpm *.ico *.rc links-haiku.rdef mk-release-os2 mk-release-win mk-dos mk-dos83.cmd links.wis *.nsi
|
||||
# parser/gen parser/javascr.l parser/javascript.y
|
||||
|
||||
bin_PROGRAMS = links
|
||||
@ATHEOS_GR_TRUE@links_LDADD = atheos.o
|
||||
@HAIKU_GR_TRUE@links_LDADD = haiku.o
|
||||
@JAVASCRIPT_TRUE@links_LDADD = builtin.o context.o ipret.o javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o regexp.o
|
||||
|
||||
links_SOURCES = af_unix.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c dos.c drivers.c error.c file.c finger.c fn_impl.c fontconf.c font_inc.c framebuf.c freetype.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc
|
||||
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
|
||||
datadir = $(prefix)/@DATADIRNAME@
|
||||
LIBS = @LIBS@
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
|
||||
|
||||
DEFS = @DEFS@ -I. -I$(srcdir) -I.
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
links_OBJECTS = af_unix.o auth.o beos.o bfu.o block.o bookmark.o \
|
||||
cache.o charsets.o compress.o connect.o cookies.o data.o default.o \
|
||||
dip.o directfb.o dither.o dns.o dos.o drivers.o error.o file.o finger.o \
|
||||
fn_impl.o fontconf.o font_inc.o framebuf.o freetype.o ftp.o gif.o grx.o \
|
||||
hpux.o html.o html_gr.o html_r.o html_tbl.o http.o https.o img.o \
|
||||
imgcache.o jpeg.o jsint.o kbd.o language.o listedit.o lru.o mailto.o \
|
||||
main.o memory.o menu.o objreq.o os_dep.o pmshell.o png.o sched.o \
|
||||
select.o session.o smb.o string.o suffix.o svg.o svgalib.o terminal.o \
|
||||
tiff.o types.o url.o view.o view_gr.o vms.o x.o xbm.o
|
||||
@ATHEOS_GR_TRUE@links_DEPENDENCIES = atheos.o
|
||||
@JAVASCRIPT_TRUE@links_DEPENDENCIES = builtin.o context.o ipret.o \
|
||||
@JAVASCRIPT_TRUE@javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o \
|
||||
@JAVASCRIPT_TRUE@regexp.o
|
||||
@HAIKU_GR_TRUE@links_DEPENDENCIES = haiku.o
|
||||
links_LDFLAGS =
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
man1dir = $(mandir)/man1
|
||||
MANS = $(man_MANS)
|
||||
|
||||
NROFF = nroff
|
||||
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
|
||||
Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 config.guess \
|
||||
config.h.in config.sub configure configure.in install-sh missing \
|
||||
mkinstalldirs
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP_ENV = --best
|
||||
SOURCES = $(links_SOURCES)
|
||||
OBJECTS = $(links_OBJECTS)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .o .s
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
$(ACLOCAL_M4): configure.in
|
||||
cd $(srcdir) && $(ACLOCAL)
|
||||
|
||||
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
config.h: stamp-h
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h; \
|
||||
$(MAKE) stamp-h; \
|
||||
else :; fi
|
||||
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
|
||||
$(SHELL) ./config.status
|
||||
@echo timestamp > stamp-h 2> /dev/null
|
||||
$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
|
||||
@if test ! -f $@; then \
|
||||
rm -f $(srcdir)/stamp-h.in; \
|
||||
$(MAKE) $(srcdir)/stamp-h.in; \
|
||||
else :; fi
|
||||
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
|
||||
|
||||
mostlyclean-hdr:
|
||||
|
||||
clean-hdr:
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h
|
||||
|
||||
maintainer-clean-hdr:
|
||||
|
||||
mostlyclean-binPROGRAMS:
|
||||
|
||||
clean-binPROGRAMS:
|
||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
||||
|
||||
distclean-binPROGRAMS:
|
||||
|
||||
maintainer-clean-binPROGRAMS:
|
||||
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
|
||||
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
|
||||
done
|
||||
|
||||
.c.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
.s.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
.S.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.o core *.core
|
||||
|
||||
clean-compile:
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
maintainer-clean-compile:
|
||||
|
||||
links: $(links_OBJECTS) $(links_DEPENDENCIES)
|
||||
@rm -f links
|
||||
$(LINK) $(links_LDFLAGS) $(links_OBJECTS) $(links_LDADD) $(LIBS)
|
||||
|
||||
install-man1:
|
||||
$(mkinstalldirs) $(DESTDIR)$(man1dir)
|
||||
@list='$(man1_MANS)'; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||
else file=$$i; fi; \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
|
||||
done
|
||||
|
||||
uninstall-man1:
|
||||
@list='$(man1_MANS)'; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
|
||||
rm -f $(DESTDIR)$(man1dir)/$$inst; \
|
||||
done
|
||||
install-man: $(MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-man1
|
||||
uninstall-man:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
here=`pwd` && cd $(srcdir) \
|
||||
&& mkid -f$$here/ID $$unique $(LISP)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|
||||
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP))
|
||||
|
||||
mostlyclean-tags:
|
||||
|
||||
clean-tags:
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID
|
||||
|
||||
maintainer-clean-tags:
|
||||
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
-rm -rf $(distdir)
|
||||
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
||||
cd $(distdir)/=build \
|
||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist
|
||||
-rm -rf $(distdir)
|
||||
@banner="$(distdir).tar.gz is ready for distribution"; \
|
||||
dashes=`echo "$$banner" | sed s/./=/g`; \
|
||||
echo "$$dashes"; \
|
||||
echo "$$banner"; \
|
||||
echo "$$dashes"
|
||||
dist: distdir
|
||||
-chmod -R a+r $(distdir)
|
||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||
-rm -rf $(distdir)
|
||||
dist-all: distdir
|
||||
-chmod -R a+r $(distdir)
|
||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||
-rm -rf $(distdir)
|
||||
distdir: $(DISTFILES)
|
||||
-rm -rf $(distdir)
|
||||
mkdir $(distdir)
|
||||
-chmod 755 $(distdir)
|
||||
$(mkinstalldirs) $(distdir)/Unicode $(distdir)/certs \
|
||||
$(distdir)/doc/links_cal $(distdir)/graphics \
|
||||
$(distdir)/graphics/font/bold \
|
||||
$(distdir)/graphics/font/monospaced \
|
||||
$(distdir)/graphics/font/normal \
|
||||
$(distdir)/graphics/font/system $(distdir)/intl \
|
||||
$(distdir)/suffix
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
|
||||
af_unix.o: af_unix.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
auth.o: auth.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
beos.o: beos.c
|
||||
bfu.o: bfu.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
block.o: block.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
bookmark.o: bookmark.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
cache.o: cache.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
charsets.o: charsets.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h codepage.inc uni_7b.inc \
|
||||
entity.inc upcase.inc locase.inc
|
||||
compress.o: compress.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
connect.o: connect.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
cookies.o: cookies.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
data.o: data.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
default.o: default.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
dip.o: dip.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h links_ic.inc
|
||||
directfb.o: directfb.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h dfb_cur.h
|
||||
dither.o: dither.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h bits.h
|
||||
dns.o: dns.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
dos.o: dos.c
|
||||
drivers.o: drivers.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
error.o: error.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
file.o: file.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
finger.o: finger.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
fn_impl.o: fn_impl.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
font_inc.o: font_inc.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
fontconf.o: fontconf.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
framebuf.o: framebuf.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h bits.h arrow.inc \
|
||||
fbcommon.inc
|
||||
freetype.o: freetype.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
ftp.o: ftp.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
gif.o: gif.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
grx.o: grx.c cfg.h config.h
|
||||
hpux.o: hpux.c
|
||||
html.o: html.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
html_gr.o: html_gr.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
html_r.o: html_r.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
html_tbl.o: html_tbl.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
http.o: http.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
https.o: https.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h certs.inc
|
||||
img.o: img.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
imgcache.o: imgcache.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
jpeg.o: jpeg.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
jsint.o: jsint.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
kbd.o: kbd.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
language.o: language.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h language.inc
|
||||
listedit.o: listedit.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
lru.o: lru.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
mailto.o: mailto.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
main.o: main.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
memory.o: memory.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
menu.o: menu.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
objreq.o: objreq.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
os_dep.o: os_dep.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
pmshell.o: pmshell.c cfg.h config.h
|
||||
png.o: png.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
sched.o: sched.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
select.o: select.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
session.o: session.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
smb.o: smb.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
string.o: string.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
suffix.o: suffix.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h suffix.inc suffix_x.inc
|
||||
svg.o: svg.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h bits.h
|
||||
svgalib.o: svgalib.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h bits.h arrow.inc \
|
||||
fbcommon.inc
|
||||
terminal.o: terminal.c links.h cfg.h config.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
tiff.o: tiff.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
types.o: types.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
url.o: url.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
view.o: view.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
view_gr.o: view_gr.c cfg.h config.h links.h com-defs.h os_dep.h \
|
||||
os_depx.h setup.h language.h codepage.h
|
||||
vms.o: vms.c
|
||||
x.o: x.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h setup.h \
|
||||
language.h codepage.h
|
||||
xbm.o: xbm.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
|
||||
setup.h language.h codepage.h
|
||||
|
||||
info-am:
|
||||
info: info-am
|
||||
dvi-am:
|
||||
dvi: dvi-am
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
all-recursive-am: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data-am: install-man
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-man
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile $(PROGRAMS) $(MANS) config.h
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \
|
||||
mostlyclean-compile mostlyclean-tags \
|
||||
mostlyclean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-tags \
|
||||
clean-generic mostlyclean-am
|
||||
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile \
|
||||
distclean-tags distclean-generic clean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f config.status
|
||||
|
||||
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \
|
||||
maintainer-clean-compile maintainer-clean-tags \
|
||||
maintainer-clean-generic distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f config.status
|
||||
|
||||
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
|
||||
mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
|
||||
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
|
||||
mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile install-man1 uninstall-man1 install-man \
|
||||
uninstall-man tags mostlyclean-tags distclean-tags clean-tags \
|
||||
maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \
|
||||
installcheck-am installcheck all-recursive-am install-exec-am \
|
||||
install-exec install-data-am install-data install-am install \
|
||||
uninstall-am uninstall all-redirect all-am all installdirs \
|
||||
mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
@HAIKU_GR_TRUE@all-redirect: all-am $(srcdir)/links-haiku.rdef
|
||||
@HAIKU_GR_TRUE@ rc -o links-haiku.rsrc $(srcdir)/links-haiku.rdef
|
||||
@HAIKU_GR_TRUE@ xres -o links$(EXEEXT) links-haiku.rsrc
|
||||
@HAIKU_GR_TRUE@ mimeset links$(EXEEXT)
|
||||
@HAIKU_GR_TRUE@ rm -f links-haiku.rsrc
|
||||
# builtin.c context.c ipret.c javascr.c javascript.c md5.c md5hl.c ns.c pomocny.c regexp.c md5.h ns.h struct.h tree.h typy.h ipret.h javascript.h builtin.h builtin_keys.h
|
||||
|
||||
dist-hook:
|
||||
#remove the symlinka:
|
||||
rm $(distdir)/INSTALL
|
||||
echo Links $(VERSION) -- How To Install > $(distdir)/INSTALL
|
||||
echo Links $(VERSION) -- How To Install | tr -c '\n' '-' >> $(distdir)/INSTALL
|
||||
echo >> $(distdir)/INSTALL
|
||||
cat $(srcdir)/INSTALL >> $(distdir)/INSTALL
|
||||
|
||||
atheos.o: $(srcdir)/atheos.cpp
|
||||
$(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c $(srcdir)/atheos.cpp
|
||||
|
||||
haiku.o: $(srcdir)/haiku.cpp
|
||||
$(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c $(srcdir)/haiku.cpp
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,16 @@
|
|||
Version 0.80
|
||||
|
||||
- First public release
|
||||
|
||||
Version 0.90
|
||||
|
||||
- Frames
|
||||
Bookmarks
|
||||
Support for more languages
|
||||
Mailto:
|
||||
-dump, -source
|
||||
-anonymous
|
||||
A lot of small improvements, see ChangeLog
|
||||
|
||||
Version 2
|
||||
- Graphics mode
|
|
@ -0,0 +1,45 @@
|
|||
Links
|
||||
=====
|
||||
|
||||
|
||||
Contents
|
||||
--------
|
||||
|
||||
1. About
|
||||
2. Installation
|
||||
3. Usage
|
||||
4. Braille terminal support
|
||||
5. More features
|
||||
|
||||
|
||||
1. About
|
||||
--------
|
||||
Links is a Lynx-like text and graphics WWW browser.
|
||||
|
||||
|
||||
2. Installation
|
||||
---------------
|
||||
See INSTALL
|
||||
|
||||
|
||||
3. Usage
|
||||
--------
|
||||
Commandline: links [options] <url>
|
||||
|
||||
See end of file default.c for list of options. Most options can be set in luser
|
||||
interface or config file, so you do not need to care about them.
|
||||
|
||||
Keys: see KEYS
|
||||
|
||||
|
||||
4. Braille terminal support
|
||||
---------------------------
|
||||
See BRAILLE_HOWTO
|
||||
|
||||
|
||||
5. More features
|
||||
----------------
|
||||
Links is a free software. If you would like to have more features, see
|
||||
this URL for details:
|
||||
http://links.twibright.com/development.php
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
Primary site:
|
||||
http://links.twibright.com/download/
|
||||
|
||||
Mirrors:
|
||||
http://piotrkosoft.net/pub/mirrors/links2
|
||||
ftp://ftp.piotrkosoft.net/pub/mirrors/links2
|
||||
rsync://piotrkosoft.net/mirrors/links2
|
||||
http://atrey.karlin.mff.cuni.cz/~clock/twibright/links
|
||||
ftp://atrey.karlin.mff.cuni.cz/pub/local/clock/links
|
||||
|
||||
Mailing list:
|
||||
links-list@linuxfromscratch.org
|
||||
http://links.sf.net/mailing.html
|
||||
http://www.egroups.com/group/links-browser
|
|
@ -0,0 +1,3 @@
|
|||
7-bit ASCII
|
||||
"us-ascii", "ascii", "7bit", "7-bit", "iso-ir-6", "ANSI_X3.4", "646", "it-ascii"
|
||||
# Dummy table for 7-bit terminals
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,193 @@
|
|||
ISO 8859-1 (Western European)
|
||||
"ISO-8859-1", "8859-1", "iso-ir-100", "latin1", "l1", "819", "iso-latin1"
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF #INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 #LATIN CAPITAL LETTER ETH
|
||||
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE #LATIN CAPITAL LETTER THORN
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 #LATIN SMALL LETTER ETH
|
||||
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE #LATIN SMALL LETTER THORN
|
||||
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,305 @@
|
|||
ISO 8859-10 (Lappish, Nordic, Eskimo)
|
||||
"ISO-8859-10", "8859-10"
|
||||
#
|
||||
# Name: ISO/IEC 8859-10:1998 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.1
|
||||
# Table format: Format A
|
||||
# Date: 1999 October 11
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-10:1998 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-10 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version new.
|
||||
# 1.1 corrected mistake in mapping of 0xA4
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xA3 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xA4 0x012A # LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
|
||||
0xA6 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xA9 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xAA 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xAB 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
|
||||
0xAC 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xAF 0x014A # LATIN CAPITAL LETTER ENG
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||
0xB2 0x0113 # LATIN SMALL LETTER E WITH MACRON
|
||||
0xB3 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xB4 0x012B # LATIN SMALL LETTER I WITH MACRON
|
||||
0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
|
||||
0xB6 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x013C # LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xB9 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xBA 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xBB 0x0167 # LATIN SMALL LETTER T WITH STROKE
|
||||
0xBC 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xBD 0x2015 # HORIZONTAL BAR
|
||||
0xBE 0x016B # LATIN SMALL LETTER U WITH MACRON
|
||||
0xBF 0x014B # LATIN SMALL LETTER ENG
|
||||
0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
|
||||
0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
|
||||
0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
|
||||
0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x0169 # LATIN SMALL LETTER U WITH TILDE
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
|
||||
0xFF 0x0138 # LATIN SMALL LETTER KRA
|
|
@ -0,0 +1,134 @@
|
|||
ISO 8859-13 (Baltic)
|
||||
"ISO-8859-13", "8859-13", "iso-ir-179", "latin7", "l7","iso-latin7"
|
||||
|
||||
0x20-0x7e idem
|
||||
#
|
||||
0x80 0x0080 #PADDING CHARACTER (PAD)
|
||||
0x81 0x0081 #HIGH OCTET PRESET (HOP)
|
||||
0x82 0x0082 #BREAK PERMITTED HERE (BPH)
|
||||
0x83 0x0083 #NO BREAK HERE (NBH)
|
||||
0x84 0x0084 #INDEX (IND)
|
||||
0x85 0x0085 #NEXT LINE (NEL)
|
||||
0x86 0x0086 #START OF SELECTED AREA (SSA)
|
||||
0x87 0x0087 #END OF SELECTED AREA (ESA)
|
||||
0x88 0x0088 #CHARACTER TABULATION SET (HTS)
|
||||
0x89 0x0089 #CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
|
||||
0x8A 0x008A #LINE TABULATION SET (VTS)
|
||||
0x8B 0x008B #PARTIAL LINE FORWARD (PLD)
|
||||
0x8C 0x008C #PARTIAL LINE BACKWARD (PLU)
|
||||
0x8D 0x008D #REVERSE LINE FEED (RI)
|
||||
0x8E 0x008E #SINGLE-SHIFT TWO (SS2)
|
||||
0x8F 0x008F #SINGLE-SHIFT THREE (SS3)
|
||||
0x90 0x0090 #DEVICE CONTROL STRING (DCS)
|
||||
0x91 0x0091 #PRIVATE USE ONE (PU1)
|
||||
0x92 0x0092 #PRIVATE USE TWO (PU2)
|
||||
0x93 0x0093 #SET TRANSMIT STATE (STS)
|
||||
0x94 0x0094 #CANCEL CHARACTER (CCH)
|
||||
0x95 0x0095 #MESSAGE WAITING (MW)
|
||||
0x96 0x0096 #START OF GUARDED AREA (SPA)
|
||||
0x97 0x0097 #END OF GUARDED AREA (EPA)
|
||||
0x98 0x0098 #START OF STRING (SOS)
|
||||
0x99 0x0099 #SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
|
||||
0x9A 0x009A #SINGLE CHARACTER INTRODUCER (SCI)
|
||||
0x9B 0x009B #CONTROL SEQUENCE INTRODUCER (CSI)
|
||||
0x9C 0x009C #STRING TERMINATOR (ST)
|
||||
0x9D 0x009D #OPERATING SYSTEM COMMAND (OSC)
|
||||
0x9E 0x009E #PRIVACY MESSAGE (PM)
|
||||
0x9F 0x009F #APPLICATION PROGRAM COMMAND (APC)
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xC0 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xC1 0x012E #LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC2 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC3 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xC7 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xCB 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCC 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xCD 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xCE 0x012A #LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xCF 0x013B #LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xD0 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x014C #LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xD9 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xDA 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xDB 0x016A #LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xDE 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xE1 0x012F #LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE2 0x0101 #LATIN SMALL LETTER A WITH MACRON
|
||||
0xE3 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xE7 0x0113 #LATIN SMALL LETTER E WITH MACRON
|
||||
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x017A #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xEB 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xEC 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xED 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xEE 0x012B #LATIN SMALL LETTER I WITH MACRON
|
||||
0xEF 0x013C #LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xF0 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x014D #LATIN SMALL LETTER O WITH MACRON
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0173 #LATIN SMALL LETTER U WITH OGONEK
|
||||
0xF9 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0xFA 0x015B #LATIN SMALL LETTER S WITH ACUTE
|
||||
0xFB 0x016B #LATIN SMALL LETTER U WITH MACRON
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xFE 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0xFF 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
|
|
@ -0,0 +1,303 @@
|
|||
ISO 8859-14 (Celtic)
|
||||
"ISO-8859-14", "8859-14"
|
||||
#
|
||||
# Name: ISO/IEC 8859-14:1998 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Markus Kuhn <mkuhn@acm.org>
|
||||
# Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-14:1998 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-14 order.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
|
||||
0xA2 0x1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
|
||||
0xA5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
|
||||
0xA6 0x1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x1E80 # LATIN CAPITAL LETTER W WITH GRAVE
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x1E82 # LATIN CAPITAL LETTER W WITH ACUTE
|
||||
0xAB 0x1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
|
||||
0xAC 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xB0 0x1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
|
||||
0xB1 0x1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
|
||||
0xB2 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
|
||||
0xB3 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
|
||||
0xB4 0x1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
|
||||
0xB5 0x1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
|
||||
0xB8 0x1E81 # LATIN SMALL LETTER W WITH GRAVE
|
||||
0xB9 0x1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
|
||||
0xBA 0x1E83 # LATIN SMALL LETTER W WITH ACUTE
|
||||
0xBB 0x1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
|
||||
0xBC 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
|
||||
0xBD 0x1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
|
||||
0xBE 0x1E85 # LATIN SMALL LETTER W WITH DIAERESIS
|
||||
0xBF 0x1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
|
|
@ -0,0 +1,305 @@
|
|||
ISO 8859-15 (Western European)
|
||||
"ISO-8859-15", "8859-15"
|
||||
#
|
||||
# Name: ISO/IEC 8859-15:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Markus Kuhn <mkuhn@acm.org>
|
||||
# Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-15:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-15 order.
|
||||
#
|
||||
# Version history
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x20AC # EURO SIGN
|
||||
0xA5 0x00A5 # YEN SIGN
|
||||
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||
0xBD 0x0153 # LATIN SMALL LIGATURE OE
|
||||
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xBF 0x00BF # INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE # LATIN CAPITAL LETTER THORN
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 # LATIN SMALL LETTER ETH
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE # LATIN SMALL LETTER THORN
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
|
|
@ -0,0 +1,301 @@
|
|||
ISO 8859-16 (Romainian)
|
||||
"ISO-8859-16", "8859-16"
|
||||
#
|
||||
# Name: ISO/IEC 8859-16:2001 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 2001 July 26
|
||||
# Authors: Markus Kuhn <mkuhn@acm.org>
|
||||
#
|
||||
# Copyright (c) 1999-2001 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-16:2001 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-16 order.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||
0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xA4 0x20AC # EURO SIGN
|
||||
0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x017A # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||
0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
|
||||
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xB5 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xB9 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||
0xBA 0x0219 # LATIN SMALL LETTER S WITH COMMA BELOW
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||
0xBD 0x0153 # LATIN SMALL LIGATURE OE
|
||||
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xD8 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xDE 0x021A # LATIN CAPITAL LETTER T WITH COMMA BELOW
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x0107 # LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x015B # LATIN SMALL LETTER S WITH ACUTE
|
||||
0xF8 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||
0xFE 0x021B # LATIN SMALL LETTER T WITH COMMA BELOW
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,193 @@
|
|||
ISO 8859-2 (Central European)
|
||||
"ISO-8859-2", "8859-2", "iso-ir-101", "latin2", "l2","iso-latin2", "iso8859-2"
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x02D8 #BREVE
|
||||
0xA3 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x013D #LATIN CAPITAL LETTER L WITH CARON
|
||||
0xA6 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xAA 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xAB 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0xAC 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xAF 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xB2 0x02DB #OGONEK
|
||||
0xB3 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x013E #LATIN SMALL LETTER L WITH CARON
|
||||
0xB6 0x015B #LATIN SMALL LETTER S WITH ACUTE
|
||||
0xB7 0x02C7 #CARON
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xBA 0x015F #LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xBB 0x0165 #LATIN SMALL LETTER T WITH CARON
|
||||
0xBC 0x017A #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xBD 0x02DD #DOUBLE ACUTE ACCENT
|
||||
0xBE 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0xBF 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0xC6 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x011A #LATIN CAPITAL LETTER E WITH CARON
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x010E #LATIN CAPITAL LETTER D WITH CARON
|
||||
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0147 #LATIN CAPITAL LETTER N WITH CARON
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0158 #LATIN CAPITAL LETTER R WITH CARON
|
||||
0xD9 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0155 #LATIN SMALL LETTER R WITH ACUTE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x013A #LATIN SMALL LETTER L WITH ACUTE
|
||||
0xE6 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x011B #LATIN SMALL LETTER E WITH CARON
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x010F #LATIN SMALL LETTER D WITH CARON
|
||||
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0148 #LATIN SMALL LETTER N WITH CARON
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0159 #LATIN SMALL LETTER R WITH CARON
|
||||
0xF9 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
|
||||
0xFF 0x02D9 #DOT ABOVE
|
|
@ -0,0 +1,298 @@
|
|||
ISO 8859-3 (Esperanto, Maltese)
|
||||
"ISO-8859-3", "8859-3"
|
||||
#
|
||||
# Name: ISO/IEC 8859-3:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-3:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-3 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0126 # LATIN CAPITAL LETTER H WITH STROKE
|
||||
0xA2 0x02D8 # BREVE
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA6 0x0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xAB 0x011E # LATIN CAPITAL LETTER G WITH BREVE
|
||||
0xAC 0x0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x0127 # LATIN SMALL LETTER H WITH STROKE
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||
0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xBB 0x011F # LATIN SMALL LETTER G WITH BREVE
|
||||
0xBC 0x0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
|
||||
0xC6 0x0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x016C # LATIN CAPITAL LETTER U WITH BREVE
|
||||
0xDE 0x015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
|
||||
0xE6 0x0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x016D # LATIN SMALL LETTER U WITH BREVE
|
||||
0xFE 0x015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
|
||||
0xFF 0x02D9 # DOT ABOVE
|
|
@ -0,0 +1,133 @@
|
|||
ISO 8859-4 (Scandinavia, Baltic)
|
||||
"ISO-8859-4", "8859-4", "iso-ir-110", "latin4", "l4","iso-latin4"
|
||||
|
||||
0x20-0x7e idem
|
||||
#
|
||||
0x80 0x0080 #PADDING CHARACTER (PAD)
|
||||
0x81 0x0081 #HIGH OCTET PRESET (HOP)
|
||||
0x82 0x0082 #BREAK PERMITTED HERE (BPH)
|
||||
0x83 0x0083 #NO BREAK HERE (NBH)
|
||||
0x84 0x0084 #INDEX (IND)
|
||||
0x85 0x0085 #NEXT LINE (NEL)
|
||||
0x86 0x0086 #START OF SELECTED AREA (SSA)
|
||||
0x87 0x0087 #END OF SELECTED AREA (ESA)
|
||||
0x88 0x0088 #CHARACTER TABULATION SET (HTS)
|
||||
0x89 0x0089 #CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
|
||||
0x8A 0x008A #LINE TABULATION SET (VTS)
|
||||
0x8B 0x008B #PARTIAL LINE FORWARD (PLD)
|
||||
0x8C 0x008C #PARTIAL LINE BACKWARD (PLU)
|
||||
0x8D 0x008D #REVERSE LINE FEED (RI)
|
||||
0x8E 0x008E #SINGLE-SHIFT TWO (SS2)
|
||||
0x8F 0x008F #SINGLE-SHIFT THREE (SS3)
|
||||
0x90 0x0090 #DEVICE CONTROL STRING (DCS)
|
||||
0x91 0x0091 #PRIVATE USE ONE (PU1)
|
||||
0x92 0x0092 #PRIVATE USE TWO (PU2)
|
||||
0x93 0x0093 #SET TRANSMIT STATE (STS)
|
||||
0x94 0x0094 #CANCEL CHARACTER (CCH)
|
||||
0x95 0x0095 #MESSAGE WAITING (MW)
|
||||
0x96 0x0096 #START OF GUARDED AREA (SPA)
|
||||
0x97 0x0097 #END OF GUARDED AREA (EPA)
|
||||
0x98 0x0098 #START OF STRING (SOS)
|
||||
0x99 0x0099 #SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
|
||||
0x9A 0x009A #SINGLE CHARACTER INTRODUCER (SCI)
|
||||
0x9B 0x009B #CONTROL SEQUENCE INTRODUCER (CSI)
|
||||
0x9C 0x009C #STRING TERMINATOR (ST)
|
||||
0x9D 0x009D #OPERATING SYSTEM COMMAND (OSC)
|
||||
0x9E 0x009E #PRIVACY MESSAGE (PM)
|
||||
0x9F 0x009F #APPLICATION PROGRAM COMMAND (APC)
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x0138 #LATIN SMALL LETTER KRA (Greenlandic)
|
||||
0xA3 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x0128 #LATIN CAPITAL LETTER I WITH TILDE
|
||||
0xA6 0x013B #LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xAA 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xAB 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xAC 0x0166 #LATIN CAPITAL LETTER T WITH STROKE
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xB2 0x02DB #OGONEK
|
||||
0xB3 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x0129 #LATIN SMALL LETTER I WITH TILDE
|
||||
0xB6 0x013C #LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xB7 0x02C7 #CARON (Mandarin Chinese third tone)
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xBA 0x0113 #LATIN SMALL LETTER E WITH MACRON
|
||||
0xBB 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xBC 0x0167 #LATIN SMALL LETTER T WITH STROKE
|
||||
0xBD 0x014A #LATIN CAPITAL LETTER ENG (Sami)
|
||||
0xBE 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0xBF 0x014B #LATIN SMALL LETTER ENG (Sami)
|
||||
0xC0 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xC7 0x012E #LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x012A #LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD2 0x014C #LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD3 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x0168 #LATIN CAPITAL LETTER U WITH TILDE
|
||||
0xDE 0x016A #LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S (German)
|
||||
0xE0 0x0101 #LATIN SMALL LETTER A WITH MACRON
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xE7 0x012F #LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x012B #LATIN SMALL LETTER I WITH MACRON
|
||||
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF2 0x014D #LATIN SMALL LETTER O WITH MACRON
|
||||
0xF3 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x0173 #LATIN SMALL LETTER U WITH OGONEK
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x0169 #LATIN SMALL LETTER U WITH TILDE
|
||||
0xFE 0x016B #LATIN SMALL LETTER U WITH MACRON
|
||||
0xFF 0x02D9 #DOT ABOVE (Mandarin Chinese light tone)
|
|
@ -0,0 +1,305 @@
|
|||
ISO 8859-5 (Cyrillic)
|
||||
"ISO-8859-5", "8859-5"
|
||||
#
|
||||
# Name: ISO 8859-5:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-5:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-5 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xA2 0x0402 # CYRILLIC CAPITAL LETTER DJE
|
||||
0xA3 0x0403 # CYRILLIC CAPITAL LETTER GJE
|
||||
0xA4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xA5 0x0405 # CYRILLIC CAPITAL LETTER DZE
|
||||
0xA6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xA7 0x0407 # CYRILLIC CAPITAL LETTER YI
|
||||
0xA8 0x0408 # CYRILLIC CAPITAL LETTER JE
|
||||
0xA9 0x0409 # CYRILLIC CAPITAL LETTER LJE
|
||||
0xAA 0x040A # CYRILLIC CAPITAL LETTER NJE
|
||||
0xAB 0x040B # CYRILLIC CAPITAL LETTER TSHE
|
||||
0xAC 0x040C # CYRILLIC CAPITAL LETTER KJE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x040E # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xAF 0x040F # CYRILLIC CAPITAL LETTER DZHE
|
||||
0xB0 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xB1 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xB2 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xB3 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xB4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xB5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xB6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xB7 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xB8 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xB9 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xBA 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xBB 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xBC 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xBD 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xBE 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xBF 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xC0 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xC1 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xC2 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xC3 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xC4 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xC5 0x0425 # CYRILLIC CAPITAL LETTER HA
|
||||
0xC6 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xC7 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xC8 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xC9 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xCA 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0xCB 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xCC 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xCD 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xCE 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xCF 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xD0 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xD1 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xD2 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xD3 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xD4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xD5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xD7 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xD8 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xD9 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xDA 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xDB 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xDC 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xDD 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xDE 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xDF 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xE0 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xE1 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xE2 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xE3 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xE4 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xE5 0x0445 # CYRILLIC SMALL LETTER HA
|
||||
0xE6 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xE7 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xE8 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xE9 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xEA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xEB 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xEC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xED 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xEE 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xEF 0x044F # CYRILLIC SMALL LETTER YA
|
||||
0xF0 0x2116 # NUMERO SIGN
|
||||
0xF1 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xF2 0x0452 # CYRILLIC SMALL LETTER DJE
|
||||
0xF3 0x0453 # CYRILLIC SMALL LETTER GJE
|
||||
0xF4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xF5 0x0455 # CYRILLIC SMALL LETTER DZE
|
||||
0xF6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xF7 0x0457 # CYRILLIC SMALL LETTER YI
|
||||
0xF8 0x0458 # CYRILLIC SMALL LETTER JE
|
||||
0xF9 0x0459 # CYRILLIC SMALL LETTER LJE
|
||||
0xFA 0x045A # CYRILLIC SMALL LETTER NJE
|
||||
0xFB 0x045B # CYRILLIC SMALL LETTER TSHE
|
||||
0xFC 0x045C # CYRILLIC SMALL LETTER KJE
|
||||
0xFD 0x00A7 # SECTION SIGN
|
||||
0xFE 0x045E # CYRILLIC SMALL LETTER SHORT U
|
||||
0xFF 0x045F # CYRILLIC SMALL LETTER DZHE
|
|
@ -0,0 +1,262 @@
|
|||
ISO 8859-6 (Arabic)
|
||||
"ISO-8859-6", "8859-6"
|
||||
#
|
||||
# Name: ISO 8859-6:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-6:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-6 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
|
||||
# of the Arabic digits (U+0660..U+0669).
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xAC 0x060C # ARABIC COMMA
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xBB 0x061B # ARABIC SEMICOLON
|
||||
0xBF 0x061F # ARABIC QUESTION MARK
|
||||
0xC1 0x0621 # ARABIC LETTER HAMZA
|
||||
0xC2 0x0622 # ARABIC LETTER ALEF WITH MADDA ABOVE
|
||||
0xC3 0x0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE
|
||||
0xC4 0x0624 # ARABIC LETTER WAW WITH HAMZA ABOVE
|
||||
0xC5 0x0625 # ARABIC LETTER ALEF WITH HAMZA BELOW
|
||||
0xC6 0x0626 # ARABIC LETTER YEH WITH HAMZA ABOVE
|
||||
0xC7 0x0627 # ARABIC LETTER ALEF
|
||||
0xC8 0x0628 # ARABIC LETTER BEH
|
||||
0xC9 0x0629 # ARABIC LETTER TEH MARBUTA
|
||||
0xCA 0x062A # ARABIC LETTER TEH
|
||||
0xCB 0x062B # ARABIC LETTER THEH
|
||||
0xCC 0x062C # ARABIC LETTER JEEM
|
||||
0xCD 0x062D # ARABIC LETTER HAH
|
||||
0xCE 0x062E # ARABIC LETTER KHAH
|
||||
0xCF 0x062F # ARABIC LETTER DAL
|
||||
0xD0 0x0630 # ARABIC LETTER THAL
|
||||
0xD1 0x0631 # ARABIC LETTER REH
|
||||
0xD2 0x0632 # ARABIC LETTER ZAIN
|
||||
0xD3 0x0633 # ARABIC LETTER SEEN
|
||||
0xD4 0x0634 # ARABIC LETTER SHEEN
|
||||
0xD5 0x0635 # ARABIC LETTER SAD
|
||||
0xD6 0x0636 # ARABIC LETTER DAD
|
||||
0xD7 0x0637 # ARABIC LETTER TAH
|
||||
0xD8 0x0638 # ARABIC LETTER ZAH
|
||||
0xD9 0x0639 # ARABIC LETTER AIN
|
||||
0xDA 0x063A # ARABIC LETTER GHAIN
|
||||
0xE0 0x0640 # ARABIC TATWEEL
|
||||
0xE1 0x0641 # ARABIC LETTER FEH
|
||||
0xE2 0x0642 # ARABIC LETTER QAF
|
||||
0xE3 0x0643 # ARABIC LETTER KAF
|
||||
0xE4 0x0644 # ARABIC LETTER LAM
|
||||
0xE5 0x0645 # ARABIC LETTER MEEM
|
||||
0xE6 0x0646 # ARABIC LETTER NOON
|
||||
0xE7 0x0647 # ARABIC LETTER HEH
|
||||
0xE8 0x0648 # ARABIC LETTER WAW
|
||||
0xE9 0x0649 # ARABIC LETTER ALEF MAKSURA
|
||||
0xEA 0x064A # ARABIC LETTER YEH
|
||||
0xEB 0x064B # ARABIC FATHATAN
|
||||
0xEC 0x064C # ARABIC DAMMATAN
|
||||
0xED 0x064D # ARABIC KASRATAN
|
||||
0xEE 0x064E # ARABIC FATHA
|
||||
0xEF 0x064F # ARABIC DAMMA
|
||||
0xF0 0x0650 # ARABIC KASRA
|
||||
0xF1 0x0651 # ARABIC SHADDA
|
||||
0xF2 0x0652 # ARABIC SUKUN
|
|
@ -0,0 +1,304 @@
|
|||
ISO 8859-7 (Greek)
|
||||
"ISO-8859-7", "8859-7", "iso-ir-126", "elot-928"
|
||||
#
|
||||
# Name: ISO 8859-7:1987 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO 8859-7:1987 characters map into Unicode.
|
||||
#
|
||||
# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
|
||||
# and ECMA 118.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO 8859-7 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO 8859-7 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
# Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
|
||||
# Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||
0xA2 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAF 0x2015 # HORIZONTAL BAR
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x0384 # GREEK TONOS
|
||||
0xB5 0x0385 # GREEK DIALYTIKA TONOS
|
||||
0xB6 0x0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0xB9 0x0389 # GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0xBA 0x038A # GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0xBF 0x038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0xC0 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
0xC1 0x0391 # GREEK CAPITAL LETTER ALPHA
|
||||
0xC2 0x0392 # GREEK CAPITAL LETTER BETA
|
||||
0xC3 0x0393 # GREEK CAPITAL LETTER GAMMA
|
||||
0xC4 0x0394 # GREEK CAPITAL LETTER DELTA
|
||||
0xC5 0x0395 # GREEK CAPITAL LETTER EPSILON
|
||||
0xC6 0x0396 # GREEK CAPITAL LETTER ZETA
|
||||
0xC7 0x0397 # GREEK CAPITAL LETTER ETA
|
||||
0xC8 0x0398 # GREEK CAPITAL LETTER THETA
|
||||
0xC9 0x0399 # GREEK CAPITAL LETTER IOTA
|
||||
0xCA 0x039A # GREEK CAPITAL LETTER KAPPA
|
||||
0xCB 0x039B # GREEK CAPITAL LETTER LAMDA
|
||||
0xCC 0x039C # GREEK CAPITAL LETTER MU
|
||||
0xCD 0x039D # GREEK CAPITAL LETTER NU
|
||||
0xCE 0x039E # GREEK CAPITAL LETTER XI
|
||||
0xCF 0x039F # GREEK CAPITAL LETTER OMICRON
|
||||
0xD0 0x03A0 # GREEK CAPITAL LETTER PI
|
||||
0xD1 0x03A1 # GREEK CAPITAL LETTER RHO
|
||||
0xD3 0x03A3 # GREEK CAPITAL LETTER SIGMA
|
||||
0xD4 0x03A4 # GREEK CAPITAL LETTER TAU
|
||||
0xD5 0x03A5 # GREEK CAPITAL LETTER UPSILON
|
||||
0xD6 0x03A6 # GREEK CAPITAL LETTER PHI
|
||||
0xD7 0x03A7 # GREEK CAPITAL LETTER CHI
|
||||
0xD8 0x03A8 # GREEK CAPITAL LETTER PSI
|
||||
0xD9 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||
0xDA 0x03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0xDB 0x03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0xDC 0x03AC # GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0xDD 0x03AD # GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0xDE 0x03AE # GREEK SMALL LETTER ETA WITH TONOS
|
||||
0xDF 0x03AF # GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0xE0 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
0xE1 0x03B1 # GREEK SMALL LETTER ALPHA
|
||||
0xE2 0x03B2 # GREEK SMALL LETTER BETA
|
||||
0xE3 0x03B3 # GREEK SMALL LETTER GAMMA
|
||||
0xE4 0x03B4 # GREEK SMALL LETTER DELTA
|
||||
0xE5 0x03B5 # GREEK SMALL LETTER EPSILON
|
||||
0xE6 0x03B6 # GREEK SMALL LETTER ZETA
|
||||
0xE7 0x03B7 # GREEK SMALL LETTER ETA
|
||||
0xE8 0x03B8 # GREEK SMALL LETTER THETA
|
||||
0xE9 0x03B9 # GREEK SMALL LETTER IOTA
|
||||
0xEA 0x03BA # GREEK SMALL LETTER KAPPA
|
||||
0xEB 0x03BB # GREEK SMALL LETTER LAMDA
|
||||
0xEC 0x03BC # GREEK SMALL LETTER MU
|
||||
0xED 0x03BD # GREEK SMALL LETTER NU
|
||||
0xEE 0x03BE # GREEK SMALL LETTER XI
|
||||
0xEF 0x03BF # GREEK SMALL LETTER OMICRON
|
||||
0xF0 0x03C0 # GREEK SMALL LETTER PI
|
||||
0xF1 0x03C1 # GREEK SMALL LETTER RHO
|
||||
0xF2 0x03C2 # GREEK SMALL LETTER FINAL SIGMA
|
||||
0xF3 0x03C3 # GREEK SMALL LETTER SIGMA
|
||||
0xF4 0x03C4 # GREEK SMALL LETTER TAU
|
||||
0xF5 0x03C5 # GREEK SMALL LETTER UPSILON
|
||||
0xF6 0x03C6 # GREEK SMALL LETTER PHI
|
||||
0xF7 0x03C7 # GREEK SMALL LETTER CHI
|
||||
0xF8 0x03C8 # GREEK SMALL LETTER PSI
|
||||
0xF9 0x03C9 # GREEK SMALL LETTER OMEGA
|
||||
0xFA 0x03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0xFB 0x03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0xFC 0x03CC # GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0xFD 0x03CD # GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0xFE 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS
|
|
@ -0,0 +1,272 @@
|
|||
ISO 8859-8 (Hebrew)
|
||||
"ISO-8859-8", "8859-8"
|
||||
#
|
||||
# Name: ISO/IEC 8859-8:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.1
|
||||
# Table format: Format A
|
||||
# Date: 2000-Jan-03
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-8:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-8 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
# 1.1 version updates to the published 8859-8:1999, correcting
|
||||
# the mapping of 0xAF and adding mappings for LRM and RLM.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x00A5 # YEN SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x00D7 # MULTIPLICATION SIGN
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x00F7 # DIVISION SIGN
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
|
||||
0xDF 0x2017 # DOUBLE LOW LINE
|
||||
0xE0 0x05D0 # HEBREW LETTER ALEF
|
||||
0xE1 0x05D1 # HEBREW LETTER BET
|
||||
0xE2 0x05D2 # HEBREW LETTER GIMEL
|
||||
0xE3 0x05D3 # HEBREW LETTER DALET
|
||||
0xE4 0x05D4 # HEBREW LETTER HE
|
||||
0xE5 0x05D5 # HEBREW LETTER VAV
|
||||
0xE6 0x05D6 # HEBREW LETTER ZAYIN
|
||||
0xE7 0x05D7 # HEBREW LETTER HET
|
||||
0xE8 0x05D8 # HEBREW LETTER TET
|
||||
0xE9 0x05D9 # HEBREW LETTER YOD
|
||||
0xEA 0x05DA # HEBREW LETTER FINAL KAF
|
||||
0xEB 0x05DB # HEBREW LETTER KAF
|
||||
0xEC 0x05DC # HEBREW LETTER LAMED
|
||||
0xED 0x05DD # HEBREW LETTER FINAL MEM
|
||||
0xEE 0x05DE # HEBREW LETTER MEM
|
||||
0xEF 0x05DF # HEBREW LETTER FINAL NUN
|
||||
0xF0 0x05E0 # HEBREW LETTER NUN
|
||||
0xF1 0x05E1 # HEBREW LETTER SAMEKH
|
||||
0xF2 0x05E2 # HEBREW LETTER AYIN
|
||||
0xF3 0x05E3 # HEBREW LETTER FINAL PE
|
||||
0xF4 0x05E4 # HEBREW LETTER PE
|
||||
0xF5 0x05E5 # HEBREW LETTER FINAL TSADI
|
||||
0xF6 0x05E6 # HEBREW LETTER TSADI
|
||||
0xF7 0x05E7 # HEBREW LETTER QOF
|
||||
0xF8 0x05E8 # HEBREW LETTER RESH
|
||||
0xF9 0x05E9 # HEBREW LETTER SHIN
|
||||
0xFA 0x05EA # HEBREW LETTER TAV
|
||||
0xFD 0x200E # LEFT-TO-RIGHT MARK
|
||||
0xFE 0x200F # RIGHT-TO-LEFT MARK
|
||||
|
|
@ -0,0 +1,309 @@
|
|||
ISO 8859-9 (Turkish)
|
||||
"ISO-8859-9", "8859-9"
|
||||
#
|
||||
# Name: ISO/IEC 8859-9:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on magnetic media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-9:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-9 order.
|
||||
#
|
||||
# ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x00A5 # YEN SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF # INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x011E # LATIN CAPITAL LETTER G WITH BREVE
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0xDE 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x011F # LATIN SMALL LETTER G WITH BREVE
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||
0xFE 0x015F # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
CP 1125 (Ukrainian)
|
||||
"x-cp866-u", "ruscii", "1125"
|
||||
#
|
||||
# DOS Ukrainian (RUSCII, cp1125) to UNICODE translation table
|
||||
#
|
||||
# Based on cp866u_uni.tbl from lynx 2.8.2 distribution
|
||||
# by porokh
|
||||
#
|
||||
0x80 0x0410 #CYRILLIC CAPITAL LETTER A
|
||||
0x81 0x0411 #CYRILLIC CAPITAL LETTER BE
|
||||
0x82 0x0412 #CYRILLIC CAPITAL LETTER VE
|
||||
0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE
|
||||
0x84 0x0414 #CYRILLIC CAPITAL LETTER DE
|
||||
0x85 0x0415 #CYRILLIC CAPITAL LETTER IE
|
||||
0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE
|
||||
0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE
|
||||
0x88 0x0418 #CYRILLIC CAPITAL LETTER I
|
||||
0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x8a 0x041a #CYRILLIC CAPITAL LETTER KA
|
||||
0x8b 0x041b #CYRILLIC CAPITAL LETTER EL
|
||||
0x8c 0x041c #CYRILLIC CAPITAL LETTER EM
|
||||
0x8d 0x041d #CYRILLIC CAPITAL LETTER EN
|
||||
0x8e 0x041e #CYRILLIC CAPITAL LETTER O
|
||||
0x8f 0x041f #CYRILLIC CAPITAL LETTER PE
|
||||
0x90 0x0420 #CYRILLIC CAPITAL LETTER ER
|
||||
0x91 0x0421 #CYRILLIC CAPITAL LETTER ES
|
||||
0x92 0x0422 #CYRILLIC CAPITAL LETTER TE
|
||||
0x93 0x0423 #CYRILLIC CAPITAL LETTER U
|
||||
0x94 0x0424 #CYRILLIC CAPITAL LETTER EF
|
||||
0x95 0x0425 #CYRILLIC CAPITAL LETTER HA
|
||||
0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE
|
||||
0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE
|
||||
0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA
|
||||
0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU
|
||||
0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x9d 0x042d #CYRILLIC CAPITAL LETTER E
|
||||
0x9e 0x042e #CYRILLIC CAPITAL LETTER YU
|
||||
0x9f 0x042f #CYRILLIC CAPITAL LETTER YA
|
||||
0xa0 0x0430 #CYRILLIC SMALL LETTER A
|
||||
0xa1 0x0431 #CYRILLIC SMALL LETTER BE
|
||||
0xa2 0x0432 #CYRILLIC SMALL LETTER VE
|
||||
0xa3 0x0433 #CYRILLIC SMALL LETTER GHE
|
||||
0xa4 0x0434 #CYRILLIC SMALL LETTER DE
|
||||
0xa5 0x0435 #CYRILLIC SMALL LETTER IE
|
||||
0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE
|
||||
0xa7 0x0437 #CYRILLIC SMALL LETTER ZE
|
||||
0xa8 0x0438 #CYRILLIC SMALL LETTER I
|
||||
0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I
|
||||
0xaa 0x043a #CYRILLIC SMALL LETTER KA
|
||||
0xab 0x043b #CYRILLIC SMALL LETTER EL
|
||||
0xac 0x043c #CYRILLIC SMALL LETTER EM
|
||||
0xad 0x043d #CYRILLIC SMALL LETTER EN
|
||||
0xae 0x043e #CYRILLIC SMALL LETTER O
|
||||
0xaf 0x043f #CYRILLIC SMALL LETTER PE
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x0440 #CYRILLIC SMALL LETTER ER
|
||||
0xe1 0x0441 #CYRILLIC SMALL LETTER ES
|
||||
0xe2 0x0442 #CYRILLIC SMALL LETTER TE
|
||||
0xe3 0x0443 #CYRILLIC SMALL LETTER U
|
||||
0xe4 0x0444 #CYRILLIC SMALL LETTER EF
|
||||
0xe5 0x0445 #CYRILLIC SMALL LETTER HA
|
||||
0xe6 0x0446 #CYRILLIC SMALL LETTER TSE
|
||||
0xe7 0x0447 #CYRILLIC SMALL LETTER CHE
|
||||
0xe8 0x0448 #CYRILLIC SMALL LETTER SHA
|
||||
0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA
|
||||
0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xeb 0x044b #CYRILLIC SMALL LETTER YERU
|
||||
0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xed 0x044d #CYRILLIC SMALL LETTER E
|
||||
0xee 0x044e #CYRILLIC SMALL LETTER YU
|
||||
0xef 0x044f #CYRILLIC SMALL LETTER YA
|
||||
0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO
|
||||
0xf1 0x0451 #CYRILLIC SMALL LETTER IO
|
||||
0xf2 0x0490 #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0xf3 0x0491 #CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0xf4 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xf5 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xf6 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xf7 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xf8 0x0407 #CYRILLIC CAPITAL LETTER YI
|
||||
0xf9 0x0457 #CYRILLIC SMALL LETTER YI
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x2116 #NUMERO SIGN
|
||||
0xfd 0x00a4 #CURRENCY SIGN
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
|
@ -0,0 +1,276 @@
|
|||
Window$ 1250 (Central European)
|
||||
"windows-1250", "1250"
|
||||
#
|
||||
# Name: cp1250 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: cpxlate@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1250 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1250 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 0 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0 #UNDEFINED
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
#0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0 #UNDEFINED
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x8D 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x8F 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x90 0 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
#0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x015B #LATIN SMALL LETTER S WITH ACUTE
|
||||
0x9D 0x0165 #LATIN SMALL LETTER T WITH CARON
|
||||
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0x9F 0x017A #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x02C7 #CARON
|
||||
0xA2 0x02D8 #BREVE
|
||||
0xA3 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x02DB #OGONEK
|
||||
0xB3 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
#0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xBA 0x015F #LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x013D #LATIN CAPITAL LETTER L WITH CARON
|
||||
0xBD 0x02DD #DOUBLE ACUTE ACCENT
|
||||
0xBE 0x013E #LATIN SMALL LETTER L WITH CARON
|
||||
0xBF 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0xC6 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x011A #LATIN CAPITAL LETTER E WITH CARON
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x010E #LATIN CAPITAL LETTER D WITH CARON
|
||||
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0147 #LATIN CAPITAL LETTER N WITH CARON
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0158 #LATIN CAPITAL LETTER R WITH CARON
|
||||
0xD9 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0155 #LATIN SMALL LETTER R WITH ACUTE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x013A #LATIN SMALL LETTER L WITH ACUTE
|
||||
0xE6 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x011B #LATIN SMALL LETTER E WITH CARON
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x010F #LATIN SMALL LETTER D WITH CARON
|
||||
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0148 #LATIN SMALL LETTER N WITH CARON
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0159 #LATIN SMALL LETTER R WITH CARON
|
||||
0xF9 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
|
||||
0xFF 0x02D9 #DOT ABOVE
|
|
@ -0,0 +1,225 @@
|
|||
Window$ 1251 (Cyrillic)
|
||||
"windows-1251", "1251", "cp1251"
|
||||
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x80 0x0402 # CYRILLIC CAPITAL LETTER DJE
|
||||
0x81 0x0403 # CYRILLIC CAPITAL LETTER GJE
|
||||
0x82 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0453 # CYRILLIC SMALL LETTER GJE
|
||||
0x84 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 # HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 # DAGGER
|
||||
0x87 0x2021 # DOUBLE DAGGER
|
||||
0x88 0x20AC # EURO SIGN
|
||||
0x89 0x2030 # PER MILLE SIGN
|
||||
0x8A 0x0409 # CYRILLIC CAPITAL LETTER LJE
|
||||
0x8B 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x040A # CYRILLIC CAPITAL LETTER NJE
|
||||
0x8D 0x040C # CYRILLIC CAPITAL LETTER KJE
|
||||
0x8E 0x040B # CYRILLIC CAPITAL LETTER TSHE
|
||||
0x8F 0x040F # CYRILLIC CAPITAL LETTER DZHE
|
||||
0x90 0x0452 # CYRILLIC SMALL LETTER DJE
|
||||
0x91 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 # BULLET
|
||||
0x96 0x2013 # EN DASH
|
||||
0x97 0x2014 # EM DASH
|
||||
0x99 0x2122 # TRADE MARK SIGN
|
||||
0x9A 0x0459 # CYRILLIC SMALL LETTER LJE
|
||||
0x9B 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x045A # CYRILLIC SMALL LETTER NJE
|
||||
0x9D 0x045C # CYRILLIC SMALL LETTER KJE
|
||||
0x9E 0x045B # CYRILLIC SMALL LETTER TSHE
|
||||
0x9F 0x045F # CYRILLIC SMALL LETTER DZHE
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x040E # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xA2 0x045E # CYRILLIC SMALL LETTER SHORT U
|
||||
0xA3 0x0408 # CYRILLIC CAPITAL LETTER JE
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x0490 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x0407 # CYRILLIC CAPITAL LETTER YI
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xB3 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xB4 0x0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xB9 0x2116 # NUMERO SIGN
|
||||
0xBA 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x0458 # CYRILLIC SMALL LETTER JE
|
||||
0xBD 0x0405 # CYRILLIC CAPITAL LETTER DZE
|
||||
0xBE 0x0455 # CYRILLIC SMALL LETTER DZE
|
||||
0xBF 0x0457 # CYRILLIC SMALL LETTER YI
|
||||
0xC0 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xC1 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xC2 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xC3 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xC4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xC5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xC6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xC7 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xC8 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xC9 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xCA 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xCB 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xCC 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xCD 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xCE 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xCF 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xD0 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xD1 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xD2 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xD3 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xD4 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xD5 0x0425 # CYRILLIC CAPITAL LETTER HA
|
||||
0xD6 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xD7 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xD8 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xD9 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xDA 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0xDB 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xDC 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xDD 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xDE 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xDF 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xE0 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xE1 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xE2 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xE3 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xE4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xE5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xE6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xE7 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xE8 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xE9 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xEA 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xEB 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xEC 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xED 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xEE 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xEF 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xF0 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xF1 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xF2 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xF3 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xF4 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xF5 0x0445 # CYRILLIC SMALL LETTER HA
|
||||
0xF6 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xF7 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xF8 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xF9 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xFA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xFB 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xFC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xFD 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xFE 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xFF 0x044F # CYRILLIC SMALL LETTER YA
|
|
@ -0,0 +1,254 @@
|
|||
Window$ 1252 (Western European)
|
||||
"windows-1252", "1252"
|
||||
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
|
||||
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x02DC #SMALL TILDE
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x0153 #LATIN SMALL LIGATURE OE
|
||||
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF #INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 #LATIN CAPITAL LIGATURE AE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 #LATIN CAPITAL LETTER ETH
|
||||
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE #LATIN CAPITAL LETTER THORN
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 #LATIN SMALL LIGATURE AE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 #LATIN SMALL LETTER ETH
|
||||
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE #LATIN SMALL LETTER THORN
|
||||
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,276 @@
|
|||
Window$ 1256 (Arabic)
|
||||
"windows-1256", "1256", "cp1256"
|
||||
#
|
||||
# Name: cp1256 to Unicode table
|
||||
# Unicode version: 2.1
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 01/5/99
|
||||
#
|
||||
# Contact: cpxlate@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1256 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1256 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 0x067E #ARABIC LETTER PEH
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0679 #ARABIC LETTER TTEH
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
|
||||
0x8D 0x0686 #ARABIC LETTER TCHEH
|
||||
0x8E 0x0698 #ARABIC LETTER JEH
|
||||
0x8F 0x0688 #ARABIC LETTER DDAL
|
||||
0x90 0x06AF #ARABIC LETTER GAF
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x06A9 #ARABIC LETTER KEHEH
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0691 #ARABIC LETTER RREH
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x0153 #LATIN SMALL LIGATURE OE
|
||||
0x9D 0x200C #ZERO WIDTH NON-JOINER
|
||||
0x9E 0x200D #ZERO WIDTH JOINER
|
||||
0x9F 0x06BA #ARABIC LETTER NOON GHUNNA
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x060C #ARABIC COMMA
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x06BE #ARABIC LETTER HEH DOACHASHMEE
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x061B #ARABIC SEMICOLON
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x061F #ARABIC QUESTION MARK
|
||||
0xC0 0x06C1 #ARABIC LETTER HEH GOAL
|
||||
0xC1 0x0621 #ARABIC LETTER HAMZA
|
||||
0xC2 0x0622 #ARABIC LETTER ALEF WITH MADDA ABOVE
|
||||
0xC3 0x0623 #ARABIC LETTER ALEF WITH HAMZA ABOVE
|
||||
0xC4 0x0624 #ARABIC LETTER WAW WITH HAMZA ABOVE
|
||||
0xC5 0x0625 #ARABIC LETTER ALEF WITH HAMZA BELOW
|
||||
0xC6 0x0626 #ARABIC LETTER YEH WITH HAMZA ABOVE
|
||||
0xC7 0x0627 #ARABIC LETTER ALEF
|
||||
0xC8 0x0628 #ARABIC LETTER BEH
|
||||
0xC9 0x0629 #ARABIC LETTER TEH MARBUTA
|
||||
0xCA 0x062A #ARABIC LETTER TEH
|
||||
0xCB 0x062B #ARABIC LETTER THEH
|
||||
0xCC 0x062C #ARABIC LETTER JEEM
|
||||
0xCD 0x062D #ARABIC LETTER HAH
|
||||
0xCE 0x062E #ARABIC LETTER KHAH
|
||||
0xCF 0x062F #ARABIC LETTER DAL
|
||||
0xD0 0x0630 #ARABIC LETTER THAL
|
||||
0xD1 0x0631 #ARABIC LETTER REH
|
||||
0xD2 0x0632 #ARABIC LETTER ZAIN
|
||||
0xD3 0x0633 #ARABIC LETTER SEEN
|
||||
0xD4 0x0634 #ARABIC LETTER SHEEN
|
||||
0xD5 0x0635 #ARABIC LETTER SAD
|
||||
0xD6 0x0636 #ARABIC LETTER DAD
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0637 #ARABIC LETTER TAH
|
||||
0xD9 0x0638 #ARABIC LETTER ZAH
|
||||
0xDA 0x0639 #ARABIC LETTER AIN
|
||||
0xDB 0x063A #ARABIC LETTER GHAIN
|
||||
0xDC 0x0640 #ARABIC TATWEEL
|
||||
0xDD 0x0641 #ARABIC LETTER FEH
|
||||
0xDE 0x0642 #ARABIC LETTER QAF
|
||||
0xDF 0x0643 #ARABIC LETTER KAF
|
||||
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x0644 #ARABIC LETTER LAM
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0645 #ARABIC LETTER MEEM
|
||||
0xE4 0x0646 #ARABIC LETTER NOON
|
||||
0xE5 0x0647 #ARABIC LETTER HEH
|
||||
0xE6 0x0648 #ARABIC LETTER WAW
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x0649 #ARABIC LETTER ALEF MAKSURA
|
||||
0xED 0x064A #ARABIC LETTER YEH
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x064B #ARABIC FATHATAN
|
||||
0xF1 0x064C #ARABIC DAMMATAN
|
||||
0xF2 0x064D #ARABIC KASRATAN
|
||||
0xF3 0x064E #ARABIC FATHA
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x064F #ARABIC DAMMA
|
||||
0xF6 0x0650 #ARABIC KASRA
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0651 #ARABIC SHADDA
|
||||
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x0652 #ARABIC SUKUN
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x200E #LEFT-TO-RIGHT MARK
|
||||
0xFE 0x200F #RIGHT-TO-LEFT MARK
|
||||
0xFF 0x06D2 #ARABIC LETTER YEH BARREE
|
|
@ -0,0 +1,153 @@
|
|||
Window$ 1257 (Baltic)
|
||||
"windows-1257", "1257", "cp1257"
|
||||
#
|
||||
# Name: cp1257 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: cpxlate@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1257 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1257 order
|
||||
#
|
||||
##################
|
||||
|
||||
0x20-0x7e idem
|
||||
#
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 0 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0 #UNDEFINED
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0 #UNDEFINED
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0 #UNDEFINED
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0 #UNDEFINED
|
||||
0x8D 0x00A8 #DIAERESIS
|
||||
0x8E 0x02C7 #CARON
|
||||
0x8F 0x00B8 #CEDILLA
|
||||
0x90 0 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0 #UNDEFINED
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0 #UNDEFINED
|
||||
0x9D 0x00AF #MACRON
|
||||
0x9E 0x02DB #OGONEK
|
||||
0x9F 0 #UNDEFINED
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0 #UNDEFINED
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0 #UNDEFINED
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xC0 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xC1 0x012E #LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC2 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC3 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xC7 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xCB 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCC 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xCD 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xCE 0x012A #LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xCF 0x013B #LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xD0 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x014C #LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xD9 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xDA 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xDB 0x016A #LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xDE 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xE1 0x012F #LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE2 0x0101 #LATIN SMALL LETTER A WITH MACRON
|
||||
0xE3 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xE7 0x0113 #LATIN SMALL LETTER E WITH MACRON
|
||||
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x017A #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xEB 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xEC 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xED 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xEE 0x012B #LATIN SMALL LETTER I WITH MACRON
|
||||
0xEF 0x013C #LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xF0 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x014D #LATIN SMALL LETTER O WITH MACRON
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0173 #LATIN SMALL LETTER U WITH OGONEK
|
||||
0xF9 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0xFA 0x015B #LATIN SMALL LETTER S WITH ACUTE
|
||||
0xFB 0x016B #LATIN SMALL LETTER U WITH MACRON
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xFE 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0xFF 0x02D9 #DOT ABOVE
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
CP 437 (US)
|
||||
"cp437", "437"
|
||||
#
|
||||
# Name: cp437_DOSLatinUS to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@microsoft.com>
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp437_DOSLatinUS code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp437_DOSLatinUS order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00a2 #CENT SIGN
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00a5 #YEN SIGN
|
||||
0x9e 0x20a7 #PESETA SIGN
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x2310 #REVERSED NOT SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xe3 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xec 0x221e #INFINITY
|
||||
0xed 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xef 0x2229 #INTERSECTION
|
||||
0xf0 0x2261 #IDENTICAL TO
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x2320 #TOP HALF INTEGRAL
|
||||
0xf5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
|
@ -0,0 +1,275 @@
|
|||
CP 737 (Greek)
|
||||
"cp737", "737"
|
||||
#
|
||||
# Name: cp737_DOSGreek to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@microsoft.com>
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp737_DOSGreek code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp737_DOSGreek order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x0391 #GREEK CAPITAL LETTER ALPHA
|
||||
0x81 0x0392 #GREEK CAPITAL LETTER BETA
|
||||
0x82 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0x83 0x0394 #GREEK CAPITAL LETTER DELTA
|
||||
0x84 0x0395 #GREEK CAPITAL LETTER EPSILON
|
||||
0x85 0x0396 #GREEK CAPITAL LETTER ZETA
|
||||
0x86 0x0397 #GREEK CAPITAL LETTER ETA
|
||||
0x87 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0x88 0x0399 #GREEK CAPITAL LETTER IOTA
|
||||
0x89 0x039a #GREEK CAPITAL LETTER KAPPA
|
||||
0x8a 0x039b #GREEK CAPITAL LETTER LAMDA
|
||||
0x8b 0x039c #GREEK CAPITAL LETTER MU
|
||||
0x8c 0x039d #GREEK CAPITAL LETTER NU
|
||||
0x8d 0x039e #GREEK CAPITAL LETTER XI
|
||||
0x8e 0x039f #GREEK CAPITAL LETTER OMICRON
|
||||
0x8f 0x03a0 #GREEK CAPITAL LETTER PI
|
||||
0x90 0x03a1 #GREEK CAPITAL LETTER RHO
|
||||
0x91 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0x92 0x03a4 #GREEK CAPITAL LETTER TAU
|
||||
0x93 0x03a5 #GREEK CAPITAL LETTER UPSILON
|
||||
0x94 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0x95 0x03a7 #GREEK CAPITAL LETTER CHI
|
||||
0x96 0x03a8 #GREEK CAPITAL LETTER PSI
|
||||
0x97 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0x98 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0x99 0x03b2 #GREEK SMALL LETTER BETA
|
||||
0x9a 0x03b3 #GREEK SMALL LETTER GAMMA
|
||||
0x9b 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0x9c 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0x9d 0x03b6 #GREEK SMALL LETTER ZETA
|
||||
0x9e 0x03b7 #GREEK SMALL LETTER ETA
|
||||
0x9f 0x03b8 #GREEK SMALL LETTER THETA
|
||||
0xa0 0x03b9 #GREEK SMALL LETTER IOTA
|
||||
0xa1 0x03ba #GREEK SMALL LETTER KAPPA
|
||||
0xa2 0x03bb #GREEK SMALL LETTER LAMDA
|
||||
0xa3 0x03bc #GREEK SMALL LETTER MU
|
||||
0xa4 0x03bd #GREEK SMALL LETTER NU
|
||||
0xa5 0x03be #GREEK SMALL LETTER XI
|
||||
0xa6 0x03bf #GREEK SMALL LETTER OMICRON
|
||||
0xa7 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xa8 0x03c1 #GREEK SMALL LETTER RHO
|
||||
0xa9 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xaa 0x03c2 #GREEK SMALL LETTER FINAL SIGMA
|
||||
0xab 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xac 0x03c5 #GREEK SMALL LETTER UPSILON
|
||||
0xad 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xae 0x03c7 #GREEK SMALL LETTER CHI
|
||||
0xaf 0x03c8 #GREEK SMALL LETTER PSI
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03c9 #GREEK SMALL LETTER OMEGA
|
||||
0xe1 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0xe2 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0xe3 0x03ae #GREEK SMALL LETTER ETA WITH TONOS
|
||||
0xe4 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0xe5 0x03af #GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0xe6 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0xe7 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0xe8 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0xe9 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0xea 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0xeb 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0xec 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0xed 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0xee 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0xef 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0xf0 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0xf5 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
|
@ -0,0 +1,275 @@
|
|||
CP 850 (Western European)
|
||||
"cp850", "850"
|
||||
#
|
||||
# Name: cp850_DOSLatin1 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@microsoft.com>
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp850_DOSLatin1 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp850_DOSLatin1 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x9e 0x00d7 #MULTIPLICATION SIGN
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x00ae #REGISTERED SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xb8 0x00a9 #COPYRIGHT SIGN
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x00a2 #CENT SIGN
|
||||
0xbe 0x00a5 #YEN SIGN
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x00a4 #CURRENCY SIGN
|
||||
0xd0 0x00f0 #LATIN SMALL LETTER ETH
|
||||
0xd1 0x00d0 #LATIN CAPITAL LETTER ETH
|
||||
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xd5 0x0131 #LATIN SMALL LETTER DOTLESS I
|
||||
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x00a6 #BROKEN BAR
|
||||
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x00fe #LATIN SMALL LETTER THORN
|
||||
0xe8 0x00de #LATIN CAPITAL LETTER THORN
|
||||
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xee 0x00af #MACRON
|
||||
0xef 0x00b4 #ACUTE ACCENT
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2017 #DOUBLE LOW LINE
|
||||
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
|
||||
0xf4 0x00b6 #PILCROW SIGN
|
||||
0xf5 0x00a7 #SECTION SIGN
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x00b8 #CEDILLA
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x00a8 #DIAERESIS
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x00b9 #SUPERSCRIPT ONE
|
||||
0xfc 0x00b3 #SUPERSCRIPT THREE
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
|
@ -0,0 +1,275 @@
|
|||
CP 852 (Central European)
|
||||
"cp852", "852"
|
||||
#
|
||||
# Name: cp852_DOSLatin2 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@microsoft.com>
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp852_DOSLatin2 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp852_DOSLatin2 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x016f #LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0x86 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0x8b 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0x92 0x013a #LATIN SMALL LETTER L WITH ACUTE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x013d #LATIN CAPITAL LETTER L WITH CARON
|
||||
0x96 0x013e #LATIN SMALL LETTER L WITH CARON
|
||||
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0x9c 0x0165 #LATIN SMALL LETTER T WITH CARON
|
||||
0x9d 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0x9e 0x00d7 #MULTIPLICATION SIGN
|
||||
0x9f 0x010d #LATIN SMALL LETTER C WITH CARON
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xa5 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xa6 0x017d #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xa7 0x017e #LATIN SMALL LETTER Z WITH CARON
|
||||
0xa8 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xa9 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x017a #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xac 0x010c #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xad 0x015f #LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xb7 0x011a #LATIN CAPITAL LETTER E WITH CARON
|
||||
0xb8 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xbe 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xc7 0x0103 #LATIN SMALL LETTER A WITH BREVE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x00a4 #CURRENCY SIGN
|
||||
0xd0 0x0111 #LATIN SMALL LETTER D WITH STROKE
|
||||
0xd1 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xd2 0x010e #LATIN CAPITAL LETTER D WITH CARON
|
||||
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xd4 0x010f #LATIN SMALL LETTER D WITH CARON
|
||||
0xd5 0x0147 #LATIN CAPITAL LETTER N WITH CARON
|
||||
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xd8 0x011b #LATIN SMALL LETTER E WITH CARON
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0xde 0x016e #LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xe4 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xe5 0x0148 #LATIN SMALL LETTER N WITH CARON
|
||||
0xe6 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xe7 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xe8 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xea 0x0155 #LATIN SMALL LETTER R WITH ACUTE
|
||||
0xeb 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xee 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
|
||||
0xef 0x00b4 #ACUTE ACCENT
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x02dd #DOUBLE ACUTE ACCENT
|
||||
0xf2 0x02db #OGONEK
|
||||
0xf3 0x02c7 #CARON
|
||||
0xf4 0x02d8 #BREVE
|
||||
0xf5 0x00a7 #SECTION SIGN
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x00b8 #CEDILLA
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x00a8 #DIAERESIS
|
||||
0xfa 0x02d9 #DOT ABOVE
|
||||
0xfb 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xfc 0x0158 #LATIN CAPITAL LETTER R WITH CARON
|
||||
0xfd 0x0159 #LATIN SMALL LETTER R WITH CARON
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
|
@ -0,0 +1,276 @@
|
|||
CP 866 (Cyrillic)
|
||||
"cp866", "866"
|
||||
#
|
||||
# Name: cp866_DOSCyrillicRussian to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@microsoft.com>
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp866_DOSCyrillicRussian code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp866_DOSCyrillicRussian order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x0410 #CYRILLIC CAPITAL LETTER A
|
||||
0x81 0x0411 #CYRILLIC CAPITAL LETTER BE
|
||||
0x82 0x0412 #CYRILLIC CAPITAL LETTER VE
|
||||
0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE
|
||||
0x84 0x0414 #CYRILLIC CAPITAL LETTER DE
|
||||
0x85 0x0415 #CYRILLIC CAPITAL LETTER IE
|
||||
0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE
|
||||
0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE
|
||||
0x88 0x0418 #CYRILLIC CAPITAL LETTER I
|
||||
0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x8a 0x041a #CYRILLIC CAPITAL LETTER KA
|
||||
0x8b 0x041b #CYRILLIC CAPITAL LETTER EL
|
||||
0x8c 0x041c #CYRILLIC CAPITAL LETTER EM
|
||||
0x8d 0x041d #CYRILLIC CAPITAL LETTER EN
|
||||
0x8e 0x041e #CYRILLIC CAPITAL LETTER O
|
||||
0x8f 0x041f #CYRILLIC CAPITAL LETTER PE
|
||||
0x90 0x0420 #CYRILLIC CAPITAL LETTER ER
|
||||
0x91 0x0421 #CYRILLIC CAPITAL LETTER ES
|
||||
0x92 0x0422 #CYRILLIC CAPITAL LETTER TE
|
||||
0x93 0x0423 #CYRILLIC CAPITAL LETTER U
|
||||
0x94 0x0424 #CYRILLIC CAPITAL LETTER EF
|
||||
0x95 0x0425 #CYRILLIC CAPITAL LETTER HA
|
||||
0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE
|
||||
0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE
|
||||
0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA
|
||||
0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU
|
||||
0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x9d 0x042d #CYRILLIC CAPITAL LETTER E
|
||||
0x9e 0x042e #CYRILLIC CAPITAL LETTER YU
|
||||
0x9f 0x042f #CYRILLIC CAPITAL LETTER YA
|
||||
0xa0 0x0430 #CYRILLIC SMALL LETTER A
|
||||
0xa1 0x0431 #CYRILLIC SMALL LETTER BE
|
||||
0xa2 0x0432 #CYRILLIC SMALL LETTER VE
|
||||
0xa3 0x0433 #CYRILLIC SMALL LETTER GHE
|
||||
0xa4 0x0434 #CYRILLIC SMALL LETTER DE
|
||||
0xa5 0x0435 #CYRILLIC SMALL LETTER IE
|
||||
0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE
|
||||
0xa7 0x0437 #CYRILLIC SMALL LETTER ZE
|
||||
0xa8 0x0438 #CYRILLIC SMALL LETTER I
|
||||
0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I
|
||||
0xaa 0x043a #CYRILLIC SMALL LETTER KA
|
||||
0xab 0x043b #CYRILLIC SMALL LETTER EL
|
||||
0xac 0x043c #CYRILLIC SMALL LETTER EM
|
||||
0xad 0x043d #CYRILLIC SMALL LETTER EN
|
||||
0xae 0x043e #CYRILLIC SMALL LETTER O
|
||||
0xaf 0x043f #CYRILLIC SMALL LETTER PE
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x0440 #CYRILLIC SMALL LETTER ER
|
||||
0xe1 0x0441 #CYRILLIC SMALL LETTER ES
|
||||
0xe2 0x0442 #CYRILLIC SMALL LETTER TE
|
||||
0xe3 0x0443 #CYRILLIC SMALL LETTER U
|
||||
0xe4 0x0444 #CYRILLIC SMALL LETTER EF
|
||||
0xe5 0x0445 #CYRILLIC SMALL LETTER HA
|
||||
0xe6 0x0446 #CYRILLIC SMALL LETTER TSE
|
||||
0xe7 0x0447 #CYRILLIC SMALL LETTER CHE
|
||||
0xe8 0x0448 #CYRILLIC SMALL LETTER SHA
|
||||
0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA
|
||||
0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xeb 0x044b #CYRILLIC SMALL LETTER YERU
|
||||
0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xed 0x044d #CYRILLIC SMALL LETTER E
|
||||
0xee 0x044e #CYRILLIC SMALL LETTER YU
|
||||
0xef 0x044f #CYRILLIC SMALL LETTER YA
|
||||
0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO
|
||||
0xf1 0x0451 #CYRILLIC SMALL LETTER IO
|
||||
0xf2 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xf3 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xf4 0x0407 #CYRILLIC CAPITAL LETTER YI
|
||||
0xf5 0x0457 #CYRILLIC SMALL LETTER YI
|
||||
0xf6 0x040e #CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xf7 0x045e #CYRILLIC SMALL LETTER SHORT U
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x2116 #NUMERO SIGN
|
||||
0xfd 0x00a4 #CURRENCY SIGN
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
./gen-cp
|
||||
./gen-7b
|
||||
./gen-ent
|
||||
./gen-upc
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
echo
|
||||
echo Generating Unicode2ascii translation table.
|
||||
(
|
||||
cat 7bitrepl.lnx | awk -f tr7bit.awk >tmp
|
||||
N=`cat tmp | wc -l`
|
||||
echo '/* Automatically generated by gen-7b */'
|
||||
echo
|
||||
echo 'static_const struct { int x; char *s; } unicode_7b ['`expr $N + 1`'] = {'
|
||||
sort tmp | sed 's/\\/\\\\/g' | sed 's/\\\\\\\\/\\\\/g' | sed 's/:\\\\001$/:\\001/g' | sed 's/"/\\"/g' | sed 's/^/ { /' | sed 's/:/, "/' | sed 's/$/" },/'
|
||||
echo ' { -1, NULL }'
|
||||
echo '};'
|
||||
echo
|
||||
echo '#define N_UNICODE_7B' $N
|
||||
)>../uni_7b.inc
|
||||
rm -f tmp
|
||||
echo Done.
|
||||
echo
|
|
@ -0,0 +1,40 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
echo
|
||||
echo Generating code page translation tables.
|
||||
codepages=`cat index.txt|sed 's/
//g'`
|
||||
if [ -n "$codepages" ]; then
|
||||
(
|
||||
n=0
|
||||
echo '/* Automatically generated by gen-cp */'
|
||||
for i in $codepages; do
|
||||
printf $i' ' 1>&2
|
||||
echo
|
||||
echo 'static_const struct table_entry table_'$i' [] = {'
|
||||
tail -n +3 $i.cp | sed 's/#.*$//' | grep '^0x[89a-fA-F]' | sed 's/[ ][ ]*/ /g' | sed 's/[ ]*$/ },/' | sed 's/ /, /' | sed 's/^[ ]*/ { /' | grep '.*, .*,' | grep -v ', 0x0*[89][0-9a-fA-F] ' || true
|
||||
echo ' { 0, 0 }'
|
||||
echo '};'
|
||||
echo
|
||||
echo 'static_const const_char_ptr aliases_'$i' [] = {'`head -2 $i.cp | tail -n +2`', NULL };'
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
echo
|
||||
echo 'static_const struct codepage_desc codepages [] = {'
|
||||
for i in $codepages; do
|
||||
echo ' { "'`head -1 $i.cp`'", aliases_'$i', table_'$i' },'
|
||||
done
|
||||
echo ' { NULL, NULL, NULL }'
|
||||
echo '};'
|
||||
echo '#define N_CODEPAGES '$n | sed 's/
//g' > codepage.h
|
||||
if cmp -s ../codepage.h codepage.h; then
|
||||
rm -f codepage.h
|
||||
else
|
||||
mv codepage.h ../codepage.h
|
||||
fi
|
||||
) | sed 's/
//g' > ../codepage.inc
|
||||
echo
|
||||
echo Done.
|
||||
fi
|
||||
echo
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
echo
|
||||
echo Generating entity table.
|
||||
(
|
||||
cat entities.lnx | sed 's/
$//' | grep '^[ ]*{"' | sort >tmp
|
||||
N=`cat tmp | wc -l`
|
||||
echo '/* Automatically generated by gen-ent */'
|
||||
echo
|
||||
echo 'static_const struct { const char *s; int c; } entities ['`expr $N + 1`'] = {'
|
||||
cat tmp
|
||||
echo ' {NULL, 0}'
|
||||
echo '};'
|
||||
echo
|
||||
echo '#define N_ENTITIES' $N
|
||||
) > ../entity.inc
|
||||
rm -f tmp
|
||||
echo Done.
|
||||
echo
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
echo
|
||||
echo Generating Unicode upcase table.
|
||||
for file in upcase locase; do
|
||||
(
|
||||
echo '/* Automatically generated by gen-upc */'
|
||||
echo
|
||||
echo "static_const struct { unsigned short o; unsigned short n; } unicode_$file [] = {"
|
||||
(
|
||||
if [ $file = upcase ]; then
|
||||
echo '00A0 0020'
|
||||
fi
|
||||
cat $file.uni
|
||||
) | sed 's/^\([0-9A-Z]*\) \([0-9A-Z]*\)$/ { 0x\1, 0x\2 },/' | sort
|
||||
echo '};'
|
||||
) > ../$file.inc
|
||||
done
|
||||
echo Done.
|
||||
echo
|
|
@ -0,0 +1,35 @@
|
|||
7bit
|
||||
8859_1
|
||||
8859_2
|
||||
8859_3
|
||||
8859_4
|
||||
8859_5
|
||||
8859_6
|
||||
8859_7
|
||||
8859_8
|
||||
8859_9
|
||||
8859_10
|
||||
8859_13
|
||||
8859_14
|
||||
8859_15
|
||||
8859_16
|
||||
cp1250
|
||||
cp1251
|
||||
cp1252
|
||||
cp1256
|
||||
cp1257
|
||||
cp437
|
||||
cp737
|
||||
cp850
|
||||
cp852
|
||||
cp866
|
||||
cp1125
|
||||
macroman
|
||||
mac_lat2
|
||||
kamen
|
||||
koi8_r
|
||||
koi8_u
|
||||
koi8_ru
|
||||
tcvn5712
|
||||
viscii
|
||||
utf_8
|
|
@ -0,0 +1,263 @@
|
|||
Kamenicky Brothers
|
||||
"x-kam-cs", "kam", "867", "869"
|
||||
|
||||
# Kamenicky Brothers Charset File
|
||||
# Czech characters extracted from CStoCS "kam.enc" and others copied from
|
||||
# IBM charset by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
||||
|
||||
0x00 0x0000 #<control>
|
||||
0x01 0x263A #WHITE SMILING FACE
|
||||
0x02 0x263B #BLACK SMILING FACE
|
||||
0x03 0x2665 #BLACK HEART SUIT
|
||||
0x04 0x2666 #BLACK DIAMOND SUIT
|
||||
0x05 0x2663 #BLACK CLUB SUIT
|
||||
0x06 0x2660 #BLACK SPADE SUIT
|
||||
0x07 0x2022 #BULLET
|
||||
0x08 0x25D8 #INVERSE BULLET
|
||||
0x09 0x25CB #WHITE CIRCLE
|
||||
0x0A 0x25D9 #INVERSE WHITE CIRCLE
|
||||
0x0B 0x2642 #MALE SIGN
|
||||
0x0C 0x2640 #FEMALE SIGN
|
||||
0x0D 0x266A #EIGHTH NOTE
|
||||
0x0E 0x266B #BEAMED EIGHTH NOTES
|
||||
0x0F 0x263C #WHITE SUN WITH RAYS
|
||||
0x10 0x25B6 #BLACK RIGHT-POINTING TRIANGLE
|
||||
0x11 0x25C0 #BLACK LEFT-POINTING TRIANGLE
|
||||
0x12 0x2195 #UP DOWN ARROW
|
||||
0x13 0x203C #DOUBLE EXCLAMATION MARK
|
||||
0x14 0x00B6 #PILCROW SIGN
|
||||
0x15 0x00A7 #SECTION SIGN
|
||||
0x16 0x25AC #BLACK RECTANGLE
|
||||
0x17 0x21A8 #UP DOWN ARROW WITH BASE
|
||||
0x18 0x2191 #UPWARDS ARROW
|
||||
0x19 0x2193 #DOWNWARDS ARROW
|
||||
0x1A 0x2192 #RIGHTWARDS ARROW
|
||||
0x1B 0x2190 #LEFTWARDS ARROW
|
||||
0x1C 0x221F #RIGHT ANGLE
|
||||
0x1D 0x2194 #LEFT RIGHT ARROW
|
||||
0x1E 0x25B2 #BLACK UP-POINTING TRIANGLE
|
||||
0x1F 0x25BC #BLACK DOWN-POINTING TRIANGLE
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x2302 #HOUSE
|
||||
0x80 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0x81 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x010F #LATIN SMALL LETTER D WITH CARON
|
||||
0x84 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x010E #LATIN CAPITAL LETTER D WITH CARON
|
||||
0x86 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0x87 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0x88 0x011B #LATIN SMALL LETTER E WITH CARON
|
||||
0x89 0x011A #LATIN CAPITAL LETTER E WITH CARON
|
||||
0x8A 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0x8B 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x8C 0x013E #LATIN SMALL LETTER L WITH CARON
|
||||
0x8D 0x013A #LATIN SMALL LETTER L WITH ACUTE
|
||||
0x8E 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8F 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x90 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0x92 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x93 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x96 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0x97 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x98 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x99 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9A 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9B 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0x9C 0x013D #LATIN CAPITAL LETTER L WITH CARON
|
||||
0x9D 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x9E 0x0158 #LATIN CAPITAL LETTER R WITH CARON
|
||||
0x9F 0x0165 #LATIN SMALL LETTER T WITH CARON
|
||||
0xA0 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xA1 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xA2 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xA3 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xA4 0x0148 #LATIN SMALL LETTER N WITH CARON
|
||||
0xA5 0x0147 #LATIN CAPITAL LETTER N WITH CARON
|
||||
0xA6 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xA7 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xA8 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xA9 0x0159 #LATIN SMALL LETTER R WITH CARON
|
||||
0xAA 0x0155 #LATIN SMALL LETTER R WITH ACUTE
|
||||
0xAB 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xAC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xAD 0x00A7 #SECTION SIGN
|
||||
0xAE 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAF 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xB0 0x2591 #LIGHT SHADE
|
||||
0xB1 0x2592 #MEDIUM SHADE
|
||||
0xB2 0x2593 #DARK SHADE
|
||||
0xB3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xB4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xB5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xB6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xB7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xB8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xB9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xBA 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xBB 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xBC 0x255D #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xBD 0x255C #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xBE 0x255B #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xBF 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xC0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xC1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xC2 0x252C #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xC3 0x251C #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xC4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xC5 0x253C #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xC6 0x255E #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xC7 0x255F #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xC8 0x255A #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xC9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xCA 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xCB 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xCC 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xCD 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xCE 0x256C #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xCF 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xD0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xD1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xD2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xD3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xD4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xD5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xD6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xD7 0x256B #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xD8 0x256A #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xD9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xDA 0x250C #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xDB 0x2588 #FULL BLOCK
|
||||
0xDC 0x2584 #LOWER HALF BLOCK
|
||||
0xDD 0x258C #LEFT HALF BLOCK
|
||||
0xDE 0x2590 #RIGHT HALF BLOCK
|
||||
0xDF 0x2580 #UPPER HALF BLOCK
|
||||
0xE0 0x03B1 #GREEK SMALL LETTER ALPHA
|
||||
0xE1 0x03B2 #GREEK SMALL LETTER BETA
|
||||
0xE2 0x0194 #LATIN CAPITAL LETTER GAMMA
|
||||
0xE3 0x03C0 #GREEK SMALL LETTER PI
|
||||
0xE4 0x03A3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xE5 0x03C3 #GREEK SMALL LETTER SIGMA
|
||||
0xE6 0x03BC #GREEK SMALL LETTER MU
|
||||
0xE7 0x03C4 #GREEK SMALL LETTER TAU
|
||||
0xE8 0x03A6 #GREEK CAPITAL LETTER PHI
|
||||
0xE9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xEA 0x03A9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xEB 0x03B4 #GREEK SMALL LETTER DELTA
|
||||
0xEC 0x221E #INFINITY
|
||||
0xED 0x03C6 #GREEK SMALL LETTER PHI
|
||||
0xEE 0x2208 #ELEMENT OF
|
||||
0xEF 0x2229 #INTERSECTION
|
||||
0xF0 0x224D #EQUIVALENT TO
|
||||
0xF1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xF2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xF3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xF4 0x2320 #TOP HALF INTEGRAL
|
||||
0xF5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xF6 0x00F7 #DIVISION SIGN
|
||||
0xF7 0x2248 #ALMOST EQUAL TO
|
||||
0xF8 0x00B0 #DEGREE SIGN
|
||||
0xF9 0x2219 #BULLET OPERATOR
|
||||
0xFA 0x00B7 #MIDDLE DOT
|
||||
0xFB 0x221A #SQUARE ROOT
|
||||
0xFC 0x207F #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xFD 0x00B2 #SUPERSCRIPT TWO
|
||||
0xFE 0x25A0 #BLACK SQUARE
|
||||
0xFF 0x00A0 #NO-BREAK SPACE
|
|
@ -0,0 +1,226 @@
|
|||
KOI8-R
|
||||
"koi8-r"
|
||||
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x8B 0x2580 # UPPER HALF BLOCK
|
||||
0x8C 0x2584 # LOWER HALF BLOCK
|
||||
0x8D 0x2588 # FULL BLOCK
|
||||
0x8E 0x258C # LEFT HALF BLOCK
|
||||
0x8F 0x2590 # RIGHT HALF BLOCK
|
||||
0x90 0x2591 # LIGHT SHADE
|
||||
0x91 0x2592 # MEDIUM SHADE
|
||||
0x92 0x2593 # DARK SHADE
|
||||
0x93 0x2320 # TOP HALF INTEGRAL
|
||||
0x94 0x25A0 # BLACK SQUARE
|
||||
0x95 0x2022 # BULLET
|
||||
0x96 0x221A # SQUARE ROOT
|
||||
0x97 0x2248 # ALMOST EQUAL TO
|
||||
0x98 0x2264 # LESS-THAN OR EQUAL TO
|
||||
0x99 0x2265 # GREATER-THAN OR EQUAL TO
|
||||
0x9A 0x00A0 # NO-BREAK SPACE
|
||||
0x9B 0x2321 # BOTTOM HALF INTEGRAL
|
||||
0x9C 0x00B0 # DEGREE SIGN
|
||||
0x9D 0x00B2 # SUPERSCRIPT TWO
|
||||
0x9E 0x00B7 # MIDDLE DOT
|
||||
0x9F 0x00F7 # DIVISION SIGN
|
||||
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xA4 0x2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xA6 0x2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xA7 0x2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xAD 0x255C # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xB4 0x2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xB6 0x2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xB7 0x2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBD 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xBF 0x00A9 # COPYRIGHT SIGN
|
||||
0xC0 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xC1 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xC8 0x0445 # CYRILLIC SMALL LETTER HA
|
||||
0xC9 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xCB 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xCC 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xCD 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xCE 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xCF 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xD0 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xD1 0x044F # CYRILLIC SMALL LETTER YA
|
||||
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xD5 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xDC 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
|
||||
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
|
@ -0,0 +1,137 @@
|
|||
KOI8-RU
|
||||
"koi8-ru"
|
||||
#
|
||||
# UNIX Belarusian and Ukrainian (koi8-u) to UNICODE translation table
|
||||
#
|
||||
# Based on koi8u_uni.tbl from lynx 2.8.2 distribution
|
||||
# by porokh
|
||||
# Belarusian language support by Yevgeny Gromov <yevgeny@tut.by>
|
||||
#
|
||||
0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x8B 0x2580 # UPPER HALF BLOCK
|
||||
0x8C 0x2584 # LOWER HALF BLOCK
|
||||
0x8D 0x2588 # FULL BLOCK
|
||||
0x8E 0x258C # LEFT HALF BLOCK
|
||||
0x8F 0x2590 # RIGHT HALF BLOCK
|
||||
0x90 0x2591 # LIGHT SHADE
|
||||
0x91 0x2592 # MEDIUM SHADE
|
||||
0x92 0x2593 # DARK SHADE
|
||||
0x93 0x2320 # TOP HALF INTEGRAL
|
||||
0x94 0x25A0 # BLACK SQUARE
|
||||
0x95 0x2219 # BULLET OPERATOR
|
||||
0x96 0x221A # SQUARE ROOT
|
||||
0x97 0x2248 # ALMOST EQUAL TO
|
||||
0x98 0x2264 # LESS THAN OR EQUAL TO
|
||||
0x99 0x2265 # GREATER THAN OR EQUAL TO
|
||||
0x9A 0x00A0 # NO-BREAK SPACE
|
||||
0x9B 0x2321 # BOTTOM HALF INTEGRAL
|
||||
0x9C 0x00B0 # DEGREE SIGN
|
||||
0x9D 0x00B2 # SUPERSCRIPT TWO
|
||||
0x9E 0x00B7 # MIDDLE DOT
|
||||
0x9F 0x00F7 # DIVISION SIGN
|
||||
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xA4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xA6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xA7 0x0457 # CYRILLIC SMALL LETTER YI (UKRAINIAN)
|
||||
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xAD 0x0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0xAE 0x045E # CYRILLIC SMALL LETTER SHORT U
|
||||
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xB4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xB6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xB7 0x0407 # CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
|
||||
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBD 0x0490 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0xBE 0x040E # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xBF 0x00A9 # COPYRIGHT SIGN
|
||||
0xC0 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xC1 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xC8 0x0445 # CYRILLIC SMALL LETTER KHA
|
||||
0xC9 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xCB 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xCC 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xCD 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xCE 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xCF 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xD0 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xD1 0x044F # CYRILLIC SMALL LETTER YA
|
||||
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xD5 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xDC 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xE8 0x0425 # CYRILLIC CAPITAL LETTER KHA
|
||||
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
|
@ -0,0 +1,136 @@
|
|||
KOI8-U
|
||||
"koi8-u"
|
||||
#
|
||||
# UNIX Ukrainian (koi8-u) to UNICODE translation table
|
||||
#
|
||||
# Based on koi8u_uni.tbl from lynx 2.8.2 distribution
|
||||
# by porokh
|
||||
#
|
||||
0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x8B 0x2580 # UPPER HALF BLOCK
|
||||
0x8C 0x2584 # LOWER HALF BLOCK
|
||||
0x8D 0x2588 # FULL BLOCK
|
||||
0x8E 0x258C # LEFT HALF BLOCK
|
||||
0x8F 0x2590 # RIGHT HALF BLOCK
|
||||
0x90 0x2591 # LIGHT SHADE
|
||||
0x91 0x2592 # MEDIUM SHADE
|
||||
0x92 0x2593 # DARK SHADE
|
||||
0x93 0x2320 # TOP HALF INTEGRAL
|
||||
0x94 0x25A0 # BLACK SQUARE
|
||||
0x95 0x2219 # BULLET OPERATOR
|
||||
0x96 0x221A # SQUARE ROOT
|
||||
0x97 0x2248 # ALMOST EQUAL TO
|
||||
0x98 0x2264 # LESS THAN OR EQUAL TO
|
||||
0x99 0x2265 # GREATER THAN OR EQUAL TO
|
||||
0x9A 0x00A0 # NO-BREAK SPACE
|
||||
0x9B 0x2321 # BOTTOM HALF INTEGRAL
|
||||
0x9C 0x00B0 # DEGREE SIGN
|
||||
0x9D 0x00B2 # SUPERSCRIPT TWO
|
||||
0x9E 0x00B7 # MIDDLE DOT
|
||||
0x9F 0x00F7 # DIVISION SIGN
|
||||
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xA4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xA6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xA7 0x0457 # CYRILLIC SMALL LETTER YI (UKRAINIAN)
|
||||
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xAD 0x0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xB4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xB6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xB7 0x0407 # CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
|
||||
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBD 0x0490 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xBF 0x00A9 # COPYRIGHT SIGN
|
||||
0xC0 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xC1 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xC8 0x0445 # CYRILLIC SMALL LETTER KHA
|
||||
0xC9 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xCB 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xCC 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xCD 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xCE 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xCF 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xD0 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xD1 0x044F # CYRILLIC SMALL LETTER YA
|
||||
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xD5 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xDC 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xE8 0x0425 # CYRILLIC CAPITAL LETTER KHA
|
||||
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,276 @@
|
|||
Mac latin 2
|
||||
"x-mac-ce", "mac-ce", "maclatin2", "10029"
|
||||
#
|
||||
# Name: cp10029_MacLatin2 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@microsoft.com>
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp10029_MacLatin2 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp10029_MacLatin2 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x81 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
|
||||
0x82 0x0101 #LATIN SMALL LETTER A WITH MACRON
|
||||
0x83 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x84 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0x85 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x86 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x87 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0x88 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0x89 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0x8A 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x8B 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0x8C 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x8D 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0x8E 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x8F 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x90 0x017A #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0x91 0x010E #LATIN CAPITAL LETTER D WITH CARON
|
||||
0x92 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0x93 0x010F #LATIN SMALL LETTER D WITH CARON
|
||||
0x94 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
|
||||
0x95 0x0113 #LATIN SMALL LETTER E WITH MACRON
|
||||
0x96 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0x97 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0x98 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0x99 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x9A 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x9B 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0x9C 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0x9D 0x011A #LATIN CAPITAL LETTER E WITH CARON
|
||||
0x9E 0x011B #LATIN SMALL LETTER E WITH CARON
|
||||
0x9F 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xA0 0x2020 #DAGGER
|
||||
0xA1 0x00B0 #DEGREE SIGN
|
||||
0xA2 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A7 #SECTION SIGN
|
||||
0xA5 0x2022 #BULLET
|
||||
0xA6 0x00B6 #PILCROW SIGN
|
||||
0xA7 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xA8 0x00AE #REGISTERED SIGN
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x2122 #TRADE MARK SIGN
|
||||
0xAB 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xAC 0x00A8 #DIAERESIS
|
||||
0xAD 0x2260 #NOT EQUAL TO
|
||||
0xAE 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xAF 0x012E #LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xB0 0x012F #LATIN SMALL LETTER I WITH OGONEK
|
||||
0xB1 0x012A #LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xB2 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xB3 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xB4 0x012B #LATIN SMALL LETTER I WITH MACRON
|
||||
0xB5 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xB6 0x2202 #PARTIAL DIFFERENTIAL
|
||||
0xB7 0x2211 #N-ARY SUMMATION
|
||||
0xB8 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0xB9 0x013B #LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xBA 0x013C #LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xBB 0x013D #LATIN CAPITAL LETTER L WITH CARON
|
||||
0xBC 0x013E #LATIN SMALL LETTER L WITH CARON
|
||||
0xBD 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0xBE 0x013A #LATIN SMALL LETTER L WITH ACUTE
|
||||
0xBF 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xC0 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xC1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xC2 0x00AC #NOT SIGN
|
||||
0xC3 0x221A #SQUARE ROOT
|
||||
0xC4 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xC5 0x0147 #LATIN CAPITAL LETTER N WITH CARON
|
||||
0xC6 0x2206 #INCREMENT
|
||||
0xC7 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC8 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC9 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0xCA 0x00A0 #NO-BREAK SPACE
|
||||
0xCB 0x0148 #LATIN SMALL LETTER N WITH CARON
|
||||
0xCC 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0xCD 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xCE 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0xCF 0x014C #LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD0 0x2013 #EN DASH
|
||||
0xD1 0x2014 #EM DASH
|
||||
0xD2 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0xD3 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0xD4 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0xD5 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0xD6 0x00F7 #DIVISION SIGN
|
||||
0xD7 0x25CA #LOZENGE
|
||||
0xD8 0x014D #LATIN SMALL LETTER O WITH MACRON
|
||||
0xD9 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xDA 0x0155 #LATIN SMALL LETTER R WITH ACUTE
|
||||
0xDB 0x0158 #LATIN CAPITAL LETTER R WITH CARON
|
||||
0xDC 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0xDD 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0xDE 0x0159 #LATIN SMALL LETTER R WITH CARON
|
||||
0xDF 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0xE0 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
|
||||
0xE1 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xE2 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0xE3 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0xE4 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xE5 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xE6 0x015B #LATIN SMALL LETTER S WITH ACUTE
|
||||
0xE7 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xE8 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0xE9 0x0165 #LATIN SMALL LETTER T WITH CARON
|
||||
0xEA 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xEB 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xEC 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0xED 0x016A #LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xEE 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xEF 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xF0 0x016B #LATIN SMALL LETTER U WITH MACRON
|
||||
0xF1 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xF2 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xF3 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0xF4 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xF5 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xF6 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xF7 0x0173 #LATIN SMALL LETTER U WITH OGONEK
|
||||
0xF8 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xF9 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFA 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xFB 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xFC 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xFD 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xFE 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xFF 0x02C7 #CARON
|
||||
|
|
@ -0,0 +1,258 @@
|
|||
MacRoman 2000
|
||||
"x-mac", "mac", "macroman"
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x81 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x82 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x83 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x84 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x85 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x86 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x87 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0x88 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x89 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x8A 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x8B 0x00E3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0x8C 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x8D 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x8E 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x8F 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x90 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x91 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x92 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0x93 0x00EC #LATIN SMALL LETTER I WITH GRAVE
|
||||
0x94 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x95 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x96 0x00F1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0x97 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0x98 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x99 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x9A 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x9B 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0x9C 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0x9D 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x9E 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x9F 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xA0 0x2020 #DAGGER
|
||||
0xA1 0x00B0 #DEGREE SIGN
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A7 #SECTION SIGN
|
||||
0xA5 0x2022 #PUCE
|
||||
0xA6 0x00B6 #PILCROW SIGN
|
||||
0xA7 0x00DF #LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
0xA8 0x00AE #REGISTERED SIGN
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x2122 #TRADE MARK SIGN
|
||||
0xAB 0x00B4 #ACUTE ACCENT
|
||||
0xAC 0x00A8 #DIAERESIS
|
||||
0xAD 0x2260 #NOT EQUAL TO
|
||||
0xAE 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xAF 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xB0 0x221E #INFINITY
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xB3 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xB4 0x00A5 #YEN SIGN
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x2202 #PARTIAL DIFFERENTIAL
|
||||
0xB7 0x2211 #N-ARY SUMMATION
|
||||
0xB8 0x220F #N-ARY PRODUCT
|
||||
0xB9 0x03C0 #GREEK SMALL LETTER PI
|
||||
0xBA 0x222B #INTEGRAL
|
||||
0xBB 0x00AA #FEMININE ORDINAL INDICATOR
|
||||
0xBC 0x00BA #MASCULINE ORDINAL INDICATOR
|
||||
0xBD 0x03A9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xBE 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xBF 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xC0 0x00BF #INVERTED QUESTION MARK
|
||||
0xC1 0x00A1 #INVERTED EXCLAMATION MARK
|
||||
0xC2 0x00AC #NOT SIGN
|
||||
0xC3 0x221A #SQUARE ROOT
|
||||
0xC4 0x0192 #LETTRE MINUSCULE LATINE F CEDILLE
|
||||
0xC5 0x2248 #ALMOST EQUAL TO
|
||||
0xC6 0x0394 #GREEK CAPITAL LETTER DELTA
|
||||
0xC7 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC8 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC9 0x2026 #MIDLINE HORIZONTAL ELLIPSIS
|
||||
0xCA 0x00A0 #NO-BREAK SPACE
|
||||
0xCB 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xCC 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xCD 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xCE 0x0152 #LATIN CAPITAL LIGATURE OE
|
||||
0xCF 0x0153 #LATIN SMALL LIGATURE OE
|
||||
0xD0 0x2013 #EN DASH
|
||||
0xD1 0x2014 #EM DASH
|
||||
0xD2 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0xD3 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0xD4 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0xD5 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0xD6 0x00F7 #DIVISION SIGN
|
||||
0xD7 0x25CA #LOZENGE
|
||||
0xD8 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0xD9 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xDA 0x2044 #FRACTION SLASH
|
||||
0xDB 0x20AC #SYMBOLE EURO
|
||||
0xDC 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0xDD 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0xDE 0xFB01 #LATIN SMALL LIGATURE FI
|
||||
0xDF 0xFB02 #LATIN SMALL LIGATURE FL
|
||||
0xE0 0x2021 #DOUBLE DAGGER
|
||||
0xE1 0x00B7 #MIDDLE DOT
|
||||
0xE2 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0xE3 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0xE4 0x2030 #PER MILLE SIGN
|
||||
0xE5 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xE6 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xE7 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xE8 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xE9 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xEA 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xEB 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xEC 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xED 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xEE 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xEF 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xF0 0xF8FF #Mac Logo (in Private Use Area)
|
||||
0xF1 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xF2 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xF3 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xF4 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xF5 0x0131 #LATIN SMALL LETTER I DOTLESS
|
||||
0xF6 0x02C6 #LETTRE MODIFICATIVE ACCENT CIRCONFLEXE
|
||||
0xF7 0x02DC #PETIT TILDE
|
||||
0xF8 0x00AF #MACRON
|
||||
0xF9 0x02D8 #BREVE
|
||||
0xFA 0x02D9 #DOT ABOVE
|
||||
0xFB 0x02DA #RING ABOVE
|
||||
0xFC 0x00B8 #CEDILLA
|
||||
0xFD 0x02DD #DOUBLE ACUTE ACCENT
|
||||
0xFE 0x02DB #OGONEK
|
||||
0xFF 0x02C7 #CARON
|
|
@ -0,0 +1,264 @@
|
|||
TCVN-5712 (Vietnamese)
|
||||
"TCVN-5712", "TCVN", "TCVN-0", "TCVN-1"
|
||||
0x00 0x0000 # NUL
|
||||
0x00 0x0000 # NULL (NUL)
|
||||
0x01 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x02 0x1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
|
||||
0x03 0x0003 # END OF TEXT (ETX)
|
||||
0x04 0x1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
|
||||
0x05 0x1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
|
||||
0x06 0x1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
|
||||
0x07 0x0007 # BELL (BEL)
|
||||
0x08 0x0008 # BACKSPACE (BS)
|
||||
0x09 0x0009 # CHARACTER TABULATION (HT)
|
||||
0x0A 0x000A # LINE FEED (LF)
|
||||
0x0B 0x000B # LINE TABULATION (VT)
|
||||
0x0C 0x000C # FORM FEED (FF)
|
||||
0x0D 0x000D # CARRIAGE RETURN (CR)
|
||||
0x0E 0x000E # SHIFT OUT (SO)
|
||||
0x0F 0x000F # SHIFT IN (SI)
|
||||
0x10 0x0010 # DATALINK ESCAPE (DLE)
|
||||
0x11 0x1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
|
||||
0x12 0x1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
|
||||
0x13 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
|
||||
0x14 0x1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
|
||||
0x15 0x1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
|
||||
0x16 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x17 0x1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
|
||||
0x18 0x0018 # CANCEL (CAN)
|
||||
0x19 0x0019 # END OF MEDIUM (EM)
|
||||
0x1A 0x001A # SUBSTITUTE (SUB)
|
||||
0x1B 0x001B # ESCAPE (ESC)
|
||||
0x1C 0x001C # FILE SEPARATOR (IS4)
|
||||
0x1D 0x001D # GROUP SEPARATOR (IS3)
|
||||
0x1E 0x001E # RECORD SEPARATOR (IS2)
|
||||
0x1F 0x001F # UNIT SEPARATOR (IS1)
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE (DEL)
|
||||
0x80 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x81 0x1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
|
||||
0x82 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x83 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x84 0x1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
|
||||
0x85 0x1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
|
||||
0x86 0x1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
|
||||
0x87 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x88 0x1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
|
||||
0x89 0x1EBC # LATIN CAPITAL LETTER E WITH TILDE
|
||||
0x8A 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x8B 0x1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
|
||||
0x8C 0x1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
|
||||
0x8D 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x8E 0x1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
|
||||
0x8F 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
|
||||
0x90 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x91 0x1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
|
||||
0x92 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x93 0x1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
|
||||
0x94 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x95 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x96 0x1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
|
||||
0x97 0x1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
|
||||
0x98 0x1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
|
||||
0x99 0x1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
|
||||
0x9A 0x1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
|
||||
0x9B 0x1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
|
||||
0x9C 0x1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
|
||||
0x9D 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x9E 0x1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
|
||||
0x9F 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xA2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xA3 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xA4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xA5 0x01A0 # LATIN CAPITAL LETTER O WITH HOOK
|
||||
0xA6 0x01AF # LATIN CAPITAL LETTER U WITH HORN
|
||||
0xA7 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xA8 0x0103 # LATIN SMALL LETTER A WITH BREVE
|
||||
0xA9 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xAA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xAB 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xAC 0x01A1 # LATIN SMALL LETTER O WITH HOOK
|
||||
0xAD 0x01B0 # LATIN SMALL LETTER U WITH HORN
|
||||
0xAE 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xAF 0x1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
|
||||
0xB0 0x0300 # COMBINING GRAVE ACCENT
|
||||
0xB1 0x0309 # COMBINING HOOK ABOVE
|
||||
0xB2 0x0303 # COMBINING TILDE
|
||||
0xB3 0x0301 # COMBINING ACUTE ACCENT
|
||||
0xB4 0x0323 # COMBINING DOT BELOW
|
||||
0xB5 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xB6 0x1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
|
||||
0xB7 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xB8 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xB9 0x1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
|
||||
0xBA 0x1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
|
||||
0xBB 0x1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
|
||||
0xBC 0x1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
|
||||
0xBD 0x1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
|
||||
0xBE 0x1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
|
||||
0xBF 0x1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
|
||||
0xC0 0x1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
|
||||
0xC1 0x1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
|
||||
0xC2 0x1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xC3 0x1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
|
||||
0xC4 0x1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
|
||||
0xC5 0x1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
|
||||
0xC6 0x1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
|
||||
0xC7 0x1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
|
||||
0xC8 0x1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xC9 0x1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
|
||||
0xCA 0x1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
|
||||
0xCB 0x1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
|
||||
0xCC 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xCD 0x1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xCE 0x1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
|
||||
0xCF 0x1EBD # LATIN SMALL LETTER E WITH TILDE
|
||||
0xD0 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xD1 0x1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
|
||||
0xD2 0x1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
|
||||
0xD3 0x1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xD4 0x1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
|
||||
0xD5 0x1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
|
||||
0xD6 0x1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
|
||||
0xD7 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xD8 0x1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
|
||||
0xD9 0x1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
|
||||
0xDA 0x1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
|
||||
0xDB 0x1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
|
||||
0xDC 0x0129 # LATIN SMALL LETTER I WITH TILDE
|
||||
0xDD 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xDE 0x1ECB # LATIN SMALL LETTER I WITH DOT BELOW
|
||||
0xDF 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xE0 0x1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xE1 0x1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
|
||||
0xE2 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xE3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xE4 0x1ECD # LATIN SMALL LETTER O WITH DOT BELOW
|
||||
0xE5 0x1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
|
||||
0xE6 0x1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xE7 0x1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
|
||||
0xE8 0x1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
|
||||
0xE9 0x1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
|
||||
0xEA 0x1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
|
||||
0xEB 0x1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
|
||||
0xEC 0x1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
|
||||
0xED 0x1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
|
||||
0xEE 0x1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
|
||||
0xEF 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xF0 0x1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
|
||||
0xF1 0x1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
|
||||
0xF2 0x0169 # LATIN SMALL LETTER U WITH TILDE
|
||||
0xF3 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xF4 0x1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
|
||||
0xF5 0x1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
|
||||
0xF6 0x1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
|
||||
0xF7 0x1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
|
||||
0xF8 0x1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
|
||||
0xF9 0x1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
|
||||
0xFA 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
|
||||
0xFB 0x1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
|
||||
0xFC 0x1EF9 # LATIN SMALL LETTER Y WITH TILDE
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
|
||||
0xFF 0x1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
|
||||
|
||||
# compatibility
|
||||
0xA7 0x00D0 # letter ETH
|
||||
0xAE 0x00F0
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/awk -f
|
||||
function hex2dec(xx) {
|
||||
nn = 0;
|
||||
while (xx != "") {
|
||||
aa = substr(xx, 1, 1);
|
||||
ii = index("0123456789ABCDEF", aa);
|
||||
if (!ii) ii = index("0123456789abcdef", aa);
|
||||
if (!ii) return -1;
|
||||
nn = nn * 16 + ii - 1;
|
||||
xx = substr(xx, 2);
|
||||
}
|
||||
return nn;
|
||||
}
|
||||
|
||||
/^U/{
|
||||
gsub("\\\\", "\\\\");
|
||||
printf("0x%s\n", substr($0, 3));
|
||||
}
|
||||
/^0x[0-9a-fA-F]*[ ]/{
|
||||
c = hex2dec(substr($1, 3));
|
||||
for (i = 2; i <= NF; i++) {
|
||||
if (substr($i, 1, 1) == "#") break;
|
||||
if (p = index($i, "-")) {
|
||||
p1 = hex2dec(substr($i, 3, p - 3));
|
||||
p2 = hex2dec(substr($i, p + 3));
|
||||
} else {
|
||||
p1 = hex2dec(substr($i, 3));
|
||||
p2 = p1;
|
||||
}
|
||||
for (p = p1; p <= p2; p++) printf("0x%04x:%c\n", p, c);
|
||||
}
|
||||
}
|
||||
BEGIN{
|
||||
printf("0x00a0:\\001\n");
|
||||
printf("0x202f:\\001\n");
|
||||
printf("0x00ad:\n");
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,3 @@
|
|||
Unicode UTF-8
|
||||
"utf-8", "utf8"
|
||||
# Handled specially in charsets.c
|
|
@ -0,0 +1,264 @@
|
|||
VISCII
|
||||
"VISCII", "VISCII-1", "VISCII 1.1", "VISCII-1.1", "VISCII1.1-1"
|
||||
0x00 0x0000 # NUL
|
||||
0x00 0x0000 # NULL (NUL)
|
||||
0x01 0x0001 # START OF HEADING (SOH)
|
||||
0x02 0x1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
|
||||
0x03 0x0003 # END OF TEXT (ETX)
|
||||
0x04 0x0004 # END OF TRANSMISSION (EOT)
|
||||
0x05 0x1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
|
||||
0x06 0x1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
|
||||
0x07 0x0007 # BELL (BEL)
|
||||
0x08 0x0008 # BACKSPACE (BS)
|
||||
0x09 0x0009 # CHARACTER TABULATION (HT)
|
||||
0x0A 0x000A # LINE FEED (LF)
|
||||
0x0B 0x000B # LINE TABULATION (VT)
|
||||
0x0C 0x000C # FORM FEED (FF)
|
||||
0x0D 0x000D # CARRIAGE RETURN (CR)
|
||||
0x0E 0x000E # SHIFT OUT (SO)
|
||||
0x0F 0x000F # SHIFT IN (SI)
|
||||
0x10 0x0010 # DATALINK ESCAPE (DLE)
|
||||
0x11 0x0011 # DEVICE CONTROL ONE (DC1)
|
||||
0x12 0x0012 # DEVICE CONTROL TWO (DC2)
|
||||
0x13 0x0013 # DEVICE CONTROL THREE (DC3)
|
||||
0x14 0x1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE (NAK)
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE (SYN)
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK (ETB)
|
||||
0x18 0x0018 # CANCEL (CAN)
|
||||
0x19 0x1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
|
||||
0x1A 0x001A # SUBSTITUTE (SUB)
|
||||
0x1B 0x001B # ESCAPE (ESC)
|
||||
0x1C 0x001C # FILE SEPARATOR (IS4)
|
||||
0x1D 0x001D # GROUP SEPARATOR (IS3)
|
||||
0x1E 0x1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
|
||||
0x1F 0x001F # UNIT SEPARATOR (IS1)
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE (DEL)
|
||||
0x80 0x1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
|
||||
0x81 0x1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
|
||||
0x82 0x1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
|
||||
0x83 0x1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
|
||||
0x84 0x1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
|
||||
0x85 0x1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
|
||||
0x86 0x1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0x87 0x1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
|
||||
0x88 0x1EBC # LATIN CAPITAL LETTER E WITH TILDE
|
||||
0x89 0x1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
|
||||
0x8A 0x1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
|
||||
0x8B 0x1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
|
||||
0x8C 0x1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0x8D 0x1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
|
||||
0x8E 0x1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
|
||||
0x8F 0x1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
|
||||
0x90 0x1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
|
||||
0x91 0x1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0x92 0x1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
|
||||
0x93 0x1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
|
||||
0x94 0x1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
|
||||
0x95 0x1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
|
||||
0x96 0x1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
|
||||
0x97 0x1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
|
||||
0x98 0x1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
|
||||
0x99 0x1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
|
||||
0x9A 0x1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
|
||||
0x9B 0x1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
|
||||
0x9C 0x1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
|
||||
0x9D 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
|
||||
0x9E 0x1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
|
||||
0x9F 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
|
||||
0xA0 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xA1 0x1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
|
||||
0xA2 0x1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
|
||||
0xA3 0x1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
|
||||
0xA4 0x1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
|
||||
0xA5 0x1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
|
||||
0xA6 0x1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xA7 0x1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
|
||||
0xA8 0x1EBD # LATIN SMALL LETTER E WITH TILDE
|
||||
0xA9 0x1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
|
||||
0xAA 0x1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
|
||||
0xAB 0x1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
|
||||
0xAC 0x1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xAD 0x1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
|
||||
0xAE 0x1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
|
||||
0xAF 0x1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
|
||||
0xB0 0x1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
|
||||
0xB1 0x1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
|
||||
0xB2 0x1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
|
||||
0xB3 0x1EE0 # LATIN CAPITAL LETTER O WITH HOOK AND TILDE
|
||||
0xB4 0x01A0 # LATIN CAPITAL LETTER O WITH HOOK
|
||||
0xB5 0x1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
|
||||
0xB6 0x1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
|
||||
0xB7 0x1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
|
||||
0xB8 0x1ECB # LATIN SMALL LETTER I WITH DOT BELOW
|
||||
0xB9 0x1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
|
||||
0xBA 0x1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
|
||||
0xBB 0x1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
|
||||
0xBC 0x1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
|
||||
0xBD 0x01A1 # LATIN SMALL LETTER O WITH HORN
|
||||
0xBE 0x1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
|
||||
0xBF 0x01AF # LATIN CAPITAL LETTER U WITH HORN
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
|
||||
0xC5 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC6 0x1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
|
||||
0xC7 0x1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
|
||||
0xCF 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
|
||||
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
|
||||
0xD6 0x1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
|
||||
0xD7 0x1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
|
||||
0xD8 0x1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x1EF9 # LATIN SMALL LETTER Y WITH TILDE
|
||||
0xDC 0x1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
|
||||
0xDF 0x01B0 # LATIN SMALL LETTER U WITH HORN
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
|
||||
0xE5 0x0103 # LATIN SMALL LETTER A WITH BREVE
|
||||
0xE6 0x1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
|
||||
0xE7 0x1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x0129 # LATIN SMALL LETTER I WITH TILDE
|
||||
0xEF 0x1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
|
||||
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
|
||||
0xF7 0x1ECD # LATIN SMALL LETTER O WITH DOT BELOW
|
||||
0xF8 0x1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x0169 # LATIN SMALL LETTER U WITH TILDE
|
||||
0xFC 0x1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
|
||||
0xFF 0x1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
|
||||
|
||||
# compatibility
|
||||
0xD0 0x00D0 # letter ETH
|
||||
0xF0 0x00F0
|
||||
|
|
@ -0,0 +1,245 @@
|
|||
|
||||
@BOTTOM@
|
||||
|
||||
/* */
|
||||
#undef VERSION
|
||||
|
||||
/* */
|
||||
#undef HAVE_OPENMP
|
||||
|
||||
/* */
|
||||
#undef HAVE_LONG_LONG
|
||||
|
||||
/* */
|
||||
#undef HAVE_POINTER_COMPARISON_BUG
|
||||
|
||||
/* */
|
||||
#undef HAVE_MAXINT_CONVERSION_BUG
|
||||
|
||||
/* */
|
||||
#undef HAVE_STDLIB_H_X
|
||||
|
||||
/* */
|
||||
#undef HAVE_SOCKLEN_T
|
||||
|
||||
/* */
|
||||
#undef HAVE_VOLATILE
|
||||
|
||||
/* */
|
||||
#undef HAVE_RESTRICT
|
||||
|
||||
/* */
|
||||
#undef HAVE___RESTRICT
|
||||
|
||||
/* */
|
||||
#undef HAVE_ERRNO
|
||||
|
||||
/* */
|
||||
#undef C_BIG_ENDIAN
|
||||
|
||||
/* */
|
||||
#undef C_LITTLE_ENDIAN
|
||||
|
||||
/* */
|
||||
#undef RENAME_OVER_EXISTING_FILES
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRLEN
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRNLEN
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRCPY
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRNCPY
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRCHR
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRRCHR
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRCMP
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRNCMP
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRCSPN
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRSPN
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRSTR
|
||||
|
||||
/* */
|
||||
#undef HAVE_MEMCMP
|
||||
|
||||
/* */
|
||||
#undef HAVE_MEMCHR
|
||||
|
||||
/* */
|
||||
#undef HAVE_MEMRCHR
|
||||
|
||||
/* */
|
||||
#undef HAVE_MEMCPY
|
||||
|
||||
/* */
|
||||
#undef HAVE_MEMMOVE
|
||||
|
||||
/* */
|
||||
#undef HAVE_MEMSET
|
||||
|
||||
/* */
|
||||
#undef HAVE_MEMMEM
|
||||
|
||||
/* */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
/* */
|
||||
#undef HAVE_SIGFILLSET
|
||||
|
||||
/* */
|
||||
#undef HAVE_SIGSETJMP
|
||||
|
||||
/* */
|
||||
#undef HAVE_GCC_ASSEMBLER
|
||||
|
||||
/* */
|
||||
#undef HAVE___BUILTIN_ADD_OVERFLOW
|
||||
|
||||
/* */
|
||||
#undef HAVE___BUILTIN_CLZ
|
||||
|
||||
/* */
|
||||
#undef DEBUGLEVEL
|
||||
|
||||
/* */
|
||||
#undef HAVE_CLOCK_GETTIME
|
||||
|
||||
/* */
|
||||
#undef HAVE_GETHOSTBYNAME
|
||||
|
||||
/* */
|
||||
#undef HAVE_GETHOSTBYNAME_BUG
|
||||
|
||||
/* */
|
||||
#undef SUPPORT_IPV6
|
||||
|
||||
/* */
|
||||
#undef SUPPORT_IPV6_SCOPE
|
||||
|
||||
/* */
|
||||
#undef HAVE_POW
|
||||
|
||||
/* */
|
||||
#undef HAVE_POWF
|
||||
|
||||
/* */
|
||||
#undef JS
|
||||
|
||||
/* */
|
||||
#undef CHCEME_FLEXI_LIBU
|
||||
|
||||
/* */
|
||||
#undef HAVE_PCRE
|
||||
|
||||
/* */
|
||||
#undef HAVE_REGEX
|
||||
|
||||
/* */
|
||||
#undef ENABLE_UTF8
|
||||
|
||||
/* */
|
||||
#undef HAVE_BEGINTHREAD
|
||||
|
||||
/* */
|
||||
#undef HAVE_PTHREADS
|
||||
|
||||
/* */
|
||||
#undef X2
|
||||
|
||||
/* */
|
||||
#undef HAVE_XSETLOCALE
|
||||
|
||||
/* */
|
||||
#undef HAVE_SSL
|
||||
|
||||
/* */
|
||||
#undef HAVE_OPENSSL
|
||||
|
||||
/* */
|
||||
#undef HAVE_NSS
|
||||
|
||||
/* */
|
||||
#undef HAVE_CRYPTO_SET_MEM_FUNCTIONS_1
|
||||
|
||||
/* */
|
||||
#undef HAVE_CRYPTO_SET_MEM_FUNCTIONS_2
|
||||
|
||||
/* */
|
||||
#undef HAVE_ZLIB
|
||||
|
||||
/* */
|
||||
#undef HAVE_BROTLI
|
||||
|
||||
/* */
|
||||
#undef HAVE_ZSTD
|
||||
|
||||
/* */
|
||||
#undef HAVE_BZIP2
|
||||
|
||||
/* */
|
||||
#undef HAVE_LZMA
|
||||
|
||||
/* */
|
||||
#undef HAVE_LZIP
|
||||
|
||||
/* */
|
||||
#undef G
|
||||
|
||||
/* */
|
||||
#undef GRDRV_SVGALIB
|
||||
|
||||
/* */
|
||||
#undef GRDRV_FB
|
||||
|
||||
/* */
|
||||
#undef GRDRV_DIRECTFB
|
||||
|
||||
/* */
|
||||
#undef GRDRV_X
|
||||
|
||||
/* */
|
||||
#undef GRDRV_SDL
|
||||
|
||||
/* */
|
||||
#undef GRDRV_PMSHELL
|
||||
|
||||
/* */
|
||||
#undef GRDRV_ATHEOS
|
||||
|
||||
/* */
|
||||
#undef GRDRV_HAIKU
|
||||
|
||||
/* */
|
||||
#undef GRDRV_GRX
|
||||
|
||||
/* Have freetype */
|
||||
#undef HAVE_FREETYPE
|
||||
|
||||
/* Jpeg by Clock */
|
||||
#undef HAVE_JPEG
|
||||
|
||||
/* Tiff by Brain */
|
||||
#undef HAVE_TIFF
|
||||
|
||||
/* SVG */
|
||||
#undef HAVE_SVG
|
||||
|
||||
/* Gpm_Event has wdx and wdy */
|
||||
#undef HAVE_WDX_WDY
|
|
@ -0,0 +1,228 @@
|
|||
dnl aclocal.m4 generated automatically by aclocal 1.4-p6
|
||||
|
||||
dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
dnl PARTICULAR PURPOSE.
|
||||
|
||||
# Do all the work for Automake. This macro actually does too much --
|
||||
# some checks are only needed if your package does certain things.
|
||||
# But this isn't really a big deal.
|
||||
|
||||
# serial 1
|
||||
|
||||
dnl Usage:
|
||||
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
|
||||
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])
|
||||
PACKAGE=[$1]
|
||||
AC_SUBST(PACKAGE)
|
||||
VERSION=[$2]
|
||||
AC_SUBST(VERSION)
|
||||
dnl test to see if srcdir already configured
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
ifelse([$3],,
|
||||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
|
||||
AC_REQUIRE([AM_SANITY_CHECK])
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])
|
||||
dnl FIXME This is truly gross.
|
||||
missing_dir=`cd $ac_aux_dir && pwd`
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])])
|
||||
|
||||
# Copyright 2002 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.4-p6])])
|
||||
|
||||
#
|
||||
# Check to make sure that the build environment is sane.
|
||||
#
|
||||
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftestfile
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
|
||||
if test "[$]*" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftestfile`
|
||||
fi
|
||||
if test "[$]*" != "X $srcdir/configure conftestfile" \
|
||||
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "[$]2" = conftestfile
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
rm -f conftest*
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
|
||||
dnl The program must properly implement --version.
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_MSG_CHECKING(for working $2)
|
||||
# Run test in a subshell; some versions of sh will print an error if
|
||||
# an executable is not found, even if stderr is redirected.
|
||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
||||
if ($2 --version) < /dev/null > /dev/null 2>&1; then
|
||||
$1=$2
|
||||
AC_MSG_RESULT(found)
|
||||
else
|
||||
$1="$3/missing $2"
|
||||
AC_MSG_RESULT(missing)
|
||||
fi
|
||||
AC_SUBST($1)])
|
||||
|
||||
# Like AC_CONFIG_HEADER, but automatically create stamp file.
|
||||
|
||||
AC_DEFUN([AM_CONFIG_HEADER],
|
||||
[AC_PREREQ([2.12])
|
||||
AC_CONFIG_HEADER([$1])
|
||||
dnl When config.status generates a header, we must update the stamp-h file.
|
||||
dnl This file resides in the same directory as the config header
|
||||
dnl that is generated. We must strip everything past the first ":",
|
||||
dnl and everything past the last "/".
|
||||
AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
|
||||
ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
|
||||
<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
|
||||
<<am_indx=1
|
||||
for am_file in <<$1>>; do
|
||||
case " <<$>>CONFIG_HEADERS " in
|
||||
*" <<$>>am_file "*<<)>>
|
||||
echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
|
||||
;;
|
||||
esac
|
||||
am_indx=`expr "<<$>>am_indx" + 1`
|
||||
done<<>>dnl>>)
|
||||
changequote([,]))])
|
||||
|
||||
|
||||
dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
|
||||
dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
|
||||
dnl also defines GSTUFF_PKG_ERRORS on error
|
||||
AC_DEFUN(PKG_CHECK_MODULES, [
|
||||
succeeded=no
|
||||
|
||||
if test -z "$PKG_CONFIG"; then
|
||||
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
||||
fi
|
||||
|
||||
if test "$PKG_CONFIG" = "no" ; then
|
||||
echo "*** The pkg-config script could not be found. Make sure it is"
|
||||
echo "*** in your path, or set the PKG_CONFIG environment variable"
|
||||
echo "*** to the full path to pkg-config."
|
||||
echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
|
||||
else
|
||||
PKG_CONFIG_MIN_VERSION=0.9.0
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
|
||||
AC_MSG_CHECKING(for $2)
|
||||
|
||||
if $PKG_CONFIG --exists "$2" ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
|
||||
AC_MSG_CHECKING($1_CFLAGS)
|
||||
$1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
|
||||
AC_MSG_RESULT($$1_CFLAGS)
|
||||
|
||||
AC_MSG_CHECKING($1_LIBS)
|
||||
$1_LIBS=`$PKG_CONFIG --libs "$2"`
|
||||
AC_MSG_RESULT($$1_LIBS)
|
||||
else
|
||||
$1_CFLAGS=""
|
||||
$1_LIBS=""
|
||||
## If we have a custom action on failure, don't print errors, but
|
||||
## do set a variable so people can do so.
|
||||
$1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
|
||||
ifelse([$4], ,echo $$1_PKG_ERRORS,)
|
||||
fi
|
||||
|
||||
AC_SUBST($1_CFLAGS)
|
||||
AC_SUBST($1_LIBS)
|
||||
else
|
||||
echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
|
||||
echo "*** See http://www.freedesktop.org/software/pkgconfig"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $succeeded = yes; then
|
||||
ifelse([$3], , :, [$3])
|
||||
else
|
||||
ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
|
||||
# Define a conditional.
|
||||
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[AC_SUBST($1_TRUE)
|
||||
AC_SUBST($1_FALSE)
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi])
|
||||
|
|
@ -0,0 +1,312 @@
|
|||
/* af_unix.c
|
||||
* (c) 2002 Mikulas Patocka
|
||||
* This file is a part of the Links program, released under GPL
|
||||
*/
|
||||
|
||||
#include "links.h"
|
||||
|
||||
#ifndef USE_AF_UNIX
|
||||
|
||||
int s_unix_fd = -1;
|
||||
|
||||
int bind_to_af_unix(unsigned char *name)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
void af_unix_close(void)
|
||||
{
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#ifdef OS2
|
||||
#ifndef HAVE_SYS_UN_H
|
||||
#define HAVE_SYS_UN_H
|
||||
#endif
|
||||
struct os2_sockaddr_un {
|
||||
u_short sun_family;
|
||||
char sun_path[108];
|
||||
};
|
||||
#define sockaddr_un os2_sockaddr_un
|
||||
#ifndef AF_UNIX
|
||||
#define AF_UNIX 1
|
||||
#endif
|
||||
#ifndef PF_UNIX
|
||||
#define PF_UNIX 1
|
||||
#endif
|
||||
#elif defined(HAVE_SYS_UN_H)
|
||||
#include <sys/un.h>
|
||||
#endif
|
||||
|
||||
#if defined(__GNU__)
|
||||
#define SOCKET_TIMEOUT_HACK
|
||||
#endif
|
||||
|
||||
static void af_unix_connection(void *);
|
||||
|
||||
#define ADDR_SIZE 4096
|
||||
|
||||
union address {
|
||||
struct sockaddr s;
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
struct sockaddr_un suni;
|
||||
#endif
|
||||
struct sockaddr_in sin;
|
||||
unsigned char buffer[ADDR_SIZE];
|
||||
};
|
||||
|
||||
static union address s_unix;
|
||||
static union address s_unix_acc;
|
||||
|
||||
static socklen_t s_unix_l;
|
||||
int s_unix_fd = -1;
|
||||
static int s_unix_master = 0;
|
||||
|
||||
|
||||
#define S2C1_HANDSHAKE_LENGTH 6
|
||||
#define C2S2_HANDSHAKE_LENGTH sizeof(struct links_handshake)
|
||||
#define S2C3_HANDSHAKE_LENGTH sizeof(struct links_handshake)
|
||||
|
||||
static struct links_handshake {
|
||||
unsigned char version[30];
|
||||
unsigned char system_name[32];
|
||||
unsigned char system_id;
|
||||
unsigned char sizeof_long;
|
||||
} links_handshake;
|
||||
|
||||
#define HANDSHAKE_WRITE(hndl, sz) \
|
||||
if ((r = hard_write(hndl, (unsigned char *)&links_handshake, sz)) != (sz))
|
||||
#define HANDSHAKE_READ(hndl, sz) \
|
||||
if ((r = hard_read(hndl, (unsigned char *)&received_handshake, sz)) != (sz) || memcmp(&received_handshake, &links_handshake, sz))
|
||||
|
||||
|
||||
#ifdef OS2
|
||||
static inline int have_pf_unix(void)
|
||||
{
|
||||
s_unix_fd = c_socket(PF_UNIX, SOCK_STREAM, 0);
|
||||
return s_unix_fd >= 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_SYS_UN_H) || defined(OS2)
|
||||
static inline int get_address_localhost(unsigned char *name)
|
||||
{
|
||||
unsigned short port;
|
||||
if (!name) {
|
||||
port = LINKS_PORT;
|
||||
} else if (!strcmp(cast_const_char name, "pmshell")) {
|
||||
port = LINKS_PORT + 2;
|
||||
} else {
|
||||
port = LINKS_PORT;
|
||||
while (*name) {
|
||||
port = 257 * port + (*name * 2);
|
||||
name++;
|
||||
}
|
||||
port %= LINKS_G_PORT_LEN;
|
||||
port += LINKS_G_PORT_START;
|
||||
port &= ~1;
|
||||
}
|
||||
if (anonymous) {
|
||||
port++;
|
||||
}
|
||||
memset(&s_unix, 0, sizeof s_unix);
|
||||
s_unix.sin.sin_family = AF_INET;
|
||||
s_unix.sin.sin_port = htons(port);
|
||||
s_unix.sin.sin_addr.s_addr = htonl(0x7f000001);
|
||||
s_unix_l = sizeof(struct sockaddr_in);
|
||||
/*debug("get address %d", port);*/
|
||||
return PF_INET;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int get_address(unsigned char *name)
|
||||
{
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
unsigned char *path;
|
||||
#ifdef OS2
|
||||
if (!have_pf_unix()) {
|
||||
return get_address_localhost(name);
|
||||
}
|
||||
path = stracpy(cast_uchar "\\socket\\links\\");
|
||||
#else
|
||||
if (!links_home) return -1;
|
||||
path = stracpy(links_home);
|
||||
#endif
|
||||
add_to_strn(&path, cast_uchar LINKS_SOCK_NAME);
|
||||
if (anonymous) {
|
||||
add_to_strn(&path, cast_uchar LINKS_ANONYMOUS_SOCK_SUFFIX);
|
||||
}
|
||||
if (name) {
|
||||
unsigned char *n = stracpy(name);
|
||||
check_filename(&n);
|
||||
add_to_strn(&path, cast_uchar "-");
|
||||
add_to_strn(&path, n);
|
||||
mem_free(n);
|
||||
}
|
||||
#ifdef OS2
|
||||
s_unix_l = sizeof(struct sockaddr_un);
|
||||
#else
|
||||
s_unix_l = (socklen_t)((unsigned char *)&s_unix.suni.sun_path - (unsigned char *)&s_unix.suni + strlen(cast_const_char path) + 1);
|
||||
#endif
|
||||
if (strlen(cast_const_char path) > sizeof(union address) || (size_t)s_unix_l > sizeof(union address)) {
|
||||
mem_free(path);
|
||||
return -1;
|
||||
}
|
||||
memset(&s_unix, 0, sizeof s_unix);
|
||||
s_unix.suni.sun_family = AF_UNIX;
|
||||
strcpy(cast_char s_unix.suni.sun_path, cast_const_char path);
|
||||
mem_free(path);
|
||||
return PF_UNIX;
|
||||
#else
|
||||
return get_address_localhost(name);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void unlink_unix(void)
|
||||
{
|
||||
#if defined(HAVE_SYS_UN_H) && !defined(OS2)
|
||||
if (s_unix.s.sa_family == AF_UNIX) {
|
||||
int rs;
|
||||
/*debug("unlink: %s", s_unix.suni.sun_path);*/
|
||||
EINTRLOOP(rs, unlink(s_unix.suni.sun_path));
|
||||
if (rs) {
|
||||
/*perror("unlink");*/
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int bind_to_af_unix(unsigned char *name)
|
||||
{
|
||||
int u = 0;
|
||||
int a1 = 1;
|
||||
int cnt = 0;
|
||||
int af;
|
||||
int r;
|
||||
int rs;
|
||||
struct links_handshake received_handshake;
|
||||
memset(&links_handshake, 0, sizeof links_handshake);
|
||||
safe_strncpy(links_handshake.version, cast_uchar("Links " VERSION_STRING), sizeof links_handshake.version);
|
||||
safe_strncpy(links_handshake.system_name, system_name, sizeof links_handshake.system_name);
|
||||
links_handshake.system_id = SYSTEM_ID;
|
||||
links_handshake.sizeof_long = sizeof(long);
|
||||
if ((af = get_address(name)) == -1) {
|
||||
close_socket(&s_unix_fd);
|
||||
return -1;
|
||||
}
|
||||
again:
|
||||
if (s_unix_fd == -1) {
|
||||
s_unix_fd = c_socket(af, SOCK_STREAM, 0);
|
||||
if (s_unix_fd == -1) return -1;
|
||||
}
|
||||
#if defined(SOL_SOCKET) && defined(SO_REUSEADDR)
|
||||
EINTRLOOP(rs, setsockopt(s_unix_fd, SOL_SOCKET, SO_REUSEADDR, (void *)&a1, sizeof a1));
|
||||
#endif
|
||||
EINTRLOOP(rs, bind(s_unix_fd, &s_unix.s, s_unix_l));
|
||||
if (rs) {
|
||||
/*debug("bind: %d, %s", errno, strerror(errno));*/
|
||||
if (af == PF_INET && errno == EADDRNOTAVAIL) {
|
||||
/* do not try to connect if the user has not configured loopback interface */
|
||||
EINTRLOOP(rs, close(s_unix_fd));
|
||||
return -1;
|
||||
}
|
||||
EINTRLOOP(rs, close(s_unix_fd));
|
||||
s_unix_fd = c_socket(af, SOCK_STREAM, 0);
|
||||
if (s_unix_fd == -1) return -1;
|
||||
#if defined(SOL_SOCKET) && defined(SO_REUSEADDR)
|
||||
EINTRLOOP(rs, setsockopt(s_unix_fd, SOL_SOCKET, SO_REUSEADDR, (void *)&a1, sizeof a1));
|
||||
#endif
|
||||
EINTRLOOP(rs, connect(s_unix_fd, &s_unix.s, s_unix_l));
|
||||
if (rs) {
|
||||
retry:
|
||||
/*debug("connect: %d, %s", errno, strerror(errno));*/
|
||||
if (++cnt < MAX_BIND_TRIES) {
|
||||
portable_sleep(100);
|
||||
EINTRLOOP(rs, close(s_unix_fd));
|
||||
s_unix_fd = -1;
|
||||
goto again;
|
||||
}
|
||||
#ifdef SOCKET_TIMEOUT_HACK
|
||||
retry_unlink:
|
||||
#endif
|
||||
EINTRLOOP(rs, close(s_unix_fd));
|
||||
s_unix_fd = -1;
|
||||
if (!u) {
|
||||
unlink_unix();
|
||||
u = 1;
|
||||
goto again;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
#ifdef SOCKET_TIMEOUT_HACK
|
||||
if (!can_read_timeout(s_unix_fd, AF_UNIX_SOCKET_TIMEOUT))
|
||||
goto retry_unlink;
|
||||
#endif
|
||||
HANDSHAKE_READ(s_unix_fd, S2C1_HANDSHAKE_LENGTH) {
|
||||
if (r != S2C1_HANDSHAKE_LENGTH) goto retry;
|
||||
goto close_and_fail;
|
||||
}
|
||||
HANDSHAKE_WRITE(s_unix_fd, C2S2_HANDSHAKE_LENGTH)
|
||||
goto close_and_fail;
|
||||
HANDSHAKE_READ(s_unix_fd, S2C3_HANDSHAKE_LENGTH)
|
||||
goto close_and_fail;
|
||||
return s_unix_fd;
|
||||
}
|
||||
EINTRLOOP(rs, listen(s_unix_fd, 100));
|
||||
if (rs) {
|
||||
error("ERROR: listen failed: %d", errno);
|
||||
close_and_fail:
|
||||
EINTRLOOP(rs, close(s_unix_fd));
|
||||
s_unix_fd = -1;
|
||||
return -1;
|
||||
}
|
||||
s_unix_master = 1;
|
||||
set_handlers(s_unix_fd, af_unix_connection, NULL, NULL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void af_unix_connection(void *xxx)
|
||||
{
|
||||
socklen_t l = s_unix_l;
|
||||
int ns;
|
||||
int r;
|
||||
int rs;
|
||||
struct links_handshake received_handshake;
|
||||
memset(&s_unix_acc, 0, sizeof s_unix_acc);
|
||||
ns = c_accept(s_unix_fd, &s_unix_acc.s, &l);
|
||||
if (ns == -1) return;
|
||||
HANDSHAKE_WRITE(ns, S2C1_HANDSHAKE_LENGTH) {
|
||||
EINTRLOOP(rs, close(ns));
|
||||
return;
|
||||
}
|
||||
HANDSHAKE_READ(ns, C2S2_HANDSHAKE_LENGTH) {
|
||||
portable_sleep(100); /* workaround for a race in previous Links version */
|
||||
EINTRLOOP(rs, close(ns));
|
||||
return;
|
||||
}
|
||||
HANDSHAKE_WRITE(ns, S2C3_HANDSHAKE_LENGTH) {
|
||||
EINTRLOOP(rs, close(ns));
|
||||
return;
|
||||
}
|
||||
if (!F) {
|
||||
init_term(ns, ns, win_func);
|
||||
set_highpri();
|
||||
}
|
||||
#ifdef G
|
||||
else {
|
||||
gfx_connection(ns);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void af_unix_close(void)
|
||||
{
|
||||
close_socket(&s_unix_fd);
|
||||
if (s_unix_master) {
|
||||
unlink_unix();
|
||||
s_unix_master = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,38 @@
|
|||
/* Automatically generated by the program "arrow" (arrow.c) */
|
||||
|
||||
enum {arrow_width=32, arrow_height=32, arrow_area=1024};
|
||||
|
||||
static_const unsigned int arrow[64]={
|
||||
0xf0000000U,0x00000000U,
|
||||
0x9c000000U,0x60000000U,
|
||||
0x87000000U,0x78000000U,
|
||||
0xc1c00000U,0x3e000000U,
|
||||
0x40700000U,0x3f800000U,
|
||||
0x601c0000U,0x1fe00000U,
|
||||
0x20070000U,0x1ff80000U,
|
||||
0x3001c000U,0x0ffe0000U,
|
||||
0x10007000U,0x0fff8000U,
|
||||
0x18001c00U,0x07ffe000U,
|
||||
0x08000700U,0x07fff800U,
|
||||
0x0c000100U,0x03fffe00U,
|
||||
0x04000f00U,0x03fff000U,
|
||||
0x06003c00U,0x01ffc000U,
|
||||
0x0200f000U,0x01ff0000U,
|
||||
0x03006000U,0x00ff8000U,
|
||||
0x01023000U,0x00fdc000U,
|
||||
0x01831800U,0x007ce000U,
|
||||
0x00878c00U,0x00787000U,
|
||||
0x00c6c600U,0x00383800U,
|
||||
0x004c6300U,0x00301c00U,
|
||||
0x006c3180U,0x00100e00U,
|
||||
0x002818c0U,0x00100700U,
|
||||
0x00380c60U,0x00000380U,
|
||||
0x00000630U,0x000001c0U,
|
||||
0x00000318U,0x000000e0U,
|
||||
0x0000018cU,0x00000070U,
|
||||
0x000000c6U,0x00000038U,
|
||||
0x00000063U,0x0000001cU,
|
||||
0x00000031U,0x0000000eU,
|
||||
0x0000001bU,0x00000004U,
|
||||
0x0000000eU,0x00000000U,
|
||||
};
|
|
@ -0,0 +1,643 @@
|
|||
#include "cfg.h"
|
||||
|
||||
#ifdef GRDRV_ATHEOS
|
||||
|
||||
#include <atheos/threads.h>
|
||||
#include <gui/view.h>
|
||||
#include <gui/window.h>
|
||||
#include <gui/desktop.h>
|
||||
#include <gui/bitmap.h>
|
||||
#include <util/locker.h>
|
||||
#include <util/application.h>
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
extern "C" {
|
||||
#include "links.h"
|
||||
}
|
||||
|
||||
#define WINDOW_TITLE_SIZE 16
|
||||
#define TOP_PANEL_SIZE 32
|
||||
#define NEW_WINDOW_X_ADD 16
|
||||
#define NEW_WINDOW_Y_ADD 16
|
||||
#define NEW_WINDOW_X_MIN 8
|
||||
#define NEW_WINDOW_Y_MIN 8
|
||||
|
||||
#ifdef debug
|
||||
#undef debug
|
||||
#endif
|
||||
#ifdef debug2
|
||||
#undef debug2
|
||||
#endif
|
||||
#define debug(x)
|
||||
#define debug2(x)
|
||||
|
||||
extern struct graphics_driver atheos_driver;
|
||||
|
||||
using namespace os;
|
||||
|
||||
class LinksApplication : public Application {
|
||||
public:
|
||||
LinksApplication():Application("application/x-vnd.links"){}
|
||||
virtual bool OkToQuit(){return false;}
|
||||
};
|
||||
|
||||
class LinksView;
|
||||
|
||||
class LinksWindow : public Window {
|
||||
public:
|
||||
LinksWindow(Rect r);
|
||||
~LinksWindow();
|
||||
virtual void FrameSized(const Point &d);
|
||||
virtual bool OkToQuit();
|
||||
int resized;
|
||||
LinksView *view;
|
||||
};
|
||||
|
||||
class LinksView : public View {
|
||||
public:
|
||||
LinksView(LinksWindow *w);
|
||||
~LinksView();
|
||||
virtual void Paint(const Rect &r);
|
||||
virtual void MouseDown(const Point &p, uint32 b);
|
||||
virtual void MouseUp(const Point &p, uint32 b, Message *m);
|
||||
virtual void MouseMove(const Point &p, int c, uint32 b, Message *m);
|
||||
virtual void KeyDown(const char *s, const char *rs, uint32 q);
|
||||
virtual void WheelMoved(const Point &d);
|
||||
LinksWindow *win;
|
||||
struct graphics_device *dev;
|
||||
void d_flush();
|
||||
int flushing;
|
||||
int last_x, last_y;
|
||||
};
|
||||
|
||||
#define lv(dev) ((LinksView *)(dev)->driver_data)
|
||||
|
||||
#define lock_dev(dev) do { if (lv(dev)->win->Lock()) return; } while (0)
|
||||
#define lock_dev0(dev) do { if (lv(dev)->win->Lock()) return 0; } while (0)
|
||||
#define unlock_dev(dev) do { lv(dev)->win->Unlock(); } while (0)
|
||||
|
||||
static LinksApplication *ath_links_app;
|
||||
static Locker *ath_lock = NULL;
|
||||
|
||||
static int msg_pipe[2];
|
||||
|
||||
static thread_id ath_app_thread_id;
|
||||
|
||||
#define rpipe (msg_pipe[0])
|
||||
#define wpipe (msg_pipe[1])
|
||||
|
||||
#define small_color (sizeof(Color32_s) <= sizeof(long))
|
||||
#define get_color32(c, rgb) Color32_s c((rgb >> 16) & 255, (rgb >> 8) & 255, rgb & 255, 255)
|
||||
|
||||
static color_space ath_cs_desktop, ath_cs_bmp;
|
||||
|
||||
static int ath_x_size, ath_y_size;
|
||||
static int ath_y_panel;
|
||||
|
||||
static int ath_win_x_size, ath_win_y_size;
|
||||
static int ath_win_x_pos, ath_win_y_pos;
|
||||
|
||||
LinksWindow::LinksWindow(Rect r):Window(r, "links_wnd", "Links")
|
||||
{
|
||||
debug2("LINKSWINDOW\n");
|
||||
resized = 0;
|
||||
view = NULL;
|
||||
}
|
||||
|
||||
LinksWindow::~LinksWindow()
|
||||
{
|
||||
view = NULL;
|
||||
debug2("~LINKSWINDOW\n");
|
||||
}
|
||||
|
||||
void LinksWindow::FrameSized(const Point &d)
|
||||
{
|
||||
resized = 1;
|
||||
}
|
||||
|
||||
bool LinksWindow::OkToQuit()
|
||||
{
|
||||
ath_lock->Lock();
|
||||
Lock();
|
||||
if (view) if (view->dev) view->dev->keyboard_handler(view->dev, KBD_CTRL_C, 0);
|
||||
Unlock();
|
||||
ath_lock->Unlock();
|
||||
write(wpipe, " ", 1);
|
||||
/*debug2("key: :%s: :%s: %d %d\n", s, rs, q, c);*/
|
||||
return false;
|
||||
}
|
||||
|
||||
static void do_flush(void *p_dev)
|
||||
{
|
||||
struct graphics_device *dev = (struct graphics_device *)p_dev;
|
||||
LinksView *v = lv(dev);
|
||||
v->win->Lock();
|
||||
v->win->Flush();
|
||||
v->win->Unlock();
|
||||
v->flushing = 0;
|
||||
}
|
||||
|
||||
LinksView::LinksView(LinksWindow *w):View(w->GetBounds(), "Links", CF_FOLLOW_ALL, WID_WILL_DRAW | WID_FULL_UPDATE_ON_RESIZE)
|
||||
{
|
||||
debug2("LINKSVIEW\n");
|
||||
(win = w)->AddChild(this);
|
||||
w->SetFocusChild(this);
|
||||
w->view = this;
|
||||
flushing = 0;
|
||||
last_x = last_y = 0;
|
||||
}
|
||||
|
||||
LinksView::~LinksView()
|
||||
{
|
||||
win->view = NULL;
|
||||
debug2("~LINKSVIEW\n");
|
||||
}
|
||||
|
||||
void LinksView::d_flush()
|
||||
{
|
||||
if (flushing) return;
|
||||
register_bottom_half(do_flush, this->dev);
|
||||
flushing = 1;
|
||||
}
|
||||
|
||||
#undef select
|
||||
|
||||
int ath_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t)
|
||||
{
|
||||
int v;
|
||||
if (ath_lock) ath_lock->Unlock();
|
||||
v = select(n, r, w, e, t);
|
||||
if (ath_lock) {
|
||||
ath_lock->Lock();
|
||||
check_bottom_halves();
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
static void ath_get_event(void *dummy)
|
||||
{
|
||||
char dummy_buffer[256];
|
||||
read(rpipe, dummy_buffer, 256);
|
||||
debug2("GETE\n");
|
||||
}
|
||||
|
||||
static void ath_get_size(struct graphics_device *dev)
|
||||
{
|
||||
Rect r = lv(dev)->GetBounds();
|
||||
dev->size.x1 = dev->size.y1 = 0;
|
||||
dev->size.x2 = (int)r.Width() + 1;
|
||||
dev->size.y2 = (int)r.Height() + 1;
|
||||
}
|
||||
|
||||
void LinksView::Paint(const Rect &r)
|
||||
{
|
||||
struct rect rr;
|
||||
win->Unlock();
|
||||
ath_lock->Lock();
|
||||
win->Lock();
|
||||
rr.x1 = (int)r.left;
|
||||
rr.x2 = (int)r.right + 1;
|
||||
rr.y1 = (int)r.top;
|
||||
rr.y2 = (int)r.bottom + 1;
|
||||
/*debug2("paint: %d %d %d %d\n", rr.x1, rr.x2, rr.y1, rr.y2);*/
|
||||
if (dev) {
|
||||
if (!win->resized) dev->redraw_handler(dev, &rr);
|
||||
else {
|
||||
ath_get_size(dev);
|
||||
win->resized = 0;
|
||||
dev->resize_handler(dev);
|
||||
}
|
||||
}
|
||||
check_bottom_halves();
|
||||
ath_lock->Unlock();
|
||||
write(wpipe, " ", 1);
|
||||
}
|
||||
|
||||
|
||||
void LinksView::MouseDown(const Point &p, uint32 b)
|
||||
{
|
||||
win->Unlock();
|
||||
ath_lock->Lock();
|
||||
win->Lock();
|
||||
if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, B_DOWN | (b == 2 ? B_RIGHT : b == 3 ? B_MIDDLE : B_LEFT));
|
||||
ath_lock->Unlock();
|
||||
write(wpipe, " ", 1);
|
||||
}
|
||||
|
||||
void LinksView::MouseUp(const Point &p, uint32 b, Message *m)
|
||||
{
|
||||
win->Unlock();
|
||||
ath_lock->Lock();
|
||||
win->Lock();
|
||||
if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, B_UP | (b == 2 ? B_RIGHT : b == 3 ? B_MIDDLE : B_LEFT));
|
||||
ath_lock->Unlock();
|
||||
write(wpipe, " ", 1);
|
||||
}
|
||||
|
||||
void LinksView::MouseMove(const Point &p, int c, uint32 b, Message *m)
|
||||
{
|
||||
win->Unlock();
|
||||
ath_lock->Lock();
|
||||
win->Lock();
|
||||
if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, !b ? B_MOVE : B_DRAG | (b & 1 ? B_LEFT : b & 2 ? B_RIGHT : b & 4 ? B_MIDDLE : B_LEFT));
|
||||
ath_lock->Unlock();
|
||||
write(wpipe, " ", 1);
|
||||
}
|
||||
|
||||
void LinksView::WheelMoved(const Point &d)
|
||||
{
|
||||
win->Unlock();
|
||||
ath_lock->Lock();
|
||||
win->Lock();
|
||||
if (d.y) if (dev) dev->mouse_handler(dev, last_x, last_y, B_MOVE | (d.y > 0 ? B_WHEELDOWN : B_WHEELUP));
|
||||
if (d.x) if (dev) dev->mouse_handler(dev, last_x, last_y, B_MOVE | (d.x < 0 ? B_WHEELLEFT : B_WHEELRIGHT));
|
||||
ath_lock->Unlock();
|
||||
write(wpipe, " ", 1);
|
||||
}
|
||||
|
||||
void LinksView::KeyDown(const char *s, const char *rs, uint32 q)
|
||||
{
|
||||
int c;
|
||||
unsigned char *ss = q & (QUAL_CTRL | QUAL_ALT) ? (unsigned char *)rs : (unsigned char *)s;
|
||||
win->Unlock();
|
||||
ath_lock->Lock();
|
||||
win->Lock();
|
||||
GET_UTF_8(ss, c);
|
||||
switch (c) {
|
||||
case VK_BACKSPACE: c = KBD_BS; break;
|
||||
case VK_ENTER: c = KBD_ENTER; break;
|
||||
case VK_SPACE: c = ' '; break;
|
||||
case VK_TAB: c = KBD_TAB; break;
|
||||
case VK_ESCAPE: c = KBD_ESC; break;
|
||||
case VK_LEFT_ARROW: c = KBD_LEFT; break;
|
||||
case VK_RIGHT_ARROW: c = KBD_RIGHT; break;
|
||||
case VK_UP_ARROW: c = KBD_UP; break;
|
||||
case VK_DOWN_ARROW: c = KBD_DOWN; break;
|
||||
case VK_INSERT: c = KBD_INS; break;
|
||||
case VK_DELETE: c = KBD_DEL; break;
|
||||
case VK_HOME: c = KBD_HOME; break;
|
||||
case VK_END: c = KBD_END; break;
|
||||
case VK_PAGE_UP: c = KBD_PAGE_UP; break;
|
||||
case VK_PAGE_DOWN: c = KBD_PAGE_DOWN; break;
|
||||
default: if (c < 32) c = 0;
|
||||
else q &= ~QUAL_SHIFT;
|
||||
break;
|
||||
}
|
||||
if (c) if (dev) dev->keyboard_handler(dev, c, (q & QUAL_SHIFT ? KBD_SHIFT : 0) | (q & QUAL_CTRL ? KBD_CTRL : 0) | (q & QUAL_ALT ? KBD_ALT : 0));
|
||||
ath_lock->Unlock();
|
||||
write(wpipe, " ", 1);
|
||||
/*debug2("key: :%s: :%s: %d %d\n", s, rs, q, c);*/
|
||||
}
|
||||
|
||||
static uint32 ath_app_thread(void *p)
|
||||
{
|
||||
ath_links_app->Run();
|
||||
delete ath_links_app;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned char *ath_init_driver(unsigned char *param, unsigned char *display)
|
||||
{
|
||||
Desktop *d;
|
||||
ath_links_app = new LinksApplication();
|
||||
if (!ath_links_app) {
|
||||
return stracpy((unsigned char *)"Unable to allocate Application object.\n");
|
||||
}
|
||||
ath_lock = new Locker("links_sem", false, false);
|
||||
if (!ath_lock || ath_lock->Lock()) {
|
||||
delete ath_links_app;
|
||||
return stracpy((unsigned char *)"Could not create lock.\n");
|
||||
}
|
||||
if (c_pipe(msg_pipe)) {
|
||||
delete ath_lock; ath_lock = NULL;
|
||||
delete ath_links_app;
|
||||
return stracpy((unsigned char *)"Could not create pipe.\n");
|
||||
}
|
||||
set_nonblock(rpipe);
|
||||
set_nonblock(wpipe);
|
||||
set_handlers(rpipe, ath_get_event, NULL, NULL);
|
||||
ath_app_thread_id = spawn_thread("links_app", (void *)ath_app_thread, 0, 0, NULL);
|
||||
if (ath_app_thread_id == -1) {
|
||||
int r;
|
||||
EINTRLOOP(r, close(rpipe));
|
||||
EINTRLOOP(r, close(wpipe));
|
||||
delete ath_lock; ath_lock = NULL;
|
||||
delete ath_links_app;
|
||||
return stracpy((unsigned char *)"Could not spawn thread.\n");
|
||||
}
|
||||
resume_thread(ath_app_thread_id);
|
||||
if ((d = new Desktop)) {
|
||||
ath_cs_desktop = d->GetColorSpace();
|
||||
ath_x_size = d->GetResolution().x;
|
||||
ath_y_size = d->GetResolution().y;
|
||||
delete d;
|
||||
} else {
|
||||
ath_cs_desktop = CS_NO_COLOR_SPACE;
|
||||
ath_x_size = 640;
|
||||
ath_y_size = 480;
|
||||
}
|
||||
ath_y_panel = WINDOW_TITLE_SIZE;
|
||||
#ifdef __SYLLABLE__
|
||||
ath_y_panel += TOP_PANEL_SIZE;
|
||||
#endif
|
||||
if (ath_y_panel > ath_y_size) ath_y_panel = 0;
|
||||
ath_win_y_size = (ath_y_size - ath_y_panel) * 9 / 10;
|
||||
ath_win_x_size = ath_win_y_size;
|
||||
/*
|
||||
debug2("%d %d\n", ath_x_size, ath_y_size);
|
||||
debug2("%d %d\n", ath_win_x_size, ath_win_y_size);
|
||||
*/
|
||||
ath_win_y_pos = (ath_y_size - ath_y_panel - ath_win_y_size) / 2 + ath_y_panel;
|
||||
ath_win_x_pos = ath_x_size - ath_win_x_size - ath_win_y_pos;
|
||||
if (/*ath_cs_desktop == CS_RGB32 ||*/ ath_cs_desktop == CS_RGB24 || ath_cs_desktop == CS_RGB16 || ath_cs_desktop == CS_RGB15)
|
||||
ath_cs_bmp = ath_cs_desktop;
|
||||
else if (ath_cs_desktop == CS_RGB32 || ath_cs_desktop == CS_RGBA32) ath_cs_bmp = CS_RGB24;
|
||||
else ath_cs_bmp = CS_RGB15;
|
||||
switch (ath_cs_bmp) {
|
||||
case CS_RGB24:
|
||||
atheos_driver.depth = 0xc3;
|
||||
break;
|
||||
case CS_RGB16:
|
||||
atheos_driver.depth = 0x82;
|
||||
break;
|
||||
case CS_RGB15:
|
||||
atheos_driver.depth = 0x7a;
|
||||
break;
|
||||
default:
|
||||
internal_error("unknown depth");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void ath_shutdown_driver()
|
||||
{
|
||||
int r;
|
||||
debug((unsigned char *)"D");
|
||||
set_handlers(rpipe, NULL, NULL, NULL);
|
||||
EINTRLOOP(r, close(rpipe));
|
||||
EINTRLOOP(r, close(wpipe));
|
||||
ath_lock->Unlock();
|
||||
debug((unsigned char *)"DD");
|
||||
ath_links_app->PostMessage(M_TERMINATE);
|
||||
debug((unsigned char *)"E");
|
||||
/*delete ath_lock; ath_lock = NULL;*/
|
||||
debug((unsigned char *)"F");
|
||||
}
|
||||
|
||||
static void ath_after_fork()
|
||||
{
|
||||
int r;
|
||||
EINTRLOOP(r, close(rpipe));
|
||||
EINTRLOOP(r, close(wpipe));
|
||||
}
|
||||
|
||||
static struct graphics_device *ath_init_device()
|
||||
{
|
||||
LinksView *view;
|
||||
LinksWindow *win;
|
||||
struct graphics_device *dev = (struct graphics_device *)mem_calloc(sizeof(struct graphics_device));
|
||||
if (!dev) return NULL;
|
||||
debug((unsigned char *)"1");
|
||||
retry:
|
||||
win = new LinksWindow(Rect(ath_win_x_pos, ath_win_y_pos, ath_win_x_pos + ath_win_x_size, ath_win_y_pos + ath_win_y_size));
|
||||
debug((unsigned char *)"2");
|
||||
if (!win) {
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry;
|
||||
mem_free(dev);
|
||||
return NULL;
|
||||
}
|
||||
debug((unsigned char *)"3");
|
||||
retry2:
|
||||
view = new LinksView(win);
|
||||
if (!view) {
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry2;
|
||||
delete win;
|
||||
mem_free(dev);
|
||||
return NULL;
|
||||
}
|
||||
view->dev = dev;
|
||||
dev->driver_data = view;
|
||||
ath_get_size(dev);
|
||||
memcpy(&dev->clip, &dev->size, sizeof(struct rect));
|
||||
debug((unsigned char *)"4");
|
||||
win->Show();
|
||||
win->MakeFocus();
|
||||
debug((unsigned char *)"5");
|
||||
|
||||
ath_win_x_pos += NEW_WINDOW_X_ADD;
|
||||
ath_win_y_pos += NEW_WINDOW_Y_ADD;
|
||||
if (ath_win_x_pos + ath_win_x_size > ath_x_size - NEW_WINDOW_X_MIN)
|
||||
ath_win_x_pos = NEW_WINDOW_X_MIN;
|
||||
if (ath_win_y_pos + ath_win_y_size > ath_y_size - NEW_WINDOW_Y_MIN)
|
||||
ath_win_y_pos = ath_y_panel + NEW_WINDOW_Y_MIN;
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
static void ath_shutdown_device(struct graphics_device *dev)
|
||||
{
|
||||
LinksWindow *win = lv(dev)->win;
|
||||
unregister_bottom_half(do_flush, dev);
|
||||
lv(dev)->dev = NULL;
|
||||
win->PostMessage(M_TERMINATE);
|
||||
mem_free(dev);
|
||||
}
|
||||
|
||||
static void ath_set_title(struct graphics_device *dev, unsigned char *title)
|
||||
{
|
||||
LinksWindow *win = lv(dev)->win;
|
||||
lock_dev(dev);
|
||||
win->SetTitle(string((char *)title));
|
||||
lv(dev)->d_flush();
|
||||
unlock_dev(dev);
|
||||
}
|
||||
|
||||
static int ath_get_empty_bitmap(struct bitmap *bmp)
|
||||
{
|
||||
debug2("bmp\n");
|
||||
Bitmap *b;
|
||||
retry:
|
||||
b = new Bitmap(bmp->x, bmp->y, ath_cs_bmp, Bitmap::SHARE_FRAMEBUFFER);
|
||||
if (!b) {
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry;
|
||||
bmp->data = NULL;
|
||||
bmp->flags = NULL;
|
||||
return -1;
|
||||
}
|
||||
bmp->data = b->LockRaster();
|
||||
bmp->skip = b->GetBytesPerRow();
|
||||
bmp->flags = b;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ath_register_bitmap(struct bitmap *bmp)
|
||||
{
|
||||
Bitmap *b = (Bitmap *)bmp->flags;
|
||||
if (!b) return;
|
||||
b->UnlockRaster();
|
||||
}
|
||||
|
||||
static void *ath_prepare_strip(struct bitmap *bmp, int top, int lines)
|
||||
{
|
||||
debug2("preps\n");
|
||||
Bitmap *b = (Bitmap *)bmp->flags;
|
||||
if (!b) return NULL;
|
||||
bmp->data = b->LockRaster();
|
||||
bmp->skip = b->GetBytesPerRow();
|
||||
return ((char *)bmp->data) + bmp->skip * top;
|
||||
}
|
||||
|
||||
static void ath_commit_strip(struct bitmap *bmp, int top, int lines)
|
||||
{
|
||||
Bitmap *b = (Bitmap *)bmp->flags;
|
||||
if (!b) return;
|
||||
b->UnlockRaster();
|
||||
}
|
||||
|
||||
static void ath_unregister_bitmap(struct bitmap *bmp)
|
||||
{
|
||||
debug2("unb\n");
|
||||
Bitmap *b = (Bitmap *)bmp->flags;
|
||||
if (!b) return;
|
||||
delete b;
|
||||
}
|
||||
|
||||
static void ath_draw_bitmap(struct graphics_device *dev, struct bitmap *bmp, int x, int y)
|
||||
{
|
||||
debug2("drawb\n");
|
||||
Bitmap *b = (Bitmap *)bmp->flags;
|
||||
if (!b) return;
|
||||
CLIP_DRAW_BITMAP
|
||||
lock_dev(dev);
|
||||
lv(dev)->DrawBitmap(b, b->GetBounds(), Rect(x, y, x + bmp->x - 1, y + bmp->y - 1));
|
||||
lv(dev)->d_flush();
|
||||
unlock_dev(dev);
|
||||
}
|
||||
|
||||
static long ath_get_color(int rgb)
|
||||
{
|
||||
if (small_color) {
|
||||
get_color32(c, rgb);
|
||||
return *(long *)(void *)&c;
|
||||
} else return rgb & 0xffffff;
|
||||
}
|
||||
|
||||
static void ath_fill_area(struct graphics_device *dev, int x1, int y1, int x2, int y2, long color)
|
||||
{
|
||||
debug2("fill\n");
|
||||
CLIP_FILL_AREA
|
||||
lock_dev(dev);
|
||||
if (small_color)
|
||||
lv(dev)->FillRect(Rect(x1, y1, x2 - 1, y2 - 1), *(Color32_s *)(void *)&color);
|
||||
else
|
||||
lv(dev)->FillRect(Rect(x1, y1, x2 - 1, y2 - 1), get_color32(, color));
|
||||
lv(dev)->d_flush();
|
||||
unlock_dev(dev);
|
||||
}
|
||||
|
||||
static void ath_draw_hline(struct graphics_device *dev, int x1, int y, int x2, long color)
|
||||
{
|
||||
debug2("hline\n");
|
||||
CLIP_DRAW_HLINE
|
||||
lock_dev(dev);
|
||||
if (small_color)
|
||||
lv(dev)->SetFgColor(*(Color32_s *)(void *)&color);
|
||||
else
|
||||
lv(dev)->SetFgColor(get_color32(, color));
|
||||
lv(dev)->DrawLine(Point(IPoint(x1, y)), Point(IPoint(x2 - 1, y)));
|
||||
lv(dev)->d_flush();
|
||||
unlock_dev(dev);
|
||||
}
|
||||
|
||||
static void ath_draw_vline(struct graphics_device *dev, int x, int y1, int y2, long color)
|
||||
{
|
||||
debug2("vline\n");
|
||||
CLIP_DRAW_VLINE
|
||||
lock_dev(dev);
|
||||
if (small_color)
|
||||
lv(dev)->SetFgColor(*(Color32_s *)(void *)&color);
|
||||
else
|
||||
lv(dev)->SetFgColor(get_color32(, color));
|
||||
lv(dev)->DrawLine(Point(IPoint(x, y1)), Point(IPoint(x, y2 - 1)));
|
||||
lv(dev)->d_flush();
|
||||
unlock_dev(dev);
|
||||
}
|
||||
|
||||
static int ath_scroll(struct graphics_device *dev, struct rect_set **ignore, int scx, int scy)
|
||||
{
|
||||
debug2("hscroll\n");
|
||||
lock_dev0(dev);
|
||||
lv(dev)->ScrollRect(
|
||||
Rect( dev->clip.x1 - (scx < 0 ? scx : 0),
|
||||
dev->clip.y1 - (scy < 0 ? scy : 0),
|
||||
dev->clip.x2 - (scx >= 0 ? scx : 0) - 1,
|
||||
dev->clip.y2 - (scy >= 0 ? scy : 0) - 1),
|
||||
Rect( dev->clip.x1 + (scx >= 0 ? scx : 0),
|
||||
dev->clip.y1 + (scy >= 0 ? scy : 0),
|
||||
dev->clip.x2 + (scx < 0 ? scx : 0) - 1,
|
||||
dev->clip.y2 + (scy < 0 ? scy : 0) - 1)
|
||||
);
|
||||
lv(dev)->d_flush();
|
||||
unlock_dev(dev);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void ath_set_clip_area(struct graphics_device *dev)
|
||||
{
|
||||
debug2("setc\n");
|
||||
lock_dev(dev);
|
||||
lv(dev)->SetDrawingRegion(Region(IRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1)));
|
||||
unlock_dev(dev);
|
||||
}
|
||||
|
||||
static void ath_flush(struct graphics_device *dev)
|
||||
{
|
||||
unregister_bottom_half(do_flush, dev);
|
||||
do_flush(dev);
|
||||
}
|
||||
|
||||
struct graphics_driver atheos_driver = {
|
||||
(unsigned char *)"atheos",
|
||||
ath_init_driver,
|
||||
ath_init_device,
|
||||
ath_shutdown_device,
|
||||
ath_shutdown_driver,
|
||||
NULL,
|
||||
ath_after_fork,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
ath_get_empty_bitmap,
|
||||
ath_register_bitmap,
|
||||
ath_prepare_strip,
|
||||
ath_commit_strip,
|
||||
ath_unregister_bitmap,
|
||||
ath_draw_bitmap,
|
||||
ath_get_color,
|
||||
ath_fill_area,
|
||||
ath_draw_hline,
|
||||
ath_draw_vline,
|
||||
ath_scroll,
|
||||
ath_set_clip_area,
|
||||
ath_flush,
|
||||
NULL, /* block */
|
||||
NULL, /* unblock */
|
||||
NULL, /* set_palette */
|
||||
NULL, /* get_real_colors */
|
||||
ath_set_title,
|
||||
NULL, /* exec */
|
||||
NULL, /* set_clipboard_text */
|
||||
NULL, /* get_clipboard_text */
|
||||
0, /* depth */
|
||||
0, 0, /* size */
|
||||
GD_UNICODE_KEYS | GD_NO_OS_SHELL | GD_NO_LIBEVENT,/* flags */
|
||||
NULL, /* param */
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,264 @@
|
|||
#include "links.h"
|
||||
|
||||
static struct list_head auth = {&auth, &auth};
|
||||
|
||||
struct http_auth {
|
||||
list_entry_1st
|
||||
unsigned char *host;
|
||||
int port;
|
||||
unsigned char *realm;
|
||||
unsigned char *user;
|
||||
unsigned char *password;
|
||||
unsigned char *directory;
|
||||
unsigned char *user_password_encoded;
|
||||
int proxy;
|
||||
list_entry_last
|
||||
};
|
||||
|
||||
static_const unsigned char base64_chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
|
||||
unsigned char *base64_encode(unsigned char *in, int inlen, unsigned char *prefix, unsigned char *suffix, int line_bits)
|
||||
{
|
||||
unsigned char *out, *outstr;
|
||||
int data_len;
|
||||
int line_mask = ~0;
|
||||
int col;
|
||||
int prefix_len = (int)strlen(cast_const_char prefix);
|
||||
int suffix_len = (int)strlen(cast_const_char suffix);
|
||||
if (inlen > MAXINT / 2) overalloc();
|
||||
data_len = ((inlen + 2) / 3) * 4;
|
||||
if (line_bits >= 0) {
|
||||
line_mask = (1 << line_bits) - 1;
|
||||
data_len += (data_len + line_mask) >> line_bits;
|
||||
}
|
||||
outstr = mem_alloc(prefix_len + data_len + suffix_len + 1);
|
||||
memcpy(outstr, prefix, prefix_len);
|
||||
out = outstr + prefix_len;
|
||||
col = 0;
|
||||
while (inlen >= 3) {
|
||||
*out++ = base64_chars[ (int)(in[0] >> 2) ];
|
||||
*out++ = base64_chars[ (int)((in[0] << 4 | in[1] >> 4) & 63) ];
|
||||
*out++ = base64_chars[ (int)((in[1] << 2 | in[2] >> 6) & 63) ];
|
||||
*out++ = base64_chars[ (int)(in[2] & 63) ];
|
||||
inlen -= 3; in += 3;
|
||||
if (!((col += 4) & line_mask))
|
||||
*out++ = '\n';
|
||||
}
|
||||
if (inlen == 1) {
|
||||
*out++ = base64_chars[ (int)(in[0] >> 2) ];
|
||||
*out++ = base64_chars[ (int)(in[0] << 4 & 63) ];
|
||||
*out++ = '=';
|
||||
*out++ = '=';
|
||||
}
|
||||
if (inlen == 2) {
|
||||
*out++ = base64_chars[ (int)(in[0] >> 2) ];
|
||||
*out++ = base64_chars[ (int)((in[0] << 4 | in[1] >> 4) & 63) ];
|
||||
*out++ = base64_chars[ (int)((in[1] << 2) & 63) ];
|
||||
*out++ = '=';
|
||||
}
|
||||
if (line_bits >= 0 && out > outstr + prefix_len && out[-1] != '\n')
|
||||
*out++ = '\n';
|
||||
strcpy(cast_char out, cast_const_char suffix);
|
||||
/*fprintf(stderr, "%d - %d = %d\n", prefix_len + data_len + suffix_len + 1, strlen(cast_const_char outstr) + 1, prefix_len + data_len + suffix_len - strlen(cast_const_char outstr));*/
|
||||
return outstr;
|
||||
}
|
||||
|
||||
static unsigned char *basic_encode(unsigned char *user, unsigned char *password)
|
||||
{
|
||||
unsigned char *e, *p;
|
||||
p = stracpy(user);
|
||||
add_to_strn(&p, cast_uchar ":");
|
||||
add_to_strn(&p, password);
|
||||
e = base64_encode(p, (int)strlen(cast_const_char p), cast_uchar "", cast_uchar "", -1);
|
||||
mem_free(p);
|
||||
return e;
|
||||
}
|
||||
|
||||
unsigned char *get_auth_realm(unsigned char *url, unsigned char *head, int proxy)
|
||||
{
|
||||
unsigned char *ch = head;
|
||||
unsigned char *h, *q, *r;
|
||||
int l;
|
||||
int unknown = 0;
|
||||
int known = 0;
|
||||
try_next:
|
||||
h = parse_http_header(ch, !proxy ? (unsigned char *)"WWW-Authenticate" : (unsigned char *)"Proxy-Authenticate", &ch);
|
||||
if (!h) {
|
||||
if (unknown && !known) return NULL;
|
||||
if (proxy) {
|
||||
unsigned char *p = get_proxy_string(url);
|
||||
if (!p) p = cast_uchar "";
|
||||
return stracpy(p);
|
||||
} else {
|
||||
unsigned char *u = get_host_name(url);
|
||||
if (u) return u;
|
||||
return stracpy(cast_uchar "");
|
||||
}
|
||||
}
|
||||
if (casecmp(h, cast_uchar "Basic", 5)) {
|
||||
mem_free(h);
|
||||
unknown = 1;
|
||||
goto try_next;
|
||||
}
|
||||
known = 1;
|
||||
q = cast_uchar strchr(cast_const_char h, '"');
|
||||
if (!q) {
|
||||
mem_free(h);
|
||||
goto try_next;
|
||||
}
|
||||
q++;
|
||||
r = init_str();
|
||||
l = 0;
|
||||
while (*q && *q != '"') {
|
||||
if (*q == '\\' && !*++q) break;
|
||||
add_chr_to_str(&r, &l, *q++);
|
||||
}
|
||||
mem_free(h);
|
||||
return r;
|
||||
}
|
||||
|
||||
static unsigned char *auth_from_url(unsigned char *url, int proxy)
|
||||
{
|
||||
unsigned char *r = NULL;
|
||||
int l = 0;
|
||||
unsigned char *user, *password;
|
||||
|
||||
user = get_user_name(url);
|
||||
password = get_pass(url);
|
||||
if (user && *user && password) {
|
||||
unsigned char *e = basic_encode(user, password);
|
||||
r = init_str();
|
||||
if (proxy) add_to_str(&r, &l, cast_uchar "Proxy-");
|
||||
add_to_str(&r, &l, cast_uchar "Authorization: Basic ");
|
||||
add_to_str(&r, &l, e);
|
||||
add_to_str(&r, &l, cast_uchar "\r\n");
|
||||
mem_free(e);
|
||||
if (user) mem_free(user);
|
||||
if (password) mem_free(password);
|
||||
return r;
|
||||
}
|
||||
if (user) mem_free(user);
|
||||
if (password) mem_free(password);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
unsigned char *get_auth_string(unsigned char *url, int proxy)
|
||||
{
|
||||
struct http_auth *a;
|
||||
struct list_head *la;
|
||||
unsigned char *host;
|
||||
int port;
|
||||
unsigned char *r = NULL;
|
||||
int l = 0;
|
||||
if (proxy && !is_proxy_url(url)) return NULL;
|
||||
if (!(host = get_host_name(url))) return NULL;
|
||||
port = get_port(url);
|
||||
|
||||
if (!proxy && (r = auth_from_url(url, proxy))) goto have_passwd;
|
||||
|
||||
foreach(struct http_auth, a, la, auth) if (a->proxy == proxy && !casestrcmp(a->host, host) && a->port == port) {
|
||||
unsigned char *d, *data;
|
||||
if (proxy) goto skip_dir_check;
|
||||
data = get_url_data(url);
|
||||
d = cast_uchar strrchr(cast_const_char data, '/');
|
||||
if (!d) d = data;
|
||||
else d++;
|
||||
if ((size_t)(d - data) >= strlen(cast_const_char a->directory) && !memcmp(data, a->directory, strlen(cast_const_char a->directory))) {
|
||||
skip_dir_check:
|
||||
r = init_str();
|
||||
if (proxy) add_to_str(&r, &l, cast_uchar "Proxy-");
|
||||
add_to_str(&r, &l, cast_uchar "Authorization: Basic ");
|
||||
add_to_str(&r, &l, a->user_password_encoded);
|
||||
add_to_str(&r, &l, cast_uchar "\r\n");
|
||||
goto have_passwd;
|
||||
}
|
||||
}
|
||||
|
||||
if (proxy && (r = auth_from_url(url, proxy))) goto have_passwd;
|
||||
|
||||
have_passwd:
|
||||
mem_free(host);
|
||||
return r;
|
||||
}
|
||||
|
||||
static void free_auth_entry(struct http_auth *a)
|
||||
{
|
||||
mem_free(a->host);
|
||||
mem_free(a->realm);
|
||||
mem_free(a->user);
|
||||
mem_free(a->password);
|
||||
if (a->directory) mem_free(a->directory);
|
||||
mem_free(a->user_password_encoded);
|
||||
del_from_list(a);
|
||||
mem_free(a);
|
||||
}
|
||||
|
||||
void free_auth(void)
|
||||
{
|
||||
while (!list_empty(auth)) free_auth_entry(list_struct(auth.next, struct http_auth));
|
||||
}
|
||||
|
||||
void add_auth(unsigned char *url, unsigned char *realm, unsigned char *user, unsigned char *password, int proxy)
|
||||
{
|
||||
struct http_auth *a;
|
||||
struct list_head *la;
|
||||
unsigned char *host = NULL;
|
||||
int port = 0 /* against warning */;
|
||||
if (!proxy) {
|
||||
host = get_host_name(url);
|
||||
port = get_port(url);
|
||||
} else {
|
||||
unsigned char *p = get_proxy(url);
|
||||
if (strcmp(cast_const_char p, cast_const_char url)) {
|
||||
host = get_host_name(p);
|
||||
port = get_port(p);
|
||||
}
|
||||
mem_free(p);
|
||||
}
|
||||
if (!host) return;
|
||||
foreach(struct http_auth, a, la, auth) if (a->proxy == proxy && !casestrcmp(a->host, host) && a->port == port && !strcmp(cast_const_char a->realm, cast_const_char realm)) {
|
||||
la = la->prev;
|
||||
free_auth_entry(a);
|
||||
}
|
||||
a = mem_alloc(sizeof(struct http_auth));
|
||||
a->host = host;
|
||||
a->port = port;
|
||||
a->realm = stracpy(realm);
|
||||
a->user = stracpy(user);
|
||||
a->password = stracpy(password);
|
||||
if (!proxy) {
|
||||
unsigned char *data = stracpy(get_url_data(url));
|
||||
unsigned char *d = cast_uchar strrchr(cast_const_char data, '/');
|
||||
if (d) d[1] = 0;
|
||||
else data[0] = 0;
|
||||
a->directory = data;
|
||||
} else a->directory = NULL;
|
||||
a->proxy = proxy;
|
||||
a->user_password_encoded = basic_encode(a->user, a->password);
|
||||
add_to_list(auth, a);
|
||||
}
|
||||
|
||||
int find_auth(unsigned char *url, unsigned char *realm)
|
||||
{
|
||||
struct http_auth *a;
|
||||
struct list_head *la;
|
||||
unsigned char *data, *d;
|
||||
unsigned char *host = get_host_name(url);
|
||||
int port = get_port(url);
|
||||
if (!host) return -1;
|
||||
data = stracpy(get_url_data(url));
|
||||
d = cast_uchar strrchr(cast_const_char data, '/');
|
||||
if (d) d[1] = 0;
|
||||
foreach(struct http_auth, a, la, auth) if (!a->proxy && !casestrcmp(a->host, host) && a->port == port && !strcmp(cast_const_char a->realm, cast_const_char realm) && strcmp(cast_const_char a->directory, cast_const_char data)) {
|
||||
mem_free(a->directory);
|
||||
a->directory = data;
|
||||
mem_free(host);
|
||||
del_from_list(a);
|
||||
add_to_list(auth, a);
|
||||
return 0;
|
||||
}
|
||||
mem_free(host);
|
||||
mem_free(data);
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -0,0 +1,265 @@
|
|||
/* beos.c
|
||||
* (c) 2002 Mikulas Patocka
|
||||
* This file is a part of the Links program, released under GPL
|
||||
*/
|
||||
|
||||
#if defined(__BEOS__)
|
||||
|
||||
#include "com-defs.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/time.h>
|
||||
#include <netinet/in.h>
|
||||
#include <be/kernel/OS.h>
|
||||
|
||||
#define SHS 128
|
||||
|
||||
#ifndef MAXINT
|
||||
#define MAXINT 0x7fffffff
|
||||
#endif
|
||||
|
||||
#ifdef __HAIKU__
|
||||
int closesocket(int);
|
||||
#endif
|
||||
|
||||
#include "beos.h"
|
||||
|
||||
int be_read(int s, void *ptr, int len)
|
||||
{
|
||||
if (s >= SHS) return recv(s - SHS, ptr, len, 0);
|
||||
return read(s, ptr, len);
|
||||
}
|
||||
|
||||
int be_write(int s, void *ptr, int len)
|
||||
{
|
||||
if (s >= SHS) return send(s - SHS, ptr, len, 0);
|
||||
return write(s, ptr, len);
|
||||
}
|
||||
|
||||
int be_close(int s)
|
||||
{
|
||||
if (s >= SHS) return closesocket(s - SHS);
|
||||
return close(s);
|
||||
}
|
||||
|
||||
int be_socket(int af, int sock, int prot)
|
||||
{
|
||||
int h = socket(af, sock, prot);
|
||||
if (h < 0) return h;
|
||||
return h + SHS;
|
||||
}
|
||||
|
||||
int be_connect(int s, struct sockaddr *sa, int sal)
|
||||
{
|
||||
return connect(s - SHS, sa, sal);
|
||||
}
|
||||
|
||||
int be_getpeername(int s, struct sockaddr *sa, int *sal)
|
||||
{
|
||||
return getpeername(s - SHS, sa, sal);
|
||||
}
|
||||
|
||||
int be_getsockname(int s, struct sockaddr *sa, int *sal)
|
||||
{
|
||||
return getsockname(s - SHS, sa, sal);
|
||||
}
|
||||
|
||||
int be_listen(int s, int c)
|
||||
{
|
||||
return listen(s - SHS, c);
|
||||
}
|
||||
|
||||
int be_accept(int s, struct sockaddr *sa, int *sal)
|
||||
{
|
||||
int a = accept(s - SHS, sa, sal);
|
||||
if (a < 0) return -1;
|
||||
return a + SHS;
|
||||
}
|
||||
|
||||
int be_bind(int s, struct sockaddr *sa, int sal)
|
||||
{
|
||||
/*struct sockaddr_in *sin = (struct sockaddr_in *)sa;
|
||||
if (!ntohs(sin->sin_port)) {
|
||||
int i;
|
||||
for (i = 16384; i < 49152; i++) {
|
||||
sin->sin_port = htons(i);
|
||||
if (!be_bind(s, sa, sal)) return 0;
|
||||
}
|
||||
return -1;
|
||||
}*/
|
||||
if (bind(s - SHS, sa, sal)) return -1;
|
||||
getsockname(s - SHS, sa, &sal);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define PIPE_RETRIES 10
|
||||
|
||||
int be_pipe(int fd[2])
|
||||
{
|
||||
int s1, s2, s3, l;
|
||||
struct sockaddr_in sa1, sa2;
|
||||
int retry_count = 0;
|
||||
again:
|
||||
if ((s1 = be_socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
|
||||
/*perror("socket1");*/
|
||||
goto fatal_retry;
|
||||
}
|
||||
if ((s2 = be_socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
|
||||
/*perror("socket2");*/
|
||||
be_close(s1);
|
||||
goto fatal_retry;
|
||||
}
|
||||
memset(&sa1, 0, sizeof(sa1));
|
||||
sa1.sin_family = AF_INET;
|
||||
sa1.sin_port = htons(0);
|
||||
sa1.sin_addr.s_addr = INADDR_ANY;
|
||||
if (be_bind(s1, (struct sockaddr *)&sa1, sizeof(sa1))) {
|
||||
/*perror("bind");*/
|
||||
clo:
|
||||
be_close(s1);
|
||||
be_close(s2);
|
||||
goto fatal_retry;
|
||||
}
|
||||
if (be_listen(s1, 1)) {
|
||||
/*perror("listen");*/
|
||||
goto clo;
|
||||
}
|
||||
if (be_connect(s2, (struct sockaddr *)&sa1, sizeof(sa1))) {
|
||||
/*perror("connect");*/
|
||||
goto clo;
|
||||
}
|
||||
l = sizeof(sa2);
|
||||
if ((s3 = be_accept(s1, (struct sockaddr *)&sa2, &l)) < 0) {
|
||||
/*perror("accept");*/
|
||||
goto clo;
|
||||
}
|
||||
be_getsockname(s3, (struct sockaddr *)&sa1, &l);
|
||||
if (sa1.sin_addr.s_addr != sa2.sin_addr.s_addr) {
|
||||
be_close(s3);
|
||||
goto clo;
|
||||
}
|
||||
be_close(s1);
|
||||
fd[0] = s2;
|
||||
fd[1] = s3;
|
||||
return 0;
|
||||
|
||||
fatal_retry:
|
||||
if (++retry_count > PIPE_RETRIES) return -1;
|
||||
sleep(1);
|
||||
goto again;
|
||||
}
|
||||
|
||||
int be_select(int n, struct fd_set *rd, struct fd_set *wr, struct fd_set *exc, struct timeval *tm)
|
||||
{
|
||||
int i, s;
|
||||
struct fd_set d, rrd;
|
||||
retry:
|
||||
FD_ZERO(&d);
|
||||
if (!rd) rd = &d;
|
||||
if (!wr) wr = &d;
|
||||
if (!exc) exc = &d;
|
||||
if (n >= FD_SETSIZE) n = FD_SETSIZE;
|
||||
FD_ZERO(exc);
|
||||
for (i = 0; i < n; i++) if ((i < SHS && FD_ISSET(i, rd)) || FD_ISSET(i, wr)) {
|
||||
for (i = SHS; i < n; i++) FD_CLR(i, rd);
|
||||
return MAXINT;
|
||||
}
|
||||
FD_ZERO(&rrd);
|
||||
for (i = SHS; i < n; i++) if (FD_ISSET(i, rd)) FD_SET(i - SHS, &rrd);
|
||||
if ((s = select(FD_SETSIZE, &rrd, &d, &d, tm)) < 0) {
|
||||
if (errno == EINTR) goto retry;
|
||||
FD_ZERO(rd);
|
||||
return 0;
|
||||
}
|
||||
FD_ZERO(rd);
|
||||
for (i = SHS; i < n; i++) if (FD_ISSET(i - SHS, &rrd)) FD_SET(i, rd);
|
||||
return s;
|
||||
}
|
||||
|
||||
#ifndef SO_ERROR
|
||||
#define SO_ERROR 10001
|
||||
#endif
|
||||
|
||||
int be_getsockopt(int s, int level, int optname, void *optval, int *optlen)
|
||||
{
|
||||
if (optname == SO_ERROR && *optlen >= sizeof(int)) {
|
||||
*(int *)optval = 0;
|
||||
*optlen = sizeof(int);
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int ihpipe[2];
|
||||
|
||||
static int inth;
|
||||
|
||||
static void input_handle_th(void *p)
|
||||
{
|
||||
char c;
|
||||
int b = 0;
|
||||
setsockopt(ihpipe[1], SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
|
||||
while (1) if (read(0, &c, 1) == 1) be_write(ihpipe[1], &c, 1);
|
||||
}
|
||||
|
||||
int get_input_handle(void)
|
||||
{
|
||||
static int h = -1;
|
||||
if (h >= 0) return h;
|
||||
if (be_pipe(ihpipe) < 0) return -1;
|
||||
if ((inth = start_thr(input_handle_th, NULL, "input_thread")) < 0) {
|
||||
closesocket(ihpipe[0]);
|
||||
closesocket(ihpipe[1]);
|
||||
fatal_exit("Can't spawn input thread");
|
||||
}
|
||||
return h = ihpipe[0];
|
||||
}
|
||||
|
||||
void block_stdin(void)
|
||||
{
|
||||
suspend_thread(inth);
|
||||
}
|
||||
|
||||
void unblock_stdin(void)
|
||||
{
|
||||
resume_thread(inth);
|
||||
}
|
||||
|
||||
/*int ohpipe[2];
|
||||
|
||||
#define O_BUF 16384
|
||||
|
||||
static void output_handle_th(void *p)
|
||||
{
|
||||
char *c = malloc(O_BUF);
|
||||
int r, b = 0;
|
||||
if (!c) return;
|
||||
setsockopt(ohpipe[1], SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
|
||||
while ((r = be_read(ohpipe[0], c, O_BUF)) > 0) write(1, c, r);
|
||||
free(c);
|
||||
}
|
||||
|
||||
int get_output_handle(void)
|
||||
{
|
||||
static int h = -1;
|
||||
if (h >= 0) return h;
|
||||
if (be_pipe(ohpipe) < 0) return -1;
|
||||
if (start_thr(output_handle_th, NULL, "output_thread") < 0) {
|
||||
closesocket(ohpipe[0]);
|
||||
closesocket(ohpipe[1]);
|
||||
fatal_exit("Can't spawn output thread");
|
||||
}
|
||||
return h = ohpipe[1];
|
||||
}*/
|
||||
|
||||
#else
|
||||
|
||||
typedef int beos_c_no_empty_unit;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,21 @@
|
|||
int be_socket(int, int, int);
|
||||
int be_connect(int, struct sockaddr *, int);
|
||||
int be_getpeername(int, struct sockaddr *, int *);
|
||||
int be_getsockname(int, struct sockaddr *, int *);
|
||||
int be_listen(int, int);
|
||||
int be_accept(int, struct sockaddr *, int *);
|
||||
int be_bind(int, struct sockaddr *, int);
|
||||
int be_pipe(int [2]);
|
||||
int be_read(int, void *, int);
|
||||
int be_write(int, void *, int);
|
||||
int be_close(int);
|
||||
int be_select(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *);
|
||||
int be_getsockopt(int, int, int, void *, int *);
|
||||
|
||||
int start_thr(void (*fn)(void *), void *data, unsigned char *name);
|
||||
|
||||
int get_input_handle(void);
|
||||
void block_stdin(void);
|
||||
void unblock_stdin(void);
|
||||
|
||||
void fatal_exit(const char *, ...);
|
|
@ -0,0 +1,55 @@
|
|||
/* bits.h
|
||||
* (c) 2002 Karel 'Clock' Kulhavy
|
||||
* This file is a part of the Links program, released under GPL.
|
||||
*/
|
||||
|
||||
/* t2c
|
||||
* Type that has exactly 2 chars.
|
||||
* If there is none, t2c is not defined
|
||||
* The type may be signed or unsigned, it doesn't matter
|
||||
*/
|
||||
#if SIZEOF_UNSIGNED_SHORT == 2
|
||||
#define t2c unsigned short
|
||||
#elif SIZEOF_UNSIGNED == 2
|
||||
#define t2c unsigned
|
||||
#elif SIZEOF_UNSIGNED_LONG == 2
|
||||
#define t2c unsigned long
|
||||
#elif defined(SIZEOF_UNSIGNED_LONG_LONG) && SIZEOF_UNSIGNED_LONG_LONG == 2
|
||||
#define t2c unsigned long long
|
||||
#endif /* #if sizeof(short) */
|
||||
|
||||
/* t4c
|
||||
* Type that has exactly 4 chars.
|
||||
* If there is none, t4c is not defined
|
||||
* The type may be signed or unsigned, it doesn't matter
|
||||
*/
|
||||
#if SIZEOF_UNSIGNED_SHORT == 4
|
||||
#define t4c unsigned short
|
||||
#elif SIZEOF_UNSIGNED == 4
|
||||
#define t4c unsigned
|
||||
#elif SIZEOF_UNSIGNED_LONG == 4
|
||||
#define t4c unsigned long
|
||||
#elif defined(SIZEOF_UNSIGNED_LONG_LONG) && SIZEOF_UNSIGNED_LONG_LONG == 4
|
||||
#define t4c unsigned long long
|
||||
#endif /* #if sizeof(short) */
|
||||
|
||||
/* t8c
|
||||
* Type that has exactly 8 chars.
|
||||
* If there is none, t8c is not defined
|
||||
* The type may be signed or unsigned, it doesn't matter
|
||||
*/
|
||||
#if SIZEOF_UNSIGNED_SHORT == 8
|
||||
#define t8c unsigned short
|
||||
#elif SIZEOF_UNSIGNED == 8
|
||||
#define t8c unsigned
|
||||
#elif SIZEOF_UNSIGNED_LONG == 8
|
||||
#define t8c unsigned long
|
||||
#elif defined(SIZEOF_UNSIGNED_LONG_LONG) && SIZEOF_UNSIGNED_LONG_LONG == 8
|
||||
#define t8c unsigned long long
|
||||
#endif /* #if sizeof(short) */
|
||||
|
||||
#ifdef t8c
|
||||
#if SIZEOF_UNSIGNED_LONG >= 8 || defined(__x86_64__) || defined(__aarch64__)
|
||||
#define t8c_is_efficient
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1,357 @@
|
|||
#include "links.h"
|
||||
|
||||
static struct list *block_new_item(void *ignore);
|
||||
static void block_delete_item(struct list *data);
|
||||
static void block_copy_item(struct list *in, struct list *out);
|
||||
static unsigned char *block_type_item(struct terminal *term, struct list *data, int x);
|
||||
static void block_edit_item(struct dialog_data *dlg, struct list *data, void (*ok_fn)(struct dialog_data *, struct list *, struct list *, struct list_description *), struct list *ok_arg, unsigned char dlg_title);
|
||||
static struct list *block_find_item(struct list *start, unsigned char *str, int direction);
|
||||
|
||||
static struct history block_search_histroy = { 0, {&block_search_histroy.items, &block_search_histroy.items} };
|
||||
|
||||
struct list blocks = { init_list_1st(&blocks.list_entry) 0, -1, NULL, init_list_last(&blocks.list_entry) };
|
||||
|
||||
static struct list_description blocks_ld = {
|
||||
0, /* flat */
|
||||
&blocks, /* list head */
|
||||
block_new_item,
|
||||
block_edit_item,
|
||||
NULL,
|
||||
block_delete_item,
|
||||
block_copy_item,
|
||||
block_type_item,
|
||||
block_find_item,
|
||||
&block_search_histroy,
|
||||
0, /* this is set in init_assoc function */
|
||||
15, /* # of items in main window */
|
||||
T_BLOCKED_IMAGE, /* item title */
|
||||
T_BLOCK_LIST_IN_USE, /* Already open message */
|
||||
T_BLOCK_LIST_MANAGER, /* Window title */
|
||||
T_BLOCK_DELETE,
|
||||
0, /* no button */
|
||||
NULL, /* no button */
|
||||
NULL, /* no save */
|
||||
|
||||
NULL, NULL, 0, 0, /* internal vars */
|
||||
0, /* modified */
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
};
|
||||
|
||||
|
||||
static struct list *block_new_item(void *ignore)
|
||||
{
|
||||
/*Default constructor*/
|
||||
struct block *neww;
|
||||
|
||||
neww = mem_alloc(sizeof(struct block));
|
||||
neww->url = stracpy(cast_uchar "");
|
||||
return &neww->head;
|
||||
}
|
||||
|
||||
static void block_delete_item(struct list *data)
|
||||
{
|
||||
/*Destructor */
|
||||
struct block *del = get_struct(data, struct block, head);
|
||||
if (del->head.list_entry.next) del_from_list(&del->head);
|
||||
mem_free(del->url);
|
||||
mem_free(del);
|
||||
}
|
||||
|
||||
static void block_copy_item(struct list *in, struct list *out)
|
||||
{
|
||||
/*Copy construction */
|
||||
struct block *item_in = get_struct(in, struct block, head);
|
||||
struct block *item_out = get_struct(out, struct block, head);
|
||||
|
||||
mem_free(item_out->url);
|
||||
item_out->url = stracpy(item_in->url);
|
||||
}
|
||||
|
||||
/*This is used to display the items in the menu*/
|
||||
static unsigned char *block_type_item(struct terminal *term, struct list *data, int x)
|
||||
{
|
||||
unsigned char *txt, *txt1;
|
||||
struct block *item;
|
||||
|
||||
if (data == &blocks) return stracpy(get_text_translation(TEXT_(T_BLOCK_LIST), term));
|
||||
|
||||
item = get_struct(data, struct block, head);
|
||||
txt = stracpy(item->url);
|
||||
|
||||
/*I have no idea what this does, but it os copied from working code in types.c*/
|
||||
txt1 = convert(blocks_ld.codepage, term_charset(term), txt, NULL);
|
||||
mem_free(txt);
|
||||
|
||||
return txt1;
|
||||
}
|
||||
|
||||
struct assoc_ok_struct {
|
||||
void (*fn)(struct dialog_data *, struct list *, struct list *, struct list_description *);
|
||||
struct list *data;
|
||||
struct dialog_data *dlg;
|
||||
};
|
||||
|
||||
/* destroys an item, this function is called when edit window is aborted */
|
||||
static void block_edit_abort(struct dialog_data *data)
|
||||
{
|
||||
struct block *item = (struct block *)data->dlg->udata;
|
||||
struct dialog *dlg = data->dlg;
|
||||
|
||||
mem_free(dlg->udata2);
|
||||
if (item) block_delete_item(&item->head);
|
||||
}
|
||||
|
||||
/* Puts url into the block list */
|
||||
static void block_edit_done(void *data)
|
||||
{
|
||||
/*Copied from types.c*/
|
||||
struct dialog *d = (struct dialog *)data;
|
||||
struct block *item = (struct block *)d->udata;
|
||||
struct assoc_ok_struct *s = (struct assoc_ok_struct *)d->udata2;
|
||||
unsigned char *txt;
|
||||
unsigned char *url;
|
||||
|
||||
/*See block_edit_item*/
|
||||
url = (unsigned char *)&d->items[4];
|
||||
|
||||
txt = convert(term_charset(s->dlg->win->term), blocks_ld.codepage, url, NULL);
|
||||
mem_free(item->url);
|
||||
item->url = txt;
|
||||
|
||||
s->fn(s->dlg, s->data, &item->head, &blocks_ld);
|
||||
d->udata = NULL; /* for abort function */
|
||||
}
|
||||
|
||||
static void block_edit_item_fn(struct dialog_data *dlg)
|
||||
{
|
||||
/*Copied from input_field. I don't know how most of it works.*/
|
||||
#define LL gf_val(1, G_BFU_FONT_SIZE)
|
||||
struct terminal *term = dlg->win->term;
|
||||
int max = 0, min = 0;
|
||||
int w, rw;
|
||||
int y = gf_val(-1, -G_BFU_FONT_SIZE);
|
||||
unsigned char *text = TEXT_(T_ENTER_URL);
|
||||
|
||||
|
||||
if (dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE);
|
||||
max_text_width(term, text, &max, AL_LEFT);
|
||||
min_text_width(term, text, &min, AL_LEFT);
|
||||
max_buttons_width(term, dlg->items + 1, 2, &max);
|
||||
min_buttons_width(term, dlg->items + 1, 2, &min);
|
||||
if (max < dlg->dlg->items->dlen) max = dlg->dlg->items->dlen;
|
||||
w = term->x * 9 / 10 - 2 * DIALOG_LB;
|
||||
if (w > max) w = max;
|
||||
if (w < min) w = min;
|
||||
rw = w;
|
||||
dlg_format_text_and_field(dlg, NULL, text, dlg->items, 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
|
||||
y += LL;
|
||||
dlg_format_buttons(dlg, NULL, dlg->items + 1, 2, 0, &y, w, &rw, AL_CENTER);
|
||||
w = rw;
|
||||
dlg->xw = rw + 2 * DIALOG_LB;
|
||||
dlg->yw = y + 2 * DIALOG_TB;
|
||||
center_dlg(dlg);
|
||||
draw_dlg(dlg);
|
||||
y = dlg->y + DIALOG_TB;
|
||||
if (dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE);
|
||||
dlg_format_text_and_field(dlg, term, text, dlg->items, dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);
|
||||
y += LL;
|
||||
dlg_format_buttons(dlg, term, dlg->items + 1, 2, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);
|
||||
}
|
||||
|
||||
static void block_edit_item(struct dialog_data *dlg, struct list *data, void (*ok_fn)(struct dialog_data *, struct list *, struct list *, struct list_description *), struct list *ok_arg, unsigned char dlg_title)
|
||||
{
|
||||
/*Copied from types.c */
|
||||
/*Data is a new item generated by the "default" function*/
|
||||
struct block *neww = get_struct(data, struct block, head);
|
||||
|
||||
struct terminal *term = dlg->win->term;
|
||||
struct dialog *d;
|
||||
struct assoc_ok_struct *s;
|
||||
unsigned char *url, *txt;
|
||||
|
||||
/*Allocate space for dialog, 4 items followed by 1 string*/
|
||||
d = mem_alloc(sizeof(struct dialog) + 4 * sizeof(struct dialog_item) + 1 * MAX_STR_LEN);
|
||||
memset(d, 0, sizeof(struct dialog) + 4 * sizeof(struct dialog_item) + 1 * MAX_STR_LEN);
|
||||
|
||||
/*Set up this string */
|
||||
url = (unsigned char *)&d->items[4];
|
||||
txt = convert(blocks_ld.codepage, term_charset(dlg->win->term), neww->url, NULL);
|
||||
safe_strncpy(url, txt, MAX_STR_LEN);
|
||||
mem_free(txt);
|
||||
|
||||
/* Create the dialog */
|
||||
s = mem_alloc(sizeof(struct assoc_ok_struct));
|
||||
|
||||
s->fn = ok_fn;
|
||||
s->data = ok_arg;
|
||||
s->dlg = dlg;
|
||||
|
||||
switch (dlg_title) {
|
||||
case TITLE_EDIT:
|
||||
d->title = TEXT_(T_BLOCK_EDIT);
|
||||
break;
|
||||
|
||||
case TITLE_ADD:
|
||||
d->title = TEXT_(T_BLOCK_ADD);
|
||||
break;
|
||||
|
||||
default:
|
||||
internal_error("Unsupported dialog title.\n");
|
||||
}
|
||||
|
||||
d->udata = neww;
|
||||
d->udata2 = s;
|
||||
d->fn = block_edit_item_fn;
|
||||
d->abort = block_edit_abort;
|
||||
d->refresh = block_edit_done;
|
||||
d->refresh_data = d;
|
||||
d->items[0].type = D_FIELD;
|
||||
d->items[0].dlen = MAX_STR_LEN;
|
||||
d->items[0].data = url;
|
||||
d->items[0].fn = check_nonempty;
|
||||
d->items[1].type = D_BUTTON;
|
||||
d->items[1].gid = B_ENTER;
|
||||
d->items[1].fn = ok_dialog;
|
||||
d->items[1].text = TEXT_(T_OK);
|
||||
d->items[2].type = D_BUTTON;
|
||||
d->items[2].gid = B_ESC;
|
||||
d->items[2].text = TEXT_(T_CANCEL);
|
||||
d->items[2].fn = cancel_dialog;
|
||||
d->items[3].type = D_END;
|
||||
do_dialog(term, d, getml(d, NULL));
|
||||
}
|
||||
|
||||
static int test_entry(struct list *e, unsigned char *str)
|
||||
{
|
||||
return casestrstr(get_struct(e, struct block, head)->url, str);
|
||||
}
|
||||
|
||||
static struct list *block_find_item(struct list *s, unsigned char *str, int direction)
|
||||
{
|
||||
struct list *e;
|
||||
|
||||
if (direction >= 0) {
|
||||
for (e = list_next(s); e != s; e = list_next(e)) {
|
||||
if (e->depth >= 0 && test_entry(e, str))
|
||||
return e;
|
||||
}
|
||||
} else {
|
||||
for (e = list_prev(s); e != s; e = list_prev(e)) {
|
||||
if (e->depth >= 0 && test_entry(e, str))
|
||||
return e;
|
||||
}
|
||||
}
|
||||
|
||||
if (e->depth >= 0 && test_entry(e, str))
|
||||
return e;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void block_manager(struct terminal *term, void *fcp, void *ses_)
|
||||
{
|
||||
struct session *ses = (struct session *)ses_;
|
||||
create_list_window(&blocks_ld, &blocks, term, ses);
|
||||
}
|
||||
|
||||
|
||||
void *block_url_add(void *ses_, unsigned char *url)
|
||||
{
|
||||
struct session *ses = (struct session *)ses_;
|
||||
/*Callback from the dialog box created from the link menu*/
|
||||
struct list *new_list;
|
||||
struct block *new_b;
|
||||
struct terminal *term = ses ? ses->term : NULL;
|
||||
|
||||
if (test_list_window_in_use(&blocks_ld, term))
|
||||
return NULL;
|
||||
|
||||
new_list = block_new_item(0);
|
||||
new_b = get_struct(new_list, struct block, head);
|
||||
|
||||
mem_free(new_b->url);
|
||||
new_b->url = stracpy(url);
|
||||
new_b->head.type = 0;
|
||||
|
||||
add_to_list(blocks.list_entry, &new_b->head);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void block_url_query(struct session *ses, unsigned char *u)
|
||||
{
|
||||
if (test_list_window_in_use(&blocks_ld, ses->term))
|
||||
return;
|
||||
|
||||
input_field(ses->term, NULL, TEXT_(T_BLOCK_URL), TEXT_(T_BLOCK_ADD), ses, 0, MAX_INPUT_URL_LEN, u, 0, 0, NULL, 2, TEXT_(T_OK), block_url_add, TEXT_(T_CANCEL), input_field_null);
|
||||
|
||||
}
|
||||
|
||||
static unsigned char *find_first_match(unsigned char *s, unsigned char *p, unsigned *ii)
|
||||
{
|
||||
unsigned i;
|
||||
retry:
|
||||
for (i = 0; s[i] && p[i] && p[i] != '*'; i++) {
|
||||
if (s[i] != p[i] && p[i] != '?') {
|
||||
s++;
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
*ii = i;
|
||||
if (!p[i] || p[i] == '*') return s;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int simple_glob_match(unsigned char *s, unsigned char *p)
|
||||
{
|
||||
unsigned i;
|
||||
if (find_first_match(s, p, &i) != s) return 0;
|
||||
if (!p[i]) return !s[i];
|
||||
while (1) {
|
||||
s += i;
|
||||
p += i + 1;
|
||||
if (!(s = find_first_match(s, p, &i))) return 0;
|
||||
if (!p[i]) {
|
||||
s += strlen(cast_const_char s) - i;
|
||||
return !!find_first_match(s, p, &i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int is_url_blocked(unsigned char *url)
|
||||
{
|
||||
struct list *b;
|
||||
struct list_head *lb;
|
||||
|
||||
foreach(struct list, b, lb, blocks.list_entry) {
|
||||
if (simple_glob_match(url, get_struct(b, struct block, head)->url))
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void init_blocks(void)
|
||||
{
|
||||
blocks_ld.codepage = utf8_table;
|
||||
}
|
||||
|
||||
void free_blocks(void)
|
||||
{
|
||||
/*List destructor */
|
||||
struct list *b;
|
||||
struct list_head *lb;
|
||||
|
||||
foreach(struct list, b, lb, blocks.list_entry) {
|
||||
struct block *bm = get_struct(b, struct block, head);
|
||||
mem_free(bm->url);
|
||||
lb = lb->prev;
|
||||
del_from_list(b);
|
||||
mem_free(bm);
|
||||
}
|
||||
|
||||
free_history(block_search_histroy);
|
||||
}
|
|
@ -0,0 +1,811 @@
|
|||
/* bookmark.c
|
||||
* (c) 2002 Petr 'Brain' Kulhavy, Karel 'Clock' Kulhavy
|
||||
* This file is a part of the Links program, released under GPL.
|
||||
*/
|
||||
|
||||
#include "links.h"
|
||||
|
||||
#define SEARCH_IN_URL
|
||||
|
||||
#ifdef SEARCH_IN_URL
|
||||
#define SHOW_URL
|
||||
#endif
|
||||
|
||||
static struct stat bookmarks_st;
|
||||
|
||||
static struct list *bookmark_new_item(void *);
|
||||
static unsigned char *bookmark_type_item(struct terminal *, struct list *, int);
|
||||
static void bookmark_delete_item(struct list *);
|
||||
static void bookmark_edit_item(struct dialog_data *, struct list *, void (*)(struct dialog_data *, struct list *, struct list *, struct list_description *), struct list *, unsigned char);
|
||||
static void bookmark_copy_item(struct list *, struct list *);
|
||||
static void bookmark_goto_item(struct session *, struct list *);
|
||||
static void *bookmark_default_value(struct session *, unsigned char);
|
||||
static struct list *bookmark_find_item(struct list *start, unsigned char *str, int direction);
|
||||
static void save_bookmarks(struct session *ses);
|
||||
|
||||
struct list bookmarks = { init_list_1st(&bookmarks.list_entry) 0, -1, NULL, init_list_last(&bookmarks.list_entry) };
|
||||
|
||||
static struct history bookmark_search_history = { 0, { &bookmark_search_history.items, &bookmark_search_history.items } };
|
||||
|
||||
/* when you change anything, don't forget to change it in reinit_bookmarks too !*/
|
||||
|
||||
struct bookmark_ok_struct {
|
||||
void (*fn)(struct dialog_data *, struct list *, struct list *, struct list_description *);
|
||||
struct list *data;
|
||||
struct dialog_data *dlg;
|
||||
};
|
||||
|
||||
|
||||
struct bookmark_list {
|
||||
list_head_1st
|
||||
/* bookmark specific */
|
||||
unsigned char *title;
|
||||
unsigned char *url;
|
||||
list_head_last
|
||||
};
|
||||
|
||||
|
||||
static struct list_description bookmark_ld = {
|
||||
1, /* 0= flat; 1=tree */
|
||||
&bookmarks, /* list */
|
||||
bookmark_new_item, /* no codepage translations */
|
||||
bookmark_edit_item, /* translate when create dialog and translate back when ok is pressed */
|
||||
bookmark_default_value, /* codepage translation from current_page_encoding to UTF8 */
|
||||
bookmark_delete_item, /* no codepage translations */
|
||||
bookmark_copy_item, /* no codepage translations */
|
||||
bookmark_type_item, /* no codepage translations (bookmarks are internally in UTF8) */
|
||||
bookmark_find_item,
|
||||
&bookmark_search_history,
|
||||
0, /* this is set in init_bookmarks function */
|
||||
15, /* # of items in main window */
|
||||
T_BOOKMARK,
|
||||
T_BOOKMARKS_ALREADY_IN_USE,
|
||||
T_BOOKMARK_MANAGER,
|
||||
T_DELETE_BOOKMARK,
|
||||
T_GOTO,
|
||||
bookmark_goto_item, /* FIXME: should work (URL in UTF8), but who knows? */
|
||||
save_bookmarks,
|
||||
|
||||
NULL,NULL,0,0, /* internal vars */
|
||||
0, /* modified */
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
};
|
||||
|
||||
|
||||
struct kawasaki {
|
||||
unsigned char *title;
|
||||
unsigned char *url;
|
||||
};
|
||||
|
||||
|
||||
/* clears the bookmark list */
|
||||
static void free_bookmarks(void)
|
||||
{
|
||||
struct list *b;
|
||||
struct list_head *lb;
|
||||
|
||||
foreach(struct list, b, lb, bookmarks.list_entry) {
|
||||
struct bookmark_list *bm = get_struct(b, struct bookmark_list, head);
|
||||
mem_free(bm->title);
|
||||
mem_free(bm->url);
|
||||
lb = lb->prev;
|
||||
del_from_list(b);
|
||||
mem_free(bm);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* called before exiting the links */
|
||||
void finalize_bookmarks(void)
|
||||
{
|
||||
free_bookmarks();
|
||||
free_history(bookmark_search_history);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* allocates struct kawasaki and puts current page title and url */
|
||||
/* type: 0=item, 1=directory */
|
||||
/* on error returns NULL */
|
||||
static void *bookmark_default_value(struct session *ses, unsigned char type)
|
||||
{
|
||||
struct kawasaki *zelena;
|
||||
unsigned char *txt;
|
||||
|
||||
txt=mem_alloc(MAX_STR_LEN);
|
||||
|
||||
zelena=mem_alloc(sizeof(struct kawasaki));
|
||||
|
||||
zelena->url=NULL;
|
||||
zelena->title=NULL;
|
||||
if (get_current_url(ses,txt,MAX_STR_LEN))
|
||||
{
|
||||
if (ses->screen->f_data)
|
||||
{
|
||||
zelena->url=convert(term_charset(ses->term),bookmark_ld.codepage,txt,NULL);
|
||||
clr_white(zelena->url);
|
||||
}
|
||||
else
|
||||
zelena->url=stracpy(txt);
|
||||
}
|
||||
if (get_current_title(ses->screen,txt,MAX_STR_LEN)) /* ses->screen->f_data must exist here */
|
||||
{
|
||||
zelena->title=convert(term_charset(ses->term),bookmark_ld.codepage,txt,NULL);
|
||||
clr_white(zelena->title);
|
||||
}
|
||||
|
||||
mem_free(txt);
|
||||
|
||||
return zelena;
|
||||
}
|
||||
|
||||
|
||||
static void bookmark_copy_item(struct list *in, struct list *out)
|
||||
{
|
||||
struct bookmark_list *item_in = get_struct(in, struct bookmark_list, head);
|
||||
struct bookmark_list *item_out = get_struct(out, struct bookmark_list, head);
|
||||
|
||||
item_out->head.type = item_in->head.type;
|
||||
item_out->head.depth = item_in->head.depth;
|
||||
|
||||
mem_free(item_out->title);
|
||||
item_out->title = stracpy(item_in->title);
|
||||
mem_free(item_out->url);
|
||||
item_out->url = stracpy(item_in->url);
|
||||
}
|
||||
|
||||
|
||||
static unsigned char * const bm_add_msg[] = {
|
||||
TEXT_(T_NNAME),
|
||||
TEXT_(T_URL),
|
||||
};
|
||||
|
||||
/* Called to setup the add bookmark dialog */
|
||||
static void bookmark_edit_item_fn(struct dialog_data *dlg)
|
||||
{
|
||||
int max = 0, min = 0;
|
||||
int w, rw;
|
||||
int y = gf_val(-1, -1 * G_BFU_FONT_SIZE);
|
||||
struct terminal *term;
|
||||
int a;
|
||||
if (dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE);
|
||||
|
||||
term = dlg->win->term;
|
||||
|
||||
for (a=0;a<dlg->n-2;a++)
|
||||
{
|
||||
max_text_width(term, bm_add_msg[a], &max, AL_LEFT);
|
||||
min_text_width(term, bm_add_msg[a], &min, AL_LEFT);
|
||||
}
|
||||
max_buttons_width(term, dlg->items + dlg->n-2, 2, &max);
|
||||
min_buttons_width(term, dlg->items + dlg->n-2, 2, &min);
|
||||
w = term->x * 9 / 10 - 2 * DIALOG_LB;
|
||||
|
||||
if (w < min) w = min;
|
||||
|
||||
rw = w;
|
||||
|
||||
for (a = 0; a < dlg->n - 2; a++) {
|
||||
dlg_format_text_and_field(dlg, NULL, bm_add_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
|
||||
y += gf_val(1, 1 * G_BFU_FONT_SIZE);
|
||||
}
|
||||
dlg_format_buttons(dlg, NULL, dlg->items+dlg->n-2, 2, 0, &y, w, &rw, AL_CENTER);
|
||||
w = rw;
|
||||
dlg->xw = w + 2 * DIALOG_LB;
|
||||
dlg->yw = y + 2 * DIALOG_TB;
|
||||
center_dlg(dlg);
|
||||
draw_dlg(dlg);
|
||||
y = dlg->y + DIALOG_TB;
|
||||
if (dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE);
|
||||
for (a = 0; a < dlg->n - 2; a++) {
|
||||
dlg_format_text_and_field(dlg, term, bm_add_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);
|
||||
y += gf_val(1, G_BFU_FONT_SIZE);
|
||||
}
|
||||
dlg_format_buttons(dlg, term, &dlg->items[dlg->n-2], 2, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);
|
||||
}
|
||||
|
||||
|
||||
/* Puts url and title into the bookmark item */
|
||||
static void bookmark_edit_done(void *data)
|
||||
{
|
||||
struct dialog *d = (struct dialog *)data;
|
||||
struct bookmark_list *item = (struct bookmark_list *)d->udata;
|
||||
unsigned char *title, *url;
|
||||
struct bookmark_ok_struct *s = (struct bookmark_ok_struct *)d->udata2;
|
||||
int a;
|
||||
|
||||
if (item->head.type & 1) a = 4; /* folder */
|
||||
else a = 5;
|
||||
title = (unsigned char *)&d->items[a];
|
||||
url = title + MAX_STR_LEN;
|
||||
|
||||
mem_free(item->title);
|
||||
item->title = convert(term_charset(s->dlg->win->term), bookmark_ld.codepage, title, NULL);
|
||||
clr_white(item->title);
|
||||
|
||||
mem_free(item->url);
|
||||
item->url = convert(term_charset(s->dlg->win->term), bookmark_ld.codepage, url, NULL);
|
||||
clr_white(item->url);
|
||||
|
||||
s->fn(s->dlg, s->data, &item->head, &bookmark_ld);
|
||||
d->udata = NULL; /* for abort function */
|
||||
}
|
||||
|
||||
|
||||
/* destroys an item, this function is called when edit window is aborted */
|
||||
static void bookmark_edit_abort(struct dialog_data *data)
|
||||
{
|
||||
struct bookmark_list *item = (struct bookmark_list *)data->dlg->udata;
|
||||
struct dialog *dlg = data->dlg;
|
||||
|
||||
mem_free(dlg->udata2);
|
||||
if (item) bookmark_delete_item(&item->head);
|
||||
}
|
||||
|
||||
|
||||
/* dlg_title is TITLE_EDIT or TITLE_ADD */
|
||||
/* edit item function */
|
||||
static void bookmark_edit_item(struct dialog_data *dlg, struct list *data, void (*ok_fn)(struct dialog_data *, struct list *, struct list *, struct list_description *), struct list *ok_arg, unsigned char dlg_title)
|
||||
{
|
||||
struct bookmark_list *item = get_struct(data, struct bookmark_list, head);
|
||||
unsigned char *title, *url;
|
||||
struct dialog *d;
|
||||
struct bookmark_ok_struct *s;
|
||||
int a;
|
||||
|
||||
/* Create the dialog */
|
||||
s = mem_alloc(sizeof(struct bookmark_ok_struct));
|
||||
s->fn = ok_fn;
|
||||
s->data = ok_arg;
|
||||
s->dlg = dlg;
|
||||
|
||||
if (item->head.type & 1) a = 4; /* folder */
|
||||
else a = 5;
|
||||
d = mem_calloc(sizeof(struct dialog) + a * sizeof(struct dialog_item) + 2 * MAX_STR_LEN);
|
||||
|
||||
title = (unsigned char *)&d->items[a];
|
||||
url = title + MAX_STR_LEN;
|
||||
|
||||
{
|
||||
unsigned char *txt;
|
||||
|
||||
txt = convert(bookmark_ld.codepage, term_charset(dlg->win->term), item->title, NULL);
|
||||
clr_white(txt);
|
||||
safe_strncpy(title, txt, MAX_STR_LEN);
|
||||
mem_free(txt);
|
||||
|
||||
txt = convert(bookmark_ld.codepage, term_charset(dlg->win->term), item->url, NULL);
|
||||
clr_white(txt);
|
||||
safe_strncpy(url, txt, MAX_STR_LEN);
|
||||
mem_free(txt);
|
||||
}
|
||||
|
||||
switch (dlg_title)
|
||||
{
|
||||
case TITLE_EDIT:
|
||||
if (item->head.type & 1) d->title = TEXT_(T_EDIT_FOLDER);
|
||||
else d->title = TEXT_(T_EDIT_BOOKMARK);
|
||||
break;
|
||||
|
||||
case TITLE_ADD:
|
||||
if (item->head.type & 1) d->title = TEXT_(T_ADD_FOLDER);
|
||||
else d->title = TEXT_(T_ADD_BOOKMARK);
|
||||
break;
|
||||
|
||||
default:
|
||||
internal_error("Unsupported dialog title.\n");
|
||||
}
|
||||
d->fn = bookmark_edit_item_fn;
|
||||
d->udata = item; /* item */
|
||||
d->udata2 = s;
|
||||
d->refresh = bookmark_edit_done;
|
||||
d->abort = bookmark_edit_abort;
|
||||
d->refresh_data = d;
|
||||
|
||||
d->items[0].type = D_FIELD;
|
||||
d->items[0].dlen = MAX_STR_LEN;
|
||||
d->items[0].data = title;
|
||||
d->items[0].fn = check_nonempty;
|
||||
|
||||
a = 0;
|
||||
if (!(item->head.type & 1)) /* item */
|
||||
{
|
||||
d->items[1].type = D_FIELD;
|
||||
d->items[1].dlen = MAX_STR_LEN;
|
||||
d->items[1].data = url;
|
||||
d->items[1].fn = check_nonempty;
|
||||
a++;
|
||||
}
|
||||
|
||||
d->items[a+1].type = D_BUTTON;
|
||||
d->items[a+1].gid = B_ENTER;
|
||||
d->items[a+1].fn = ok_dialog;
|
||||
d->items[a+1].text = TEXT_(T_OK);
|
||||
|
||||
d->items[a+2].type = D_BUTTON;
|
||||
d->items[a+2].gid = B_ESC;
|
||||
d->items[a+2].text = TEXT_(T_CANCEL);
|
||||
d->items[a+2].fn = cancel_dialog;
|
||||
|
||||
d->items[a+3].type = D_END;
|
||||
|
||||
do_dialog(dlg->win->term, d, getml(d, NULL));
|
||||
}
|
||||
|
||||
|
||||
/* create new bookmark item and returns pointer to it, on error returns 0*/
|
||||
/* bookmark is filled with given data, data are deallocated afterwards */
|
||||
static struct list *bookmark_new_item(void *data)
|
||||
{
|
||||
struct bookmark_list *b;
|
||||
struct kawasaki *zelena = (struct kawasaki *)data;
|
||||
|
||||
b = mem_alloc(sizeof(struct bookmark_list));
|
||||
|
||||
if (zelena && zelena->title)
|
||||
b->title = zelena->title;
|
||||
else
|
||||
b->title = stracpy(cast_uchar "");
|
||||
|
||||
if (zelena && zelena->url)
|
||||
b->url = zelena->url;
|
||||
else
|
||||
b->url = stracpy(cast_uchar "");
|
||||
|
||||
if (zelena)
|
||||
mem_free(zelena);
|
||||
|
||||
return &b->head;
|
||||
}
|
||||
|
||||
|
||||
/* allocate string and print bookmark into it */
|
||||
/* x: 0=type all, 1=type title only */
|
||||
static unsigned char *bookmark_type_item(struct terminal *term, struct list *data, int x)
|
||||
{
|
||||
unsigned char *txt, *txt1;
|
||||
struct bookmark_list *item;
|
||||
|
||||
if (data == &bookmarks) /* head */
|
||||
return stracpy(get_text_translation(TEXT_(T_BOOKMARKS), term));
|
||||
|
||||
item = get_struct(data, struct bookmark_list, head);
|
||||
txt = stracpy(item->title);
|
||||
|
||||
#ifdef SHOW_URL
|
||||
x = 0;
|
||||
#endif
|
||||
if (!x && !(item->head.type & 1)) {
|
||||
add_to_strn(&txt, cast_uchar " (");
|
||||
add_to_strn(&txt, item->url);
|
||||
add_to_strn(&txt, cast_uchar ")");
|
||||
}
|
||||
|
||||
txt1 = convert(bookmark_ld.codepage, term_charset(term), txt, NULL);
|
||||
clr_white(txt1);
|
||||
mem_free(txt);
|
||||
return txt1;
|
||||
}
|
||||
|
||||
|
||||
/* goto bookmark (called when goto button is pressed) */
|
||||
static void bookmark_goto_item(struct session *ses, struct list *i)
|
||||
{
|
||||
struct bookmark_list *item = get_struct(i, struct bookmark_list, head);
|
||||
|
||||
goto_url_utf8(ses, item->url);
|
||||
}
|
||||
|
||||
|
||||
/* delete bookmark from list */
|
||||
static void bookmark_delete_item(struct list *data)
|
||||
{
|
||||
struct bookmark_list *item = get_struct(data, struct bookmark_list, head);
|
||||
|
||||
if (item->head.list_entry.next) del_from_list(&item->head);
|
||||
mem_free(item->url);
|
||||
mem_free(item->title);
|
||||
mem_free(item);
|
||||
}
|
||||
|
||||
static int substr_utf8(unsigned char *string, unsigned char *substr)
|
||||
{
|
||||
int r;
|
||||
string = unicode_upcase_string(string);
|
||||
substr = unicode_upcase_string(substr);
|
||||
r = !!strstr(cast_const_char string, cast_const_char substr);
|
||||
mem_free(string);
|
||||
mem_free(substr);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int test_entry(struct list *e, unsigned char *str)
|
||||
{
|
||||
struct bookmark_list *list = get_struct(e, struct bookmark_list, head);
|
||||
if (substr_utf8(list->title, str))
|
||||
return 1;
|
||||
#ifdef SEARCH_IN_URL
|
||||
return casestrstr(list->url, str);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct list *bookmark_find_item(struct list *s, unsigned char *str, int direction)
|
||||
{
|
||||
struct list *e;
|
||||
|
||||
if (direction >= 0) {
|
||||
for (e = list_next(s); e != s; e = list_next(e)) {
|
||||
if (e->depth >= 0 && test_entry(e, str))
|
||||
return e;
|
||||
}
|
||||
} else {
|
||||
for (e = list_prev(s); e != s; e = list_prev(e)) {
|
||||
if (e->depth >= 0 && test_entry(e, str))
|
||||
return e;
|
||||
}
|
||||
}
|
||||
|
||||
if (e->depth >= 0 && test_entry(e, str))
|
||||
return e;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/* returns previous item in the same folder and with same the depth, or father if there's no previous item */
|
||||
/* we suppose that previous items have correct pointer fotr */
|
||||
static struct list *previous_on_this_level(struct list *item)
|
||||
{
|
||||
struct list *p;
|
||||
|
||||
for (p = list_prev(item); p->depth > item->depth; p = p->fotr)
|
||||
;
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
/* create new bookmark at the end of the list */
|
||||
/* if url is NULL, create folder */
|
||||
/* both strings are null terminated */
|
||||
static void add_bookmark(unsigned char *title, unsigned char *url, int depth)
|
||||
{
|
||||
struct bookmark_list *b;
|
||||
struct list *p;
|
||||
struct document_options *dop;
|
||||
|
||||
if (!title) return;
|
||||
|
||||
b = mem_alloc(sizeof(struct bookmark_list));
|
||||
|
||||
dop = mem_calloc(sizeof(struct document_options));
|
||||
dop->cp = bookmark_ld.codepage;
|
||||
|
||||
b->title = convert(bookmarks_codepage, bookmark_ld.codepage, title, dop);
|
||||
clr_white(b->title);
|
||||
|
||||
if (url) {
|
||||
b->url = convert(bookmarks_codepage, bookmark_ld.codepage, url, NULL);
|
||||
clr_white(b->url);
|
||||
b->head.type = 0;
|
||||
} else {
|
||||
b->url = stracpy(cast_uchar "");
|
||||
b->head.type = 1;
|
||||
}
|
||||
|
||||
b->head.depth = depth;
|
||||
|
||||
add_to_list_end(bookmarks.list_entry, &b->head);
|
||||
|
||||
p = previous_on_this_level(&b->head);
|
||||
if (p->depth < b->head.depth) b->head.fotr = p; /* directory b belongs into */
|
||||
else b->head.fotr = p->fotr;
|
||||
|
||||
mem_free(dop);
|
||||
}
|
||||
|
||||
/* Created pre-cooked bookmarks */
|
||||
static void create_initial_bookmarks(void)
|
||||
{
|
||||
add_bookmark(cast_uchar "Links", NULL, 0);
|
||||
add_bookmark(cast_uchar "English", NULL, 1);
|
||||
add_bookmark(cast_uchar "Calibration Procedure", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/calibration.html", 2);
|
||||
add_bookmark(cast_uchar "Links Homepage", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/", 2);
|
||||
add_bookmark(cast_uchar "Links Manual", cast_uchar "http://links.twibright.com/user_en.html", 2);
|
||||
add_bookmark(cast_uchar "Cesky", NULL, 1);
|
||||
add_bookmark(cast_uchar "Kalibracni procedura", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/kalibrace.html", 2);
|
||||
add_bookmark(cast_uchar "Links: domaci stranka", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/index_cz.html", 2);
|
||||
add_bookmark(cast_uchar "Manual k Linksu", cast_uchar "http://links.twibright.com/user.html", 2);
|
||||
}
|
||||
|
||||
static void load_bookmarks(struct session *ses)
|
||||
{
|
||||
unsigned char *buf;
|
||||
long len;
|
||||
|
||||
unsigned char *p, *end;
|
||||
unsigned char *name, *attr;
|
||||
int namelen;
|
||||
int status;
|
||||
unsigned char *title = 0;
|
||||
unsigned char *url = 0;
|
||||
int depth;
|
||||
|
||||
struct document_options dop;
|
||||
int rs;
|
||||
|
||||
memset(&dop, 0, sizeof(dop));
|
||||
dop.plain = 1;
|
||||
|
||||
/* status:
|
||||
* 0 = find <dt> or </dl> element
|
||||
* 1 = find <a> or <h3> element
|
||||
* 2 = reading bookmark, find </a> element, title is pointer
|
||||
* behind the leading <a> element
|
||||
* 3 = reading folder name, find </h3> element, title is
|
||||
* pointer behind leading <h3> element
|
||||
*/
|
||||
|
||||
buf = read_config_file(bookmarks_file);
|
||||
if (!buf) {
|
||||
create_initial_bookmarks();
|
||||
bookmark_ld.modified = 1;
|
||||
save_bookmarks(ses);
|
||||
return;
|
||||
}
|
||||
|
||||
len = strlen(cast_const_char buf);
|
||||
|
||||
p = buf;
|
||||
end = buf + len;
|
||||
|
||||
status = 0; /* find bookmark */
|
||||
depth = 0;
|
||||
|
||||
d_opt = &dop;
|
||||
while (1) {
|
||||
unsigned char *s;
|
||||
|
||||
while (p < end && *p != '<') p++; /* find start of html tag */
|
||||
if (p >= end) break; /* parse end */
|
||||
s = p;
|
||||
if (end - p >= 2 && (p[1] == '!' || p[1]== '?')) { p = skip_comment(p, end); continue; }
|
||||
if (parse_element(p, end, &name, &namelen, &attr, &p)) { p++; continue; }
|
||||
|
||||
switch (status) {
|
||||
case 0: /* <dt> or </dl> */
|
||||
if (namelen == 2 && !casecmp(name, cast_uchar "dt", 2))
|
||||
status = 1;
|
||||
else if (namelen == 3 && !casecmp(name, cast_uchar "/dl", 3)) {
|
||||
depth--;
|
||||
if (depth == -1) goto smitec;
|
||||
}
|
||||
continue;
|
||||
|
||||
case 1: /* find "a" element */
|
||||
if (namelen == 1 && !casecmp(name, cast_uchar "a", 1)) {
|
||||
if (!(url = get_attr_val(attr, cast_uchar "href"))) continue;
|
||||
status = 2;
|
||||
title = p;
|
||||
} else if (namelen == 2 && !casecmp(name, cast_uchar "h3", 1)) {
|
||||
status = 3;
|
||||
title = p;
|
||||
}
|
||||
continue;
|
||||
|
||||
case 2: /* find "/a" element */
|
||||
if (namelen != 2 || casecmp(name, cast_uchar "/a", 2)) continue; /* ignore all other elements */
|
||||
*s = 0;
|
||||
add_bookmark(title, url, depth);
|
||||
mem_free(url);
|
||||
status = 0;
|
||||
continue;
|
||||
|
||||
case 3: /* find "/h3" element */
|
||||
if (namelen !=3 || casecmp(name, cast_uchar "/h3", 2)) continue; /* ignore all other elements */
|
||||
*s = 0;
|
||||
add_bookmark(title, NULL, depth);
|
||||
status = 0;
|
||||
depth++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (status == 2) mem_free(url);
|
||||
smitec:
|
||||
mem_free(buf);
|
||||
d_opt = &dd_opt;
|
||||
bookmark_ld.modified = 0;
|
||||
|
||||
EINTRLOOP(rs, stat(cast_const_char bookmarks_file, &bookmarks_st));
|
||||
if (rs)
|
||||
memset(&bookmarks_st, -1, sizeof bookmarks_st);
|
||||
}
|
||||
|
||||
void init_bookmarks(void)
|
||||
{
|
||||
memset(&bookmarks_st, -1, sizeof bookmarks_st);
|
||||
if (!*bookmarks_file) {
|
||||
unsigned char *e;
|
||||
safe_strncpy(bookmarks_file, links_home ? links_home : (unsigned char*)"", MAX_STR_LEN);
|
||||
e = cast_uchar strchr(cast_const_char bookmarks_file, 0);
|
||||
#ifdef DOS_FS_8_3
|
||||
safe_strncpy(e, cast_uchar "bookmark.htm", MAX_STR_LEN - (e - bookmarks_file));
|
||||
#else
|
||||
safe_strncpy(e, cast_uchar "bookmarks.html", MAX_STR_LEN - (e - bookmarks_file));
|
||||
#endif
|
||||
}
|
||||
|
||||
bookmark_ld.codepage = utf8_table;
|
||||
load_bookmarks(NULL);
|
||||
}
|
||||
|
||||
void reinit_bookmarks(struct session *ses, unsigned char *new_bookmarks_file, int new_bookmarks_codepage)
|
||||
{
|
||||
unsigned char *buf;
|
||||
if (test_list_window_in_use(&bookmark_ld, ses->term))
|
||||
return;
|
||||
|
||||
if (!strcmp(cast_const_char bookmarks_file, cast_const_char new_bookmarks_file)) {
|
||||
goto save_only;
|
||||
}
|
||||
|
||||
buf = read_config_file(new_bookmarks_file);
|
||||
if (buf) {
|
||||
mem_free(buf);
|
||||
free_bookmarks();
|
||||
safe_strncpy(bookmarks_file, new_bookmarks_file, MAX_STR_LEN);
|
||||
bookmarks_codepage = new_bookmarks_codepage;
|
||||
load_bookmarks(ses);
|
||||
reinit_list_window(&bookmark_ld);
|
||||
} else {
|
||||
save_only:
|
||||
safe_strncpy(bookmarks_file, new_bookmarks_file, MAX_STR_LEN);
|
||||
bookmarks_codepage = new_bookmarks_codepage;
|
||||
bookmark_ld.modified = 1;
|
||||
save_bookmarks(ses);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* gets str, converts all < = > & to appropriate entity
|
||||
* returns allocated string with result
|
||||
*/
|
||||
static unsigned char *convert_to_entity_string(unsigned char *str)
|
||||
{
|
||||
unsigned char *dst, *p;
|
||||
int dstl;
|
||||
|
||||
dst = init_str();
|
||||
dstl = 0;
|
||||
|
||||
for (p = str; *p; p++) {
|
||||
switch(*p) {
|
||||
case '<':
|
||||
add_to_str(&dst, &dstl, cast_uchar "<");
|
||||
break;
|
||||
case '>':
|
||||
add_to_str(&dst, &dstl, cast_uchar ">");
|
||||
break;
|
||||
|
||||
case '=':
|
||||
add_to_str(&dst, &dstl, cast_uchar "=");
|
||||
break;
|
||||
|
||||
case '&':
|
||||
add_to_str(&dst, &dstl, cast_uchar "&");
|
||||
break;
|
||||
|
||||
case '"':
|
||||
add_to_str(&dst, &dstl, cast_uchar """);
|
||||
break;
|
||||
|
||||
default:
|
||||
add_chr_to_str(&dst, &dstl, *p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return dst;
|
||||
}
|
||||
|
||||
/* writes bookmarks to disk */
|
||||
static void save_bookmarks(struct session *ses)
|
||||
{
|
||||
struct list *li;
|
||||
struct list_head *lli;
|
||||
int depth;
|
||||
int a;
|
||||
unsigned char *data;
|
||||
int l;
|
||||
int err;
|
||||
int rs;
|
||||
|
||||
if (!bookmark_ld.modified)return;
|
||||
data = init_str();
|
||||
l = 0;
|
||||
add_to_str(&data, &l, cast_uchar
|
||||
"<HTML>\n"
|
||||
"<HEAD>\n"
|
||||
"<!-- This is an automatically generated file.\n"
|
||||
"It will be read and overwritten.\n"
|
||||
"Do Not Edit! -->\n"
|
||||
"<TITLE>Links bookmarks</TITLE>\n"
|
||||
"</HEAD>\n"
|
||||
"<H1>Links bookmarks</H1>\n\n"
|
||||
"<DL><P>\n"
|
||||
);
|
||||
depth = 0;
|
||||
foreach(struct list, li, lli, bookmarks.list_entry) {
|
||||
struct bookmark_list *b = get_struct(li, struct bookmark_list, head);
|
||||
for (a = b->head.depth; a < depth; a++) add_to_str(&data, &l, cast_uchar "</DL>\n");
|
||||
depth = b->head.depth;
|
||||
|
||||
if (b->head.type & 1) {
|
||||
unsigned char *txt, *txt1;
|
||||
txt = convert(bookmark_ld.codepage, bookmarks_codepage, b->title, NULL);
|
||||
clr_white(txt);
|
||||
txt1 = convert_to_entity_string(txt);
|
||||
add_to_str(&data, &l, cast_uchar " <DT><H3>");
|
||||
add_to_str(&data, &l, txt1);
|
||||
add_to_str(&data, &l, cast_uchar "</H3>\n<DL>\n");
|
||||
mem_free(txt);
|
||||
mem_free(txt1);
|
||||
depth++;
|
||||
} else {
|
||||
unsigned char *txt1, *txt2, *txt11;
|
||||
txt1 = convert(bookmark_ld.codepage, bookmarks_codepage, b->title, NULL);
|
||||
clr_white(txt1);
|
||||
txt2 = convert(bookmark_ld.codepage, bookmarks_codepage, b->url, NULL);
|
||||
clr_white(txt2);
|
||||
txt11 = convert_to_entity_string(txt1);
|
||||
add_to_str(&data, &l, cast_uchar " <DT><A HREF=\"");
|
||||
add_to_str(&data, &l, txt2);
|
||||
add_to_str(&data, &l, cast_uchar "\">");
|
||||
add_to_str(&data, &l, txt11);
|
||||
add_to_str(&data, &l, cast_uchar "</A>\n");
|
||||
mem_free(txt1);
|
||||
mem_free(txt2);
|
||||
mem_free(txt11);
|
||||
}
|
||||
}
|
||||
for (a = 0; a <depth; a++) add_to_str(&data, &l, cast_uchar "</DL>\n");
|
||||
add_to_str(&data, &l, cast_uchar
|
||||
"</DL><P>\n"
|
||||
"</HTML>\n"
|
||||
);
|
||||
err = write_to_config_file(bookmarks_file, data, 1);
|
||||
mem_free(data);
|
||||
if (!err) {
|
||||
bookmark_ld.modified = 0;
|
||||
} else {
|
||||
if (ses) {
|
||||
unsigned char *f = stracpy(bookmarks_file);
|
||||
msg_box(ses->term, getml(f, NULL), TEXT_(T_BOOKMARK_ERROR), AL_CENTER, TEXT_(T_UNABLE_TO_WRITE_TO_BOOKMARK_FILE), cast_uchar " ", f, cast_uchar ": ", get_err_msg(err, ses->term), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
|
||||
}
|
||||
}
|
||||
|
||||
EINTRLOOP(rs, stat(cast_const_char bookmarks_file, &bookmarks_st));
|
||||
if (rs)
|
||||
memset(&bookmarks_st, -1, sizeof bookmarks_st);
|
||||
}
|
||||
|
||||
void menu_bookmark_manager(struct terminal *term, void *fcp, void *ses_)
|
||||
{
|
||||
struct session *ses = (struct session *)ses_;
|
||||
struct stat st;
|
||||
int rs;
|
||||
EINTRLOOP(rs, stat(cast_const_char bookmarks_file, &st));
|
||||
if (!rs &&
|
||||
(st.st_ctime != bookmarks_st.st_ctime ||
|
||||
st.st_mtime != bookmarks_st.st_mtime ||
|
||||
st.st_size != bookmarks_st.st_size)) {
|
||||
if (!test_list_window_in_use(&bookmark_ld, NULL)) {
|
||||
free_bookmarks();
|
||||
load_bookmarks(ses);
|
||||
reinit_list_window(&bookmark_ld);
|
||||
}
|
||||
}
|
||||
create_list_window(&bookmark_ld, &bookmarks, term, ses);
|
||||
}
|
|
@ -0,0 +1,549 @@
|
|||
/* cache.c
|
||||
* (c) 2002 Mikulas Patocka
|
||||
* This file is a part of the Links program, released under GPL.
|
||||
*/
|
||||
|
||||
#include "links.h"
|
||||
|
||||
#if defined(HAVE_SEARCH_H) && defined(HAVE_TDELETE) && defined(HAVE_TFIND) && defined(HAVE_TSEARCH)
|
||||
#define USE_TREE
|
||||
#endif
|
||||
|
||||
static struct list_head cache = {&cache, &cache};
|
||||
|
||||
static my_uintptr_t cache_size = 0;
|
||||
|
||||
static tcount cache_count = 1;
|
||||
|
||||
|
||||
#ifdef USE_TREE
|
||||
|
||||
static void *cache_root = NULL;
|
||||
|
||||
static int ce_compare(const void *p1, const void *p2)
|
||||
{
|
||||
const unsigned char *u1 = (const unsigned char *)p1;
|
||||
const unsigned char *u2 = (const unsigned char *)p2;
|
||||
if (u1 == u2) return 0;
|
||||
return strcmp(cast_const_char u1, cast_const_char u2);
|
||||
}
|
||||
|
||||
static void cache_add_to_tree(struct cache_entry *e)
|
||||
{
|
||||
void **p;
|
||||
|
||||
if (!e->url[0]) return;
|
||||
|
||||
#if !defined(__GLIBC__)
|
||||
if (!cache_root) {
|
||||
/*
|
||||
* Some implementations misbehave when deleting the last
|
||||
* element. They leak memory or return NULL from tdelete.
|
||||
* To guard against misbehavior, we insert one static element
|
||||
* and never delete it.
|
||||
* Glibc doesn't have this bug.
|
||||
*/
|
||||
static unsigned char empty = 0;
|
||||
retry_static:
|
||||
p = tsearch(&empty, &cache_root, ce_compare);
|
||||
if (!p) {
|
||||
out_of_memory(0, cast_uchar "tsearch static", 0);
|
||||
goto retry_static;
|
||||
}
|
||||
if ((unsigned char *)*p != &empty) internal_error("cache_add_to_tree: static entry not added: %p, %p", *p, &empty);
|
||||
}
|
||||
#endif
|
||||
|
||||
retry:
|
||||
p = tsearch(e->url, &cache_root, ce_compare);
|
||||
if (!p) {
|
||||
out_of_memory(0, cast_uchar "tsearch", 0);
|
||||
goto retry;
|
||||
}
|
||||
if ((unsigned char *)*p != e->url) internal_error("cache_add_to_tree: url '%s' is already present", e->url);
|
||||
}
|
||||
|
||||
static void cache_delete_from_tree(struct cache_entry *e)
|
||||
{
|
||||
void *p;
|
||||
|
||||
if (!e->url[0]) return;
|
||||
|
||||
p = tdelete(e->url, &cache_root, ce_compare);
|
||||
if (!p) internal_error("cache_delete_from_tree: url '%s' not found", e->url);
|
||||
}
|
||||
|
||||
static struct cache_entry *cache_search_tree(unsigned char *url)
|
||||
{
|
||||
void **p;
|
||||
|
||||
p = tfind(url, (void *)&cache_root, ce_compare);
|
||||
if (!p) return NULL;
|
||||
return get_struct(*p, struct cache_entry, url);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void cache_add_to_tree(struct cache_entry *e) { }
|
||||
static void cache_delete_from_tree(struct cache_entry *e) { }
|
||||
|
||||
static struct cache_entry *cache_search_tree(unsigned char *url)
|
||||
{
|
||||
struct cache_entry *e;
|
||||
struct list_head *le;
|
||||
foreach(struct cache_entry, e, le, cache)
|
||||
if (!strcmp(cast_const_char e->url, cast_const_char url))
|
||||
return e;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
my_uintptr_t cache_info(int type)
|
||||
{
|
||||
my_uintptr_t i = 0;
|
||||
struct cache_entry *ce;
|
||||
struct list_head *lce;
|
||||
switch (type) {
|
||||
case CI_BYTES:
|
||||
return cache_size;
|
||||
case CI_FILES:
|
||||
return (my_uintptr_t)list_size(&cache);
|
||||
case CI_LOCKED:
|
||||
foreach(struct cache_entry, ce, lce, cache) i += !!ce->refcount;
|
||||
return i;
|
||||
case CI_LOADING:
|
||||
foreach(struct cache_entry, ce, lce, cache) i += is_entry_used(ce);
|
||||
return i;
|
||||
default:
|
||||
internal_error("cache_info: bad request");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
my_uintptr_t decompress_info(int type)
|
||||
{
|
||||
my_uintptr_t i = 0;
|
||||
struct cache_entry *ce;
|
||||
struct list_head *lce;
|
||||
switch (type) {
|
||||
case CI_BYTES:
|
||||
return decompressed_cache_size;
|
||||
case CI_FILES:
|
||||
foreach(struct cache_entry, ce, lce, cache) i += !!ce->decompressed;
|
||||
return i;
|
||||
case CI_LOCKED:
|
||||
foreach(struct cache_entry, ce, lce, cache) i += ce->decompressed && ce->refcount;
|
||||
return i;
|
||||
default:
|
||||
internal_error("compress_info: bad request");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int find_in_cache(unsigned char *url, struct cache_entry **f)
|
||||
{
|
||||
struct cache_entry *e;
|
||||
url = remove_proxy_prefix(url);
|
||||
e = cache_search_tree(url);
|
||||
if (e) {
|
||||
e->refcount++;
|
||||
del_from_list(e);
|
||||
add_to_list(cache, e);
|
||||
*f = e;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int get_cache_entry(unsigned char *url, struct cache_entry **f)
|
||||
{
|
||||
if (!find_in_cache(url, f)) return 0;
|
||||
return new_cache_entry(url, f);
|
||||
}
|
||||
|
||||
int get_connection_cache_entry(struct connection *c)
|
||||
{
|
||||
struct cache_entry *e;
|
||||
if (get_cache_entry(c->url, &c->cache))
|
||||
return -1;
|
||||
e = c->cache;
|
||||
if (e->ip_address) mem_free(e->ip_address), e->ip_address = NULL;
|
||||
if (!*c->socks_proxy && !is_proxy_url(c->url) && c->last_lookup_state.addr.n) {
|
||||
unsigned char *a;
|
||||
unsigned char *s = init_str();
|
||||
int l = 0;
|
||||
a = print_address(&c->last_lookup_state.addr.a[c->last_lookup_state.addr_index]);
|
||||
if (a)
|
||||
add_to_str(&s, &l, a);
|
||||
if (c->last_lookup_state.addr.n > 1) {
|
||||
int i, d = 0;
|
||||
if (l) add_chr_to_str(&s, &l, ' ');
|
||||
add_chr_to_str(&s, &l, '(');
|
||||
for (i = 0; i < c->last_lookup_state.addr.n; i++) {
|
||||
if (i == c->last_lookup_state.addr_index)
|
||||
continue;
|
||||
a = print_address(&c->last_lookup_state.addr.a[i]);
|
||||
if (a) {
|
||||
if (d)
|
||||
add_to_str(&s, &l, cast_uchar ", ");
|
||||
add_to_str(&s, &l, a);
|
||||
d = 1;
|
||||
}
|
||||
}
|
||||
add_chr_to_str(&s, &l, ')');
|
||||
}
|
||||
e->ip_address = s;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int new_cache_entry(unsigned char *url, struct cache_entry **f)
|
||||
{
|
||||
struct cache_entry *e;
|
||||
shrink_memory(SH_CHECK_QUOTA, 0);
|
||||
url = remove_proxy_prefix(url);
|
||||
e = mem_calloc_mayfail(sizeof(struct cache_entry) + strlen(cast_const_char url));
|
||||
if (!e)
|
||||
return -1;
|
||||
strcpy(cast_char e->url, cast_const_char url);
|
||||
e->length = 0;
|
||||
e->incomplete = 1;
|
||||
e->data_size = 0;
|
||||
e->http_code = -1;
|
||||
init_list(e->frag);
|
||||
e->count = cache_count++;
|
||||
e->count2 = cache_count++;
|
||||
e->refcount = 1;
|
||||
e->decompressed = NULL;
|
||||
e->decompressed_len = 0;
|
||||
cache_add_to_tree(e);
|
||||
add_to_list(cache, e);
|
||||
*f = e;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void detach_cache_entry(struct cache_entry *e)
|
||||
{
|
||||
cache_delete_from_tree(e);
|
||||
e->url[0] = 0;
|
||||
}
|
||||
|
||||
static void mem_free_fragment(struct fragment *f)
|
||||
{
|
||||
size_t s = (size_t)f->length;
|
||||
mem_free(f);
|
||||
s += sizeof(struct fragment);
|
||||
}
|
||||
|
||||
#define sf(x) e->data_size += (x), cache_size += (my_uintptr_t)(x)
|
||||
|
||||
#define C_ALIGN(x) ((((x) + (sizeof(struct fragment) + alloc_overhead - 1)) | (page_size - 1)) - (sizeof(struct fragment) + alloc_overhead - 1))
|
||||
|
||||
int add_fragment(struct cache_entry *e, off_t offset, const unsigned char *data, off_t length)
|
||||
{
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
struct fragment *nf;
|
||||
int trunc = 0;
|
||||
icc_volatile off_t ca;
|
||||
if (!length) return 0;
|
||||
free_decompressed_data(e);
|
||||
e->incomplete = 1;
|
||||
if ((off_t)(0UL + offset + length) < 0 || (off_t)(0UL + offset + length) < offset) return S_LARGE_FILE;
|
||||
if ((off_t)(0UL + offset + (off_t)C_ALIGN(length)) < 0 || (off_t)(0UL + offset + (off_t)C_ALIGN(length)) < offset) return S_LARGE_FILE;
|
||||
if (e->length < offset + length) e->length = offset + length;
|
||||
e->count = cache_count++;
|
||||
if (list_empty(e->frag)) e->count2 = cache_count++;
|
||||
else {
|
||||
f = list_struct(e->frag.prev, struct fragment);
|
||||
if (f->offset + f->length != offset) e->count2 = cache_count++;
|
||||
else {
|
||||
lf = &f->list_entry;
|
||||
goto have_f;
|
||||
}
|
||||
}
|
||||
foreach(struct fragment, f, lf, e->frag) {
|
||||
have_f:
|
||||
if (f->offset > offset) break;
|
||||
if (f->offset <= offset && f->offset + f->length >= offset) {
|
||||
if (offset+length > f->offset + f->length) {
|
||||
if (memcmp(f->data + offset - f->offset, data, (size_t)(f->offset + f->length - offset))) trunc = 1;
|
||||
if (offset - f->offset + length <= f->real_length) {
|
||||
sf((offset + length) - (f->offset + f->length));
|
||||
f->length = offset - f->offset + length;
|
||||
} else {
|
||||
sf(-(f->offset + f->length - offset));
|
||||
f->length = offset - f->offset;
|
||||
lf = f->list_entry.next;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (memcmp(f->data + offset-f->offset, data, (size_t)length)) trunc = 1;
|
||||
}
|
||||
memcpy(f->data+offset - f->offset, data, (size_t)length);
|
||||
goto ch_o;
|
||||
}
|
||||
}
|
||||
/* Intel C 9 has a bug and miscompiles this statement (< 0 test is true) */
|
||||
/*if (C_ALIGN(length) > MAXINT - sizeof(struct fragment) || C_ALIGN(length) < 0) overalloc();*/
|
||||
ca = C_ALIGN(length);
|
||||
if (ca > MAXINT - (int)sizeof(struct fragment) || ca < 0) return S_LARGE_FILE;
|
||||
nf = mem_alloc_mayfail(sizeof(struct fragment) + (size_t)ca);
|
||||
if (!nf) return S_OUT_OF_MEM;
|
||||
sf(length);
|
||||
nf->offset = offset;
|
||||
nf->length = length;
|
||||
nf->real_length = C_ALIGN(length);
|
||||
memcpy(nf->data, data, (size_t)length);
|
||||
add_before_list_entry(lf, &nf->list_entry);
|
||||
f = nf;
|
||||
ch_o:
|
||||
while (f->list_entry.next != &e->frag && f->offset + f->length > list_struct(f->list_entry.next, struct fragment)->offset) {
|
||||
struct fragment *next = list_struct(f->list_entry.next, struct fragment);
|
||||
if (f->offset + f->length < next->offset + next->length) {
|
||||
f = mem_realloc(f, sizeof(struct fragment) + (size_t)(next->offset - f->offset + next->length));
|
||||
fix_list_after_realloc(f);
|
||||
if (memcmp(f->data + next->offset - f->offset, next->data, (size_t)(f->offset + f->length - next->offset))) trunc = 1;
|
||||
memcpy(f->data + f->length, next->data + f->offset + f->length - next->offset, (size_t)(next->offset + next->length - f->offset - f->length));
|
||||
sf(next->offset + next->length - f->offset - f->length);
|
||||
f->length = f->real_length = next->offset + next->length - f->offset;
|
||||
} else {
|
||||
if (memcmp(f->data + next->offset - f->offset, next->data, (size_t)next->length)) trunc = 1;
|
||||
}
|
||||
del_from_list(next);
|
||||
sf(-next->length);
|
||||
mem_free_fragment(next);
|
||||
}
|
||||
if (trunc) truncate_entry(e, offset + length, 0);
|
||||
if (e->length > e->max_length) {
|
||||
e->max_length = e->length;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int defrag_entry(struct cache_entry *e)
|
||||
{
|
||||
struct fragment *f, *n;
|
||||
struct list_head *g, *h;
|
||||
off_t l;
|
||||
if (list_empty(e->frag)) {
|
||||
return 0;
|
||||
}
|
||||
f = list_struct(e->frag.next, struct fragment);
|
||||
if (f->offset) {
|
||||
return 0;
|
||||
}
|
||||
for (g = f->list_entry.next;
|
||||
g != &e->frag &&
|
||||
list_struct(g, struct fragment)->offset <= list_struct(g->prev, struct fragment)->offset + list_struct(g->prev, struct fragment)->length; g = g->next)
|
||||
if (list_struct(g, struct fragment)->offset < list_struct(g->prev, struct fragment)->offset + list_struct(g->prev, struct fragment)->length) {
|
||||
internal_error("fragments overlay");
|
||||
return S_INTERNAL;
|
||||
}
|
||||
if (g == f->list_entry.next) {
|
||||
if (f->length != f->real_length) {
|
||||
f = mem_realloc_mayfail(f, sizeof(struct fragment) + (size_t)f->length);
|
||||
if (f) {
|
||||
f->real_length = f->length;
|
||||
fix_list_after_realloc(f);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
for (l = 0, h = &f->list_entry; h != g; h = h->next) {
|
||||
if ((off_t)(0UL + l + list_struct(h, struct fragment)->length) < 0 || (off_t)(0UL + l + list_struct(h, struct fragment)->length) < l) return S_LARGE_FILE;
|
||||
l += list_struct(h, struct fragment)->length;
|
||||
}
|
||||
if (l > MAXINT - (int)sizeof(struct fragment)) return S_LARGE_FILE;
|
||||
n = mem_alloc_mayfail(sizeof(struct fragment) + (size_t)l);
|
||||
if (!n) return S_OUT_OF_MEM;
|
||||
n->offset = 0;
|
||||
n->length = l;
|
||||
n->real_length = l;
|
||||
for (l = 0, h = &f->list_entry; h != g; h = h->next) {
|
||||
struct fragment *hf = list_struct(h, struct fragment);
|
||||
memcpy(n->data + l, hf->data, (size_t)hf->length);
|
||||
l += hf->length;
|
||||
h = h->prev;
|
||||
del_from_list(hf);
|
||||
mem_free_fragment(hf);
|
||||
}
|
||||
add_to_list(e->frag, n);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void truncate_entry(struct cache_entry *e, off_t off, int final)
|
||||
{
|
||||
int modified = final == 2;
|
||||
struct fragment *f, *g;
|
||||
struct list_head *lf;
|
||||
if (e->length > off) e->length = off, e->incomplete = 1;
|
||||
foreach(struct fragment, f, lf, e->frag) {
|
||||
if (f->offset >= off) {
|
||||
modified = 1;
|
||||
sf(-f->length);
|
||||
lf = lf->prev;
|
||||
del_from_list(f);
|
||||
mem_free_fragment(f);
|
||||
continue;
|
||||
}
|
||||
if (f->offset + f->length > off) {
|
||||
modified = 1;
|
||||
sf(-(f->offset + f->length - off));
|
||||
f->length = off - f->offset;
|
||||
if (final) {
|
||||
g = mem_realloc_mayfail(f, sizeof(struct fragment) + (size_t)f->length);
|
||||
if (g) {
|
||||
f = g;
|
||||
fix_list_after_realloc(f);
|
||||
f->real_length = f->length;
|
||||
lf = &f->list_entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (modified) {
|
||||
free_decompressed_data(e);
|
||||
e->count = cache_count++;
|
||||
e->count2 = cache_count++;
|
||||
}
|
||||
}
|
||||
|
||||
void free_entry_to(struct cache_entry *e, off_t off)
|
||||
{
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
e->incomplete = 1;
|
||||
free_decompressed_data(e);
|
||||
foreach(struct fragment, f, lf, e->frag) {
|
||||
if (f->offset + f->length <= off) {
|
||||
sf(-f->length);
|
||||
lf = lf->prev;
|
||||
del_from_list(f);
|
||||
mem_free_fragment(f);
|
||||
} else if (f->offset < off) {
|
||||
sf(f->offset - off);
|
||||
memmove(f->data, f->data + (off - f->offset), (size_t)(f->length -= off - f->offset));
|
||||
f->offset = off;
|
||||
} else break;
|
||||
}
|
||||
}
|
||||
|
||||
void delete_entry_content(struct cache_entry *e)
|
||||
{
|
||||
truncate_entry(e, 0, 2);
|
||||
if (e->last_modified) {
|
||||
mem_free(e->last_modified);
|
||||
e->last_modified = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void trim_cache_entry(struct cache_entry *e)
|
||||
{
|
||||
struct fragment *f, *nf;
|
||||
struct list_head *lf;
|
||||
foreach(struct fragment, f, lf, e->frag) {
|
||||
if (f->length != f->real_length) {
|
||||
nf = mem_realloc_mayfail(f, sizeof(struct fragment) + (size_t)f->length);
|
||||
if (nf) {
|
||||
f = nf;
|
||||
fix_list_after_realloc(f);
|
||||
f->real_length = f->length;
|
||||
lf = &f->list_entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void delete_cache_entry(struct cache_entry *e)
|
||||
{
|
||||
if (e->refcount) internal_error("deleting locked cache entry");
|
||||
#ifdef DEBUG
|
||||
if (is_entry_used(e)) internal_error("deleting loading cache entry");
|
||||
#endif
|
||||
cache_delete_from_tree(e);
|
||||
delete_entry_content(e);
|
||||
del_from_list(e);
|
||||
if (e->head) mem_free(e->head);
|
||||
if (e->redirect) mem_free(e->redirect);
|
||||
if (e->ip_address) mem_free(e->ip_address);
|
||||
#ifdef HAVE_SSL
|
||||
if (e->ssl_info) mem_free(e->ssl_info);
|
||||
if (e->ssl_authority) mem_free(e->ssl_authority);
|
||||
#endif
|
||||
mem_free(e);
|
||||
}
|
||||
|
||||
static int shrink_file_cache(int u)
|
||||
{
|
||||
int r = 0;
|
||||
struct cache_entry *e, *f;
|
||||
struct list_head *le, *lf;
|
||||
my_uintptr_t ncs = cache_size;
|
||||
my_uintptr_t ccs = 0, ccs2 = 0;
|
||||
|
||||
if (u == SH_CHECK_QUOTA && cache_size + decompressed_cache_size <= (my_uintptr_t)memory_cache_size) goto ret;
|
||||
foreachback(struct cache_entry, e, le, cache) {
|
||||
if (e->refcount || is_entry_used(e)) {
|
||||
if (ncs < (my_uintptr_t)e->data_size) {
|
||||
internal_error("cache_size underflow: %lu, %lu", (unsigned long)ncs, (unsigned long)e->data_size);
|
||||
}
|
||||
ncs -= (my_uintptr_t)e->data_size;
|
||||
} else if (u == SH_FREE_SOMETHING) {
|
||||
if (e->decompressed_len) free_decompressed_data(e);
|
||||
else delete_cache_entry(e);
|
||||
r |= ST_SOMETHING_FREED;
|
||||
goto ret;
|
||||
}
|
||||
if (!e->refcount && e->decompressed_len && cache_size + decompressed_cache_size > (my_uintptr_t)memory_cache_size) {
|
||||
free_decompressed_data(e);
|
||||
r |= ST_SOMETHING_FREED;
|
||||
}
|
||||
ccs += (my_uintptr_t)e->data_size;
|
||||
ccs2 += e->decompressed_len;
|
||||
}
|
||||
if (ccs != cache_size) internal_error("cache size badly computed: %lu != %lu", (unsigned long)cache_size, (unsigned long)ccs), cache_size = ccs;
|
||||
if (ccs2 != decompressed_cache_size) internal_error("decompressed cache size badly computed: %lu != %lu", (unsigned long)decompressed_cache_size, (unsigned long)ccs2), decompressed_cache_size = ccs2;
|
||||
if (u == SH_CHECK_QUOTA && ncs <= (my_uintptr_t)memory_cache_size) goto ret;
|
||||
foreachback(struct cache_entry, e, le, cache) {
|
||||
if (u == SH_CHECK_QUOTA && (longlong)ncs <= (longlong)memory_cache_size * MEMORY_CACHE_GC_PERCENT) goto g;
|
||||
if (e->refcount || is_entry_used(e)) {
|
||||
e->tgc = 0;
|
||||
continue;
|
||||
}
|
||||
e->tgc = 1;
|
||||
if (ncs < (my_uintptr_t)e->data_size) {
|
||||
internal_error("cache_size underflow: %lu, %lu", (unsigned long)ncs, (unsigned long)e->data_size);
|
||||
}
|
||||
ncs -= (my_uintptr_t)e->data_size;
|
||||
}
|
||||
if (ncs) internal_error("cache_size(%lu) is larger than size of all objects(%lu)", (unsigned long)cache_size, (unsigned long)(cache_size - ncs));
|
||||
g:
|
||||
if (le->next == &cache) goto ret;
|
||||
le = le->next;
|
||||
if (u == SH_CHECK_QUOTA) {
|
||||
foreachfrom(struct cache_entry, f, lf, cache, le) {
|
||||
if (f->data_size && (longlong)ncs + f->data_size <= (longlong)memory_cache_size * MEMORY_CACHE_GC_PERCENT) {
|
||||
ncs += (my_uintptr_t)f->data_size;
|
||||
f->tgc = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreachfrom(struct cache_entry, f, lf, cache, le) {
|
||||
if (f->tgc) {
|
||||
lf = lf->prev;
|
||||
delete_cache_entry(f);
|
||||
r |= ST_SOMETHING_FREED;
|
||||
}
|
||||
}
|
||||
ret:
|
||||
return r | (list_empty(cache) ? ST_CACHE_EMPTY : 0);
|
||||
}
|
||||
|
||||
void init_cache(void)
|
||||
{
|
||||
register_cache_upcall(shrink_file_cache, 0, cast_uchar "file");
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
echo
|
||||
echo Generating certificates.
|
||||
rm -f cert.tmp
|
||||
mangle_unprintable_command="`../intl/mangle-unprintable`"
|
||||
(
|
||||
echo '/* Automatically generated by certs/gen */'
|
||||
echo
|
||||
echo 'static_const struct {'
|
||||
echo ' int len;'
|
||||
echo ' const char *data;'
|
||||
echo '} certificates[] = {'
|
||||
total=`wc -l links.crt | sed 's/^ *//' | sed 's/ .*//'`
|
||||
line=0
|
||||
while read x; do
|
||||
line=`expr $line + 1`
|
||||
if echo "$x" | grep ^----- >/dev/null; then
|
||||
if echo "$x" | grep ^-----END >/dev/null; then
|
||||
printf "`expr $line \* 100 / $total || true`%%\r" 1>&2
|
||||
base64 --decode <cert.tmp >cert.bin
|
||||
printf "{ `wc -c cert.bin|sed 's/^ *//'|sed 's/ .*//'`, \""
|
||||
# hexdump -v <cert.bin -e '/1 "-%o"'|sed 's/-/\\/g'
|
||||
sed 's/\([\"]\)/\\\1/g' <cert.bin | eval "$mangle_unprintable_command" | tr '\000' '\t' | sed 's/ /\\000/g' | tr '\012' '\t' | sed 's/ /\\012/g'
|
||||
echo "\" },"
|
||||
rm -f cert.tmp cert.bin
|
||||
fi
|
||||
else
|
||||
echo "$x" >>cert.tmp
|
||||
fi
|
||||
done <links.crt
|
||||
echo '};'
|
||||
) | sed 's/\\012$/" },/' | sed '/^"/d' >../certs.inc
|
||||
echo
|
||||
echo Done.
|
||||
echo
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,82 @@
|
|||
/* cfg.h
|
||||
* (c) 2002 Mikulas Patocka
|
||||
* This file is a part of the Links program, released under GPL.
|
||||
*/
|
||||
|
||||
#ifndef CFG_H
|
||||
#define CFG_H
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
#ifdef HAVE_CONFIG2_H
|
||||
#include "config2.h"
|
||||
#endif
|
||||
#ifdef HAVE_CONFIG_VMS_H
|
||||
#include "config-vms.h"
|
||||
#define HAVE_RAND_ADD 1
|
||||
#define HAVE_RAND_FILE_NAME 1
|
||||
#define HAVE_RAND_LOAD_FILE 1
|
||||
#define HAVE_RAND_WRITE_FILE 1
|
||||
#define HAVE_SSL_GET1_SESSION 1
|
||||
#define HAVE_ASN1_STRING_TO_UTF8 1
|
||||
#ifdef VMS_DEBUGLEVEL
|
||||
#undef DEBUGLEVEL
|
||||
#define DEBUGLEVEL VMS_DEBUGLEVEL
|
||||
#endif
|
||||
#ifdef __VAX
|
||||
#undef HAVE_LONG_LONG
|
||||
#undef SIZEOF_UNSIGNED_LONG_LONG
|
||||
#undef HAVE_SNPRINTF
|
||||
#undef HAVE_STRTOLL
|
||||
#undef HAVE_STRTOQ
|
||||
#undef HAVE_SOCKETPAIR
|
||||
#undef HAVE_GETADDRINFO
|
||||
#undef HAVE_FREEADDRINFO
|
||||
#undef SUPPORT_IPV6
|
||||
#undef SUPPORT_IPV6_SCOPE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(G) && DEBUGLEVEL >= 0 && defined(HAVE_SETJMP_H)
|
||||
#undef HAVE_SETJMP_H
|
||||
#endif
|
||||
|
||||
/* no one will probably ever port svgalib on atheos or beos or port atheos
|
||||
interface to beos, but anyway: make sure they don't clash */
|
||||
|
||||
#if defined(__BEOS__) || defined(__HAIKU__) || defined(__VMS) || defined(__DJGPP)
|
||||
#ifdef GRDRV_SVGALIB
|
||||
#undef GRDRV_SVGALIB
|
||||
#endif
|
||||
#ifdef GRDRV_ATHEOS
|
||||
#undef GRDRV_ATHEOS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef GRDRV_ATHEOS
|
||||
#ifdef GRDRV_SVGALIB
|
||||
#undef GRDRV_SVGALIB
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !(defined(__EMX__) || defined(_WIN32) || defined(__CYGWIN__))
|
||||
#ifdef GRDRV_PMSHELL
|
||||
#undef GRDRV_PMSHELL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_VOLATILE
|
||||
#define volatile
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_RESTRICT) && !defined(__cplusplus)
|
||||
#define my_restrict restrict
|
||||
#elif defined(HAVE___RESTRICT) && !defined(__cplusplus)
|
||||
#define my_restrict __restrict
|
||||
#else
|
||||
#define my_restrict
|
||||
#endif
|
||||
|
||||
typedef int cfg_h_no_empty_unit;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,630 @@
|
|||
/* charsets.c
|
||||
* (c) 2002 Mikulas Patocka, Karel 'Clock' Kulhavy
|
||||
* This file is a part of the Links program, released under GPL.
|
||||
*/
|
||||
|
||||
#include "links.h"
|
||||
|
||||
int utf8_table;
|
||||
|
||||
struct table_entry {
|
||||
unsigned char c;
|
||||
int u;
|
||||
};
|
||||
|
||||
struct codepage_desc {
|
||||
const char *name;
|
||||
const char * const *aliases;
|
||||
const struct table_entry *table;
|
||||
};
|
||||
|
||||
#include "codepage.inc"
|
||||
#include "uni_7b.inc"
|
||||
#include "entity.inc"
|
||||
#include "upcase.inc"
|
||||
#include "locase.inc"
|
||||
|
||||
static_const unsigned char strings[256][2] = {
|
||||
"\000", "\001", "\002", "\003", "\004", "\005", "\006", "\007",
|
||||
"\010", "\011", "\012", "\013", "\014", "\015", "\016", "\017",
|
||||
"\020", "\021", "\022", "\023", "\024", "\025", "\026", "\033",
|
||||
"\030", "\031", "\032", "\033", "\034", "\035", "\036", "\033",
|
||||
"\040", "\041", "\042", "\043", "\044", "\045", "\046", "\047",
|
||||
"\050", "\051", "\052", "\053", "\054", "\055", "\056", "\057",
|
||||
"\060", "\061", "\062", "\063", "\064", "\065", "\066", "\067",
|
||||
"\070", "\071", "\072", "\073", "\074", "\075", "\076", "\077",
|
||||
"\100", "\101", "\102", "\103", "\104", "\105", "\106", "\107",
|
||||
"\110", "\111", "\112", "\113", "\114", "\115", "\116", "\117",
|
||||
"\120", "\121", "\122", "\123", "\124", "\125", "\126", "\127",
|
||||
"\130", "\131", "\132", "\133", "\134", "\135", "\136", "\137",
|
||||
"\140", "\141", "\142", "\143", "\144", "\145", "\146", "\147",
|
||||
"\150", "\151", "\152", "\153", "\154", "\155", "\156", "\157",
|
||||
"\160", "\161", "\162", "\163", "\164", "\165", "\166", "\167",
|
||||
"\170", "\171", "\172", "\173", "\174", "\175", "\176", "\177",
|
||||
"\200", "\201", "\202", "\203", "\204", "\205", "\206", "\207",
|
||||
"\210", "\211", "\212", "\213", "\214", "\215", "\216", "\217",
|
||||
"\220", "\221", "\222", "\223", "\224", "\225", "\226", "\227",
|
||||
"\230", "\231", "\232", "\233", "\234", "\235", "\236", "\237",
|
||||
"\240", "\241", "\242", "\243", "\244", "\245", "\246", "\247",
|
||||
"\250", "\251", "\252", "\253", "\254", "\255", "\256", "\257",
|
||||
"\260", "\261", "\262", "\263", "\264", "\265", "\266", "\267",
|
||||
"\270", "\271", "\272", "\273", "\274", "\275", "\276", "\277",
|
||||
"\300", "\301", "\302", "\303", "\304", "\305", "\306", "\307",
|
||||
"\310", "\311", "\312", "\313", "\314", "\315", "\316", "\317",
|
||||
"\320", "\321", "\322", "\323", "\324", "\325", "\326", "\327",
|
||||
"\330", "\331", "\332", "\333", "\334", "\335", "\336", "\337",
|
||||
"\340", "\341", "\342", "\343", "\344", "\345", "\346", "\347",
|
||||
"\350", "\351", "\352", "\353", "\354", "\355", "\356", "\357",
|
||||
"\360", "\361", "\362", "\363", "\364", "\365", "\366", "\367",
|
||||
"\370", "\371", "\372", "\373", "\374", "\375", "\376", "\377",
|
||||
};
|
||||
|
||||
static void free_translation_table(struct conv_table *p)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 256; i++) if (p[i].t) free_translation_table(p[i].u.tbl);
|
||||
mem_free(p);
|
||||
}
|
||||
|
||||
static_const unsigned char no_str[] = "*";
|
||||
|
||||
static void new_translation_table(struct conv_table *p)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 256; i++) if (p[i].t) free_translation_table(p[i].u.tbl);
|
||||
for (i = 0; i < 128; i++) p[i].t = 0, p[i].u.str = cast_uchar strings[i];
|
||||
for (; i < 256; i++) p[i].t = 0, p[i].u.str = cast_uchar no_str;
|
||||
}
|
||||
|
||||
static_const unsigned short strange_chars[32] = {
|
||||
0x20ac, 0x0000, 0x002a, 0x0000, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x005e, 0x2030, 0x0160, 0x003c, 0x0152, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0060, 0x0027, 0x0022, 0x0022, 0x002a, 0x2013, 0x2014,
|
||||
0x007e, 0x2122, 0x0161, 0x003e, 0x0153, 0x0000, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
#define U_EQUAL(a, b) unicode_7b[a].x == (b)
|
||||
#define U_ABOVE(a, b) unicode_7b[a].x > (b)
|
||||
|
||||
static int is_nbsp(int u)
|
||||
{
|
||||
return u == 0xa0 || u == 0x202f;
|
||||
}
|
||||
|
||||
unsigned char *u2cp(int u, int to, int fallback)
|
||||
{
|
||||
int j, s;
|
||||
again:
|
||||
if (u < 0) return cast_uchar "";
|
||||
if (u < 128) return cast_uchar strings[u];
|
||||
if (is_nbsp(u)) return cast_uchar strings[1];
|
||||
if (u == 0xad) return cast_uchar strings[0];
|
||||
if (to == utf8_table) return encode_utf_8(u);
|
||||
if (u < 0xa0) {
|
||||
u = strange_chars[u - 0x80];
|
||||
if (!u) return NULL;
|
||||
goto again;
|
||||
}
|
||||
for (j = 0; codepages[to].table[j].c; j++)
|
||||
if (codepages[to].table[j].u == u)
|
||||
return cast_uchar strings[codepages[to].table[j].c];
|
||||
if (!fallback) return NULL;
|
||||
BIN_SEARCH(N_UNICODE_7B, U_EQUAL, U_ABOVE, u, s);
|
||||
if (s != -1) return cast_uchar unicode_7b[s].s;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int cp2u(unsigned ch, int from)
|
||||
{
|
||||
const struct table_entry *e;
|
||||
if (from == utf8_table) return ch;
|
||||
if (from < 0 || ch < 0x80) return ch;
|
||||
for (e = codepages[from].table; e->c; e++) if (e->c == ch) return e->u;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static unsigned char utf_buffer[7];
|
||||
|
||||
unsigned char *encode_utf_8(int u)
|
||||
{
|
||||
memset(utf_buffer, 0, 7);
|
||||
if (u < 0) ;
|
||||
else if (u < 0x80) utf_buffer[0] = (unsigned char)u;
|
||||
else if (u < 0x800)
|
||||
utf_buffer[0] = 0xc0 | ((u >> 6) & 0x1f),
|
||||
utf_buffer[1] = 0x80 | (u & 0x3f);
|
||||
else if (u < 0x10000)
|
||||
utf_buffer[0] = 0xe0 | ((u >> 12) & 0x0f),
|
||||
utf_buffer[1] = 0x80 | ((u >> 6) & 0x3f),
|
||||
utf_buffer[2] = 0x80 | (u & 0x3f);
|
||||
else if (u < 0x200000)
|
||||
utf_buffer[0] = 0xf0 | ((u >> 18) & 0x0f),
|
||||
utf_buffer[1] = 0x80 | ((u >> 12) & 0x3f),
|
||||
utf_buffer[2] = 0x80 | ((u >> 6) & 0x3f),
|
||||
utf_buffer[3] = 0x80 | (u & 0x3f);
|
||||
else if (u < 0x4000000)
|
||||
utf_buffer[0] = 0xf8 | ((u >> 24) & 0x0f),
|
||||
utf_buffer[1] = 0x80 | ((u >> 18) & 0x3f),
|
||||
utf_buffer[2] = 0x80 | ((u >> 12) & 0x3f),
|
||||
utf_buffer[3] = 0x80 | ((u >> 6) & 0x3f),
|
||||
utf_buffer[4] = 0x80 | (u & 0x3f);
|
||||
else utf_buffer[0] = 0xfc | ((u >> 30) & 0x01),
|
||||
utf_buffer[1] = 0x80 | ((u >> 24) & 0x3f),
|
||||
utf_buffer[2] = 0x80 | ((u >> 18) & 0x3f),
|
||||
utf_buffer[3] = 0x80 | ((u >> 12) & 0x3f),
|
||||
utf_buffer[4] = 0x80 | ((u >> 6) & 0x3f),
|
||||
utf_buffer[5] = 0x80 | (u & 0x3f);
|
||||
return utf_buffer;
|
||||
}
|
||||
|
||||
static void add_utf_8(struct conv_table *ct, int u, unsigned char *str)
|
||||
{
|
||||
unsigned char *p = encode_utf_8(u);
|
||||
while (p[1]) {
|
||||
if (ct[*p].t) ct = ct[*p].u.tbl;
|
||||
else {
|
||||
struct conv_table *nct;
|
||||
if (ct[*p].u.str != no_str) {
|
||||
internal_error("bad utf encoding #1");
|
||||
return;
|
||||
}
|
||||
nct = mem_alloc(sizeof(struct conv_table) * 256);
|
||||
memset(nct, 0, sizeof(struct conv_table) * 256);
|
||||
new_translation_table(nct);
|
||||
ct[*p].t = 1;
|
||||
ct[*p].u.tbl = nct;
|
||||
ct = nct;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
if (ct[*p].t) {
|
||||
internal_error("bad utf encoding #2");
|
||||
return;
|
||||
}
|
||||
if (ct[*p].u.str == no_str) ct[*p].u.str = str;
|
||||
}
|
||||
|
||||
static struct conv_table utf_table[256];
|
||||
static int utf_table_init = 1;
|
||||
|
||||
static void free_utf_table(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 128; i < 256; i++) mem_free(utf_table[i].u.str);
|
||||
}
|
||||
|
||||
static struct conv_table *get_translation_table_to_utf_8(int from)
|
||||
{
|
||||
int i;
|
||||
static int lfr = -1;
|
||||
if (from == -1) return NULL;
|
||||
if (from == lfr) return utf_table;
|
||||
lfr = from;
|
||||
if (utf_table_init) {
|
||||
memset(utf_table, 0, sizeof(struct conv_table) * 256);
|
||||
for (i = 0; i < 128; i++) utf_table[i].u.str = cast_uchar strings[i];
|
||||
utf_table_init = 0;
|
||||
} else {
|
||||
free_utf_table();
|
||||
}
|
||||
if (from == utf8_table) {
|
||||
for (i = 128; i < 256; i++) utf_table[i].u.str = stracpy(strings[i]);
|
||||
return utf_table;
|
||||
}
|
||||
for (i = 128; i < 256; i++) utf_table[i].u.str = NULL;
|
||||
for (i = 0; codepages[from].table[i].c; i++) {
|
||||
int u = codepages[from].table[i].u;
|
||||
if (!utf_table[codepages[from].table[i].c].u.str)
|
||||
utf_table[codepages[from].table[i].c].u.str = stracpy(encode_utf_8(u));
|
||||
}
|
||||
for (i = 128; i < 256; i++)
|
||||
if (!utf_table[i].u.str) utf_table[i].u.str = stracpy(no_str);
|
||||
return utf_table;
|
||||
}
|
||||
|
||||
unsigned char utf_8_1[256] = {
|
||||
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 6, 6,
|
||||
};
|
||||
|
||||
static_const unsigned min_utf_8[8] = {
|
||||
0, 0x4000000, 0x200000, 0x10000, 0x800, 0x80, 0x100, 0x1,
|
||||
};
|
||||
|
||||
unsigned get_utf_8(unsigned char **s)
|
||||
{
|
||||
unsigned v, min;
|
||||
int l;
|
||||
unsigned char *p = *s;
|
||||
l = utf_8_1[p[0]];
|
||||
min = min_utf_8[l];
|
||||
v = p[0] & ((1 << l) - 1);
|
||||
(*s)++;
|
||||
while (l++ <= 5) {
|
||||
unsigned c = **s - 0x80;
|
||||
if (c >= 0x40) {
|
||||
return 0;
|
||||
}
|
||||
(*s)++;
|
||||
v = (v << 6) + c;
|
||||
}
|
||||
if (v < min)
|
||||
return 0;
|
||||
if (v > 0x10FFFF)
|
||||
return 0;
|
||||
return v;
|
||||
}
|
||||
|
||||
static struct conv_table table[256];
|
||||
static int table_init = 1;
|
||||
|
||||
void free_conv_table(void)
|
||||
{
|
||||
if (!utf_table_init) free_utf_table();
|
||||
if (!table_init) new_translation_table(table);
|
||||
}
|
||||
|
||||
struct conv_table *get_translation_table(int from, int to)
|
||||
{
|
||||
int i;
|
||||
static int lfr = -1;
|
||||
static int lto = -1;
|
||||
if (/*from == to ||*/ from == -1 || to == -1) return NULL;
|
||||
if (to == utf8_table) return get_translation_table_to_utf_8(from);
|
||||
if (table_init) memset(table, 0, sizeof(struct conv_table) * 256), table_init = 0;
|
||||
if (from == lfr && to == lto) return table;
|
||||
lfr = from; lto = to;
|
||||
new_translation_table(table);
|
||||
if (from == utf8_table) {
|
||||
int j;
|
||||
for (j = 0; codepages[to].table[j].c; j++) add_utf_8(table, codepages[to].table[j].u, is_nbsp(codepages[to].table[j].u) ? cast_uchar strings[1] : codepages[to].table[j].u == 0xad ? cast_uchar strings[0] : cast_uchar strings[codepages[to].table[j].c]);
|
||||
for (i = 0; unicode_7b[i].x != -1; i++) if (unicode_7b[i].x >= 0x80) add_utf_8(table, unicode_7b[i].x, cast_uchar unicode_7b[i].s);
|
||||
} else for (i = 128; i < 256; i++) {
|
||||
int j;
|
||||
unsigned char *u;
|
||||
for (j = 0; codepages[from].table[j].c; j++) {
|
||||
if (codepages[from].table[j].c == i) goto f;
|
||||
}
|
||||
continue;
|
||||
f:
|
||||
u = u2cp(codepages[from].table[j].u, to, 1);
|
||||
if (u) table[i].u.str = u;
|
||||
}
|
||||
return table;
|
||||
}
|
||||
|
||||
static inline int xxstrcmp(unsigned char *s1, unsigned char *s2, int l2)
|
||||
{
|
||||
while (l2) {
|
||||
if (*s1 > *s2) return 1;
|
||||
if (!*s1 || *s1 < *s2) return -1;
|
||||
s1++, s2++, l2--;
|
||||
}
|
||||
return !!*s1;
|
||||
}
|
||||
|
||||
int get_entity_number(unsigned char *st, int l)
|
||||
{
|
||||
int n = 0;
|
||||
if (upcase(st[0]) == 'X') {
|
||||
st++, l--;
|
||||
if (!l) return -1;
|
||||
do {
|
||||
unsigned char c = upcase(*(st++));
|
||||
if (c >= '0' && c <= '9') n = n * 16 + c - '0';
|
||||
else if (c >= 'A' && c <= 'F') n = n * 16 + c - 'A' + 10;
|
||||
else return -1;
|
||||
if (n > 0x10FFFF) return -1;
|
||||
} while (--l);
|
||||
} else {
|
||||
if (!l) return -1;
|
||||
do {
|
||||
unsigned char c = *(st++);
|
||||
if (c >= '0' && c <= '9') n = n * 10 + c - '0';
|
||||
else return -1;
|
||||
if (n > 0x10FFFF) return -1;
|
||||
} while (--l);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
unsigned char *get_entity_string(unsigned char *st, int l, int encoding)
|
||||
{
|
||||
int n;
|
||||
if (l <= 0) return NULL;
|
||||
if (st[0] == '#') {
|
||||
if (l == 1) return NULL;
|
||||
if ((n = get_entity_number(st + 1, l - 1)) == -1) return NULL;
|
||||
if (n < 32 && get_attr_val_nl != 2) n = 32;
|
||||
} else {
|
||||
int s = 0, e = N_ENTITIES - 1;
|
||||
while (s <= e) {
|
||||
int c;
|
||||
int m = (s + e) / 2;
|
||||
c = xxstrcmp(cast_uchar entities[m].s, st, l);
|
||||
if (!c) {
|
||||
n = entities[m].c;
|
||||
goto f;
|
||||
}
|
||||
if (c > 0) e = m - 1;
|
||||
else s = m + 1;
|
||||
}
|
||||
return NULL;
|
||||
f:;
|
||||
}
|
||||
|
||||
return u2cp(n, encoding, 1);
|
||||
}
|
||||
|
||||
unsigned char *convert_string(struct conv_table *ct, unsigned char *c, int l, struct document_options *dopt)
|
||||
{
|
||||
unsigned char *buffer;
|
||||
int bp = 0;
|
||||
int pp = 0;
|
||||
if (!ct) {
|
||||
int i;
|
||||
for (i = 0; i < l; i++) if (c[i] == '&') goto xx;
|
||||
return memacpy(c, l);
|
||||
xx:;
|
||||
}
|
||||
buffer = mem_alloc(ALLOC_GR);
|
||||
while (pp < l) {
|
||||
unsigned char *e = NULL; /* against warning */
|
||||
if (c[pp] < 128 && c[pp] != '&') {
|
||||
put_c:
|
||||
buffer[bp++] = c[pp++];
|
||||
if (!(bp & (ALLOC_GR - 1))) {
|
||||
if ((unsigned)bp > MAXINT - ALLOC_GR) overalloc();
|
||||
buffer = mem_realloc(buffer, bp + ALLOC_GR);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (c[pp] != '&') {
|
||||
struct conv_table *t;
|
||||
int i;
|
||||
if (!ct) goto put_c;
|
||||
t = ct;
|
||||
i = pp;
|
||||
decode:
|
||||
if (!t[c[i]].t) {
|
||||
e = t[c[i]].u.str;
|
||||
} else {
|
||||
t = t[c[i++]].u.tbl;
|
||||
if (i >= l) goto put_c;
|
||||
goto decode;
|
||||
}
|
||||
pp = i + 1;
|
||||
} else {
|
||||
int i = pp + 1;
|
||||
if (!dopt || dopt->plain) goto put_c;
|
||||
while (i < l && !is_entity_terminator(c[i])) i++;
|
||||
if (!(e = get_entity_string(&c[pp + 1], i - pp - 1, dopt->cp))) goto put_c;
|
||||
pp = i + (i < l && c[i] == ';');
|
||||
}
|
||||
if (!e[0]) continue;
|
||||
if (!e[1]) {
|
||||
buffer[bp++] = e[0];
|
||||
if (!(bp & (ALLOC_GR - 1))) {
|
||||
if ((unsigned)bp > MAXINT - ALLOC_GR) overalloc();
|
||||
buffer = mem_realloc(buffer, bp + ALLOC_GR);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
while (*e) {
|
||||
buffer[bp++] = *(e++);
|
||||
if (!(bp & (ALLOC_GR - 1))) {
|
||||
if ((unsigned)bp > MAXINT - ALLOC_GR) overalloc();
|
||||
buffer = mem_realloc(buffer, bp + ALLOC_GR);
|
||||
}
|
||||
}
|
||||
}
|
||||
buffer[bp] = 0;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
unsigned char *convert(int from, int to, unsigned char *c, struct document_options *dopt)
|
||||
{
|
||||
unsigned char *cc;
|
||||
struct conv_table *ct;
|
||||
|
||||
for (cc = c; *cc; cc++) {
|
||||
if (*cc >= 128 && from != to)
|
||||
goto need_table;
|
||||
if (*cc == '&' && dopt && !dopt->plain)
|
||||
goto need_table;
|
||||
}
|
||||
return stracpy(c);
|
||||
|
||||
need_table:
|
||||
ct = get_translation_table(from, to);
|
||||
return convert_string(ct, c, (int)strlen(cast_const_char c), dopt);
|
||||
}
|
||||
|
||||
int get_cp_index(unsigned char *n)
|
||||
{
|
||||
decc_volatile int i, a, p, q, sl, ii = -1, ll = 0;
|
||||
for (i = 0; codepages[i].name; i++) {
|
||||
for (a = 0; codepages[i].aliases[a]; a++) {
|
||||
for (p = 0; n[p]; p++) {
|
||||
if (upcase(n[p]) == upcase(codepages[i].aliases[a][0])) {
|
||||
for (q = 1; codepages[i].aliases[a][q]; q++) {
|
||||
if (upcase(n[p+q]) != upcase(codepages[i].aliases[a][q])) goto fail;
|
||||
}
|
||||
sl = (int)strlen(cast_const_char codepages[i].aliases[a]);
|
||||
if (sl > ll) {
|
||||
ll = sl;
|
||||
ii = i;
|
||||
}
|
||||
}
|
||||
fail:;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ii;
|
||||
}
|
||||
|
||||
unsigned char *get_cp_name(int index)
|
||||
{
|
||||
if (index < 0) return cast_uchar "none";
|
||||
return cast_uchar codepages[index].name;
|
||||
}
|
||||
|
||||
unsigned char *get_cp_mime_name(int index)
|
||||
{
|
||||
if (index < 0) return cast_uchar "none";
|
||||
if (!codepages[index].aliases) return NULL;
|
||||
return cast_uchar codepages[index].aliases[0];
|
||||
}
|
||||
|
||||
#define LO_EQUAL(a, b) unicode_locase[a].o == (b)
|
||||
#define LO_ABOVE(a, b) unicode_locase[a].o > (b)
|
||||
|
||||
unsigned uni_locase(unsigned ch)
|
||||
{
|
||||
int res;
|
||||
BIN_SEARCH(array_elements(unicode_locase), LO_EQUAL, LO_ABOVE, ch, res);
|
||||
if (res == -1) return ch;
|
||||
return unicode_locase[res].n;
|
||||
}
|
||||
|
||||
#define UP_EQUAL(a, b) unicode_upcase[a].o == (b)
|
||||
#define UP_ABOVE(a, b) unicode_upcase[a].o > (b)
|
||||
|
||||
unsigned charset_upcase(unsigned ch, int cp)
|
||||
{
|
||||
unsigned u;
|
||||
int res;
|
||||
unsigned char *str;
|
||||
if (ch < 0x80) return upcase(ch);
|
||||
u = cp2u(ch, cp);
|
||||
BIN_SEARCH(array_elements(unicode_upcase), UP_EQUAL, UP_ABOVE, u, res);
|
||||
if (res == -1) return ch;
|
||||
if (cp == utf8_table) return unicode_upcase[res].n;
|
||||
str = u2cp(unicode_upcase[res].n, cp, 0);
|
||||
if (!str || !str[0] || str[1]) return ch;
|
||||
return str[0];
|
||||
}
|
||||
|
||||
unsigned uni_upcase(unsigned ch)
|
||||
{
|
||||
return charset_upcase(ch, utf8_table);
|
||||
}
|
||||
|
||||
void charset_upcase_string(unsigned char **chp, int cp)
|
||||
{
|
||||
unsigned char *ch = *chp;
|
||||
int i;
|
||||
if (cp == utf8_table) {
|
||||
ch = unicode_upcase_string(ch);
|
||||
mem_free(*chp);
|
||||
*chp = ch;
|
||||
} else {
|
||||
for (i = 0; ch[i]; i++) ch[i] = charset_upcase(ch[i], cp);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char *unicode_upcase_string(unsigned char *ch)
|
||||
{
|
||||
unsigned char *r = init_str();
|
||||
int rl = 0;
|
||||
while (1) {
|
||||
unsigned c;
|
||||
int res;
|
||||
GET_UTF_8(ch, c);
|
||||
if (!c) break;
|
||||
BIN_SEARCH(array_elements(unicode_upcase), UP_EQUAL, UP_ABOVE, c, res);
|
||||
if (res != -1) c = unicode_upcase[res].n;
|
||||
add_to_str(&r, &rl, encode_utf_8(c));
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
unsigned char *to_utf8_upcase(unsigned char *str, int cp)
|
||||
{
|
||||
unsigned char *str1, *str2;
|
||||
str1 = convert(cp, utf8_table, str, NULL);
|
||||
str2 = unicode_upcase_string(str1);
|
||||
mem_free(str1);
|
||||
return str2;
|
||||
}
|
||||
|
||||
int compare_case_utf8(unsigned char *u1, unsigned char *u2)
|
||||
{
|
||||
unsigned char *uu1 = u1;
|
||||
unsigned c1, c2;
|
||||
int cc1;
|
||||
while (1) {
|
||||
GET_UTF_8(u2, c2);
|
||||
if (!c2) return (int)(u1 - uu1);
|
||||
skip_discr:
|
||||
GET_UTF_8(u1, c1);
|
||||
BIN_SEARCH(array_elements(unicode_upcase), UP_EQUAL, UP_ABOVE, c1, cc1);
|
||||
if (cc1 != -1) c1 = unicode_upcase[cc1].n;
|
||||
if (c1 == 0xad) goto skip_discr;
|
||||
if (c1 != c2) return 0;
|
||||
if (c1 == ' ') {
|
||||
unsigned char *x1;
|
||||
do {
|
||||
x1 = u1;
|
||||
GET_UTF_8(u1, c1);
|
||||
BIN_SEARCH(array_elements(unicode_upcase), UP_EQUAL, UP_ABOVE, c1, cc1);
|
||||
if (cc1 >= 0) c1 = unicode_upcase[cc1].n;
|
||||
} while (c1 == ' ');
|
||||
u1 = x1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int strlen_utf8(unsigned char *s)
|
||||
{
|
||||
int len = 0;
|
||||
while (1) {
|
||||
unsigned c;
|
||||
GET_UTF_8(s, c);
|
||||
if (!c) return len;
|
||||
len++;
|
||||
}
|
||||
}
|
||||
|
||||
int cp_len(int cp, unsigned char *s)
|
||||
{
|
||||
if (cp == utf8_table) return strlen_utf8(s);
|
||||
return (int)strlen(cast_const_char s);
|
||||
}
|
||||
|
||||
unsigned char *cp_strchr(int charset, unsigned char *str, unsigned chr)
|
||||
{
|
||||
if (charset != utf8_table) {
|
||||
if (chr >= 0x100)
|
||||
return NULL;
|
||||
return cast_uchar strchr(cast_const_char str, chr);
|
||||
}
|
||||
while (1) {
|
||||
unsigned char *o_str = str;
|
||||
unsigned c;
|
||||
GET_UTF_8(str, c);
|
||||
if (!c) return NULL;
|
||||
if (c == chr) return o_str;
|
||||
}
|
||||
}
|
||||
|
||||
void init_charset(void)
|
||||
{
|
||||
utf8_table = get_cp_index(cast_uchar "UTF-8");
|
||||
if (utf8_table == -1) internal_error("no UTF-8 charset");
|
||||
bookmarks_codepage = utf8_table;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
#define N_CODEPAGES 35
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,41 @@
|
|||
#ifndef COM_DEFS_H
|
||||
#define COM_DEFS_H
|
||||
|
||||
#ifndef __EXTENSIONS__
|
||||
#define __EXTENSIONS__
|
||||
#endif
|
||||
|
||||
#ifndef _LARGEFILE_SOURCE
|
||||
#define _LARGEFILE_SOURCE 1
|
||||
#endif
|
||||
|
||||
#ifndef _LARGEFILE
|
||||
#define _LARGEFILE 1
|
||||
#endif
|
||||
|
||||
#ifndef _ALL_SOURCE
|
||||
#define _ALL_SOURCE 1
|
||||
#endif
|
||||
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
#endif
|
||||
|
||||
#ifndef _FILE_OFFSET_BITS
|
||||
#define _FILE_OFFSET_BITS 64
|
||||
#endif
|
||||
|
||||
#if defined(vax) && !defined(__vax)
|
||||
#define __vax vax
|
||||
#endif
|
||||
|
||||
#if defined(__VMS) && !defined(__VAX)
|
||||
#define _SOCKADDR_LEN
|
||||
#endif
|
||||
|
||||
#ifdef __DJGPP
|
||||
unsigned long __ntohl(unsigned long);
|
||||
unsigned short __ntohs(unsigned short);
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,979 @@
|
|||
#include "links.h"
|
||||
|
||||
#ifdef write
|
||||
#undef write
|
||||
#endif
|
||||
|
||||
my_uintptr_t decompressed_cache_size = 0;
|
||||
|
||||
static int display_error(struct terminal *term, unsigned char *msg, int *errp)
|
||||
{
|
||||
if (errp) *errp = 1;
|
||||
if (!term) return 0;
|
||||
if (!errp) if (find_msg_box(term, msg, NULL, NULL)) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef HAVE_ANY_COMPRESSION
|
||||
|
||||
static void decoder_memory_init(unsigned char **p, size_t *size, off_t init_length)
|
||||
{
|
||||
if (init_length > 0 && init_length < MAXINT) *size = (int)init_length;
|
||||
else *size = 4096;
|
||||
again:
|
||||
if (*size <= 4096) {
|
||||
*p = mem_alloc(*size);
|
||||
} else {
|
||||
*p = mem_alloc_mayfail(*size);
|
||||
if (!*p) {
|
||||
*size >>= 1;
|
||||
goto again;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int decoder_memory_expand(unsigned char **p, size_t size, size_t *addsize)
|
||||
{
|
||||
unsigned char *pp;
|
||||
size_t add = size / 4 + 1;
|
||||
if (add > MAXINT) add = MAXINT;
|
||||
while (size + add < size || !(pp = mem_realloc_mayfail(*p, size + add))) {
|
||||
if (add > 1) add >>= 1;
|
||||
else goto ovf;
|
||||
}
|
||||
*addsize = add;
|
||||
*p = pp;
|
||||
return 0;
|
||||
|
||||
ovf:
|
||||
*addsize = 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void decompress_error(struct terminal *term, struct cache_entry *ce, unsigned char *lib, unsigned char *msg, int *errp)
|
||||
{
|
||||
unsigned char *u, *server;
|
||||
if ((u = parse_http_header(ce->head, cast_uchar "Content-Encoding", NULL))) {
|
||||
mem_free(u);
|
||||
if ((server = get_host_name(ce->url))) {
|
||||
add_blacklist_entry(server, BL_NO_COMPRESSION);
|
||||
mem_free(server);
|
||||
}
|
||||
}
|
||||
if (!display_error(term, TEXT_(T_DECOMPRESSION_ERROR), errp)) return;
|
||||
u = display_url(term, ce->url, 1);
|
||||
msg_box(term, getml(u, NULL), TEXT_(T_DECOMPRESSION_ERROR), AL_CENTER, TEXT_(T_ERROR_DECOMPRESSING_), u, TEXT_(T__wITH_), lib, cast_uchar ": ", msg, MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ZLIB
|
||||
#include <zlib.h>
|
||||
static int decode_gzip(struct terminal *term, struct cache_entry *ce, int defl, int *errp)
|
||||
{
|
||||
unsigned char err;
|
||||
unsigned char memory_error;
|
||||
unsigned char skip_gzip_header;
|
||||
unsigned char old_zlib;
|
||||
z_stream z;
|
||||
off_t offset;
|
||||
int r;
|
||||
unsigned char *p;
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
size_t size;
|
||||
|
||||
retry_after_memory_error:
|
||||
memory_error = 0;
|
||||
decoder_memory_init(&p, &size, ce->length);
|
||||
init_again:
|
||||
err = 0;
|
||||
skip_gzip_header = 0;
|
||||
old_zlib = 0;
|
||||
memset(&z, 0, sizeof z);
|
||||
z.next_in = NULL;
|
||||
z.avail_in = 0;
|
||||
z.next_out = p;
|
||||
z.avail_out = (unsigned)size;
|
||||
z.zalloc = NULL;
|
||||
z.zfree = NULL;
|
||||
z.opaque = NULL;
|
||||
r = inflateInit2(&z, defl == 1 ? 15 : defl == 2 ? -15 : 15 + 16);
|
||||
init_failed:
|
||||
switch (r) {
|
||||
case Z_OK: break;
|
||||
case Z_MEM_ERROR: memory_error = 1;
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
case Z_STREAM_ERROR:
|
||||
if (!defl && !old_zlib) {
|
||||
if (defrag_entry(ce)) {
|
||||
memory_error = 1;
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
}
|
||||
r = inflateInit2(&z, -15);
|
||||
skip_gzip_header = 1;
|
||||
old_zlib = 1;
|
||||
goto init_failed;
|
||||
}
|
||||
decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : (unsigned char *)"Invalid parameter", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
case Z_VERSION_ERROR: decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : (unsigned char *)"Bad zlib version", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
default: decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : (unsigned char *)"Unknown return value on inflateInit2", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
}
|
||||
offset = 0;
|
||||
foreach(struct fragment, f, lf, ce->frag) {
|
||||
if (f->offset != offset) break;
|
||||
z.next_in = f->data;
|
||||
z.avail_in = (unsigned)f->length;
|
||||
if ((off_t)z.avail_in != f->length) overalloc();
|
||||
repeat_frag:
|
||||
if (skip_gzip_header == 2) {
|
||||
if (z.avail_in < 8) goto finish;
|
||||
z.next_in = (unsigned char *)z.next_in + 8;
|
||||
z.avail_in -= 8;
|
||||
skip_gzip_header = 1;
|
||||
}
|
||||
if (skip_gzip_header) {
|
||||
/* if zlib is old, we have to skip gzip header manually
|
||||
otherwise zlib 1.2.x can do it automatically */
|
||||
unsigned char *head = z.next_in;
|
||||
unsigned headlen = 10;
|
||||
if (z.avail_in <= 11) goto finish;
|
||||
if (head[0] != 0x1f || head[1] != 0x8b) {
|
||||
decompress_error(term, ce, cast_uchar "zlib", TEXT_(T_COMPRESSED_ERROR), errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
}
|
||||
if (head[2] != 8 || head[3] & 0xe0) {
|
||||
decompress_error(term, ce, cast_uchar "zlib", TEXT_(T_UNKNOWN_COMPRESSION_METHOD), errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
}
|
||||
if (head[3] & 0x04) {
|
||||
headlen += 2 + head[10] + (head[11] << 8);
|
||||
if (headlen >= z.avail_in) goto finish;
|
||||
}
|
||||
if (head[3] & 0x08) {
|
||||
do {
|
||||
headlen++;
|
||||
if (headlen >= z.avail_in) goto finish;
|
||||
} while (head[headlen - 1]);
|
||||
}
|
||||
if (head[3] & 0x10) {
|
||||
do {
|
||||
headlen++;
|
||||
if (headlen >= z.avail_in) goto finish;
|
||||
} while (head[headlen - 1]);
|
||||
}
|
||||
if (head[3] & 0x01) {
|
||||
headlen += 2;
|
||||
if (headlen >= z.avail_in) goto finish;
|
||||
}
|
||||
z.next_in = (unsigned char *)z.next_in + headlen;
|
||||
z.avail_in -= headlen;
|
||||
skip_gzip_header = 0;
|
||||
}
|
||||
r = inflate(&z, f->list_entry.next == &ce->frag ? Z_SYNC_FLUSH : Z_NO_FLUSH);
|
||||
switch (r) {
|
||||
case Z_OK: break;
|
||||
case Z_BUF_ERROR: break;
|
||||
case Z_STREAM_END: r = inflateEnd(&z);
|
||||
if (r != Z_OK) goto end_failed;
|
||||
r = inflateInit2(&z, old_zlib ? -15 : defl ? 15 : 15 + 16);
|
||||
if (r != Z_OK) {
|
||||
old_zlib = 0;
|
||||
goto init_failed;
|
||||
}
|
||||
if (old_zlib) {
|
||||
skip_gzip_header = 2;
|
||||
}
|
||||
break;
|
||||
case Z_NEED_DICT:
|
||||
case Z_DATA_ERROR: if (defl == 1) {
|
||||
defl = 2;
|
||||
r = inflateEnd(&z);
|
||||
if (r != Z_OK) goto end_failed;
|
||||
goto init_again;
|
||||
}
|
||||
decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : TEXT_(T_COMPRESSED_ERROR), errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
case Z_STREAM_ERROR: decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : (unsigned char *)"Internal error on inflate", errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
case Z_MEM_ERROR:
|
||||
mem_error: memory_error = 1;
|
||||
err = 1;
|
||||
goto finish;
|
||||
default: decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : (unsigned char *)"Unknown return value on inflate", errp);
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
if (!z.avail_out) {
|
||||
size_t addsize;
|
||||
if (decoder_memory_expand(&p, size, &addsize) < 0)
|
||||
goto mem_error;
|
||||
z.next_out = p + size;
|
||||
z.avail_out = (unsigned)addsize;
|
||||
size += addsize;
|
||||
}
|
||||
if (z.avail_in) goto repeat_frag;
|
||||
/* In zlib 1.1.3, inflate(Z_SYNC_FLUSH) doesn't work.
|
||||
The following line fixes it --- for last fragment, loop until
|
||||
we get an eof. */
|
||||
if (r == Z_OK && f->list_entry.next == &ce->frag) goto repeat_frag;
|
||||
offset += f->length;
|
||||
}
|
||||
finish:
|
||||
r = inflateEnd(&z);
|
||||
end_failed:
|
||||
switch (r) {
|
||||
case Z_OK: break;
|
||||
case Z_STREAM_ERROR: decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : (unsigned char *)"Internal error on inflateEnd", errp);
|
||||
err = 1;
|
||||
break;
|
||||
case Z_MEM_ERROR: memory_error = 1;
|
||||
err = 1;
|
||||
break;
|
||||
default: decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : (unsigned char *)"Unknown return value on inflateEnd", errp);
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
after_inflateend:
|
||||
if (memory_error) {
|
||||
mem_free(p);
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry_after_memory_error;
|
||||
decompress_error(term, ce, cast_uchar "zlib", z.msg ? (unsigned char *)z.msg : TEXT_(T_OUT_OF_MEMORY), errp);
|
||||
return 1;
|
||||
}
|
||||
if (err && (unsigned char *)z.next_out == p) {
|
||||
mem_free(p);
|
||||
return 1;
|
||||
}
|
||||
ce->decompressed = p;
|
||||
ce->decompressed_len = (unsigned char *)z.next_out - (unsigned char *)p;
|
||||
decompressed_cache_size += ce->decompressed_len;
|
||||
ce->decompressed = mem_realloc(ce->decompressed, ce->decompressed_len);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_BROTLI
|
||||
#if defined(__TINYC__) && defined(__STDC_VERSION__)
|
||||
#undef __STDC_VERSION__
|
||||
#endif
|
||||
#include <brotli/decode.h>
|
||||
static void *brotli_alloc(void *opaque, size_t size)
|
||||
{
|
||||
return mem_alloc_mayfail(size);
|
||||
}
|
||||
static void brotli_free(void *opaque, void *ptr)
|
||||
{
|
||||
if (ptr) mem_free(ptr);
|
||||
}
|
||||
static int decode_brotli(struct terminal *term, struct cache_entry *ce, int *errp)
|
||||
{
|
||||
unsigned char err;
|
||||
BrotliDecoderState *br;
|
||||
const unsigned char *next_in;
|
||||
size_t avail_in;
|
||||
unsigned char *next_out;
|
||||
size_t avail_out;
|
||||
off_t offset;
|
||||
BrotliDecoderResult res;
|
||||
unsigned char *p;
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
size_t size;
|
||||
|
||||
err = 0;
|
||||
decoder_memory_init(&p, &size, ce->length);
|
||||
next_out = p;
|
||||
avail_out = size;
|
||||
br = BrotliDecoderCreateInstance(brotli_alloc, brotli_free, NULL);
|
||||
if (!br) {
|
||||
decompress_error(term, ce, cast_uchar "brotli", TEXT_(T_OUT_OF_MEMORY), errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
}
|
||||
|
||||
offset = 0;
|
||||
foreach(struct fragment, f, lf, ce->frag) {
|
||||
if (f->offset != offset) break;
|
||||
next_in = f->data;
|
||||
avail_in = (size_t)f->length;
|
||||
if ((off_t)avail_in != f->length) overalloc();
|
||||
repeat_frag:
|
||||
res = BrotliDecoderDecompressStream(br, &avail_in, &next_in, &avail_out, &next_out, NULL);
|
||||
if (res == BROTLI_DECODER_RESULT_ERROR) {
|
||||
decompress_error(term, ce, cast_uchar "brotli", cast_uchar BrotliDecoderErrorString(BrotliDecoderGetErrorCode(br)), errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
}
|
||||
if (!avail_out) {
|
||||
size_t addsize;
|
||||
if (decoder_memory_expand(&p, size, &addsize) < 0) {
|
||||
decompress_error(term, ce, cast_uchar "brotli", TEXT_(T_OUT_OF_MEMORY), errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
}
|
||||
next_out = p + size;
|
||||
avail_out = addsize;
|
||||
size += addsize;
|
||||
goto repeat_frag;
|
||||
}
|
||||
if (avail_in) goto repeat_frag;
|
||||
/*
|
||||
BrotliDecoderHasMoreOutput(br) returns BROTLI_BOOL which is defined differently for different compilers, so we must not use it
|
||||
if (BrotliDecoderHasMoreOutput(br)) goto repeat_frag;
|
||||
*/
|
||||
offset += f->length;
|
||||
}
|
||||
|
||||
finish:
|
||||
BrotliDecoderDestroyInstance(br);
|
||||
after_inflateend:
|
||||
if (err && next_out == p) {
|
||||
mem_free(p);
|
||||
return 1;
|
||||
}
|
||||
ce->decompressed = p;
|
||||
ce->decompressed_len = next_out - p;
|
||||
decompressed_cache_size += ce->decompressed_len;
|
||||
ce->decompressed = mem_realloc(ce->decompressed, ce->decompressed_len);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ZSTD
|
||||
#include <zstd.h>
|
||||
static int decode_zstd(struct terminal *term, struct cache_entry *ce, int *errp)
|
||||
{
|
||||
ZSTD_DStream *zstd_stream = NULL;
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
off_t offset;
|
||||
#ifdef HAVE_LONG_LONG
|
||||
unsigned long long dec_size;
|
||||
#else
|
||||
size_t dec_size;
|
||||
#endif
|
||||
size_t ret;
|
||||
unsigned char *p = NULL;
|
||||
size_t size;
|
||||
ZSTD_inBuffer in;
|
||||
ZSTD_outBuffer out;
|
||||
|
||||
zstd_stream = ZSTD_createDStream();
|
||||
if (!zstd_stream) {
|
||||
mem_error:
|
||||
decompress_error(term, ce, cast_uchar "zstd", TEXT_(T_OUT_OF_MEMORY), errp);
|
||||
goto err_ret;
|
||||
}
|
||||
ret = ZSTD_initDStream(zstd_stream);
|
||||
if (ZSTD_isError(ret)) {
|
||||
decompress_error(term, ce, cast_uchar "zstd", cast_uchar ZSTD_getErrorName(ret), errp);
|
||||
goto err_ret;
|
||||
}
|
||||
|
||||
dec_size = 0;
|
||||
if (!list_empty(ce->frag)) {
|
||||
f = list_struct(ce->frag.next, struct fragment);
|
||||
dec_size = ZSTD_getDecompressedSize(f->data, f->length);
|
||||
/*debug("dec size %llx\n", dec_size);*/
|
||||
if (ZSTD_isError(dec_size))
|
||||
dec_size = 0;
|
||||
}
|
||||
|
||||
decoder_memory_init(&p, &size, dec_size && dec_size < MAXINT ? (off_t)dec_size : ce->length);
|
||||
|
||||
out.dst = p;
|
||||
out.size = size;
|
||||
out.pos = 0;
|
||||
|
||||
offset = 0;
|
||||
foreach(struct fragment, f, lf, ce->frag) {
|
||||
if (f->offset != offset) break;
|
||||
in.src = f->data;
|
||||
in.size = f->length;
|
||||
in.pos = 0;
|
||||
|
||||
repeat_frag:
|
||||
ret = ZSTD_decompressStream(zstd_stream, &out, &in);
|
||||
if (ZSTD_isError(ret)) {
|
||||
decompress_error(term, ce, cast_uchar "zstd", cast_uchar ZSTD_getErrorName(ret), errp);
|
||||
goto err_ret;
|
||||
}
|
||||
if (out.pos == out.size) {
|
||||
size_t addsize;
|
||||
if (decoder_memory_expand(&p, size, &addsize) < 0)
|
||||
goto mem_error;
|
||||
out.dst = p + size;
|
||||
out.size = addsize;
|
||||
out.pos = 0;
|
||||
size += addsize;
|
||||
goto repeat_frag;
|
||||
}
|
||||
if (in.pos < in.size)
|
||||
goto repeat_frag;
|
||||
|
||||
offset += f->length;
|
||||
}
|
||||
|
||||
ZSTD_freeDStream(zstd_stream);
|
||||
zstd_stream = NULL;
|
||||
|
||||
ce->decompressed = p;
|
||||
ce->decompressed_len = (unsigned char *)out.dst + out.pos - p;
|
||||
decompressed_cache_size += ce->decompressed_len;
|
||||
|
||||
ce->decompressed = mem_realloc(ce->decompressed, ce->decompressed_len);
|
||||
|
||||
return 0;
|
||||
|
||||
err_ret:
|
||||
if (p)
|
||||
mem_free(p);
|
||||
if (zstd_stream)
|
||||
ZSTD_freeDStream(zstd_stream);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_BZIP2
|
||||
#include <bzlib.h>
|
||||
static int decode_bzip2(struct terminal *term, struct cache_entry *ce, int *errp)
|
||||
{
|
||||
unsigned char err;
|
||||
unsigned char memory_error;
|
||||
bz_stream z;
|
||||
off_t offset;
|
||||
int r;
|
||||
unsigned char *p;
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
size_t size;
|
||||
|
||||
retry_after_memory_error:
|
||||
err = 0;
|
||||
memory_error = 0;
|
||||
decoder_memory_init(&p, &size, ce->length);
|
||||
memset(&z, 0, sizeof z);
|
||||
z.next_in = NULL;
|
||||
z.avail_in = 0;
|
||||
z.next_out = cast_char p;
|
||||
z.avail_out = (unsigned)size;
|
||||
z.bzalloc = NULL;
|
||||
z.bzfree = NULL;
|
||||
z.opaque = NULL;
|
||||
r = BZ2_bzDecompressInit(&z, 0, 0);
|
||||
init_failed:
|
||||
switch (r) {
|
||||
case BZ_OK: break;
|
||||
case BZ_MEM_ERROR: memory_error = 1;
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
case BZ_PARAM_ERROR:
|
||||
decompress_error(term, ce, cast_uchar "bzip2", cast_uchar "Invalid parameter", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
case BZ_CONFIG_ERROR: decompress_error(term, ce, cast_uchar "bzip2", cast_uchar "Bzlib is miscompiled", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
default: decompress_error(term, ce, cast_uchar "bzip2", cast_uchar "Unknown return value on BZ2_bzDecompressInit", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
}
|
||||
offset = 0;
|
||||
foreach(struct fragment, f, lf, ce->frag) {
|
||||
if (f->offset != offset) break;
|
||||
z.next_in = cast_char f->data;
|
||||
z.avail_in = (unsigned)f->length;
|
||||
if ((off_t)z.avail_in != f->length) overalloc();
|
||||
repeat_frag:
|
||||
r = BZ2_bzDecompress(&z);
|
||||
switch (r) {
|
||||
case BZ_OK: break;
|
||||
case BZ_STREAM_END:
|
||||
r = BZ2_bzDecompressEnd(&z);
|
||||
if (r != BZ_OK) goto end_failed;
|
||||
r = BZ2_bzDecompressInit(&z, 0, 0);
|
||||
if (r != BZ_OK) goto init_failed;
|
||||
break;
|
||||
case BZ_DATA_ERROR_MAGIC:
|
||||
case BZ_DATA_ERROR: decompress_error(term, ce, cast_uchar "bzip2", TEXT_(T_COMPRESSED_ERROR), errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
case BZ_PARAM_ERROR: decompress_error(term, ce, cast_uchar "bzip2", cast_uchar "Internal error on BZ2_bzDecompress", errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
case BZ_MEM_ERROR:
|
||||
mem_error: memory_error = 1;
|
||||
err = 1;
|
||||
goto finish;
|
||||
default: decompress_error(term, ce, cast_uchar "bzip2", cast_uchar "Unknown return value on BZ2_bzDecompress", errp);
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
if (!z.avail_out) {
|
||||
size_t addsize;
|
||||
if (decoder_memory_expand(&p, size, &addsize) < 0)
|
||||
goto mem_error;
|
||||
z.next_out = cast_char(p + size);
|
||||
z.avail_out = (unsigned)addsize;
|
||||
size += addsize;
|
||||
goto repeat_frag;
|
||||
}
|
||||
if (z.avail_in) goto repeat_frag;
|
||||
offset += f->length;
|
||||
}
|
||||
finish:
|
||||
r = BZ2_bzDecompressEnd(&z);
|
||||
end_failed:
|
||||
switch (r) {
|
||||
case BZ_OK: break;
|
||||
case BZ_PARAM_ERROR: decompress_error(term, ce, cast_uchar "bzip2", cast_uchar "Internal error on BZ2_bzDecompressEnd", errp);
|
||||
err = 1;
|
||||
break;
|
||||
case BZ_MEM_ERROR: memory_error = 1;
|
||||
err = 1;
|
||||
break;
|
||||
default: decompress_error(term, ce, cast_uchar "bzip2", cast_uchar "Unknown return value on BZ2_bzDecompressEnd", errp);
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
after_inflateend:
|
||||
if (memory_error) {
|
||||
mem_free(p);
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry_after_memory_error;
|
||||
decompress_error(term, ce, cast_uchar "bzip2", TEXT_(T_OUT_OF_MEMORY), errp);
|
||||
return 1;
|
||||
}
|
||||
if (err && (unsigned char *)z.next_out == p) {
|
||||
mem_free(p);
|
||||
return 1;
|
||||
}
|
||||
ce->decompressed = p;
|
||||
ce->decompressed_len = (unsigned char *)z.next_out - (unsigned char *)p;
|
||||
decompressed_cache_size += ce->decompressed_len;
|
||||
ce->decompressed = mem_realloc(ce->decompressed, ce->decompressed_len);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LZMA
|
||||
#include <lzma.h>
|
||||
#define internal internal_
|
||||
static int decode_lzma(struct terminal *term, struct cache_entry *ce, int *errp)
|
||||
{
|
||||
unsigned char err;
|
||||
unsigned char memory_error;
|
||||
lzma_stream z = LZMA_STREAM_INIT;
|
||||
off_t offset;
|
||||
int r;
|
||||
unsigned char *p;
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
size_t size;
|
||||
|
||||
retry_after_memory_error:
|
||||
err = 0;
|
||||
memory_error = 0;
|
||||
decoder_memory_init(&p, &size, ce->length);
|
||||
z.next_in = NULL;
|
||||
z.avail_in = 0;
|
||||
z.next_out = p;
|
||||
z.avail_out = size;
|
||||
r = lzma_auto_decoder(&z, UINT64_MAX, 0);
|
||||
init_failed:
|
||||
switch (r) {
|
||||
case LZMA_OK: break;
|
||||
case LZMA_MEM_ERROR: memory_error = 1;
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
case LZMA_OPTIONS_ERROR:
|
||||
decompress_error(term, ce, cast_uchar "lzma", cast_uchar "Invalid parameter", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
case LZMA_PROG_ERROR: decompress_error(term, ce, cast_uchar "lzma", cast_uchar "Lzma is miscompiled", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
default: decompress_error(term, ce, cast_uchar "lzma", cast_uchar "Unknown return value on lzma_auto_decoder", errp);
|
||||
err = 1;
|
||||
goto after_inflateend;
|
||||
}
|
||||
offset = 0;
|
||||
foreach(struct fragment, f, lf, ce->frag) {
|
||||
if (f->offset != offset) break;
|
||||
z.next_in = f->data;
|
||||
z.avail_in = (size_t)f->length;
|
||||
if ((off_t)z.avail_in != f->length) overalloc();
|
||||
repeat_frag:
|
||||
r = lzma_code(&z, LZMA_RUN);
|
||||
switch (r) {
|
||||
case LZMA_OK:
|
||||
case LZMA_NO_CHECK:
|
||||
case LZMA_UNSUPPORTED_CHECK:
|
||||
case LZMA_GET_CHECK:
|
||||
break;
|
||||
case LZMA_STREAM_END:
|
||||
lzma_end(&z);
|
||||
r = lzma_auto_decoder(&z, UINT64_MAX, 0);
|
||||
if (r != LZMA_OK) goto init_failed;
|
||||
break;
|
||||
case LZMA_MEM_ERROR:
|
||||
mem_error: memory_error = 1;
|
||||
err = 1;
|
||||
goto finish;
|
||||
case LZMA_MEMLIMIT_ERROR:
|
||||
decompress_error(term, ce, cast_uchar "lzma", cast_uchar "Memory limit was exceeded", errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
case LZMA_FORMAT_ERROR:
|
||||
case LZMA_DATA_ERROR:
|
||||
case LZMA_BUF_ERROR:
|
||||
decompress_error(term, ce, cast_uchar "lzma", TEXT_(T_COMPRESSED_ERROR), errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
case LZMA_OPTIONS_ERROR:decompress_error(term, ce, cast_uchar "lzma", cast_uchar "File contains unsupported options", errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
case LZMA_PROG_ERROR: decompress_error(term, ce, cast_uchar "lzma", cast_uchar "Lzma is miscompiled", errp);
|
||||
err = 1;
|
||||
goto finish;
|
||||
default: decompress_error(term, ce, cast_uchar "lzma", cast_uchar "Unknown return value on lzma_code", errp);
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
if (!z.avail_out) {
|
||||
size_t addsize;
|
||||
if (decoder_memory_expand(&p, size, &addsize) < 0)
|
||||
goto mem_error;
|
||||
z.next_out = p + size;
|
||||
z.avail_out = addsize;
|
||||
size += addsize;
|
||||
goto repeat_frag;
|
||||
}
|
||||
if (z.avail_in) goto repeat_frag;
|
||||
offset += f->length;
|
||||
}
|
||||
finish:
|
||||
lzma_end(&z);
|
||||
after_inflateend:
|
||||
if (memory_error) {
|
||||
mem_free(p);
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry_after_memory_error;
|
||||
decompress_error(term, ce, cast_uchar "lzma", TEXT_(T_OUT_OF_MEMORY), errp);
|
||||
return 1;
|
||||
}
|
||||
if (err && (unsigned char *)z.next_out == p) {
|
||||
mem_free(p);
|
||||
return 1;
|
||||
}
|
||||
ce->decompressed = p;
|
||||
ce->decompressed_len = (unsigned char *)z.next_out - (unsigned char *)p;
|
||||
decompressed_cache_size += ce->decompressed_len;
|
||||
ce->decompressed = mem_realloc(ce->decompressed, ce->decompressed_len);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LZIP
|
||||
#include <lzlib.h>
|
||||
static int decode_lzip(struct terminal *term, struct cache_entry *ce, int *errp)
|
||||
{
|
||||
unsigned char err;
|
||||
unsigned char memory_error;
|
||||
void *lz;
|
||||
off_t offset;
|
||||
int r;
|
||||
enum LZ_Errno le;
|
||||
unsigned char *p;
|
||||
struct fragment *f;
|
||||
struct list_head *lf;
|
||||
size_t size;
|
||||
size_t used_size;
|
||||
|
||||
retry_after_memory_error:
|
||||
err = 0;
|
||||
memory_error = 0;
|
||||
decoder_memory_init(&p, &size, ce->length);
|
||||
used_size = 0;
|
||||
|
||||
lz = LZ_decompress_open();
|
||||
if (!lz) {
|
||||
err = 1;
|
||||
memory_error = 1;
|
||||
goto after_inflateend;
|
||||
}
|
||||
if (LZ_decompress_errno(lz) != LZ_ok) {
|
||||
lz_error:
|
||||
le = LZ_decompress_errno(lz);
|
||||
if (0)
|
||||
mem_error: le = LZ_mem_error;
|
||||
err = 1;
|
||||
if (le == LZ_mem_error) {
|
||||
memory_error = 1;
|
||||
} else if (!ce->incomplete) {
|
||||
decompress_error(term, ce, cast_uchar "lzip", cast_uchar LZ_strerror(le), errp);
|
||||
}
|
||||
goto finish;
|
||||
}
|
||||
|
||||
offset = 0;
|
||||
foreach(struct fragment, f, lf, ce->frag) {
|
||||
unsigned char *current_ptr;
|
||||
int current_len;
|
||||
if (f->offset != offset) break;
|
||||
current_ptr = f->data;
|
||||
current_len = (int)f->length;
|
||||
while (current_len) {
|
||||
r = LZ_decompress_write(lz, current_ptr, current_len);
|
||||
if (r == -1)
|
||||
goto lz_error;
|
||||
current_ptr += r;
|
||||
current_len -= r;
|
||||
do {
|
||||
if (used_size == size) {
|
||||
size_t addsize;
|
||||
if (decoder_memory_expand(&p, size, &addsize) < 0)
|
||||
goto mem_error;
|
||||
size += addsize;
|
||||
}
|
||||
r = LZ_decompress_read(lz, p + used_size, (int)(size - used_size));
|
||||
if (r == -1)
|
||||
goto lz_error;
|
||||
used_size += r;
|
||||
} while (r);
|
||||
}
|
||||
offset += f->length;
|
||||
}
|
||||
r = LZ_decompress_finish(lz);
|
||||
if (r == -1)
|
||||
goto lz_error;
|
||||
while ((r = LZ_decompress_finished(lz)) == 0) {
|
||||
if (used_size == size) {
|
||||
size_t addsize;
|
||||
if (decoder_memory_expand(&p, size, &addsize) < 0)
|
||||
goto mem_error;
|
||||
size += addsize;
|
||||
}
|
||||
r = LZ_decompress_read(lz, p + used_size, (int)(size - used_size));
|
||||
if (r == -1)
|
||||
goto lz_error;
|
||||
used_size += r;
|
||||
}
|
||||
if (r == -1)
|
||||
goto lz_error;
|
||||
|
||||
finish:
|
||||
LZ_decompress_close(lz);
|
||||
after_inflateend:
|
||||
if (memory_error) {
|
||||
mem_free(p);
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry_after_memory_error;
|
||||
decompress_error(term, ce, cast_uchar "lzip", TEXT_(T_OUT_OF_MEMORY), errp);
|
||||
return 1;
|
||||
}
|
||||
if (err && !used_size) {
|
||||
mem_free(p);
|
||||
return 1;
|
||||
}
|
||||
ce->decompressed = p;
|
||||
ce->decompressed_len = used_size;
|
||||
decompressed_cache_size += ce->decompressed_len;
|
||||
ce->decompressed = mem_realloc(ce->decompressed, ce->decompressed_len);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
int get_file_by_term(struct terminal *term, struct cache_entry *ce, unsigned char **start, size_t *len, int *errp)
|
||||
{
|
||||
unsigned char *enc;
|
||||
struct fragment *fr;
|
||||
int e;
|
||||
if (errp) *errp = 0;
|
||||
*start = NULL;
|
||||
*len = 0;
|
||||
if (!ce) return 1;
|
||||
if (ce->decompressed) {
|
||||
#if defined(HAVE_ANY_COMPRESSION)
|
||||
return_decompressed:
|
||||
#endif
|
||||
*start = ce->decompressed;
|
||||
*len = ce->decompressed_len;
|
||||
return 0;
|
||||
}
|
||||
enc = get_content_encoding(ce->head, ce->url, 0);
|
||||
if (enc) {
|
||||
#ifdef HAVE_ZLIB
|
||||
if (!casestrcmp(enc, cast_uchar "gzip") || !casestrcmp(enc, cast_uchar "x-gzip") || !casestrcmp(enc, cast_uchar "deflate")) {
|
||||
int defl = !casestrcmp(enc, cast_uchar "deflate");
|
||||
mem_free(enc);
|
||||
if (decode_gzip(term, ce, defl, errp)) goto uncompressed;
|
||||
goto return_decompressed;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_BROTLI
|
||||
if (!casestrcmp(enc, cast_uchar "br")) {
|
||||
mem_free(enc);
|
||||
if (decode_brotli(term, ce, errp)) goto uncompressed;
|
||||
goto return_decompressed;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_ZSTD
|
||||
if (!casestrcmp(enc, cast_uchar "zstd")) {
|
||||
mem_free(enc);
|
||||
if (decode_zstd(term, ce, errp)) goto uncompressed;
|
||||
goto return_decompressed;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_BZIP2
|
||||
if (!casestrcmp(enc, cast_uchar "bzip2")) {
|
||||
mem_free(enc);
|
||||
if (decode_bzip2(term, ce, errp)) goto uncompressed;
|
||||
goto return_decompressed;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_LZMA
|
||||
if (!casestrcmp(enc, cast_uchar "lzma") || !casestrcmp(enc, cast_uchar "lzma2")) {
|
||||
mem_free(enc);
|
||||
if (decode_lzma(term, ce, errp)) goto uncompressed;
|
||||
goto return_decompressed;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_LZIP
|
||||
if (!casestrcmp(enc, cast_uchar "lzip")) {
|
||||
mem_free(enc);
|
||||
if (decode_lzip(term, ce, errp)) goto uncompressed;
|
||||
goto return_decompressed;
|
||||
}
|
||||
#endif
|
||||
mem_free(enc);
|
||||
goto uncompressed;
|
||||
}
|
||||
uncompressed:
|
||||
if ((e = defrag_entry(ce)) < 0) {
|
||||
unsigned char *msg = get_err_msg(e, term);
|
||||
if (display_error(term, TEXT_(T_ERROR), errp)) {
|
||||
unsigned char *u = display_url(term, ce->url, 1);
|
||||
msg_box(term, getml(u, NULL), TEXT_(T_ERROR), AL_CENTER, TEXT_(T_ERROR_LOADING), cast_uchar " ", u, cast_uchar ":\n\n", msg, MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
|
||||
}
|
||||
}
|
||||
if (list_empty(ce->frag)) return 1;
|
||||
fr = list_struct(ce->frag.next, struct fragment);
|
||||
if (fr->offset || !fr->length) return 1;
|
||||
*start = fr->data;
|
||||
*len = fr->length;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int get_file(struct object_request *o, unsigned char **start, size_t *len)
|
||||
{
|
||||
struct terminal *term;
|
||||
*start = NULL;
|
||||
*len = 0;
|
||||
if (!o) return 1;
|
||||
term = find_terminal(o->term);
|
||||
return get_file_by_term(term, o->ce, start, len, NULL);
|
||||
}
|
||||
|
||||
void free_decompressed_data(struct cache_entry *e)
|
||||
{
|
||||
if (e->decompressed) {
|
||||
if (decompressed_cache_size < e->decompressed_len)
|
||||
internal_error("free_decompressed_data: decompressed_cache_size underflow %lu, %lu", (unsigned long)decompressed_cache_size, (unsigned long)e->decompressed_len);
|
||||
decompressed_cache_size -= e->decompressed_len;
|
||||
e->decompressed_len = 0;
|
||||
mem_free(e->decompressed);
|
||||
e->decompressed = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_ANY_COMPRESSION
|
||||
|
||||
void add_compress_methods(unsigned char **s, int *l)
|
||||
{
|
||||
int cl = 0;
|
||||
#ifdef HAVE_ZLIB
|
||||
{
|
||||
if (!cl) cl = 1; else add_to_str(s, l, cast_uchar ", ");
|
||||
add_to_str(s, l, cast_uchar "ZLIB");
|
||||
#ifdef zlib_version
|
||||
add_to_str(s, l, cast_uchar " (");
|
||||
add_to_str(s, l, (unsigned char *)zlib_version);
|
||||
add_chr_to_str(s, l, ')');
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_BROTLI
|
||||
{
|
||||
unsigned bv = BrotliDecoderVersion();
|
||||
if (!cl) cl = 1; else add_to_str(s, l, cast_uchar ", ");
|
||||
add_to_str(s, l, cast_uchar "BROTLI");
|
||||
add_to_str(s, l, cast_uchar " (");
|
||||
add_num_to_str(s, l, bv >> 24);
|
||||
add_chr_to_str(s, l, '.');
|
||||
add_num_to_str(s, l, (bv >> 12) & 0xfff);
|
||||
add_chr_to_str(s, l, '.');
|
||||
add_num_to_str(s, l, bv & 0xfff);
|
||||
add_chr_to_str(s, l, ')');
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_ZSTD
|
||||
{
|
||||
unsigned zv = ZSTD_versionNumber();
|
||||
if (!cl) cl = 1; else add_to_str(s, l, cast_uchar ", ");
|
||||
add_to_str(s, l, cast_uchar "ZSTD");
|
||||
add_to_str(s, l, cast_uchar " (");
|
||||
add_num_to_str(s, l, zv / 10000);
|
||||
add_chr_to_str(s, l, '.');
|
||||
add_num_to_str(s, l, zv / 100 % 100);
|
||||
add_chr_to_str(s, l, '.');
|
||||
add_num_to_str(s, l, zv % 100);
|
||||
add_chr_to_str(s, l, ')');
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_BZIP2
|
||||
{
|
||||
unsigned char *b = (unsigned char *)BZ2_bzlibVersion();
|
||||
int bl = (int)strcspn(cast_const_char b, ",");
|
||||
if (!cl) cl = 1; else add_to_str(s, l, cast_uchar ", ");
|
||||
add_to_str(s, l, cast_uchar "BZIP2");
|
||||
add_to_str(s, l, cast_uchar " (");
|
||||
add_bytes_to_str(s, l, b, bl);
|
||||
add_chr_to_str(s, l, ')');
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_LZMA
|
||||
{
|
||||
if (!cl) cl = 1; else add_to_str(s, l, cast_uchar ", ");
|
||||
add_to_str(s, l, cast_uchar "LZMA");
|
||||
add_to_str(s, l, cast_uchar " (");
|
||||
add_to_str(s, l, cast_uchar lzma_version_string());
|
||||
add_chr_to_str(s, l, ')');
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_LZIP
|
||||
{
|
||||
if (!cl) cl = 1; else add_to_str(s, l, cast_uchar ", ");
|
||||
add_to_str(s, l, cast_uchar "LZIP");
|
||||
add_to_str(s, l, cast_uchar " (");
|
||||
add_to_str(s, l, cast_uchar LZ_version());
|
||||
add_chr_to_str(s, l, ')');
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,976 @@
|
|||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Written by Per Bothner <bothner@cygnus.com>.
|
||||
# The master version of this file is at the FSF in /home/gd/gnu/lib.
|
||||
#
|
||||
# This script attempts to guess a canonical system name similar to
|
||||
# config.sub. If it succeeds, it prints the system name on stdout, and
|
||||
# exits with 0. Otherwise, it exits with 1.
|
||||
#
|
||||
# The plan is that this can be called by configure scripts if you
|
||||
# don't specify an explicit system type (host/target name).
|
||||
#
|
||||
# Only a few systems have been added to this list; please add others
|
||||
# (but try to keep the structure clean).
|
||||
#
|
||||
|
||||
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
|
||||
# (ghazi@noc.rutgers.edu 8/24/94.)
|
||||
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
|
||||
PATH=$PATH:/.attbin ; export PATH
|
||||
fi
|
||||
|
||||
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
|
||||
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
|
||||
dummy=dummy-$$
|
||||
trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
|
||||
|
||||
# Note: order is significant - the case branches are not exclusive.
|
||||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
*:OS/2:*:*)
|
||||
echo "i386-pc-os2_emx"
|
||||
exit 0;;
|
||||
alpha:OSF1:*:*)
|
||||
if test $UNAME_RELEASE = "V4.0"; then
|
||||
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
|
||||
fi
|
||||
# A Vn.n version is a released version.
|
||||
# A Tn.n version is a released field test version.
|
||||
# A Xn.n version is an unreleased experimental baselevel.
|
||||
# 1.2 uses "1.2" for uname -r.
|
||||
cat <<EOF >$dummy.s
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
${CC-cc} $dummy.s -o $dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./$dummy
|
||||
case "$?" in
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
rm -f $dummy.s $dummy
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
|
||||
exit 0 ;;
|
||||
21064:Windows_NT:50:3)
|
||||
echo alpha-dec-winnt3.5
|
||||
exit 0 ;;
|
||||
Amiga*:UNIX_System_V:4.0:*)
|
||||
echo m68k-cbm-sysv4
|
||||
exit 0;;
|
||||
amiga:NetBSD:*:*)
|
||||
echo m68k-cbm-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
amiga:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:[Aa]miga[Oo][Ss]:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-amigaos
|
||||
exit 0 ;;
|
||||
arc64:OpenBSD:*:*)
|
||||
echo mips64el-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hkmips:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
pmax:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sgi:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
wgrisc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit 0;;
|
||||
arm32:NetBSD:*:*)
|
||||
echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
SR2?01:HI-UX/MPP:*:*)
|
||||
echo hppa1.1-hitachi-hiuxmpp
|
||||
exit 0;;
|
||||
Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
|
||||
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
|
||||
if test "`(/bin/universe) 2>/dev/null`" = att ; then
|
||||
echo pyramid-pyramid-sysv3
|
||||
else
|
||||
echo pyramid-pyramid-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
NILE:*:*:dcosx)
|
||||
echo pyramid-pyramid-svr4
|
||||
exit 0 ;;
|
||||
sun4H:SunOS:5.*:*)
|
||||
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
|
||||
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
i86pc:SunOS:5.*:*)
|
||||
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:6*:*)
|
||||
# According to config.sub, this is the proper way to canonicalize
|
||||
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
|
||||
# it's likely to be more like Solaris than SunOS4.
|
||||
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:*:*)
|
||||
case "`/usr/bin/arch -k`" in
|
||||
Series*|S4*)
|
||||
UNAME_RELEASE=`uname -v`
|
||||
;;
|
||||
esac
|
||||
# Japanese Language versions have a version number like `4.1.3-JL'.
|
||||
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
|
||||
exit 0 ;;
|
||||
sun3*:SunOS:*:*)
|
||||
echo m68k-sun-sunos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun*:*:4.2BSD:*)
|
||||
UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
|
||||
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
|
||||
case "`/bin/arch`" in
|
||||
sun3)
|
||||
echo m68k-sun-sunos${UNAME_RELEASE}
|
||||
;;
|
||||
sun4)
|
||||
echo sparc-sun-sunos${UNAME_RELEASE}
|
||||
;;
|
||||
esac
|
||||
exit 0 ;;
|
||||
aushp:SunOS:*:*)
|
||||
echo sparc-auspex-sunos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
atari*:NetBSD:*:*)
|
||||
echo m68k-atari-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
atari*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3*:NetBSD:*:*)
|
||||
echo m68k-sun-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:NetBSD:*:*)
|
||||
echo m68k-apple-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme88k:OpenBSD:*:*)
|
||||
echo m88k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
powerpc:machten:*:*)
|
||||
echo powerpc-apple-machten${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
macppc:NetBSD:*:*)
|
||||
echo powerpc-apple-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
RISC*:Mach:*:*)
|
||||
echo mips-dec-mach_bsd4.3
|
||||
exit 0 ;;
|
||||
RISC*:ULTRIX:*:*)
|
||||
echo mips-dec-ultrix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
VAX*:ULTRIX*:*:*)
|
||||
echo vax-dec-ultrix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
2020:CLIX:*:*)
|
||||
echo clipper-intergraph-clix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mips:*:*:UMIPS | mips:*:*:RISCos)
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
int main (argc, argv) int argc; char **argv; {
|
||||
#if defined (host_mips) && defined (MIPSEB)
|
||||
#if defined (SYSTYPE_SYSV)
|
||||
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#if defined (SYSTYPE_SVR4)
|
||||
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
|
||||
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
exit (-1);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy \
|
||||
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
|
||||
&& rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo mips-mips-riscos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
Night_Hawk:Power_UNIX:*:*)
|
||||
echo powerpc-harris-powerunix
|
||||
exit 0 ;;
|
||||
m88k:CX/UX:7*:*)
|
||||
echo m88k-harris-cxux7
|
||||
exit 0 ;;
|
||||
m88k:*:4*:R4*)
|
||||
echo m88k-motorola-sysv4
|
||||
exit 0 ;;
|
||||
m88k:*:3*:R3*)
|
||||
echo m88k-motorola-sysv3
|
||||
exit 0 ;;
|
||||
AViiON:dgux:*:*)
|
||||
# DG/UX returns AViiON for all architectures
|
||||
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
||||
if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
|
||||
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
|
||||
-o ${TARGET_BINARY_INTERFACE}x = x ] ; then
|
||||
echo m88k-dg-dgux${UNAME_RELEASE}
|
||||
else
|
||||
echo m88k-dg-dguxbcs${UNAME_RELEASE}
|
||||
fi
|
||||
else echo i586-dg-dgux${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
|
||||
echo m88k-dolphin-sysv3
|
||||
exit 0 ;;
|
||||
M88*:*:R3*:*)
|
||||
# Delta 88k system running SVR3
|
||||
echo m88k-motorola-sysv3
|
||||
exit 0 ;;
|
||||
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
|
||||
echo m88k-tektronix-sysv3
|
||||
exit 0 ;;
|
||||
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
|
||||
echo m68k-tektronix-bsd
|
||||
exit 0 ;;
|
||||
*:IRIX*:*:*)
|
||||
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
|
||||
exit 0 ;;
|
||||
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
|
||||
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
|
||||
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
|
||||
i?86:AIX:*:*)
|
||||
echo i386-ibm-aix
|
||||
exit 0 ;;
|
||||
*:AIX:2:3)
|
||||
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <sys/systemcfg.h>
|
||||
|
||||
main()
|
||||
{
|
||||
if (!__power_pc())
|
||||
exit(1);
|
||||
puts("powerpc-ibm-aix3.2.5");
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo rs6000-ibm-aix3.2.5
|
||||
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
echo rs6000-ibm-aix3.2.4
|
||||
else
|
||||
echo rs6000-ibm-aix3.2
|
||||
fi
|
||||
exit 0 ;;
|
||||
*:AIX:*:4)
|
||||
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
|
||||
if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
|
||||
IBM_ARCH=rs6000
|
||||
else
|
||||
IBM_ARCH=powerpc
|
||||
fi
|
||||
if [ -x /usr/bin/oslevel ] ; then
|
||||
IBM_REV=`/usr/bin/oslevel`
|
||||
else
|
||||
IBM_REV=4.${UNAME_RELEASE}
|
||||
fi
|
||||
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
|
||||
exit 0 ;;
|
||||
*:AIX:*:*)
|
||||
echo rs6000-ibm-aix
|
||||
exit 0 ;;
|
||||
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
|
||||
echo romp-ibm-bsd4.4
|
||||
exit 0 ;;
|
||||
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
|
||||
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
|
||||
exit 0 ;; # report: romp-ibm BSD 4.3
|
||||
*:BOSX:*:*)
|
||||
echo rs6000-bull-bosx
|
||||
exit 0 ;;
|
||||
DPX/2?00:B.O.S.:*:*)
|
||||
echo m68k-bull-sysv3
|
||||
exit 0 ;;
|
||||
9000/[34]??:4.3bsd:1.*:*)
|
||||
echo m68k-hp-bsd
|
||||
exit 0 ;;
|
||||
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
|
||||
echo m68k-hp-bsd4.4
|
||||
exit 0 ;;
|
||||
9000/[34678]??:HP-UX:*:*)
|
||||
case "${UNAME_MACHINE}" in
|
||||
9000/31? ) HP_ARCH=m68000 ;;
|
||||
9000/[34]?? ) HP_ARCH=m68k ;;
|
||||
9000/6?? | 9000/7?? | 9000/80[24] | 9000/8?[13679] | 9000/892 )
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main ()
|
||||
{
|
||||
#if defined(_SC_KERNEL_BITS)
|
||||
long bits = sysconf(_SC_KERNEL_BITS);
|
||||
#endif
|
||||
long cpu = sysconf (_SC_CPU_VERSION);
|
||||
|
||||
switch (cpu)
|
||||
{
|
||||
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
|
||||
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
|
||||
case CPU_PA_RISC2_0:
|
||||
#if defined(_SC_KERNEL_BITS)
|
||||
switch (bits)
|
||||
{
|
||||
case 64: puts ("hppa2.0w"); break;
|
||||
case 32: puts ("hppa2.0n"); break;
|
||||
default: puts ("hppa2.0"); break;
|
||||
} break;
|
||||
#else /* !defined(_SC_KERNEL_BITS) */
|
||||
puts ("hppa2.0"); break;
|
||||
#endif
|
||||
default: puts ("hppa1.0"); break;
|
||||
}
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
(${CC-cc} $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
|
||||
rm -f $dummy.c $dummy
|
||||
esac
|
||||
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
||||
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
|
||||
exit 0 ;;
|
||||
3050*:HI-UX:*:*)
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <unistd.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
long cpu = sysconf (_SC_CPU_VERSION);
|
||||
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
|
||||
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
|
||||
results, however. */
|
||||
if (CPU_IS_PA_RISC (cpu))
|
||||
{
|
||||
switch (cpu)
|
||||
{
|
||||
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
|
||||
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
|
||||
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
|
||||
default: puts ("hppa-hitachi-hiuxwe2"); break;
|
||||
}
|
||||
}
|
||||
else if (CPU_IS_HP_MC68K (cpu))
|
||||
puts ("m68k-hitachi-hiuxwe2");
|
||||
else puts ("unknown-hitachi-hiuxwe2");
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo unknown-hitachi-hiuxwe2
|
||||
exit 0 ;;
|
||||
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
|
||||
echo hppa1.1-hp-bsd
|
||||
exit 0 ;;
|
||||
9000/8??:4.3bsd:*:*)
|
||||
echo hppa1.0-hp-bsd
|
||||
exit 0 ;;
|
||||
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
|
||||
echo hppa1.1-hp-osf
|
||||
exit 0 ;;
|
||||
hp8??:OSF1:*:*)
|
||||
echo hppa1.0-hp-osf
|
||||
exit 0 ;;
|
||||
i?86:OSF1:*:*)
|
||||
if [ -x /usr/sbin/sysversion ] ; then
|
||||
echo ${UNAME_MACHINE}-unknown-osf1mk
|
||||
else
|
||||
echo ${UNAME_MACHINE}-unknown-osf1
|
||||
fi
|
||||
exit 0 ;;
|
||||
parisc*:Lites*:*:*)
|
||||
echo hppa1.1-hp-lites
|
||||
exit 0 ;;
|
||||
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
|
||||
if getsysinfo -f scalar_acc
|
||||
then echo c32-convex-bsd
|
||||
else echo c2-convex-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
|
||||
echo c34-convex-bsd
|
||||
exit 0 ;;
|
||||
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
|
||||
echo c38-convex-bsd
|
||||
exit 0 ;;
|
||||
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
|
||||
echo c4-convex-bsd
|
||||
exit 0 ;;
|
||||
CRAY*X-MP:*:*:*)
|
||||
echo xmp-cray-unicos
|
||||
exit 0 ;;
|
||||
CRAY*Y-MP:*:*:*)
|
||||
echo ymp-cray-unicos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY*[A-Z]90:*:*:*)
|
||||
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
|
||||
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
|
||||
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
|
||||
exit 0 ;;
|
||||
CRAY*TS:*:*:*)
|
||||
echo t90-cray-unicos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY*T3E:*:*:*)
|
||||
echo t3e-cray-unicosmk${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY-2:*:*:*)
|
||||
echo cray2-cray-unicos
|
||||
exit 0 ;;
|
||||
F300:UNIX_System_V:*:*)
|
||||
FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
|
||||
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
exit 0 ;;
|
||||
F301:UNIX_System_V:*:*)
|
||||
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
|
||||
exit 0 ;;
|
||||
hp3[0-9][05]:NetBSD:*:*)
|
||||
echo m68k-hp-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hp300:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sparc*:BSD/OS:*:*)
|
||||
echo sparc-unknown-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:BSD/OS:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:FreeBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
exit 0 ;;
|
||||
*:NetBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
*:OpenBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit 0 ;;
|
||||
i*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit 0 ;;
|
||||
p*:CYGWIN*:*)
|
||||
echo powerpcle-unknown-cygwin
|
||||
exit 0 ;;
|
||||
prep*:SunOS:5.*:*)
|
||||
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
*:GNU:*:*)
|
||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit 0 ;;
|
||||
*:Linux:*:*)
|
||||
# uname on the ARM produces all sorts of strangeness, and we need to
|
||||
# filter it out.
|
||||
case "$UNAME_MACHINE" in
|
||||
arm* | sa110*) UNAME_MACHINE="arm" ;;
|
||||
esac
|
||||
|
||||
# The BFD linker knows what the default object file format is, so
|
||||
# first see if it will tell us.
|
||||
ld_help_string=`ld --help 2>&1`
|
||||
ld_supported_emulations=`echo $ld_help_string \
|
||||
| sed -ne '/supported emulations:/!d
|
||||
s/[ ][ ]*/ /g
|
||||
s/.*supported emulations: *//
|
||||
s/ .*//
|
||||
p'`
|
||||
case "$ld_supported_emulations" in
|
||||
i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
|
||||
i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
|
||||
sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
|
||||
esac
|
||||
|
||||
if test "${UNAME_MACHINE}" = "alpha" ; then
|
||||
sed 's/^ //' <<EOF >$dummy.s
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
LIBC=""
|
||||
${CC-cc} $dummy.s -o $dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./$dummy
|
||||
case "$?" in
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
|
||||
objdump --private-headers $dummy | \
|
||||
grep ld.so.1 > /dev/null
|
||||
if test "$?" = 0 ; then
|
||||
LIBC="libc1"
|
||||
fi
|
||||
fi
|
||||
rm -f $dummy.s $dummy
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
|
||||
elif test "${UNAME_MACHINE}" = "mips" ; then
|
||||
cat >$dummy.c <<EOF
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
#ifdef __MIPSEB__
|
||||
printf ("%s-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
#ifdef __MIPSEL__
|
||||
printf ("%sel-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
else
|
||||
# Either a pre-BFD a.out linker (linux-gnuoldld)
|
||||
# or one that does not give us useful --help.
|
||||
# GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
|
||||
# If ld does not provide *any* "supported emulations:"
|
||||
# that means it is gnuoldld.
|
||||
echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
|
||||
test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
|
||||
|
||||
case "${UNAME_MACHINE}" in
|
||||
i?86)
|
||||
VENDOR=pc;
|
||||
;;
|
||||
*)
|
||||
VENDOR=unknown;
|
||||
;;
|
||||
esac
|
||||
# Determine whether the default compiler is a.out or elf
|
||||
cat >$dummy.c <<EOF
|
||||
#include <features.h>
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
#ifdef __ELF__
|
||||
# ifdef __GLIBC__
|
||||
# if __GLIBC__ >= 2
|
||||
printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
|
||||
# else
|
||||
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
|
||||
# endif
|
||||
# else
|
||||
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
|
||||
# endif
|
||||
#else
|
||||
printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
fi ;;
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
|
||||
# are messed up and put the nodename in both sysname and nodename.
|
||||
i?86:DYNIX/ptx:4*:*)
|
||||
echo i386-sequent-sysv4
|
||||
exit 0 ;;
|
||||
i?86:UNIX_SV:4.2MP:2.*)
|
||||
# Unixware is an offshoot of SVR4, but it has its own version
|
||||
# number series starting with 2...
|
||||
# I am not positive that other SVR4 systems won't match this,
|
||||
# I just have to hope. -- rms.
|
||||
# Use sysv4.2uw... so that sysv4* matches it.
|
||||
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
|
||||
exit 0 ;;
|
||||
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
|
||||
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
|
||||
echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
|
||||
else
|
||||
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:*:3.2:*)
|
||||
if test -f /usr/options/cb.name; then
|
||||
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
|
||||
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
|
||||
elif /bin/uname -X 2>/dev/null >/dev/null ; then
|
||||
UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
|
||||
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
|
||||
&& UNAME_MACHINE=i586
|
||||
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
|
||||
else
|
||||
echo ${UNAME_MACHINE}-pc-sysv32
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:UnixWare:*:*)
|
||||
if /bin/uname -X 2>/dev/null >/dev/null ; then
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
|
||||
&& UNAME_MACHINE=i586
|
||||
fi
|
||||
echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
|
||||
exit 0 ;;
|
||||
pc:*:*:*)
|
||||
# uname -m prints for DJGPP always 'pc', but it prints nothing about
|
||||
# the processor, so we play safe by assuming i386.
|
||||
echo i386-pc-msdosdjgpp
|
||||
exit 0 ;;
|
||||
Intel:Mach:3*:*)
|
||||
echo i386-pc-mach3
|
||||
exit 0 ;;
|
||||
paragon:*:*:*)
|
||||
echo i860-intel-osf1
|
||||
exit 0 ;;
|
||||
i860:*:4.*:*) # i860-SVR4
|
||||
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
|
||||
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
|
||||
else # Add other i860-SVR4 vendors below as they are discovered.
|
||||
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
|
||||
fi
|
||||
exit 0 ;;
|
||||
mini*:CTIX:SYS*5:*)
|
||||
# "miniframe"
|
||||
echo m68010-convergent-sysv
|
||||
exit 0 ;;
|
||||
M68*:*:R3V[567]*:*)
|
||||
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
|
||||
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
|
||||
OS_REL=''
|
||||
test -r /etc/.relid \
|
||||
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
|
||||
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
|
||||
&& echo i486-ncr-sysv4.3${OS_REL} && exit 0
|
||||
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
|
||||
&& echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
|
||||
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
|
||||
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
|
||||
&& echo i486-ncr-sysv4 && exit 0 ;;
|
||||
m68*:LynxOS:2.*:*)
|
||||
echo m68k-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mc68030:UNIX_System_V:4.*:*)
|
||||
echo m68k-atari-sysv4
|
||||
exit 0 ;;
|
||||
i?86:LynxOS:2.*:*)
|
||||
echo i386-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
TSUNAMI:LynxOS:2.*:*)
|
||||
echo sparc-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
|
||||
echo rs6000-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
SM[BE]S:UNIX_SV:*:*)
|
||||
echo mips-dde-sysv${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
RM*:SINIX-*:*:*)
|
||||
echo mips-sni-sysv4
|
||||
exit 0 ;;
|
||||
*:SINIX-*:*:*)
|
||||
if uname -p 2>/dev/null >/dev/null ; then
|
||||
UNAME_MACHINE=`(uname -p) 2>/dev/null`
|
||||
echo ${UNAME_MACHINE}-sni-sysv4
|
||||
else
|
||||
echo ns32k-sni-sysv
|
||||
fi
|
||||
exit 0 ;;
|
||||
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
|
||||
# says <Richard.M.Bartel@ccMail.Census.GOV>
|
||||
echo i586-unisys-sysv4
|
||||
exit 0 ;;
|
||||
*:UNIX_System_V:4*:FTX*)
|
||||
# From Gerald Hewes <hewes@openmarket.com>.
|
||||
# How about differentiating between stratus architectures? -djm
|
||||
echo hppa1.1-stratus-sysv4
|
||||
exit 0 ;;
|
||||
*:*:*:FTX*)
|
||||
# From seanf@swdc.stratus.com.
|
||||
echo i860-stratus-sysv4
|
||||
exit 0 ;;
|
||||
mc68*:A/UX:*:*)
|
||||
echo m68k-apple-aux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
news*:NEWS-OS:*:6*)
|
||||
echo mips-sony-newsos6
|
||||
exit 0 ;;
|
||||
R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
|
||||
if [ -d /usr/nec ]; then
|
||||
echo mips-nec-sysv${UNAME_RELEASE}
|
||||
else
|
||||
echo mips-unknown-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
|
||||
echo powerpc-be-beos
|
||||
exit 0 ;;
|
||||
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
|
||||
echo powerpc-apple-beos
|
||||
exit 0 ;;
|
||||
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
|
||||
echo i586-pc-beos
|
||||
exit 0 ;;
|
||||
SX-4:SUPER-UX:*:*)
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
SX-5:SUPER-UX:*:*)
|
||||
echo sx5-nec-superux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
Power*:Rhapsody:*:*)
|
||||
echo powerpc-apple-rhapsody${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:Rhapsody:*:*)
|
||||
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
esac
|
||||
|
||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
|
||||
|
||||
cat >$dummy.c <<EOF
|
||||
#ifdef _SEQUENT_
|
||||
# include <sys/types.h>
|
||||
# include <sys/utsname.h>
|
||||
#endif
|
||||
main ()
|
||||
{
|
||||
#if defined (sony)
|
||||
#if defined (MIPSEB)
|
||||
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
|
||||
I don't know.... */
|
||||
printf ("mips-sony-bsd\n"); exit (0);
|
||||
#else
|
||||
#include <sys/param.h>
|
||||
printf ("m68k-sony-newsos%s\n",
|
||||
#ifdef NEWSOS4
|
||||
"4"
|
||||
#else
|
||||
""
|
||||
#endif
|
||||
); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__arm) && defined (__acorn) && defined (__unix)
|
||||
printf ("arm-acorn-riscix"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (hp300) && !defined (hpux)
|
||||
printf ("m68k-hp-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (NeXT)
|
||||
#if !defined (__ARCHITECTURE__)
|
||||
#define __ARCHITECTURE__ "m68k"
|
||||
#endif
|
||||
int version;
|
||||
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
|
||||
if (version < 4)
|
||||
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
|
||||
else
|
||||
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
|
||||
exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (MULTIMAX) || defined (n16)
|
||||
#if defined (UMAXV)
|
||||
printf ("ns32k-encore-sysv\n"); exit (0);
|
||||
#else
|
||||
#if defined (CMU)
|
||||
printf ("ns32k-encore-mach\n"); exit (0);
|
||||
#else
|
||||
printf ("ns32k-encore-bsd\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__386BSD__)
|
||||
printf ("i386-pc-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (sequent)
|
||||
#if defined (i386)
|
||||
printf ("i386-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#if defined (ns32000)
|
||||
printf ("ns32k-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (_SEQUENT_)
|
||||
struct utsname un;
|
||||
|
||||
uname(&un);
|
||||
|
||||
if (strncmp(un.version, "V2", 2) == 0) {
|
||||
printf ("i386-sequent-ptx2\n"); exit (0);
|
||||
}
|
||||
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
|
||||
printf ("i386-sequent-ptx1\n"); exit (0);
|
||||
}
|
||||
printf ("i386-sequent-ptx\n"); exit (0);
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (vax)
|
||||
#if !defined (ultrix)
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
#else
|
||||
printf ("vax-dec-ultrix\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (alliant) && defined (i860)
|
||||
printf ("i860-alliant-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
exit (1);
|
||||
}
|
||||
EOF
|
||||
|
||||
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
|
||||
# Apollos put the system type in the environment.
|
||||
|
||||
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
|
||||
|
||||
# Convex versions that predate uname can use getsysinfo(1)
|
||||
|
||||
if [ -x /usr/convex/getsysinfo ]
|
||||
then
|
||||
case `getsysinfo -f cpu_type` in
|
||||
c1*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
c2*)
|
||||
if getsysinfo -f scalar_acc
|
||||
then echo c32-convex-bsd
|
||||
else echo c2-convex-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
c34*)
|
||||
echo c34-convex-bsd
|
||||
exit 0 ;;
|
||||
c38*)
|
||||
echo c38-convex-bsd
|
||||
exit 0 ;;
|
||||
c4*)
|
||||
echo c4-convex-bsd
|
||||
exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
#echo '(Unable to guess system type)' 1>&2
|
||||
|
||||
exit 1
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,958 @@
|
|||
#! /bin/sh
|
||||
# Configuration validation subroutine script, version 1.1.
|
||||
# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
# can handle that machine. It does not imply ALL GNU software can.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||
# Supply the specified configuration type as an argument.
|
||||
# If it is invalid, we print an error message on stderr and exit with code 1.
|
||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
# that are meaningful with *any* GNU software.
|
||||
# Each package is responsible for reporting which valid configurations
|
||||
# it does not support. The user should be able to distinguish
|
||||
# a failure to support a valid configuration from a meaningless
|
||||
# configuration.
|
||||
|
||||
# The goal of this file is to map all the various variations of a given
|
||||
# machine specification into a single specification in the form:
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or in some cases, the newer four-part form:
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# It is wrong to echo any other type of specification.
|
||||
|
||||
if [ x$1 = x ]
|
||||
then
|
||||
echo Configuration name missing. 1>&2
|
||||
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
|
||||
echo "or $0 ALIAS" 1>&2
|
||||
echo where ALIAS is a recognized configuration type. 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# First pass through any local machine types.
|
||||
case $1 in
|
||||
*local*)
|
||||
echo $1
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
|
||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
linux-gnu*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
;;
|
||||
*)
|
||||
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
||||
if [ $basic_machine != $1 ]
|
||||
then os=`echo $1 | sed 's/.*-/-/'`
|
||||
else os=; fi
|
||||
;;
|
||||
esac
|
||||
|
||||
### Let's recognize common machines as not being operating systems so
|
||||
### that things like config.sub decstation-3100 work. We also
|
||||
### recognize some manufacturers as not being operating systems, so we
|
||||
### can provide default operating systems below.
|
||||
case $os in
|
||||
-sun*os*)
|
||||
# Prevent following clause from handling this invalid input.
|
||||
;;
|
||||
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
|
||||
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
|
||||
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-apple)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
-hiux*)
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
-sco5)
|
||||
os=sco3.2v5
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco4)
|
||||
os=-sco3.2v4
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2.[4-9]*)
|
||||
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2v[4-9]*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-isc)
|
||||
os=-isc2.2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-clix*)
|
||||
basic_machine=clipper-intergraph
|
||||
;;
|
||||
-isc*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-lynx*)
|
||||
os=-lynxos
|
||||
;;
|
||||
-ptx*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
|
||||
;;
|
||||
-windowsnt*)
|
||||
os=`echo $os | sed -e 's/windowsnt/winnt/'`
|
||||
;;
|
||||
-psos*)
|
||||
os=-psos
|
||||
;;
|
||||
esac
|
||||
|
||||
# Decode aliases for certain CPU-COMPANY combinations.
|
||||
case $basic_machine in
|
||||
# Recognize the basic CPU types without company name.
|
||||
# Some are omitted here because they have special meanings below.
|
||||
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
|
||||
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
|
||||
| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
|
||||
| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
|
||||
| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
|
||||
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
|
||||
| mipstx39 | mipstx39el \
|
||||
| sparc | sparclet | sparclite | sparc64 | v850)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
# We use `pc' rather than `unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
# (2) the word "unknown" tends to confuse beginning users.
|
||||
i[34567]86)
|
||||
basic_machine=$basic_machine-pc
|
||||
;;
|
||||
# Object if more than one company name word.
|
||||
*-*-*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
# Recognize the basic CPU types with company name.
|
||||
vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
|
||||
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
|
||||
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
||||
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
|
||||
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
|
||||
| alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
|
||||
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
|
||||
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
||||
| sparc64-* | mips64-* | mipsel-* \
|
||||
| mips64el-* | mips64orion-* | mips64orionel-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| f301-*)
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
|
||||
basic_machine=m68000-att
|
||||
;;
|
||||
3b*)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
alliant | fx80)
|
||||
basic_machine=fx80-alliant
|
||||
;;
|
||||
altos | altos3068)
|
||||
basic_machine=m68k-altos
|
||||
;;
|
||||
am29k)
|
||||
basic_machine=a29k-none
|
||||
os=-bsd
|
||||
;;
|
||||
amdahl)
|
||||
basic_machine=580-amdahl
|
||||
os=-sysv
|
||||
;;
|
||||
amiga | amiga-*)
|
||||
basic_machine=m68k-cbm
|
||||
;;
|
||||
amigaos | amigados)
|
||||
basic_machine=m68k-cbm
|
||||
os=-amigaos
|
||||
;;
|
||||
amigaunix | amix)
|
||||
basic_machine=m68k-cbm
|
||||
os=-sysv4
|
||||
;;
|
||||
apollo68)
|
||||
basic_machine=m68k-apollo
|
||||
os=-sysv
|
||||
;;
|
||||
aux)
|
||||
basic_machine=m68k-apple
|
||||
os=-aux
|
||||
;;
|
||||
balance)
|
||||
basic_machine=ns32k-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
convex-c1)
|
||||
basic_machine=c1-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c2)
|
||||
basic_machine=c2-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c32)
|
||||
basic_machine=c32-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c34)
|
||||
basic_machine=c34-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c38)
|
||||
basic_machine=c38-convex
|
||||
os=-bsd
|
||||
;;
|
||||
cray | ymp)
|
||||
basic_machine=ymp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
cray2)
|
||||
basic_machine=cray2-cray
|
||||
os=-unicos
|
||||
;;
|
||||
[ctj]90-cray)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
crds | unos)
|
||||
basic_machine=m68k-crds
|
||||
;;
|
||||
da30 | da30-*)
|
||||
basic_machine=m68k-da30
|
||||
;;
|
||||
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
|
||||
basic_machine=mips-dec
|
||||
;;
|
||||
delta | 3300 | motorola-3300 | motorola-delta \
|
||||
| 3300-motorola | delta-motorola)
|
||||
basic_machine=m68k-motorola
|
||||
;;
|
||||
delta88)
|
||||
basic_machine=m88k-motorola
|
||||
os=-sysv3
|
||||
;;
|
||||
dpx20 | dpx20-*)
|
||||
basic_machine=rs6000-bull
|
||||
os=-bosx
|
||||
;;
|
||||
dpx2* | dpx2*-bull)
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv3
|
||||
;;
|
||||
ebmon29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-ebmon
|
||||
;;
|
||||
elxsi)
|
||||
basic_machine=elxsi-elxsi
|
||||
os=-bsd
|
||||
;;
|
||||
encore | umax | mmax)
|
||||
basic_machine=ns32k-encore
|
||||
;;
|
||||
fx2800)
|
||||
basic_machine=i860-alliant
|
||||
;;
|
||||
genix)
|
||||
basic_machine=ns32k-ns
|
||||
;;
|
||||
gmicro)
|
||||
basic_machine=tron-gmicro
|
||||
os=-sysv
|
||||
;;
|
||||
h3050r* | hiux*)
|
||||
basic_machine=hppa1.1-hitachi
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
h8300hms)
|
||||
basic_machine=h8300-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
harris)
|
||||
basic_machine=m88k-harris
|
||||
os=-sysv3
|
||||
;;
|
||||
hp300-*)
|
||||
basic_machine=m68k-hp
|
||||
;;
|
||||
hp300bsd)
|
||||
basic_machine=m68k-hp
|
||||
os=-bsd
|
||||
;;
|
||||
hp300hpux)
|
||||
basic_machine=m68k-hp
|
||||
os=-hpux
|
||||
;;
|
||||
hp9k2[0-9][0-9] | hp9k31[0-9])
|
||||
basic_machine=m68000-hp
|
||||
;;
|
||||
hp9k3[2-9][0-9])
|
||||
basic_machine=m68k-hp
|
||||
;;
|
||||
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
|
||||
basic_machine=hppa1.1-hp
|
||||
;;
|
||||
hp9k8[0-9][0-9] | hp8[0-9][0-9])
|
||||
basic_machine=hppa1.0-hp
|
||||
;;
|
||||
hppa-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
i370-ibm* | ibm*)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
;;
|
||||
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
||||
i[34567]86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
;;
|
||||
i[34567]86v4*)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv4
|
||||
;;
|
||||
i[34567]86v)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv
|
||||
;;
|
||||
i[34567]86sol2)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-solaris2
|
||||
;;
|
||||
iris | iris4d)
|
||||
basic_machine=mips-sgi
|
||||
case $os in
|
||||
-irix*)
|
||||
;;
|
||||
*)
|
||||
os=-irix4
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
isi68 | isi)
|
||||
basic_machine=m68k-isi
|
||||
os=-sysv
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
magnum | m3230)
|
||||
basic_machine=mips-mips
|
||||
os=-sysv
|
||||
;;
|
||||
merlin)
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
miniframe)
|
||||
basic_machine=m68000-convergent
|
||||
;;
|
||||
mipsel*-linux*)
|
||||
basic_machine=mipsel-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
mips*-linux*)
|
||||
basic_machine=mips-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
mips3*-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
|
||||
;;
|
||||
mips3*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||
;;
|
||||
ncr3000)
|
||||
basic_machine=i486-ncr
|
||||
os=-sysv4
|
||||
;;
|
||||
news | news700 | news800 | news900)
|
||||
basic_machine=m68k-sony
|
||||
os=-newsos
|
||||
;;
|
||||
news1000)
|
||||
basic_machine=m68030-sony
|
||||
os=-newsos
|
||||
;;
|
||||
news-3600 | risc-news)
|
||||
basic_machine=mips-sony
|
||||
os=-newsos
|
||||
;;
|
||||
next | m*-next )
|
||||
basic_machine=m68k-next
|
||||
case $os in
|
||||
-nextstep* )
|
||||
;;
|
||||
-ns2*)
|
||||
os=-nextstep2
|
||||
;;
|
||||
*)
|
||||
os=-nextstep3
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
nh3000)
|
||||
basic_machine=m68k-harris
|
||||
os=-cxux
|
||||
;;
|
||||
nh[45]000)
|
||||
basic_machine=m88k-harris
|
||||
os=-cxux
|
||||
;;
|
||||
nindy960)
|
||||
basic_machine=i960-intel
|
||||
os=-nindy
|
||||
;;
|
||||
np1)
|
||||
basic_machine=np1-gould
|
||||
;;
|
||||
pa-hitachi)
|
||||
basic_machine=hppa1.1-hitachi
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
paragon)
|
||||
basic_machine=i860-intel
|
||||
os=-osf
|
||||
;;
|
||||
pbd)
|
||||
basic_machine=sparc-tti
|
||||
;;
|
||||
pbb)
|
||||
basic_machine=m68k-tti
|
||||
;;
|
||||
pc532 | pc532-*)
|
||||
basic_machine=ns32k-pc532
|
||||
;;
|
||||
pentium | p5 | k5 | nexen)
|
||||
basic_machine=i586-pc
|
||||
;;
|
||||
pentiumpro | p6 | k6 | 6x86)
|
||||
basic_machine=i686-pc
|
||||
;;
|
||||
pentiumii | pentium2)
|
||||
basic_machine=i786-pc
|
||||
;;
|
||||
pentium-* | p5-* | k5-* | nexen-*)
|
||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumpro-* | p6-* | k6-* | 6x86-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumii-* | pentium2-*)
|
||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pn)
|
||||
basic_machine=pn-gould
|
||||
;;
|
||||
power) basic_machine=rs6000-ibm
|
||||
;;
|
||||
ppc) basic_machine=powerpc-unknown
|
||||
;;
|
||||
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ps2)
|
||||
basic_machine=i386-ibm
|
||||
;;
|
||||
rm[46]00)
|
||||
basic_machine=mips-siemens
|
||||
;;
|
||||
rtpc | rtpc-*)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
sequent)
|
||||
basic_machine=i386-sequent
|
||||
;;
|
||||
sh)
|
||||
basic_machine=sh-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
sps7)
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv2
|
||||
;;
|
||||
spur)
|
||||
basic_machine=spur-unknown
|
||||
;;
|
||||
sun2)
|
||||
basic_machine=m68000-sun
|
||||
;;
|
||||
sun2os3)
|
||||
basic_machine=m68000-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun2os4)
|
||||
basic_machine=m68000-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun3os3)
|
||||
basic_machine=m68k-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun3os4)
|
||||
basic_machine=m68k-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun4os3)
|
||||
basic_machine=sparc-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun4os4)
|
||||
basic_machine=sparc-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun4sol2)
|
||||
basic_machine=sparc-sun
|
||||
os=-solaris2
|
||||
;;
|
||||
sun3 | sun3-*)
|
||||
basic_machine=m68k-sun
|
||||
;;
|
||||
sun4)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
sun386 | sun386i | roadrunner)
|
||||
basic_machine=i386-sun
|
||||
;;
|
||||
symmetry)
|
||||
basic_machine=i386-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
tx39el)
|
||||
basic_machine=mipstx39el-unknown
|
||||
;;
|
||||
tower | tower-32)
|
||||
basic_machine=m68k-ncr
|
||||
;;
|
||||
udi29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
;;
|
||||
ultra3)
|
||||
basic_machine=a29k-nyu
|
||||
os=-sym1
|
||||
;;
|
||||
vaxv)
|
||||
basic_machine=vax-dec
|
||||
os=-sysv
|
||||
;;
|
||||
vms)
|
||||
basic_machine=vax-dec
|
||||
os=-vms
|
||||
;;
|
||||
vpp*|vx|vx-*)
|
||||
basic_machine=f301-fujitsu
|
||||
;;
|
||||
vxworks960)
|
||||
basic_machine=i960-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
vxworks68)
|
||||
basic_machine=m68k-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
vxworks29k)
|
||||
basic_machine=a29k-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
xmp)
|
||||
basic_machine=xmp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
xps | xps100)
|
||||
basic_machine=xps100-honeywell
|
||||
;;
|
||||
none)
|
||||
basic_machine=none-none
|
||||
os=-none
|
||||
;;
|
||||
|
||||
# Here we handle the default manufacturer of certain CPU types. It is in
|
||||
# some cases the only manufacturer, in others, it is the most popular.
|
||||
mips)
|
||||
if [ x$os = x-linux-gnu ]; then
|
||||
basic_machine=mips-unknown
|
||||
else
|
||||
basic_machine=mips-mips
|
||||
fi
|
||||
;;
|
||||
romp)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
rs6000)
|
||||
basic_machine=rs6000-ibm
|
||||
;;
|
||||
vax)
|
||||
basic_machine=vax-dec
|
||||
;;
|
||||
pdp11)
|
||||
basic_machine=pdp11-dec
|
||||
;;
|
||||
we32k)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
sparc)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
basic_machine=cydra-cydrome
|
||||
;;
|
||||
orion)
|
||||
basic_machine=orion-highlevel
|
||||
;;
|
||||
orion105)
|
||||
basic_machine=clipper-highlevel
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Here we canonicalize certain aliases for manufacturers.
|
||||
case $basic_machine in
|
||||
*-digital*)
|
||||
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
|
||||
;;
|
||||
*-commodore*)
|
||||
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Decode manufacturer-specific aliases for certain operating systems.
|
||||
|
||||
if [ x"$os" != x"" ]
|
||||
then
|
||||
case $os in
|
||||
# First match some system type aliases
|
||||
# that might get confused with valid system types.
|
||||
# -solaris* is a basic system type, with this one exception.
|
||||
-solaris1 | -solaris1.*)
|
||||
os=`echo $os | sed -e 's|solaris1|sunos4|'`
|
||||
;;
|
||||
-solaris)
|
||||
os=-solaris2
|
||||
;;
|
||||
-svr4*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-unixware*)
|
||||
os=-sysv4.2uw
|
||||
;;
|
||||
-gnu/linux*)
|
||||
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
|
||||
;;
|
||||
-os2_emx)
|
||||
;;
|
||||
# First accept the basic system types.
|
||||
# The portable systems comes first.
|
||||
# Each alternative MUST END IN A *, to match a version number.
|
||||
# -sysv* is not here because it comes later, after sysvr4.
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
||||
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -rhapsody* \
|
||||
| -openstep*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-linux*)
|
||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||
;;
|
||||
-sunos5*)
|
||||
os=`echo $os | sed -e 's|sunos5|solaris2|'`
|
||||
;;
|
||||
-sunos6*)
|
||||
os=`echo $os | sed -e 's|sunos6|solaris3|'`
|
||||
;;
|
||||
-osfrose*)
|
||||
os=-osfrose
|
||||
;;
|
||||
-osf*)
|
||||
os=-osf
|
||||
;;
|
||||
-utek*)
|
||||
os=-bsd
|
||||
;;
|
||||
-dynix*)
|
||||
os=-bsd
|
||||
;;
|
||||
-acis*)
|
||||
os=-aos
|
||||
;;
|
||||
-ctix* | -uts*)
|
||||
os=-sysv
|
||||
;;
|
||||
-ns2 )
|
||||
os=-nextstep2
|
||||
;;
|
||||
# Preserve the version number of sinix5.
|
||||
-sinix5.*)
|
||||
os=`echo $os | sed -e 's|sinix|sysv|'`
|
||||
;;
|
||||
-sinix*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-triton*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-oss*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-svr4)
|
||||
os=-sysv4
|
||||
;;
|
||||
-svr3)
|
||||
os=-sysv3
|
||||
;;
|
||||
-sysvr4)
|
||||
os=-sysv4
|
||||
;;
|
||||
# This must come after -sysvr4.
|
||||
-sysv*)
|
||||
;;
|
||||
-xenix)
|
||||
os=-xenix
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
*)
|
||||
# Get rid of the `-' at the beginning of $os.
|
||||
os=`echo $os | sed 's/[^-]*-//'`
|
||||
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
|
||||
# Here we handle the default operating systems that come with various machines.
|
||||
# The value should be what the vendor currently ships out the door with their
|
||||
# machine or put another way, the most popular os provided with the machine.
|
||||
|
||||
# Note that if you're going to try to match "-MANUFACTURER" here (say,
|
||||
# "-sun"), then you have to tell the case statement up towards the top
|
||||
# that MANUFACTURER isn't an operating system. Otherwise, code above
|
||||
# will signal an error saying that MANUFACTURER isn't an operating
|
||||
# system, and we'll never get to this point.
|
||||
|
||||
case $basic_machine in
|
||||
*-acorn)
|
||||
os=-riscix1.2
|
||||
;;
|
||||
arm*-semi)
|
||||
os=-aout
|
||||
;;
|
||||
pdp11-*)
|
||||
os=-none
|
||||
;;
|
||||
*-dec | vax-*)
|
||||
os=-ultrix4.2
|
||||
;;
|
||||
m68*-apollo)
|
||||
os=-domain
|
||||
;;
|
||||
i386-sun)
|
||||
os=-sunos4.0.2
|
||||
;;
|
||||
m68000-sun)
|
||||
os=-sunos3
|
||||
# This also exists in the configure program, but was not the
|
||||
# default.
|
||||
# os=-sunos4
|
||||
;;
|
||||
*-tti) # must be before sparc entry or we get the wrong os.
|
||||
os=-sysv3
|
||||
;;
|
||||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
*-ibm)
|
||||
os=-aix
|
||||
;;
|
||||
*-hp)
|
||||
os=-hpux
|
||||
;;
|
||||
*-hitachi)
|
||||
os=-hiux
|
||||
;;
|
||||
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
|
||||
os=-sysv
|
||||
;;
|
||||
*-cbm)
|
||||
os=-amigaos
|
||||
;;
|
||||
*-dg)
|
||||
os=-dgux
|
||||
;;
|
||||
*-dolphin)
|
||||
os=-sysv3
|
||||
;;
|
||||
m68k-ccur)
|
||||
os=-rtu
|
||||
;;
|
||||
m88k-omron*)
|
||||
os=-luna
|
||||
;;
|
||||
*-next )
|
||||
os=-nextstep
|
||||
;;
|
||||
*-sequent)
|
||||
os=-ptx
|
||||
;;
|
||||
*-crds)
|
||||
os=-unos
|
||||
;;
|
||||
*-ns)
|
||||
os=-genix
|
||||
;;
|
||||
i370-*)
|
||||
os=-mvs
|
||||
;;
|
||||
*-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
*-gould)
|
||||
os=-sysv
|
||||
;;
|
||||
*-highlevel)
|
||||
os=-bsd
|
||||
;;
|
||||
*-encore)
|
||||
os=-bsd
|
||||
;;
|
||||
*-sgi)
|
||||
os=-irix
|
||||
;;
|
||||
*-siemens)
|
||||
os=-sysv4
|
||||
;;
|
||||
*-masscomp)
|
||||
os=-rtu
|
||||
;;
|
||||
f301-fujitsu)
|
||||
os=-uxpv
|
||||
;;
|
||||
*)
|
||||
os=-none
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Here we handle the case where we know the os, and the CPU type, but not the
|
||||
# manufacturer. We pick the logical manufacturer.
|
||||
vendor=unknown
|
||||
case $basic_machine in
|
||||
*-unknown)
|
||||
case $os in
|
||||
-riscix*)
|
||||
vendor=acorn
|
||||
;;
|
||||
-sunos*)
|
||||
vendor=sun
|
||||
;;
|
||||
-aix*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-hpux*)
|
||||
vendor=hp
|
||||
;;
|
||||
-hiux*)
|
||||
vendor=hitachi
|
||||
;;
|
||||
-unos*)
|
||||
vendor=crds
|
||||
;;
|
||||
-dgux*)
|
||||
vendor=dg
|
||||
;;
|
||||
-luna*)
|
||||
vendor=omron
|
||||
;;
|
||||
-genix*)
|
||||
vendor=ns
|
||||
;;
|
||||
-mvs*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-ptx*)
|
||||
vendor=sequent
|
||||
;;
|
||||
-vxsim* | -vxworks*)
|
||||
vendor=wrs
|
||||
;;
|
||||
-aux*)
|
||||
vendor=apple
|
||||
;;
|
||||
esac
|
||||
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
|
||||
;;
|
||||
esac
|
||||
|
||||
echo $basic_machine$os
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,399 @@
|
|||
/* cookies.c
|
||||
* Cookies
|
||||
* (c) 2002 Mikulas Patocka
|
||||
* This file is a part of the Links program, released under GPL
|
||||
*/
|
||||
|
||||
#include "links.h"
|
||||
|
||||
#define ACCEPT_NONE 0
|
||||
#define ACCEPT_ALL 1
|
||||
|
||||
struct list_head all_cookies = { &all_cookies, &all_cookies };
|
||||
|
||||
struct list_head c_domains = { &c_domains, &c_domains };
|
||||
|
||||
void free_cookie(struct cookie *c)
|
||||
{
|
||||
mem_free(c->name);
|
||||
if (c->value) mem_free(c->value);
|
||||
mem_free(c->server);
|
||||
mem_free(c->path);
|
||||
mem_free(c->domain);
|
||||
mem_free(c);
|
||||
}
|
||||
|
||||
static void accept_cookie(struct cookie *);
|
||||
|
||||
/* sezere 1 cookie z retezce str, na zacatku nesmi byt zadne whitechars
|
||||
* na konci muze byt strednik nebo 0
|
||||
* cookie musi byt ve tvaru nazev=hodnota, kolem rovnase nesmi byt zadne mezery
|
||||
* (respektive mezery se budou pocitat do nazvu a do hodnoty)
|
||||
*/
|
||||
void set_cookie(unsigned char *url, unsigned char *str)
|
||||
{
|
||||
int noval = 0;
|
||||
struct cookie *cookie;
|
||||
unsigned char *p, *q, *s, *server, *date, *max_age, *dom;
|
||||
if (!enable_cookies)
|
||||
return;
|
||||
for (p = str; *p != ';' && *p; p++) { /*if (WHITECHAR(*p)) return;*/ }
|
||||
for (q = str; *q != '='; q++) if (!*q || q >= p) {
|
||||
noval = 1;
|
||||
break;
|
||||
}
|
||||
if (str == q || q + 1 == p) return;
|
||||
cookie = mem_alloc(sizeof(struct cookie));
|
||||
server = get_host_name(url);
|
||||
cookie->saved_cookie = 0;
|
||||
cookie->name = memacpy(str, q - str);
|
||||
cookie->value = !noval ? memacpy(q + 1, p - q - 1) : NULL;
|
||||
cookie->server = stracpy(server);
|
||||
cookie->created = get_absolute_seconds();
|
||||
cookie->expires = (time_t)-1;
|
||||
date = parse_header_param(str, cast_uchar "expires", 0);
|
||||
if (date) {
|
||||
cookie->expires = parse_http_date(date);
|
||||
/* if (!cookie->expires) debug("unable to parse '%s'", date); */
|
||||
mem_free(date);
|
||||
}
|
||||
max_age = parse_header_param(str, cast_uchar "max-age", 0);
|
||||
if (max_age) {
|
||||
char *end;
|
||||
long ma = strtol(cast_const_char max_age, &end, 10);
|
||||
if (*max_age && !*end) {
|
||||
if (ma < 0) {
|
||||
cookie->expires = 0;
|
||||
} else {
|
||||
cookie->expires = (time_t)((uttime)cookie->created + (uttime)ma);
|
||||
}
|
||||
}
|
||||
mem_free(max_age);
|
||||
}
|
||||
if (!(cookie->path = parse_header_param(str, cast_uchar "path", 0))) {
|
||||
cookie->path = stracpy(cast_uchar "/");
|
||||
} else {
|
||||
if (cookie->path[0] != '/') {
|
||||
add_to_strn(&cookie->path, cast_uchar "x");
|
||||
memmove(cookie->path + 1, cookie->path, strlen(cast_const_char cookie->path) - 1);
|
||||
cookie->path[0] = '/';
|
||||
}
|
||||
}
|
||||
dom = parse_header_param(str, cast_uchar "domain", 0);
|
||||
if (!dom) {
|
||||
cookie->domain = stracpy(server);
|
||||
} else {
|
||||
cookie->domain = idn_encode_host(dom, (int)strlen(cast_const_char dom), cast_uchar ".", 0);
|
||||
if (!cookie->domain)
|
||||
cookie->domain = stracpy(server);
|
||||
mem_free(dom);
|
||||
}
|
||||
if (cookie->domain[0] == '.') memmove(cookie->domain, cookie->domain + 1, strlen(cast_const_char cookie->domain));
|
||||
if ((s = parse_header_param(str, cast_uchar "secure", 0))) {
|
||||
cookie->secure = 1;
|
||||
mem_free(s);
|
||||
} else cookie->secure = 0;
|
||||
if (!allow_cookie_domain(server, cookie->domain)) {
|
||||
mem_free(cookie->domain);
|
||||
cookie->domain = stracpy(server);
|
||||
}
|
||||
accept_cookie(cookie);
|
||||
mem_free(server);
|
||||
}
|
||||
|
||||
static void accept_cookie(struct cookie *c)
|
||||
{
|
||||
struct c_domain *cd;
|
||||
struct list_head *lcd;
|
||||
struct cookie *d;
|
||||
struct list_head *ld;
|
||||
size_t sl;
|
||||
foreach(struct cookie, d, ld, all_cookies) if (!casestrcmp(d->name, c->name) && !casestrcmp(d->domain, c->domain)) {
|
||||
ld = ld->prev;
|
||||
del_from_list(d);
|
||||
free_cookie(d);
|
||||
}
|
||||
if (c->value && !casestrcmp(c->value, cast_uchar "deleted")) {
|
||||
free_cookie(c);
|
||||
return;
|
||||
}
|
||||
add_to_list(all_cookies, c);
|
||||
foreach(struct c_domain, cd, lcd, c_domains) if (!casestrcmp(cd->domain, c->domain)) return;
|
||||
sl = strlen(cast_const_char c->domain);
|
||||
if (sl > MAXINT - sizeof(struct c_domain)) overalloc();
|
||||
cd = mem_alloc(sizeof(struct c_domain) + sl);
|
||||
strcpy(cast_char cd->domain, cast_const_char c->domain);
|
||||
add_to_list(c_domains, cd);
|
||||
}
|
||||
|
||||
int is_in_domain(unsigned char *d, unsigned char *s)
|
||||
{
|
||||
int dl = (int)strlen(cast_const_char d);
|
||||
int sl = (int)strlen(cast_const_char s);
|
||||
if (dl > sl) return 0;
|
||||
if (dl == sl) return !casestrcmp(d, s);
|
||||
if (s[sl - dl - 1] != '.') return 0;
|
||||
return !casecmp(d, s + sl - dl, dl);
|
||||
}
|
||||
|
||||
int is_path_prefix(unsigned char *d, unsigned char *s)
|
||||
{
|
||||
int dl = (int)strlen(cast_const_char d);
|
||||
int sl = (int)strlen(cast_const_char s);
|
||||
if (!dl) return 1;
|
||||
if (dl > sl) return 0;
|
||||
if (memcmp(d, s, dl)) return 0;
|
||||
return d[dl - 1] == '/' || !s[dl] || s[dl] == '/' || s[dl] == POST_CHAR || s[dl] == '?' || s[dl] == '&';
|
||||
}
|
||||
|
||||
int cookie_expired(struct cookie *c, time_t now)
|
||||
{
|
||||
if (c->expires != (time_t)-1 && c->expires < now)
|
||||
return 1;
|
||||
if (max_cookie_age && now - c->created > max_cookie_age * 86400)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void add_cookies(unsigned char **s, int *l, unsigned char *url)
|
||||
{
|
||||
int nc = 0;
|
||||
struct c_domain *cd;
|
||||
struct list_head *lcd;
|
||||
struct cookie *c;
|
||||
struct list_head *lc;
|
||||
unsigned char *server, *data;
|
||||
time_t now;
|
||||
if (!enable_cookies)
|
||||
return;
|
||||
server = get_host_name(url);
|
||||
data = get_url_data(url);
|
||||
if (data > url) data--;
|
||||
foreach(struct c_domain, cd, lcd, c_domains) if (is_in_domain(cd->domain, server)) goto ok;
|
||||
mem_free(server);
|
||||
return;
|
||||
ok:
|
||||
now = get_absolute_seconds();
|
||||
foreachback(struct cookie, c, lc, all_cookies) if (is_in_domain(c->domain, server)) if (is_path_prefix(c->path, data)) {
|
||||
if (cookie_expired(c, now)) {
|
||||
lc = lc->prev;
|
||||
del_from_list(c);
|
||||
free_cookie(c);
|
||||
continue;
|
||||
}
|
||||
if (c->saved_cookie && !save_cookies) continue;
|
||||
if (c->secure && casecmp(url, cast_uchar "https://", 8)) continue;
|
||||
if (!nc) add_to_str(s, l, cast_uchar "Cookie: "), nc = 1;
|
||||
else add_to_str(s, l, cast_uchar "; ");
|
||||
add_to_str(s, l, c->name);
|
||||
if (c->value) {
|
||||
add_chr_to_str(s, l, '=');
|
||||
add_to_str(s, l, c->value);
|
||||
}
|
||||
}
|
||||
if (nc) add_to_str(s, l, cast_uchar "\r\n");
|
||||
mem_free(server);
|
||||
}
|
||||
|
||||
void clear_cookies_file(void)
|
||||
{
|
||||
unsigned char *cookies_file;
|
||||
|
||||
if (!links_home)
|
||||
return;
|
||||
|
||||
cookies_file = stracpy(links_home);
|
||||
add_to_strn(&cookies_file, cast_uchar "cookies.txt");
|
||||
|
||||
delete_config_file(cookies_file);
|
||||
|
||||
mem_free(cookies_file);
|
||||
}
|
||||
|
||||
void do_save_cookies(void)
|
||||
{
|
||||
unsigned char *cookies_file;
|
||||
unsigned char *s;
|
||||
int sl;
|
||||
time_t now;
|
||||
struct cookie *c;
|
||||
struct list_head *lc;
|
||||
|
||||
if (anonymous || !save_cookies || proxies.only_proxies)
|
||||
return;
|
||||
|
||||
if (!links_home)
|
||||
return;
|
||||
|
||||
s = init_str();
|
||||
sl = 0;
|
||||
|
||||
cookies_file = stracpy(links_home);
|
||||
add_to_strn(&cookies_file, cast_uchar "cookies.txt");
|
||||
|
||||
now = get_absolute_seconds();
|
||||
foreachback(struct cookie, c, lc, all_cookies) {
|
||||
if (cookie_expired(c, now) || c->expires == (time_t)-1)
|
||||
continue;
|
||||
add_quoted_to_str(&s, &sl, c->domain);
|
||||
add_chr_to_str(&s, &sl, ' ');
|
||||
add_quoted_to_str(&s, &sl, c->server);
|
||||
add_chr_to_str(&s, &sl, ' ');
|
||||
add_quoted_to_str(&s, &sl, c->path);
|
||||
add_chr_to_str(&s, &sl, ' ');
|
||||
add_quoted_to_str(&s, &sl, c->name);
|
||||
add_chr_to_str(&s, &sl, ' ');
|
||||
add_quoted_to_str(&s, &sl, c->value ? c->value : cast_uchar "");
|
||||
add_chr_to_str(&s, &sl, ' ');
|
||||
add_chr_to_str(&s, &sl, '0' + c->secure);
|
||||
add_chr_to_str(&s, &sl, ' ');
|
||||
add_chr_to_str(&s, &sl, '"');
|
||||
add_to_str(&s, &sl, print_http_date(c->created));
|
||||
add_chr_to_str(&s, &sl, '"');
|
||||
add_chr_to_str(&s, &sl, ' ');
|
||||
add_chr_to_str(&s, &sl, '"');
|
||||
add_to_str(&s, &sl, print_http_date(c->expires));
|
||||
add_chr_to_str(&s, &sl, '"');
|
||||
add_to_str(&s, &sl, cast_uchar NEWLINE);
|
||||
}
|
||||
|
||||
write_to_config_file(cookies_file, s, 0);
|
||||
|
||||
mem_free(cookies_file);
|
||||
mem_free(s);
|
||||
}
|
||||
|
||||
unsigned long free_cookies(void)
|
||||
{
|
||||
unsigned long cnt = 0;
|
||||
time_t now = get_absolute_seconds();
|
||||
free_list(struct c_domain, c_domains);
|
||||
while (!list_empty(all_cookies)) {
|
||||
struct cookie *c = list_struct(all_cookies.next, struct cookie);
|
||||
if (!cookie_expired(c, now))
|
||||
cnt++;
|
||||
del_from_list(c);
|
||||
free_cookie(c);
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
static time_t parse_cookie_time(unsigned char *t)
|
||||
{
|
||||
time_t tm;
|
||||
if (t[strspn(cast_const_char t, "0123456789")] != 0) {
|
||||
tm = parse_http_date(t);
|
||||
} else {
|
||||
char *end;
|
||||
tm = (time_t)strtod(cast_const_char t, &end);
|
||||
if (*end)
|
||||
tm = (time_t)-1;
|
||||
}
|
||||
if (tm == (time_t)-1) {
|
||||
fprintf(stderr, "Invalid cookie time '%s'\n", t);
|
||||
return (time_t)-1;
|
||||
}
|
||||
return tm;
|
||||
}
|
||||
|
||||
void init_cookies(void)
|
||||
{
|
||||
int err = 0;
|
||||
unsigned char *cookies_file;
|
||||
unsigned char *s, *p;
|
||||
|
||||
if (anonymous || proxies.only_proxies)
|
||||
return;
|
||||
|
||||
if (!links_home)
|
||||
return;
|
||||
|
||||
cookies_file = stracpy(links_home);
|
||||
add_to_strn(&cookies_file, cast_uchar "cookies.txt");
|
||||
|
||||
s = read_config_file(cookies_file);
|
||||
|
||||
p = s;
|
||||
if (s) while (*p) {
|
||||
unsigned char *l, *line;
|
||||
unsigned char *domain, *server, *path, *name, *value, *secure, *created, *expires;
|
||||
|
||||
if (*p == '\r' || *p == '\n') {
|
||||
p++;
|
||||
continue;
|
||||
}
|
||||
|
||||
l = p;
|
||||
while (*l && *l != '\r' && *l != '\n')
|
||||
l++;
|
||||
line = memacpy(p, l - p);
|
||||
p = l;
|
||||
l = line;
|
||||
|
||||
domain = get_token(&l);
|
||||
server = get_token(&l);
|
||||
path = get_token(&l);
|
||||
name = get_token(&l);
|
||||
value = get_token(&l);
|
||||
secure = get_token(&l);
|
||||
created = get_token(&l);
|
||||
expires = get_token(&l);
|
||||
mem_free(line);
|
||||
|
||||
/*debug("%s %s %s %s %s %s %s %s", name, value, server, path, domain, secure, created expires);*/
|
||||
|
||||
if (expires) {
|
||||
struct cookie *c;
|
||||
time_t created_time, expire_time;
|
||||
|
||||
created_time = parse_cookie_time(created);
|
||||
expire_time = parse_cookie_time(expires);
|
||||
|
||||
if (created_time == (time_t)-1 || expire_time == (time_t)-1)
|
||||
goto er;
|
||||
|
||||
c = mem_alloc(sizeof(struct cookie));
|
||||
c->saved_cookie = 1;
|
||||
c->name = name, name = NULL;
|
||||
if (*value)
|
||||
c->value = value, value = NULL;
|
||||
else
|
||||
c->value = NULL;
|
||||
c->server = server, server = NULL;
|
||||
c->path = path, path = NULL;
|
||||
c->domain = domain, domain = NULL;
|
||||
c->secure = *secure >= '1';
|
||||
c->created = created_time;
|
||||
c->expires = expire_time;
|
||||
accept_cookie(c);
|
||||
}
|
||||
|
||||
er:
|
||||
if (domain) mem_free(domain);
|
||||
if (server) mem_free(server);
|
||||
if (path) mem_free(path);
|
||||
if (name) mem_free(name);
|
||||
if (value) mem_free(value);
|
||||
if (secure) mem_free(secure);
|
||||
if (expires) mem_free(expires);
|
||||
if (created) mem_free(created);
|
||||
}
|
||||
|
||||
mem_free(cookies_file);
|
||||
if (s)
|
||||
mem_free(s);
|
||||
|
||||
if (err) fprintf(stderr, "\007"), portable_sleep(1000);
|
||||
|
||||
/*{
|
||||
time_t nt, t;
|
||||
nt = get_absolute_seconds();
|
||||
unsigned char *now;
|
||||
now = print_http_date(nt);
|
||||
debug("now: %s", now);
|
||||
t = parse_http_date(now);
|
||||
debug("%ld - %ld", t, nt);
|
||||
now = print_http_date(t);
|
||||
debug("now: %s", now);
|
||||
}*/
|
||||
}
|
|
@ -0,0 +1,120 @@
|
|||
#include "links.h"
|
||||
|
||||
static void base64_decode(unsigned char **d, int *dl, unsigned char *s, int sl)
|
||||
{
|
||||
int bits = 0;
|
||||
unsigned tmp = 0;
|
||||
for (; sl > 0; s++, sl--) {
|
||||
unsigned char val;
|
||||
unsigned char c = *s;
|
||||
if (c >= 'A' && c <= 'Z') val = c - 'A';
|
||||
else if (c >= 'a' && c <= 'z') val = c - 'a' + 26;
|
||||
else if (c >= '0' && c <= '9') val = c - '0' + 52;
|
||||
else if (c == '+') val = 62;
|
||||
else if (c == '/') val = 63;
|
||||
else continue;
|
||||
tmp <<= 6;
|
||||
tmp |= val;
|
||||
bits += 6;
|
||||
if (bits >= 8) {
|
||||
bits -= 8;
|
||||
add_chr_to_str(d, dl, tmp >> bits);
|
||||
tmp &= (1 << bits) - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void data_func(struct connection *c)
|
||||
{
|
||||
unsigned char *data, *flags, *mime, *str;
|
||||
size_t length;
|
||||
int strl;
|
||||
struct cache_entry *e;
|
||||
int r;
|
||||
|
||||
int base64 = 0;
|
||||
int was_charset = 0;
|
||||
|
||||
flags = cast_uchar strchr(cast_const_char c->url, ':');
|
||||
if (!flags) {
|
||||
bad_url:
|
||||
setcstate(c, S_BAD_URL);
|
||||
abort_connection(c);
|
||||
return;
|
||||
}
|
||||
flags++;
|
||||
while (*flags == '/') flags++;
|
||||
|
||||
length = strcspn(cast_const_char flags, ";,");
|
||||
mime = memacpy(flags, length);
|
||||
|
||||
while (*(flags += length) == ';') {
|
||||
unsigned char *arg;
|
||||
flags++;
|
||||
length = strcspn(cast_const_char flags, ";,");
|
||||
arg = memacpy(flags, length);
|
||||
if (!casestrcmp(arg, cast_uchar "base64")) {
|
||||
base64 = 1;
|
||||
} else if (!casecmp(arg, cast_uchar "charset=", 8)) {
|
||||
if (!was_charset) {
|
||||
add_to_strn(&mime, cast_uchar ";");
|
||||
add_to_strn(&mime, arg);
|
||||
was_charset = 1;
|
||||
}
|
||||
}
|
||||
mem_free(arg);
|
||||
}
|
||||
|
||||
if (*flags != ',') {
|
||||
mem_free(mime);
|
||||
goto bad_url;
|
||||
}
|
||||
data = flags + 1;
|
||||
|
||||
if (!c->cache) {
|
||||
if (get_connection_cache_entry(c)) {
|
||||
mem_free(mime);
|
||||
setcstate(c, S_OUT_OF_MEM);
|
||||
abort_connection(c);
|
||||
return;
|
||||
}
|
||||
c->cache->refcount--;
|
||||
}
|
||||
e = c->cache;
|
||||
if (e->head) mem_free(e->head);
|
||||
e->head = stracpy(cast_uchar "");
|
||||
if (*mime) {
|
||||
add_to_strn(&e->head, cast_uchar "\r\nContent-type: ");
|
||||
add_to_strn(&e->head, mime);
|
||||
add_to_strn(&e->head, cast_uchar "\r\n");
|
||||
}
|
||||
mem_free(mime);
|
||||
|
||||
str = init_str();
|
||||
strl = 0;
|
||||
|
||||
add_conv_str(&str, &strl, data, (int)strlen(cast_const_char data), -2);
|
||||
|
||||
if (!base64) {
|
||||
r = add_fragment(e, 0, str, strl);
|
||||
} else {
|
||||
unsigned char *b64 = init_str();
|
||||
int b64l = 0;
|
||||
|
||||
base64_decode(&b64, &b64l, str, strl);
|
||||
|
||||
r = add_fragment(e, 0, b64, b64l);
|
||||
mem_free(b64);
|
||||
}
|
||||
mem_free(str);
|
||||
if (r < 0) {
|
||||
setcstate(c, r);
|
||||
abort_connection(c);
|
||||
return;
|
||||
}
|
||||
truncate_entry(e, strl, 1);
|
||||
c->cache->incomplete = 0;
|
||||
|
||||
setcstate(c, S__OK);
|
||||
abort_connection(c);
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
.IFDEF MMSVAX
|
||||
.IFDEF EXTERNAL_SSL
|
||||
.ELSE
|
||||
NO_SSL=1
|
||||
.ENDIF
|
||||
CFLAGS_ARCH=/PRECISION=SINGLE/ASSUME=(NOWRITABLE_STRING_LITERALS)/LIST/MACHINE_CODE=BEFORE
|
||||
.ELSE
|
||||
CFLAGS_ARCH=/FLOAT=IEEE/IEEE_MODE=UNDERFLOW_TO_ZERO/PRECISION=SINGLE/ASSUME=(NOACCURACY_SENSITIVE,NOMATH_ERRNO,WEAK_VOLATILE,NOWRITABLE_STRING_LITERALS)/WARNINGS=(DISABLE=NOMAINUFLO)/LIST/MACHINE_CODE
|
||||
.ENDIF
|
||||
|
||||
.IFDEF DEBUG
|
||||
CFLAGS_OPTIMIZE=/DEBUG/NOOPTIMIZE
|
||||
DEFS_OPTIMIZE=,VMS_DEBUGLEVEL=2
|
||||
.ELSE
|
||||
.IFDEF MMSVAX
|
||||
CFLAGS_OPTIMIZE=/OPTIMIZE
|
||||
.ELSE
|
||||
CFLAGS_OPTIMIZE=/OPTIMIZE=(LEVEL=5,TUNE=GENERIC)
|
||||
.ENDIF
|
||||
DEFS_OPTIMIZE=
|
||||
.ENDIF
|
||||
|
||||
.IFDEF 64BIT
|
||||
CFLAGS_64=/POINTER_SIZE=64
|
||||
.ELSE
|
||||
CFLAGS_64=
|
||||
.ENDIF
|
||||
|
||||
.IFDEF NO_SSL
|
||||
DEFS_SSL=
|
||||
INCLUDE_SSL=
|
||||
LIBS_SSL=
|
||||
.ELSE
|
||||
DEFS_SSL=,HAVE_SSL,HAVE_OPENSSL
|
||||
INCLUDE_SSL=
|
||||
.IFDEF 64BIT
|
||||
.IFDEF EXTERNAL_SSL
|
||||
.IFDEF MMSALPHA
|
||||
LIBS_SSL=,VMS-SSL-EXTERNAL-ALPHA-64/OPT
|
||||
.ELSE
|
||||
LIBS_SSL=,VMS-SSL-EXTERNAL-I64-64/OPT
|
||||
.ENDIF
|
||||
.ELSE
|
||||
LIBS_SSL=,VMS-SSL-64/OPT
|
||||
.ENDIF
|
||||
.ELSE
|
||||
.IFDEF EXTERNAL_SSL
|
||||
.IFDEF MMSVAX
|
||||
LIBS_SSL=,VMS-SSL-EXTERNAL-VAX-32/OPT
|
||||
.ELSE
|
||||
.IFDEF MMSALPHA
|
||||
LIBS_SSL=,VMS-SSL-EXTERNAL-ALPHA-32/OPT
|
||||
.ELSE
|
||||
LIBS_SSL=,VMS-SSL-EXTERNAL-I64-32/OPT
|
||||
.ENDIF
|
||||
.ENDIF
|
||||
.ELSE
|
||||
LIBS_SSL=,VMS-SSL-32/OPT
|
||||
.ENDIF
|
||||
.ENDIF
|
||||
.ENDIF
|
||||
|
||||
.IFDEF EXTERNAL_GFX
|
||||
DEFS_GFX=,HAVE_ZLIB,G,HAVE_PNG_H,HAVE_PNG_SET_RGB_TO_GRAY,HAVE_PNG_GET_LIBPNG_VER,HAVE_JPEG,GRDRV_X,HAVE_X11_XLOCALE_H,HAVE_XSETLOCALE,X_INPUT_METHOD
|
||||
.IFDEF 64BIT
|
||||
LIBS_GFX=,VMS-GFX-64/OPT
|
||||
.ELSE
|
||||
LIBS_GFX=,VMS-GFX-32/OPT
|
||||
.ENDIF
|
||||
.ELSE
|
||||
DEFS_GFX=
|
||||
LIBS_GFX=
|
||||
.ENDIF
|
||||
|
||||
CFLAGS=/DEFINE=(HAVE_CONFIG_VMS_H$(DEFS_OPTIMIZE)$(DEFS_SSL)$(DEFS_GFX)) /INCLUDE_DIRECTORY=(GNU:[INCLUDE]$(INCLUDE_SSL)) $(CFLAGS_ARCH) $(CFLAGS_OPTIMIZE) $(CFLAGS_64) $(CFLAGS_EXTRA)
|
||||
|
||||
LINKFLAGS=$(LIBS_SSL)$(LIBS_GFX)/MAP/FULL/THREADS_ENABLE
|
||||
|
||||
OBJS=AF_UNIX.OBJ,AUTH.OBJ,BEOS.OBJ,BFU.OBJ,BLOCK.OBJ,BOOKMARK.OBJ,CACHE.OBJ,CHARSETS.OBJ,COMPRESS.OBJ,CONNECT.OBJ,COOKIES.OBJ,DATA.OBJ,DEFAULT.OBJ,DIP.OBJ,DIRECTFB.OBJ,DITHER.OBJ,DNS.OBJ,DOS.OBJ,DRIVERS.OBJ,ERROR.OBJ,FILE.OBJ,FINGER.OBJ,FN_IMPL.OBJ,FONT_INC.OBJ,FRAMEBUF.OBJ,FTP.OBJ,GIF.OBJ,HPUX.OBJ,HTML.OBJ,HTML_GR.OBJ,HTML_R.OBJ,HTML_TBL.OBJ,HTTP.OBJ,HTTPS.OBJ,IMG.OBJ,IMGCACHE.OBJ,JPEG.OBJ,JSINT.OBJ,KBD.OBJ,LANGUAGE.OBJ,LISTEDIT.OBJ,LRU.OBJ,MAILTO.OBJ,MAIN.OBJ,MEMORY.OBJ,MENU.OBJ,OBJREQ.OBJ,OS_DEP.OBJ,PMSHELL.OBJ,PNG.OBJ,SCHED.OBJ,SELECT.OBJ,SESSION.OBJ,SMB.OBJ,STRING.OBJ,SUFFIX.OBJ,SVG.OBJ,SVGALIB.OBJ,TERMINAL.OBJ,TIFF.OBJ,TYPES.OBJ,URL.OBJ,VIEW.OBJ,VIEW_GR.OBJ,VMS.OBJ,X.OBJ,XBM.OBJ
|
||||
|
||||
LINKS.EXE : $(OBJS)
|
||||
$(LINK) /EXECUTABLE=LINKS.EXE $(OBJS)$(LINKFLAGS)
|
||||
|
||||
CLEAN :
|
||||
- DELETE /NOCONFIRM /NOLOG *.OBJ;*
|
||||
- DELETE /NOCONFIRM /NOLOG *.EXE;*
|
||||
- DELETE /NOCONFIRM /NOLOG *.LIS;*
|
||||
- DELETE /NOCONFIRM /NOLOG *.MAP;*
|
|
@ -0,0 +1,98 @@
|
|||
/* DirectFB surface dump created by directfb-csource 0.9.14 */
|
||||
|
||||
/* This arrow cursor surface is based on a cursor drawn by Ville Pätsi. */
|
||||
static_const unsigned char arrow_data[] =
|
||||
"\0\0\0\0\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0/\253\253\253\320\0\0\0N\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0H\306\306\306\363\200\200\200\320\0\0\0Y\0"
|
||||
"\0\0\21\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\377\377\377\377\301"
|
||||
"\301\301\372\223\223\223\347\0\0\0k\0\0\0\30\0\0\0\6\0\0\0\2\0\0\0\1"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0]\377\377\377\377\377\377\377\377\264\264\264\373\213\213\213"
|
||||
"\352\0\0\0u\0\0\0\36\0\0\0\10\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\377\377\377\377\375\375"
|
||||
"\375\377\356\356\356\377\254\254\254\374\206\206\206\354\0\0\0y\0\0\0"
|
||||
"!\0\0\0\10\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0`\377\377\377\377\372\372\372\377\355\355\355\377"
|
||||
"\343\343\343\377\247\247\247\374\203\203\203\354\0\0\0z\0\0\0\"\0\0\0"
|
||||
"\11\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0`\377\377\377\377\365\365\365\377\351\351\351\377\341\341\341\377"
|
||||
"\335\335\335\377\243\243\243\374\177\177\177\355\0\0\0{\0\0\0\"\0\0\0"
|
||||
"\11\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\371"
|
||||
"\371\371\377\360\360\360\377\346\346\346\377\337\337\337\377\333\333"
|
||||
"\333\377\327\327\327\377\236\236\236\374{{{\355\0\0\0{\0\0\0\"\0\0\0"
|
||||
"\11\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\365\365\365"
|
||||
"\377\355\355\355\377\342\342\342\377\333\333\333\377\330\330\330\377"
|
||||
"\325\325\325\377\317\317\317\377\227\227\227\374vvv\355\0\0\0{\0\0\0"
|
||||
"\"\0\0\0\11\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\361\361\361"
|
||||
"\377\350\350\350\377\335\335\335\377\326\326\326\377\324\324\324\377"
|
||||
"\317\317\317\377\307\307\307\377\277\277\277\377\216\216\216\374qqq\352"
|
||||
"\0\0\0r\0\0\0\33\0\0\0\11\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0`\353"
|
||||
"\353\353\377\340\340\340\377\324\324\324\377\317\317\317\377\315\315"
|
||||
"\315\377\307\307\307\377\274\274\274\377\257\257\257\377\212\212\212"
|
||||
"\375ggg\357\\\\\\\313\0\0\0F\0\0\0\24\0\0\0\11\0\0\0\3\0\0\0\1\0\0\0"
|
||||
"\0\0\0\0`\340\340\340\377\321\321\321\377\305\305\305\377\304\304\304"
|
||||
"\377\307\307\307\377\302\302\302\377\242\242\242\376HHH\361\0\0\0\267"
|
||||
"\0\0\0\224\0\0\0t\0\0\0?\0\0\0\"\0\0\0\22\0\0\0\7\0\0\0\2\0\0\0\0\0\0"
|
||||
"\0]\321\321\321\377\277\277\277\377\207\207\207\374jjj\367\302\302\302"
|
||||
"\377\301\301\301\377\263\263\263\377!!!\334\0\0\0\215\0\0\0d\0\0\0Q\0"
|
||||
"\0\0>\0\0\0-\0\0\0\33\0\0\0\14\0\0\0\4\0\0\0\1\0\0\0E\230\230\230\363"
|
||||
"kkk\353\0\0\0\243\0\0\0\254\200\200\200\370\304\304\304\377\271\271\271"
|
||||
"\377ttt\371\0\0\0\233\0\0\0Y\0\0\0F\0\0\0<\0\0\0.\0\0\0\36\0\0\0\16\0"
|
||||
"\0\0\4\0\0\0\1\0\0\0\7\0\0\0M\0\0\0]\0\0\0O\0\0\0f'''\305\304\304\304"
|
||||
"\377\274\274\274\377\253\253\253\377\22\22\22\277\0\0\0e\0\0\0A\0\0\0"
|
||||
"3\0\0\0%\0\0\0\27\0\0\0\13\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\3\0\0\0\24\0"
|
||||
"\0\0)\0\0\0<\0\0\0\207\223\223\223\373\267\267\267\377\252\252\252\377"
|
||||
"YYY\360\0\0\0\203\0\0\0@\0\0\0+\0\0\0\32\0\0\0\15\0\0\0\6\0\0\0\2\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\2\0\0\0\11\0\0\0\27\0\0\0'\0\0\0N===\312\257\257\257"
|
||||
"\377\242\242\242\377lll\370\0\0\0\221\0\0\0E\0\0\0)\0\0\0\26\0\0\0\11"
|
||||
"\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\15\0\0\0\26\0"
|
||||
"\0\0\33\0\0\0\\CCC\322ppp\366MMM\345\0\0\0\204\0\0\0I\0\0\0-\0\0\0\31"
|
||||
"\0\0\0\12\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0"
|
||||
"\0\11\0\0\0\13\0\0\0\20\0\0\0E\0\0\0s\0\0\0w\0\0\0Z\0\0\0E\0\0\0""2\0"
|
||||
"\0\0\35\0\0\0\14\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\1\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\12\0\0\0\36\0\0\0""4\0\0\0>\0\0\0"
|
||||
"<\0\0\0""1\0\0\0\36\0\0\0\15\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\15\0\0\0\33\0"
|
||||
"\0\0)\0\0\0.\0\0\0(\0\0\0\31\0\0\0\13\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0"
|
||||
"\0\15\0\0\0\26\0\0\0\33\0\0\0\30\0\0\0\17\0\0\0\7\0\0\0\2\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\1\0\0\0\4\0\0\0\10\0\0\0\13\0\0\0\12\0\0\0\6\0\0\0\3\0\0\0\1\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\1\0\0\0\1\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0";
|
||||
|
||||
static DFBSurfaceDescription *directfb_get_arrow_desc(void)
|
||||
{
|
||||
static DFBSurfaceDescription arrow_desc;
|
||||
|
||||
arrow_desc.flags = (DFBSurfaceDescriptionFlags)(
|
||||
DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT |
|
||||
DSDESC_PREALLOCATED),
|
||||
arrow_desc.width = 18,
|
||||
arrow_desc.height = 25,
|
||||
arrow_desc.pixelformat = DSPF_ARGB,
|
||||
arrow_desc.preallocated[0].data = (void *) arrow_data,
|
||||
arrow_desc.preallocated[0].pitch = 72;
|
||||
|
||||
return &arrow_desc;
|
||||
}
|
||||
|
||||
#if 0 /* this is GNU extension, not C */
|
||||
static DFBSurfaceDescription arrow_desc = {
|
||||
flags : DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT |
|
||||
DSDESC_PREALLOCATED,
|
||||
width : 18,
|
||||
height : 25,
|
||||
pixelformat : DSPF_ARGB,
|
||||
preallocated : {{ data : (void *) arrow_data,
|
||||
pitch : 72 }}
|
||||
};
|
||||
#endif
|
||||
|
||||
#define arrow_hot_x 1
|
||||
#define arrow_hot_y 1
|
|
@ -0,0 +1,811 @@
|
|||
/* directfb.c
|
||||
* DirectFB graphics driver
|
||||
* (c) 2002 Sven Neumann <sven@directfb.org>
|
||||
*
|
||||
* This file is a part of the Links program, released under GPL.
|
||||
*/
|
||||
|
||||
/* TODO:
|
||||
* - Store window size as driver params (?)
|
||||
* - Fix wrong colors on big-endian systems (fixed?)
|
||||
* - Make everything work correctly ;-)
|
||||
*
|
||||
* KNOWN PROBLEMS:
|
||||
* - If mouse drags don't work for you, update DirectFB
|
||||
* (the upcoming 0.9.14 release fixes this).
|
||||
*/
|
||||
|
||||
|
||||
#include "cfg.h"
|
||||
|
||||
#ifdef GRDRV_DIRECTFB
|
||||
|
||||
#include "links.h"
|
||||
|
||||
#undef debug
|
||||
#include <directfb.h>
|
||||
|
||||
#include "dfb_cur.h"
|
||||
|
||||
|
||||
#define FOCUSED_OPACITY 0xFF
|
||||
#define UNFOCUSED_OPACITY 0xC0
|
||||
|
||||
#define DIRECTFB_HASH_TABLE_SIZE 23
|
||||
static struct graphics_device **directfb_hash_table[DIRECTFB_HASH_TABLE_SIZE];
|
||||
|
||||
typedef struct _DFBDeviceData DFBDeviceData;
|
||||
struct _DFBDeviceData
|
||||
{
|
||||
DFBWindowID id;
|
||||
IDirectFBWindow *window;
|
||||
IDirectFBSurface *surface;
|
||||
DFBRegion flip_region;
|
||||
int flip_pending;
|
||||
};
|
||||
|
||||
|
||||
extern struct graphics_driver directfb_driver;
|
||||
|
||||
static IDirectFB *dfb = NULL;
|
||||
static IDirectFBDisplayLayer *layer = NULL;
|
||||
static IDirectFBSurface *arrow = NULL;
|
||||
static IDirectFBEventBuffer *events = NULL;
|
||||
static DFBSurfacePixelFormat pixelformat = DSPF_UNKNOWN;
|
||||
static struct timer *event_timer = NULL;
|
||||
|
||||
|
||||
static void directfb_register_flip (DFBDeviceData *data,
|
||||
int x, int y, int w, int h);
|
||||
static void directfb_flip_surface (void *pointer);
|
||||
static void directfb_check_events (void *pointer);
|
||||
static void directfb_translate_key (DFBWindowEvent *event,
|
||||
int *key, int *flag);
|
||||
static void directfb_add_to_table (struct graphics_device *dev);
|
||||
static void directfb_remove_from_table (struct graphics_device *dev);
|
||||
static struct graphics_device * directfb_lookup_in_table (DFBWindowID id);
|
||||
|
||||
|
||||
static unsigned char *
|
||||
directfb_init_driver (unsigned char *param, unsigned char *display)
|
||||
{
|
||||
DFBDisplayLayerConfig config;
|
||||
DFBResult ret;
|
||||
unsigned char *error;
|
||||
unsigned char *result;
|
||||
|
||||
DirectFBInit (&g_argc, (char ***)(void *)&g_argv);
|
||||
if ((ret = DirectFBCreate (&dfb)) != DFB_OK) {
|
||||
error = (unsigned char *)DirectFBErrorString(ret);
|
||||
goto ret;
|
||||
}
|
||||
|
||||
if ((ret = dfb->GetDisplayLayer (dfb, DLID_PRIMARY, &layer)) != DFB_OK) {
|
||||
error = (unsigned char *)DirectFBErrorString(ret);
|
||||
goto ret_dfb;
|
||||
}
|
||||
|
||||
if ((ret = layer->GetConfiguration (layer, &config)) != DFB_OK) {
|
||||
error = (unsigned char *)DirectFBErrorString(ret);
|
||||
goto ret_layer;
|
||||
}
|
||||
|
||||
pixelformat = config.pixelformat;
|
||||
|
||||
directfb_driver.depth = (((DFB_BYTES_PER_PIXEL (pixelformat) & 0x7)) |
|
||||
((DFB_COLOR_BITS_PER_PIXEL (pixelformat) & 0x1F) << 3));
|
||||
|
||||
if (directfb_driver.depth == 4)
|
||||
directfb_driver.depth = 196;
|
||||
|
||||
/* endian test */
|
||||
if (big_endian) {
|
||||
if ((directfb_driver.depth & 0x7) == 2)
|
||||
directfb_driver.depth |= 0x100;
|
||||
if ((directfb_driver.depth & 0x7) == 4)
|
||||
directfb_driver.depth |= 0x200;
|
||||
}
|
||||
|
||||
if (!get_color_fn(directfb_driver.depth)) {
|
||||
error = cast_uchar "Unsupported color depth";
|
||||
goto ret_layer;
|
||||
}
|
||||
|
||||
directfb_driver.x = config.width;
|
||||
directfb_driver.y = config.height;
|
||||
|
||||
memset (directfb_hash_table, 0, sizeof (directfb_hash_table));
|
||||
|
||||
if ((ret = dfb->CreateEventBuffer (dfb, &events)) != DFB_OK) {
|
||||
error = (unsigned char *)DirectFBErrorString(ret);
|
||||
goto ret_layer;
|
||||
}
|
||||
|
||||
event_timer = install_timer (20, directfb_check_events, events);
|
||||
|
||||
if (dfb->CreateSurface (dfb, directfb_get_arrow_desc(), &arrow) != DFB_OK)
|
||||
arrow = NULL;
|
||||
|
||||
return NULL;
|
||||
|
||||
ret_layer:
|
||||
layer->Release(layer);
|
||||
ret_dfb:
|
||||
dfb->Release(dfb);
|
||||
ret:
|
||||
result = init_str();
|
||||
add_to_strn(&result, error);
|
||||
add_to_strn(&result, cast_uchar "\n");
|
||||
return result;
|
||||
}
|
||||
|
||||
static struct graphics_device *
|
||||
directfb_init_device (void)
|
||||
{
|
||||
struct graphics_device *dev;
|
||||
DFBDeviceData *data;
|
||||
IDirectFBWindow *window;
|
||||
DFBWindowDescription desc;
|
||||
|
||||
desc.flags = (DFBWindowDescriptionFlags)(DWDESC_WIDTH | DWDESC_HEIGHT | DWDESC_POSX | DWDESC_POSY);
|
||||
desc.width = directfb_driver.x;
|
||||
desc.height = directfb_driver.y;
|
||||
desc.posx = 0;
|
||||
desc.posy = 0;
|
||||
|
||||
retry:
|
||||
if (layer->CreateWindow (layer, &desc, &window) != DFB_OK) {
|
||||
if (out_of_memory(MF_GPI, NULL, 0))
|
||||
goto retry;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dev = mem_alloc (sizeof (struct graphics_device));
|
||||
|
||||
dev->size.x1 = 0;
|
||||
dev->size.y1 = 0;
|
||||
window->GetSize (window, &dev->size.x2, &dev->size.y2);
|
||||
|
||||
dev->clip = dev->size;
|
||||
|
||||
data = mem_alloc (sizeof (DFBDeviceData));
|
||||
|
||||
data->window = window;
|
||||
data->flip_pending = 0;
|
||||
|
||||
if (arrow)
|
||||
window->SetCursorShape (window, arrow, arrow_hot_x, arrow_hot_y);
|
||||
|
||||
window->GetSurface (window, &data->surface);
|
||||
window->GetID (window, &data->id);
|
||||
|
||||
dev->driver_data = data;
|
||||
dev->user_data = NULL;
|
||||
|
||||
directfb_add_to_table (dev);
|
||||
|
||||
window->AttachEventBuffer (window, events);
|
||||
|
||||
window->SetOpacity (window, FOCUSED_OPACITY);
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_shutdown_device (struct graphics_device *dev)
|
||||
{
|
||||
DFBDeviceData *data;
|
||||
|
||||
if (!dev)
|
||||
return;
|
||||
|
||||
data = dev->driver_data;
|
||||
|
||||
unregister_bottom_half (directfb_flip_surface, data);
|
||||
directfb_remove_from_table (dev);
|
||||
|
||||
data->surface->Release (data->surface);
|
||||
data->window->Destroy (data->window);
|
||||
data->window->Release (data->window);
|
||||
|
||||
mem_free (data);
|
||||
mem_free (dev);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_shutdown_driver (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
kill_timer (event_timer);
|
||||
events->Release (events);
|
||||
events = NULL;
|
||||
|
||||
if (arrow)
|
||||
arrow->Release (arrow);
|
||||
|
||||
layer->Release (layer);
|
||||
dfb->Release (dfb);
|
||||
|
||||
for (i = 0; i < DIRECTFB_HASH_TABLE_SIZE; i++)
|
||||
if (directfb_hash_table[i])
|
||||
mem_free (directfb_hash_table[i]);
|
||||
|
||||
dfb = NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
directfb_get_empty_bitmap (struct bitmap *bmp)
|
||||
{
|
||||
IDirectFBSurface *surface;
|
||||
DFBSurfaceDescription desc;
|
||||
int skip;
|
||||
|
||||
bmp->data = bmp->flags = NULL;
|
||||
|
||||
desc.flags = (DFBSurfaceDescriptionFlags)(DSDESC_WIDTH | DSDESC_HEIGHT);
|
||||
desc.width = bmp->x;
|
||||
desc.height = bmp->y;
|
||||
|
||||
retry:
|
||||
if (dfb->CreateSurface (dfb, &desc, &surface) != DFB_OK) {
|
||||
if (out_of_memory(MF_GPI, NULL, 0))
|
||||
goto retry;
|
||||
return -1;
|
||||
}
|
||||
|
||||
surface->Lock (surface, (DFBSurfaceLockFlags)(DSLF_READ | DSLF_WRITE), &bmp->data, &skip);
|
||||
|
||||
bmp->skip = skip;
|
||||
bmp->flags = surface;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_register_bitmap (struct bitmap *bmp)
|
||||
{
|
||||
IDirectFBSurface *surface = bmp->flags;
|
||||
if (!surface) return;
|
||||
|
||||
surface->Unlock (surface);
|
||||
bmp->data = NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
directfb_prepare_strip (struct bitmap *bmp, int top, int lines)
|
||||
{
|
||||
IDirectFBSurface *surface = bmp->flags;
|
||||
int skip;
|
||||
if (!surface) return NULL;
|
||||
|
||||
surface->Lock (surface, (DFBSurfaceLockFlags)(DSLF_READ | DSLF_WRITE), &bmp->data, &skip);
|
||||
|
||||
return ((unsigned char *) bmp->data + top * bmp->skip);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_commit_strip (struct bitmap *bmp, int top, int lines)
|
||||
{
|
||||
IDirectFBSurface *surface = bmp->flags;
|
||||
if (!surface) return;
|
||||
|
||||
surface->Unlock (surface);
|
||||
bmp->data = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_unregister_bitmap (struct bitmap *bmp)
|
||||
{
|
||||
IDirectFBSurface *surface = bmp->flags;
|
||||
if (!surface) return;
|
||||
|
||||
surface->Release (surface);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_draw_bitmap (struct graphics_device *dev, struct bitmap *bmp,
|
||||
int x, int y)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
IDirectFBSurface *src = bmp->flags;
|
||||
if (!src) return;
|
||||
|
||||
CLIP_DRAW_BITMAP
|
||||
|
||||
data->surface->Blit (data->surface, src, NULL, x, y);
|
||||
|
||||
directfb_register_flip (data, x, y, bmp->x, bmp->y);
|
||||
}
|
||||
|
||||
static long
|
||||
directfb_get_color (int rgb)
|
||||
{
|
||||
return rgb;
|
||||
}
|
||||
|
||||
|
||||
static inline void directfb_set_color (IDirectFBSurface *surface, long color)
|
||||
{
|
||||
surface->SetColor (surface,
|
||||
(color & 0xFF0000) >> 16,
|
||||
(color & 0xFF00) >> 8,
|
||||
(color & 0xFF),
|
||||
0xFF);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_fill_area (struct graphics_device *dev,
|
||||
int x1, int y1, int x2, int y2, long color)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
int w, h;
|
||||
|
||||
CLIP_FILL_AREA
|
||||
|
||||
w = x2 - x1;
|
||||
h = y2 - y1;
|
||||
|
||||
directfb_set_color (data->surface, color);
|
||||
data->surface->FillRectangle (data->surface, x1, y1, w, h);
|
||||
|
||||
directfb_register_flip (data, x1, y1, w, h);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_draw_hline (struct graphics_device *dev,
|
||||
int x1, int y, int x2, long color)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
|
||||
CLIP_DRAW_HLINE
|
||||
|
||||
x2--;
|
||||
|
||||
directfb_set_color (data->surface, color);
|
||||
data->surface->DrawLine (data->surface, x1, y, x2, y);
|
||||
|
||||
directfb_register_flip (data, x1, y, x2 - x1, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_draw_vline (struct graphics_device *dev,
|
||||
int x, int y1, int y2, long color)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
|
||||
CLIP_DRAW_VLINE
|
||||
|
||||
y2--;
|
||||
|
||||
directfb_set_color (data->surface, color);
|
||||
data->surface->DrawLine (data->surface, x, y1, x, y2);
|
||||
|
||||
directfb_register_flip (data, x, y1, 1, y2 - y1);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_set_clip_area (struct graphics_device *dev)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
DFBRegion region;
|
||||
|
||||
region.x1 = dev->clip.x1;
|
||||
region.y1 = dev->clip.y1;
|
||||
region.x2 = dev->clip.x2 - 1;
|
||||
region.y2 = dev->clip.y2 - 1;
|
||||
|
||||
data->surface->SetClip (data->surface, ®ion);
|
||||
}
|
||||
|
||||
static int
|
||||
directfb_scroll (struct graphics_device *dev, struct rect_set **set, int scx, int scy)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
DFBRectangle rect;
|
||||
|
||||
rect.x = dev->clip.x1;
|
||||
rect.y = dev->clip.y1;
|
||||
rect.w = dev->clip.x2 - rect.x;
|
||||
rect.h = dev->clip.y2 - rect.y;
|
||||
|
||||
data->surface->Blit (data->surface,
|
||||
data->surface, &rect, rect.x + scx, rect.y + scy);
|
||||
|
||||
directfb_register_flip (data, rect.x, rect.y, rect.w, rect.h);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void directfb_register_flip (DFBDeviceData *data,
|
||||
int x, int y, int w, int h)
|
||||
{
|
||||
if (x < 0 || y < 0 || w < 1 || h < 1)
|
||||
return;
|
||||
|
||||
w = x + w - 1;
|
||||
h = y + h - 1;
|
||||
|
||||
if (data->flip_pending)
|
||||
{
|
||||
if (data->flip_region.x1 > x) data->flip_region.x1 = x;
|
||||
if (data->flip_region.y1 > y) data->flip_region.y1 = y;
|
||||
if (data->flip_region.x2 < w) data->flip_region.x2 = w;
|
||||
if (data->flip_region.y2 < h) data->flip_region.y2 = h;
|
||||
}
|
||||
else
|
||||
{
|
||||
data->flip_region.x1 = x;
|
||||
data->flip_region.y1 = y;
|
||||
data->flip_region.x2 = w;
|
||||
data->flip_region.y2 = h;
|
||||
|
||||
data->flip_pending = 1;
|
||||
|
||||
register_bottom_half (directfb_flip_surface, data);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_flip_surface (void *pointer)
|
||||
{
|
||||
DFBDeviceData *data = pointer;
|
||||
|
||||
if (!data->flip_pending)
|
||||
return;
|
||||
|
||||
data->surface->Flip (data->surface, &data->flip_region, (DFBSurfaceFlipFlags)0);
|
||||
|
||||
data->flip_pending = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_flush(struct graphics_device *dev)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
unregister_bottom_half (directfb_flip_surface, data);
|
||||
directfb_flip_surface(data);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_check_events (void *pointer)
|
||||
{
|
||||
struct graphics_device *dev = NULL;
|
||||
DFBDeviceData *data = NULL;
|
||||
DFBWindowEvent event;
|
||||
DFBWindowEvent next;
|
||||
|
||||
while (events->GetEvent (events, DFB_EVENT (&event)) == DFB_OK)
|
||||
{
|
||||
switch (event.type)
|
||||
{
|
||||
case DWET_GOTFOCUS:
|
||||
case DWET_LOSTFOCUS:
|
||||
case DWET_POSITION_SIZE:
|
||||
case DWET_SIZE:
|
||||
case DWET_KEYDOWN:
|
||||
case DWET_BUTTONDOWN:
|
||||
case DWET_BUTTONUP:
|
||||
case DWET_WHEEL:
|
||||
case DWET_MOTION:
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!dev || data->id != event.window_id)
|
||||
{
|
||||
dev = directfb_lookup_in_table (event.window_id);
|
||||
if (!dev)
|
||||
continue;
|
||||
}
|
||||
|
||||
data = dev->driver_data;
|
||||
|
||||
switch (event.type)
|
||||
{
|
||||
#if 0
|
||||
case DWET_GOTFOCUS:
|
||||
data->window->SetOpacity (data->window, FOCUSED_OPACITY);
|
||||
break;
|
||||
|
||||
case DWET_LOSTFOCUS:
|
||||
data->window->SetOpacity (data->window, UNFOCUSED_OPACITY);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case DWET_POSITION_SIZE:
|
||||
case DWET_SIZE:
|
||||
while ((events->PeekEvent (events, DFB_EVENT (&next)) == DFB_OK) &&
|
||||
(next.type == DWET_SIZE || next.type == DWET_POSITION_SIZE) &&
|
||||
(next.window_id == data->id))
|
||||
events->GetEvent (events, DFB_EVENT (&event));
|
||||
|
||||
dev->size.x2 = event.w;
|
||||
dev->size.y2 = event.h;
|
||||
dev->resize_handler (dev);
|
||||
break;
|
||||
|
||||
case DWET_KEYDOWN:
|
||||
{
|
||||
int key, flag;
|
||||
|
||||
directfb_translate_key (&event, &key, &flag);
|
||||
if (key)
|
||||
dev->keyboard_handler (dev, key, flag);
|
||||
}
|
||||
break;
|
||||
|
||||
case DWET_BUTTONDOWN:
|
||||
case DWET_BUTTONUP:
|
||||
{
|
||||
int flags;
|
||||
|
||||
/*
|
||||
* For unknown reason, we get the event twice
|
||||
*/
|
||||
while ((events->PeekEvent (events, DFB_EVENT (&next)) == DFB_OK) &&
|
||||
(next.type == event.type && next.button == event.button &&
|
||||
next.x == event.x && next.y == event.y && next.window_id == data->id))
|
||||
events->GetEvent (events, DFB_EVENT (&event));
|
||||
|
||||
if (event.type == DWET_BUTTONUP)
|
||||
{
|
||||
flags = B_UP;
|
||||
data->window->UngrabPointer (data->window);
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = B_DOWN;
|
||||
data->window->GrabPointer (data->window);
|
||||
}
|
||||
|
||||
switch (event.button)
|
||||
{
|
||||
case DIBI_LEFT:
|
||||
flags |= B_LEFT;
|
||||
break;
|
||||
case DIBI_RIGHT:
|
||||
flags |= B_RIGHT;
|
||||
break;
|
||||
case DIBI_MIDDLE:
|
||||
flags |= B_MIDDLE;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
dev->mouse_handler (dev, event.x, event.y, flags);
|
||||
}
|
||||
break;
|
||||
|
||||
case DWET_WHEEL:
|
||||
dev->mouse_handler (dev, event.x, event.y,
|
||||
B_MOVE |
|
||||
(event.step > 0 ? B_WHEELUP : B_WHEELDOWN));
|
||||
break;
|
||||
|
||||
case DWET_MOTION:
|
||||
{
|
||||
int flags;
|
||||
|
||||
while ((events->PeekEvent (events, DFB_EVENT (&next)) == DFB_OK) &&
|
||||
(next.type == DWET_MOTION) &&
|
||||
(next.window_id == data->id))
|
||||
events->GetEvent (events, DFB_EVENT (&event));
|
||||
|
||||
switch (event.buttons)
|
||||
{
|
||||
case DIBM_LEFT:
|
||||
flags = B_DRAG | B_LEFT;
|
||||
break;
|
||||
case DIBM_RIGHT:
|
||||
flags = B_DRAG | B_RIGHT;
|
||||
break;
|
||||
case DIBM_MIDDLE:
|
||||
flags = B_DRAG | B_MIDDLE;
|
||||
break;
|
||||
default:
|
||||
flags = B_MOVE;
|
||||
break;
|
||||
}
|
||||
|
||||
dev->mouse_handler (dev, event.x, event.y, flags);
|
||||
}
|
||||
break;
|
||||
|
||||
case DWET_CLOSE:
|
||||
dev->keyboard_handler (dev, KBD_CLOSE, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
event_timer = install_timer (20, directfb_check_events, events);
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_translate_key (DFBWindowEvent *event, int *key, int *flag)
|
||||
{
|
||||
*key = 0;
|
||||
*flag = 0;
|
||||
|
||||
if (event->modifiers & DIMM_CONTROL && event->key_id == DIKI_C)
|
||||
{
|
||||
*key = KBD_CTRL_C;
|
||||
return;
|
||||
}
|
||||
|
||||
/* setting Shift seems to break things
|
||||
*
|
||||
* if (event->modifiers & DIMM_SHIFT)
|
||||
* *flag |= KBD_SHIFT;
|
||||
*/
|
||||
if (event->modifiers & DIMM_CONTROL)
|
||||
*flag |= KBD_CTRL;
|
||||
if (event->modifiers & DIMM_ALT)
|
||||
*flag |= KBD_ALT;
|
||||
|
||||
switch (event->key_symbol)
|
||||
{
|
||||
case DIKS_ENTER: *key = KBD_ENTER; break;
|
||||
case DIKS_BACKSPACE: *key = KBD_BS; break;
|
||||
case DIKS_TAB: *key = KBD_TAB; break;
|
||||
case DIKS_ESCAPE: *key = KBD_ESC; break;
|
||||
case DIKS_CURSOR_UP: *key = KBD_UP; break;
|
||||
case DIKS_CURSOR_DOWN: *key = KBD_DOWN; break;
|
||||
case DIKS_CURSOR_LEFT: *key = KBD_LEFT; break;
|
||||
case DIKS_CURSOR_RIGHT: *key = KBD_RIGHT; break;
|
||||
case DIKS_INSERT: *key = KBD_INS; break;
|
||||
case DIKS_DELETE: *key = KBD_DEL; break;
|
||||
case DIKS_HOME: *key = KBD_HOME; break;
|
||||
case DIKS_END: *key = KBD_END; break;
|
||||
case DIKS_PAGE_UP: *key = KBD_PAGE_UP; break;
|
||||
case DIKS_PAGE_DOWN: *key = KBD_PAGE_DOWN; break;
|
||||
case DIKS_F1: *key = KBD_F1; break;
|
||||
case DIKS_F2: *key = KBD_F2; break;
|
||||
case DIKS_F3: *key = KBD_F3; break;
|
||||
case DIKS_F4: *key = KBD_F4; break;
|
||||
case DIKS_F5: *key = KBD_F5; break;
|
||||
case DIKS_F6: *key = KBD_F6; break;
|
||||
case DIKS_F7: *key = KBD_F7; break;
|
||||
case DIKS_F8: *key = KBD_F8; break;
|
||||
case DIKS_F9: *key = KBD_F9; break;
|
||||
case DIKS_F10: *key = KBD_F10; break;
|
||||
case DIKS_F11: *key = KBD_F11; break;
|
||||
case DIKS_F12: *key = KBD_F12; break;
|
||||
|
||||
default:
|
||||
if (DFB_KEY_TYPE (event->key_symbol) == DIKT_UNICODE)
|
||||
*key = event->key_symbol;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_add_to_table (struct graphics_device *dev)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
struct graphics_device **devices;
|
||||
int i;
|
||||
|
||||
i = data->id % DIRECTFB_HASH_TABLE_SIZE;
|
||||
|
||||
devices = directfb_hash_table[i];
|
||||
|
||||
if (devices)
|
||||
{
|
||||
int c = 0;
|
||||
|
||||
while (devices[c++])
|
||||
if (c == MAXINT) overalloc();
|
||||
|
||||
if ((unsigned)c > MAXINT / sizeof(void *) - 1) overalloc();
|
||||
devices = mem_realloc (devices, (c + 1) * sizeof (void *));
|
||||
devices[c-1] = dev;
|
||||
devices[c] = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
devices = mem_alloc (2 * sizeof (void *));
|
||||
devices[0] = dev;
|
||||
devices[1] = NULL;
|
||||
}
|
||||
|
||||
directfb_hash_table[i] = devices;
|
||||
}
|
||||
|
||||
static void
|
||||
directfb_remove_from_table (struct graphics_device *dev)
|
||||
{
|
||||
DFBDeviceData *data = dev->driver_data;
|
||||
struct graphics_device **devices;
|
||||
int i, j, c;
|
||||
|
||||
i = data->id % DIRECTFB_HASH_TABLE_SIZE;
|
||||
|
||||
devices = directfb_hash_table[i];
|
||||
if (!devices)
|
||||
return;
|
||||
|
||||
for (j = 0, c = -1; devices[j]; j++)
|
||||
if (devices[j] == dev)
|
||||
c = j;
|
||||
|
||||
if (c < 0)
|
||||
return;
|
||||
|
||||
memmove (devices + c, devices + c + 1, (j - c) * sizeof (void *));
|
||||
devices = mem_realloc (devices, j * sizeof (void *));
|
||||
|
||||
directfb_hash_table[i] = devices;
|
||||
}
|
||||
|
||||
static struct graphics_device *
|
||||
directfb_lookup_in_table (DFBWindowID id)
|
||||
{
|
||||
struct graphics_device **devices;
|
||||
int i;
|
||||
|
||||
i = id % DIRECTFB_HASH_TABLE_SIZE;
|
||||
|
||||
devices = directfb_hash_table[i];
|
||||
if (!devices)
|
||||
return NULL;
|
||||
|
||||
while (*devices)
|
||||
{
|
||||
DFBDeviceData *data = (*devices)->driver_data;
|
||||
|
||||
if (data->id == id)
|
||||
return *devices;
|
||||
|
||||
devices++;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct graphics_driver directfb_driver =
|
||||
{
|
||||
cast_uchar "directfb",
|
||||
directfb_init_driver,
|
||||
directfb_init_device,
|
||||
directfb_shutdown_device,
|
||||
directfb_shutdown_driver,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
directfb_get_empty_bitmap,
|
||||
directfb_register_bitmap,
|
||||
directfb_prepare_strip,
|
||||
directfb_commit_strip,
|
||||
directfb_unregister_bitmap,
|
||||
directfb_draw_bitmap,
|
||||
directfb_get_color,
|
||||
directfb_fill_area,
|
||||
directfb_draw_hline,
|
||||
directfb_draw_vline,
|
||||
directfb_scroll,
|
||||
directfb_set_clip_area,
|
||||
directfb_flush,
|
||||
NULL, /* block */
|
||||
NULL, /* unblock */
|
||||
NULL, /* set_palette */
|
||||
NULL, /* get_real_colors */
|
||||
NULL, /* set_title */
|
||||
NULL, /* exec */
|
||||
NULL, /* set_clipboard_text */
|
||||
NULL, /* get_clipboard_text */
|
||||
0, /* depth */
|
||||
0, 0, /* size */
|
||||
GD_UNICODE_KEYS | GD_NO_OS_SHELL | GD_NOAUTO, /* flags */
|
||||
NULL, /* param */
|
||||
};
|
||||
|
||||
#endif /* GRDRV_DIRECTFB */
|
|
@ -0,0 +1,838 @@
|
|||
/* dns.c
|
||||
* (c) 2002 Mikulas Patocka
|
||||
* This file is a part of the Links program, released under GPL
|
||||
*/
|
||||
|
||||
#include "links.h"
|
||||
|
||||
#ifdef SUPPORT_IPV6
|
||||
int support_ipv6;
|
||||
#endif
|
||||
|
||||
#if !defined(USE_GETADDRINFO) && (defined(HAVE_GETHOSTBYNAME_BUG) || !defined(HAVE_GETHOSTBYNAME))
|
||||
#define EXTERNAL_LOOKUP
|
||||
#endif
|
||||
|
||||
#if defined(WIN) || defined(INTERIX)
|
||||
#define EXTRA_IPV6_LOOKUP
|
||||
#endif
|
||||
|
||||
#ifdef OPENVMS_64BIT
|
||||
/* 64-bit getaddrinfo with _SOCKADDR_LEN is broken and returns garbage */
|
||||
#undef addrinfo
|
||||
#undef getaddrinfo
|
||||
#undef freeaddrinfo
|
||||
#define addrinfo __addrinfo32
|
||||
static int my_getaddrinfo(const char *host, const char *service, const struct addrinfo *hints, struct addrinfo **res)
|
||||
{
|
||||
int r;
|
||||
#pragma __pointer_size 32
|
||||
char *host_32;
|
||||
struct addrinfo hints_32;
|
||||
struct addrinfo *res_32;
|
||||
#pragma __pointer_size 64
|
||||
|
||||
host_32 = _malloc32(strlen(host) + 1);
|
||||
if (!host_32) {
|
||||
errno = ENOMEM;
|
||||
return EAI_SYSTEM;
|
||||
}
|
||||
strcpy(host_32, host);
|
||||
memcpy(&hints_32, hints, sizeof(struct addrinfo));
|
||||
|
||||
r = __getaddrinfo32(host_32, NULL, &hints_32, &res_32);
|
||||
|
||||
free(host_32);
|
||||
|
||||
if (!r)
|
||||
*res = res_32;
|
||||
|
||||
return r;
|
||||
}
|
||||
static void my_freeaddrinfo(struct addrinfo *res)
|
||||
{
|
||||
#pragma __pointer_size 32
|
||||
struct addrinfo *res_32 = (struct addrinfo *)res;
|
||||
#pragma __pointer_size 64
|
||||
__freeaddrinfo32(res_32);
|
||||
}
|
||||
#define getaddrinfo my_getaddrinfo
|
||||
#define freeaddrinfo my_freeaddrinfo
|
||||
#endif
|
||||
|
||||
struct dnsentry {
|
||||
list_entry_1st
|
||||
uttime absolute_time;
|
||||
struct lookup_result addr;
|
||||
list_entry_last
|
||||
unsigned char name[1];
|
||||
};
|
||||
|
||||
#ifndef THREAD_SAFE_LOOKUP
|
||||
struct dnsquery *dns_queue = NULL;
|
||||
#endif
|
||||
|
||||
struct dnsquery {
|
||||
#ifndef THREAD_SAFE_LOOKUP
|
||||
struct dnsquery *next_in_queue;
|
||||
#endif
|
||||
void (*fn)(void *, int);
|
||||
void *data;
|
||||
int h;
|
||||
struct dnsquery **s;
|
||||
struct lookup_result *addr;
|
||||
int addr_preference;
|
||||
unsigned char name[1];
|
||||
};
|
||||
|
||||
static int dns_cache_addr_preference = -1;
|
||||
static struct list_head dns_cache = {&dns_cache, &dns_cache};
|
||||
|
||||
static void end_dns_lookup(struct dnsquery *q, int a);
|
||||
static int shrink_dns_cache(int u);
|
||||
|
||||
static int get_addr_byte(unsigned char **ptr, unsigned char *res, unsigned char stp)
|
||||
{
|
||||
unsigned u = 0;
|
||||
if (!(**ptr >= '0' && **ptr <= '9')) return -1;
|
||||
while (**ptr >= '0' && **ptr <= '9') {
|
||||
u = u * 10 + **ptr - '0';
|
||||
if (u >= 256) return -1;
|
||||
(*ptr)++;
|
||||
}
|
||||
if (stp != 255 && **ptr != stp) return -1;
|
||||
(*ptr)++;
|
||||
*res = (unsigned char)u;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int numeric_ip_address(unsigned char *name, unsigned char address[4])
|
||||
{
|
||||
unsigned char dummy[4];
|
||||
if (!address) address = dummy;
|
||||
if (get_addr_byte(&name, address + 0, '.')) return -1;
|
||||
if (get_addr_byte(&name, address + 1, '.')) return -1;
|
||||
if (get_addr_byte(&name, address + 2, '.')) return -1;
|
||||
if (get_addr_byte(&name, address + 3, 0)) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef SUPPORT_IPV6
|
||||
|
||||
static int extract_ipv6_address(struct addrinfo *p, unsigned char address[16], unsigned *scope_id)
|
||||
{
|
||||
/*{
|
||||
int i;
|
||||
for (i = 0; i < p->ai_addrlen; i++)
|
||||
fprintf(stderr, "%02x%c", ((unsigned char *)p->ai_addr)[i], i != p->ai_addrlen - 1 ? ':' : '\n');
|
||||
}*/
|
||||
if (p->ai_family == AF_INET6 && (socklen_t)p->ai_addrlen >= (socklen_t)sizeof(struct sockaddr_in6) && p->ai_addr->sa_family == AF_INET6) {
|
||||
memcpy(address, &((struct sockaddr_in6 *)p->ai_addr)->sin6_addr, 16);
|
||||
#ifdef SUPPORT_IPV6_SCOPE
|
||||
*scope_id = ((struct sockaddr_in6 *)p->ai_addr)->sin6_scope_id;
|
||||
#else
|
||||
*scope_id = 0;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int numeric_ipv6_address(unsigned char *name, unsigned char address[16], unsigned *scope_id)
|
||||
{
|
||||
unsigned char dummy_a[16];
|
||||
unsigned dummy_s;
|
||||
int r;
|
||||
#ifdef HAVE_INET_PTON
|
||||
struct in6_addr i6a;
|
||||
#endif
|
||||
struct addrinfo hints, *res;
|
||||
if (!address) address = dummy_a;
|
||||
if (!scope_id) scope_id = &dummy_s;
|
||||
|
||||
#ifdef HAVE_INET_PTON
|
||||
if (inet_pton(AF_INET6, cast_const_char name, &i6a) == 1) {
|
||||
memcpy(address, &i6a, 16);
|
||||
*scope_id = 0;
|
||||
return 0;
|
||||
}
|
||||
if (!strchr(cast_const_char name, '%'))
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
memset(&hints, 0, sizeof(struct addrinfo));
|
||||
hints.ai_family = AF_INET6;
|
||||
hints.ai_flags = AI_NUMERICHOST;
|
||||
if (getaddrinfo(cast_const_char name, NULL, &hints, &res))
|
||||
return -1;
|
||||
r = extract_ipv6_address(res, address, scope_id);
|
||||
freeaddrinfo(res);
|
||||
return r;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef EXTERNAL_LOOKUP
|
||||
|
||||
static int do_external_lookup(unsigned char *name, unsigned char *host)
|
||||
{
|
||||
unsigned char buffer[1024];
|
||||
unsigned char sink[16];
|
||||
int rd;
|
||||
int pi[2];
|
||||
pid_t f;
|
||||
unsigned char *n;
|
||||
int rs;
|
||||
if (c_pipe(pi) == -1)
|
||||
return -1;
|
||||
EINTRLOOP(f, fork());
|
||||
if (f == -1) {
|
||||
EINTRLOOP(rs, close(pi[0]));
|
||||
EINTRLOOP(rs, close(pi[1]));
|
||||
return -1;
|
||||
}
|
||||
if (!f) {
|
||||
#ifdef HAVE_SETSID
|
||||
/* without setsid it gets stuck when on background */
|
||||
EINTRLOOP(rs, setsid());
|
||||
#endif
|
||||
EINTRLOOP(rs, close(pi[0]));
|
||||
EINTRLOOP(rs, dup2(pi[1], 1));
|
||||
if (rs == -1) _exit(1);
|
||||
EINTRLOOP(rs, dup2(pi[1], 2));
|
||||
if (rs == -1) _exit(1);
|
||||
EINTRLOOP(rs, close(pi[1]));
|
||||
EINTRLOOP(rs, execlp("host", "host", cast_const_char name, (char *)NULL));
|
||||
EINTRLOOP(rs, execl("/usr/sbin/host", "host", cast_const_char name, (char *)NULL));
|
||||
_exit(1);
|
||||
}
|
||||
EINTRLOOP(rs, close(pi[1]));
|
||||
rd = hard_read(pi[0], buffer, sizeof buffer - 1);
|
||||
if (rd >= 0) buffer[rd] = 0;
|
||||
if (rd > 0) {
|
||||
while (hard_read(pi[0], sink, sizeof sink) > 0);
|
||||
}
|
||||
EINTRLOOP(rs, close(pi[0]));
|
||||
/* Don't wait for the process, we already have sigchld handler that
|
||||
* does cleanup.
|
||||
* waitpid(f, NULL, 0); */
|
||||
if (rd < 0) return -1;
|
||||
/*fprintf(stderr, "query: '%s', result: %s\n", name, buffer);*/
|
||||
while ((n = strstr(buffer, name))) {
|
||||
memset(n, '-', strlen(cast_const_char name));
|
||||
}
|
||||
for (n = buffer; n < buffer + rd; n++) {
|
||||
if (*n >= '0' && *n <= '9') {
|
||||
if (get_addr_byte(&n, host + 0, '.')) goto skip_addr;
|
||||
if (get_addr_byte(&n, host + 1, '.')) goto skip_addr;
|
||||
if (get_addr_byte(&n, host + 2, '.')) goto skip_addr;
|
||||
if (get_addr_byte(&n, host + 3, 255)) goto skip_addr;
|
||||
return 0;
|
||||
skip_addr:
|
||||
if (n >= buffer + rd) break;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if MAX_ADDRESSES > 1
|
||||
static int memcmp_host_address(struct host_address *a, struct host_address *b)
|
||||
{
|
||||
if (a->af != b->af || a->scope_id != b->scope_id)
|
||||
return 1;
|
||||
return memcmp(a->addr, b->addr, sizeof a->addr);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void add_address(struct lookup_result *host, int af, unsigned char *address, unsigned scope_id, int preference)
|
||||
{
|
||||
struct host_address neww;
|
||||
struct host_address *e, *t;
|
||||
#if MAX_ADDRESSES > 1
|
||||
struct host_address *n;
|
||||
#endif
|
||||
if (af != AF_INET && preference == ADDR_PREFERENCE_IPV4_ONLY)
|
||||
return;
|
||||
#ifdef SUPPORT_IPV6
|
||||
if (af != AF_INET6 && preference == ADDR_PREFERENCE_IPV6_ONLY)
|
||||
return;
|
||||
#endif
|
||||
if (host->n >= MAX_ADDRESSES)
|
||||
return;
|
||||
memset(&neww, 0, sizeof(struct host_address));
|
||||
neww.af = af;
|
||||
memcpy(neww.addr, address, af == AF_INET ? 4 : 16);
|
||||
neww.scope_id = scope_id;
|
||||
e = &host->a[host->n];
|
||||
t = e;
|
||||
#if MAX_ADDRESSES > 1
|
||||
for (n = host->a; n != e; n++) {
|
||||
if (!memcmp_host_address(n, &neww))
|
||||
return;
|
||||
if (preference == ADDR_PREFERENCE_IPV4 && af == AF_INET && n->af != AF_INET) {
|
||||
t = n;
|
||||
break;
|
||||
}
|
||||
#ifdef SUPPORT_IPV6
|
||||
if (preference == ADDR_PREFERENCE_IPV6 && af == AF_INET6 && n->af != AF_INET6) {
|
||||
t = n;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
memmove(t + 1, t, (e - t) * sizeof(struct host_address));
|
||||
#endif
|
||||
memcpy(t, &neww, sizeof(struct host_address));
|
||||
host->n++;
|
||||
}
|
||||
|
||||
#ifdef USE_GETADDRINFO
|
||||
|
||||
static int use_getaddrinfo(unsigned char *name, struct addrinfo *hints, int preference, struct lookup_result *host)
|
||||
{
|
||||
int gai_err;
|
||||
struct addrinfo *res, *p;
|
||||
#ifdef OPENVMS
|
||||
struct addrinfo default_hints;
|
||||
if (!hints) {
|
||||
memset(&default_hints, 0, sizeof default_hints);
|
||||
default_hints.ai_flags = AI_V4MAPPED | AI_ADDRCONFIG;
|
||||
hints = &default_hints;
|
||||
}
|
||||
#endif
|
||||
gai_err = getaddrinfo(cast_const_char name, NULL, hints, &res);
|
||||
if (gai_err)
|
||||
return gai_err;
|
||||
for (p = res; p; p = p->ai_next) {
|
||||
if (p->ai_family == AF_INET && (socklen_t)p->ai_addrlen >= (socklen_t)sizeof(struct sockaddr_in) && p->ai_addr->sa_family == AF_INET) {
|
||||
add_address(host, AF_INET, (unsigned char *)&((struct sockaddr_in *)p->ai_addr)->sin_addr.s_addr, 0, preference);
|
||||
continue;
|
||||
}
|
||||
#ifdef SUPPORT_IPV6
|
||||
{
|
||||
unsigned char address[16];
|
||||
unsigned scope_id;
|
||||
if (!extract_ipv6_address(p, address, &scope_id)) {
|
||||
add_address(host, AF_INET6, address, scope_id, preference);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
freeaddrinfo(res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void rotate_addresses(struct lookup_result *host)
|
||||
{
|
||||
#if MAX_ADDRESSES > 1
|
||||
int first_type, first_different, i;
|
||||
|
||||
if (host->n <= 2)
|
||||
return;
|
||||
|
||||
first_type = host->a[0].af;
|
||||
|
||||
for (i = 1; i < host->n; i++) {
|
||||
if (host->a[i].af != first_type) {
|
||||
first_different = i;
|
||||
goto do_swap;
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
||||
do_swap:
|
||||
if (first_different > 1) {
|
||||
struct host_address ha;
|
||||
memcpy(&ha, &host->a[first_different], sizeof(struct host_address));
|
||||
memmove(&host->a[2], &host->a[1], (first_different - 1) * sizeof(struct host_address));
|
||||
memcpy(&host->a[1], &ha, sizeof(struct host_address));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void do_real_lookup(unsigned char *name, int preference, struct lookup_result *host)
|
||||
{
|
||||
unsigned char address[16];
|
||||
#ifdef SUPPORT_IPV6
|
||||
size_t nl;
|
||||
#endif
|
||||
|
||||
memset(host, 0, sizeof(struct lookup_result));
|
||||
|
||||
if (strlen(cast_const_char name) >= 6 && !casestrcmp(name + strlen(cast_const_char name) - 6, cast_uchar ".onion"))
|
||||
goto ret;
|
||||
|
||||
if (!support_ipv6) preference = ADDR_PREFERENCE_IPV4_ONLY;
|
||||
|
||||
if (!numeric_ip_address(name, address)) {
|
||||
add_address(host, AF_INET, address, 0, preference);
|
||||
goto ret;
|
||||
}
|
||||
#ifdef SUPPORT_IPV6
|
||||
nl = strlen(cast_const_char name);
|
||||
if (name[0] == '[' && name[nl - 1] == ']') {
|
||||
unsigned char *n2 = cast_uchar strdup(cast_const_char(name + 1));
|
||||
if (n2) {
|
||||
unsigned scope_id;
|
||||
n2[nl - 2] = 0;
|
||||
if (!numeric_ipv6_address(n2, address, &scope_id)) {
|
||||
free(n2);
|
||||
add_address(host, AF_INET6, address, scope_id, preference);
|
||||
goto ret;
|
||||
}
|
||||
free(n2);
|
||||
}
|
||||
} else {
|
||||
unsigned scope_id;
|
||||
if (!numeric_ipv6_address(name, address, &scope_id)) {
|
||||
add_address(host, AF_INET6, address, scope_id, preference);
|
||||
goto ret;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(USE_GETADDRINFO)
|
||||
use_getaddrinfo(name, NULL, preference, host);
|
||||
#if defined(SUPPORT_IPV6) && defined(EXTRA_IPV6_LOOKUP)
|
||||
if ((preference == ADDR_PREFERENCE_IPV4 && !host->n) ||
|
||||
preference == ADDR_PREFERENCE_IPV6 ||
|
||||
preference == ADDR_PREFERENCE_IPV6_ONLY) {
|
||||
struct addrinfo hints;
|
||||
int i;
|
||||
for (i = 0; i < host->n; i++)
|
||||
if (host->a[i].af == AF_INET6)
|
||||
goto already_have_inet6;
|
||||
memset(&hints, 0, sizeof hints);
|
||||
hints.ai_family = AF_INET6;
|
||||
hints.ai_flags = 0;
|
||||
use_getaddrinfo(name, &hints, preference, host);
|
||||
}
|
||||
already_have_inet6:;
|
||||
#endif
|
||||
#elif defined(HAVE_GETHOSTBYNAME)
|
||||
{
|
||||
int i;
|
||||
struct hostent *hst;
|
||||
if ((hst = gethostbyname(cast_const_char name))) {
|
||||
if (hst->h_addrtype != AF_INET || hst->h_length != 4 || !hst->h_addr)
|
||||
goto ret;
|
||||
#ifdef h_addr
|
||||
for (i = 0; hst->h_addr_list[i]; i++) {
|
||||
add_address(host, AF_INET, cast_uchar hst->h_addr_list[i], 0, preference);
|
||||
}
|
||||
#else
|
||||
add_address(host, AF_INET, cast_uchar hst->h_addr, 0, preference);
|
||||
#endif
|
||||
goto ret;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef EXTERNAL_LOOKUP
|
||||
if (!do_external_lookup(name, address)) {
|
||||
add_address(host, AF_INET, address, 0, preference);
|
||||
goto ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
ret:
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef NO_ASYNC_LOOKUP
|
||||
static void lookup_fn(void *q_, int h)
|
||||
{
|
||||
struct dnsquery *q = (struct dnsquery *)q_;
|
||||
struct lookup_result host;
|
||||
do_real_lookup(q->name, q->addr_preference, &host);
|
||||
/*{
|
||||
int i;
|
||||
for (i = 0; i < sizeof(struct lookup_result); i++) {
|
||||
if (i == 1) portable_sleep(1000);
|
||||
hard_write(h, (unsigned char *)&host + i, 1);
|
||||
}
|
||||
}*/
|
||||
hard_write(h, (unsigned char *)&host, sizeof(struct lookup_result));
|
||||
}
|
||||
|
||||
static void end_real_lookup(void *q_)
|
||||
{
|
||||
struct dnsquery *q = (struct dnsquery *)q_;
|
||||
int r = 1;
|
||||
int rs;
|
||||
if (!q->addr || hard_read(q->h, (unsigned char *)q->addr, sizeof(struct lookup_result)) != sizeof(struct lookup_result) || !q->addr->n) goto end;
|
||||
r = 0;
|
||||
|
||||
end:
|
||||
set_handlers(q->h, NULL, NULL, NULL);
|
||||
EINTRLOOP(rs, close(q->h));
|
||||
end_dns_lookup(q, r);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int do_lookup(struct dnsquery *q, int force_async)
|
||||
{
|
||||
/*debug("starting lookup for %s", q->name);*/
|
||||
#ifndef NO_ASYNC_LOOKUP
|
||||
if (!async_lookup && !force_async) {
|
||||
#endif
|
||||
#ifndef NO_ASYNC_LOOKUP
|
||||
sync_lookup:
|
||||
#endif
|
||||
do_real_lookup(q->name, q->addr_preference, q->addr);
|
||||
end_dns_lookup(q, !q->addr->n);
|
||||
return 0;
|
||||
#ifndef NO_ASYNC_LOOKUP
|
||||
} else {
|
||||
q->h = start_thread(lookup_fn, q, (int)((unsigned char *)strchr(cast_const_char q->name, 0) + 1 - (unsigned char *)q), 1);
|
||||
if (q->h == -1) goto sync_lookup;
|
||||
set_handlers(q->h, end_real_lookup, NULL, q);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static int do_queued_lookup(struct dnsquery *q)
|
||||
{
|
||||
#ifndef THREAD_SAFE_LOOKUP
|
||||
q->next_in_queue = NULL;
|
||||
if (!dns_queue) {
|
||||
dns_queue = q;
|
||||
/*debug("direct lookup");*/
|
||||
#endif
|
||||
return do_lookup(q, 0);
|
||||
#ifndef THREAD_SAFE_LOOKUP
|
||||
} else {
|
||||
/*debug("queuing lookup for %s", q->name);*/
|
||||
if (dns_queue->next_in_queue) internal_error("DNS queue corrupted");
|
||||
dns_queue->next_in_queue = q;
|
||||
dns_queue = q;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void check_dns_cache_addr_preference(void)
|
||||
{
|
||||
if (dns_cache_addr_preference != ipv6_options.addr_preference) {
|
||||
shrink_dns_cache(SH_FREE_ALL);
|
||||
dns_cache_addr_preference = ipv6_options.addr_preference;
|
||||
}
|
||||
}
|
||||
|
||||
static int find_in_dns_cache(unsigned char *name, struct dnsentry **dnsentry)
|
||||
{
|
||||
struct dnsentry *e;
|
||||
struct list_head *le;
|
||||
check_dns_cache_addr_preference();
|
||||
foreach(struct dnsentry, e, le, dns_cache)
|
||||
if (!casestrcmp(e->name, name)) {
|
||||
del_from_list(e);
|
||||
add_to_list(dns_cache, e);
|
||||
*dnsentry = e;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void free_dns_entry(struct dnsentry *dnsentry)
|
||||
{
|
||||
del_from_list(dnsentry);
|
||||
mem_free(dnsentry);
|
||||
}
|
||||
|
||||
static void end_dns_lookup(struct dnsquery *q, int a)
|
||||
{
|
||||
struct dnsentry *dnsentry;
|
||||
size_t sl;
|
||||
void (*fn)(void *, int);
|
||||
void *data;
|
||||
/*debug("end lookup %s", q->name);*/
|
||||
#ifndef THREAD_SAFE_LOOKUP
|
||||
if (q->next_in_queue) {
|
||||
/*debug("processing next in queue: %s", q->next_in_queue->name);*/
|
||||
do_lookup(q->next_in_queue, 1);
|
||||
} else dns_queue = NULL;
|
||||
#endif
|
||||
if (!q->fn || !q->addr) {
|
||||
free(q);
|
||||
return;
|
||||
}
|
||||
if (!find_in_dns_cache(q->name, &dnsentry)) {
|
||||
if (a) {
|
||||
memcpy(q->addr, &dnsentry->addr, sizeof(struct lookup_result));
|
||||
a = 0;
|
||||
goto e;
|
||||
}
|
||||
free_dns_entry(dnsentry);
|
||||
}
|
||||
if (a) goto e;
|
||||
if (q->addr_preference != ipv6_options.addr_preference) goto e;
|
||||
check_dns_cache_addr_preference();
|
||||
sl = strlen(cast_const_char q->name);
|
||||
if (sl > MAXINT - sizeof(struct dnsentry)) overalloc();
|
||||
dnsentry = mem_alloc(sizeof(struct dnsentry) + sl);
|
||||
strcpy(cast_char dnsentry->name, cast_const_char q->name);
|
||||
memcpy(&dnsentry->addr, q->addr, sizeof(struct lookup_result));
|
||||
dnsentry->absolute_time = get_absolute_time();
|
||||
add_to_list(dns_cache, dnsentry);
|
||||
e:
|
||||
if (q->s) *q->s = NULL;
|
||||
fn = q->fn;
|
||||
data = q->data;
|
||||
free(q);
|
||||
fn(data, a);
|
||||
}
|
||||
|
||||
int find_host_no_cache(unsigned char *name, struct lookup_result *addr, void **qp, void (*fn)(void *, int), void *data)
|
||||
{
|
||||
struct dnsquery *q;
|
||||
retry:
|
||||
q = (struct dnsquery *)malloc(sizeof(struct dnsquery) + strlen(cast_const_char name));
|
||||
if (!q) {
|
||||
if (out_of_memory(0, NULL, 0))
|
||||
goto retry;
|
||||
fn(data, 1);
|
||||
return 0;
|
||||
}
|
||||
q->fn = fn;
|
||||
q->data = data;
|
||||
q->s = (struct dnsquery **)qp;
|
||||
q->addr = addr;
|
||||
q->addr_preference = ipv6_options.addr_preference;
|
||||
strcpy(cast_char q->name, cast_const_char name);
|
||||
if (qp) *qp = q;
|
||||
return do_queued_lookup(q);
|
||||
}
|
||||
|
||||
int find_host(unsigned char *name, struct lookup_result *addr, void **qp, void (*fn)(void *, int), void *data)
|
||||
{
|
||||
struct dnsentry *dnsentry;
|
||||
if (qp) *qp = NULL;
|
||||
if (!find_in_dns_cache(name, &dnsentry)) {
|
||||
if (get_absolute_time() - dnsentry->absolute_time > DNS_TIMEOUT) goto timeout;
|
||||
memcpy(addr, &dnsentry->addr, sizeof(struct lookup_result));
|
||||
fn(data, 0);
|
||||
return 0;
|
||||
}
|
||||
timeout:
|
||||
return find_host_no_cache(name, addr, qp, fn, data);
|
||||
}
|
||||
|
||||
void kill_dns_request(void **qp)
|
||||
{
|
||||
struct dnsquery *q = *qp;
|
||||
q->fn = NULL;
|
||||
q->addr = NULL;
|
||||
*qp = NULL;
|
||||
}
|
||||
|
||||
#ifndef NO_ASYNC_LOOKUP
|
||||
static void dns_prefetch_end(void *addr_, int status)
|
||||
{
|
||||
struct lookup_result *addr = (struct lookup_result *)addr_;
|
||||
free(addr);
|
||||
}
|
||||
#endif
|
||||
|
||||
void dns_prefetch(unsigned char *name)
|
||||
{
|
||||
#ifndef NO_ASYNC_LOOKUP
|
||||
struct lookup_result *addr;
|
||||
if (!async_lookup)
|
||||
return;
|
||||
addr = (struct lookup_result *)malloc(sizeof(struct lookup_result));
|
||||
if (!addr)
|
||||
return;
|
||||
find_host(name, addr, NULL, dns_prefetch_end, addr);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if MAX_ADDRESSES > 1
|
||||
void dns_set_priority(unsigned char *name, struct host_address *address, int prefer)
|
||||
{
|
||||
int i;
|
||||
struct dnsentry *dnsentry;
|
||||
if (find_in_dns_cache(name, &dnsentry))
|
||||
return;
|
||||
for (i = 0; i < dnsentry->addr.n; i++)
|
||||
if (!memcmp_host_address(&dnsentry->addr.a[i], address)) goto found_it;
|
||||
return;
|
||||
found_it:
|
||||
if (prefer) {
|
||||
memmove(&dnsentry->addr.a[1], &dnsentry->addr.a[0], i * sizeof(struct host_address));
|
||||
memcpy(&dnsentry->addr.a[0], address, sizeof(struct host_address));
|
||||
} else {
|
||||
memmove(&dnsentry->addr.a[i], &dnsentry->addr.a[i + 1], (dnsentry->addr.n - i - 1) * sizeof(struct host_address));
|
||||
memcpy(&dnsentry->addr.a[dnsentry->addr.n - 1], address, sizeof(struct host_address));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void dns_clear_host(unsigned char *name)
|
||||
{
|
||||
struct dnsentry *dnsentry;
|
||||
if (find_in_dns_cache(name, &dnsentry))
|
||||
return;
|
||||
free_dns_entry(dnsentry);
|
||||
}
|
||||
|
||||
unsigned long dns_info(int type)
|
||||
{
|
||||
switch (type) {
|
||||
case CI_FILES:
|
||||
return list_size(&dns_cache);
|
||||
default:
|
||||
internal_error("dns_info: bad request");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int shrink_dns_cache(int u)
|
||||
{
|
||||
uttime now = get_absolute_time();
|
||||
struct dnsentry *d;
|
||||
struct list_head *ld;
|
||||
int f = 0;
|
||||
if (u == SH_FREE_SOMETHING && !list_empty(dns_cache)) {
|
||||
d = list_struct(dns_cache.prev, struct dnsentry);
|
||||
goto delete_last;
|
||||
}
|
||||
foreach(struct dnsentry, d, ld, dns_cache) if (u == SH_FREE_ALL || now - d->absolute_time > DNS_TIMEOUT) {
|
||||
delete_last:
|
||||
ld = d->list_entry.prev;
|
||||
free_dns_entry(d);
|
||||
f = ST_SOMETHING_FREED;
|
||||
}
|
||||
return f | (list_empty(dns_cache) ? ST_CACHE_EMPTY : 0);
|
||||
}
|
||||
|
||||
unsigned char *print_address(struct host_address *a)
|
||||
{
|
||||
#define SCOPE_ID_LEN 11
|
||||
#ifdef SUPPORT_IPV6
|
||||
static unsigned char buffer[INET6_ADDRSTRLEN + SCOPE_ID_LEN];
|
||||
#else
|
||||
static unsigned char buffer[INET_ADDRSTRLEN + SCOPE_ID_LEN];
|
||||
#endif
|
||||
#ifdef HAVE_INET_NTOP
|
||||
union {
|
||||
struct in_addr in;
|
||||
#ifdef SUPPORT_IPV6
|
||||
struct in6_addr in6;
|
||||
#endif
|
||||
char pad[16];
|
||||
} u;
|
||||
memcpy(&u, a->addr, 16);
|
||||
if (!inet_ntop(a->af, &u, cast_char buffer, sizeof buffer - SCOPE_ID_LEN))
|
||||
return NULL;
|
||||
#else
|
||||
if (a->af == AF_INET)
|
||||
snprintf(cast_char buffer, sizeof buffer, "%d.%d.%d.%d", a->addr[0], a->addr[1], a->addr[2], a->addr[3]);
|
||||
#ifdef SUPPORT_IPV6
|
||||
else if (a->af == AF_INET6)
|
||||
snprintf(cast_char buffer, sizeof buffer, "%x:%x:%x:%x:%x:%x:%x:%x",
|
||||
(a->addr[0] << 8) | a->addr[1],
|
||||
(a->addr[2] << 8) | a->addr[3],
|
||||
(a->addr[4] << 8) | a->addr[5],
|
||||
(a->addr[6] << 8) | a->addr[7],
|
||||
(a->addr[8] << 8) | a->addr[9],
|
||||
(a->addr[10] << 8) | a->addr[11],
|
||||
(a->addr[12] << 8) | a->addr[13],
|
||||
(a->addr[14] << 8) | a->addr[15]);
|
||||
#endif
|
||||
else
|
||||
return NULL;
|
||||
#endif
|
||||
if (a->scope_id) {
|
||||
unsigned char *end = cast_uchar strchr(cast_const_char buffer, 0);
|
||||
snprintf(cast_char end, buffer + sizeof(buffer) - end, "%%%u", a->scope_id);
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
int ipv6_full_access(void)
|
||||
{
|
||||
#ifdef SUPPORT_IPV6
|
||||
/*
|
||||
* Test if we can access global IPv6 address space.
|
||||
* This doesn't send anything anywhere, it just creates an UDP socket,
|
||||
* connects it and closes it.
|
||||
*/
|
||||
struct sockaddr_in6 sin6;
|
||||
int h, c, rs;
|
||||
if (!support_ipv6) return 0;
|
||||
h = c_socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
|
||||
if (h == -1) return 0;
|
||||
memset(&sin6, 0, sizeof sin6);
|
||||
sin6.sin6_family = AF_INET6;
|
||||
sin6.sin6_port = htons(1024);
|
||||
memcpy(&sin6.sin6_addr.s6_addr, "\052\001\004\060\000\015\000\000\002\314\236\377\376\044\176\032", 16);
|
||||
EINTRLOOP(c, connect(h, (struct sockaddr *)(void *)&sin6, sizeof sin6));
|
||||
EINTRLOOP(rs, close(h));
|
||||
if (!c) return 1;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef FLOOD_MEMORY
|
||||
|
||||
void flood_memory(void)
|
||||
{
|
||||
struct list_head list;
|
||||
size_t s = 32768 * 32;
|
||||
struct dnsentry *de;
|
||||
dns_cache_addr_preference = ipv6_options.addr_preference;
|
||||
#if defined(HAVE__HEAPMIN)
|
||||
_heapmin();
|
||||
#endif
|
||||
init_list(list);
|
||||
while (!list_empty(dns_cache)) {
|
||||
de = list_struct(dns_cache.prev, struct dnsentry);
|
||||
del_from_list(de);
|
||||
add_to_list(list, de);
|
||||
}
|
||||
while (1) {
|
||||
while ((de = mem_alloc_mayfail(s))) {
|
||||
de->absolute_time = get_absolute_time();
|
||||
memset(&de->addr, 0, sizeof de->addr);
|
||||
de->name[0] = 0;
|
||||
add_to_list(list, de);
|
||||
}
|
||||
if (s == sizeof(struct dnsentry)) break;
|
||||
s = s / 2;
|
||||
if (s < sizeof(struct dnsentry)) s = sizeof(struct dnsentry);
|
||||
}
|
||||
while (!list_empty(list)) {
|
||||
de = list_struct(list.prev, struct dnsentry);
|
||||
del_from_list(de);
|
||||
add_to_list(dns_cache, de);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void init_dns(void)
|
||||
{
|
||||
register_cache_upcall(shrink_dns_cache, 0, cast_uchar "dns");
|
||||
#ifdef FLOOD_MEMORY
|
||||
flood_memory();
|
||||
#endif
|
||||
#ifdef SUPPORT_IPV6
|
||||
{
|
||||
int h, rs;
|
||||
h = c_socket(AF_INET6, SOCK_STREAM, 0);
|
||||
if (h == -1) {
|
||||
support_ipv6 = 0;
|
||||
} else {
|
||||
EINTRLOOP(rs, close(h));
|
||||
support_ipv6 = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 135 B |
Binary file not shown.
After Width: | Height: | Size: 396 B |
Binary file not shown.
After Width: | Height: | Size: 253 B |
|
@ -0,0 +1,68 @@
|
|||
<!doctype html public "-//W3C/DTD HTML 3.0//EN">
|
||||
<html>
|
||||
<head><title>Links Calibration</title></head>
|
||||
<body bgcolor="#000000" text="#ffffff">
|
||||
<h1>Links Calibration Procedure</h1>
|
||||
<p>To get a flawless picture while browsing the Web with Links,
|
||||
you have to perform the described procedure step-by-step. A test pattern
|
||||
for the adjustment follows:
|
||||
<br><center><img src="test_pattern.png" width=480 height=480
|
||||
alt="Monoscope"></center>
|
||||
|
||||
<br><center><table border=1>
|
||||
<tr><td>1.</td><td>Set "Setup -> Video options -> User gamma" to
|
||||
1.0</td></tr>
|
||||
<tr><td>2.</td><td>Switch off "Setup -> Video options -> Aspect
|
||||
correction on".</td></tr>
|
||||
<tr><td>3.</td><td>Set "View -> Html options -> Scale all images by (%)"
|
||||
to 100.</td></tr>
|
||||
<tr><td>4. <img src="picture-crank-0.png" alt="Contrast to 0"></td><td>Turn
|
||||
"Contrast <img src="picture-icon.png" alt="Contrast">" to it's
|
||||
minimum.</td></tr>
|
||||
<tr><td>5. <img src="black-control-rocking.png" alt="Set brightness"></td><td>Set " Brightness <img
|
||||
src="black-icon.png" alt="Brightness">" to the highest level where black
|
||||
just still stays black. <img src="elbow.png" alt="Find the elbow"> The gradient (where light
|
||||
output is proportional to horizontal offset) in
|
||||
the lower part of the image may assist you to perform this task or you may
|
||||
diminish horizontal size of the picture on your monitor's controls and
|
||||
check at the edge of the screen.</td></tr>
|
||||
<tr><td>6. <img src="picture-crank-up.png" alt="Set contrast"></td><td>Set "Contrast
|
||||
<img src="picture-icon.png" alt="Contrast">" as you like it.</td></tr>
|
||||
<tr><td>7.</td><td>Adjust "Setup -> Video options -> Red,
|
||||
Green, Blue display gamma" until the inside of the test pattern looks
|
||||
like this: <img src="adjusted.png" alt="The center of the monoscope should look like this"> Red gamma influences the red field,
|
||||
green gamma green field, blue gamma blue field. When right part of
|
||||
particularly coloured field is too dark, increase the appropriate gamma. When the right
|
||||
part is too light, decrease the gamma. The white
|
||||
field is there for confidence only. You shall not see the fringes in left
|
||||
parts of the fields. If you see them, go farther from the screen or take
|
||||
off glasses.</td></tr>
|
||||
<tr><td>8.</td><td>Set "Setup -> Video options -> User
|
||||
gamma" according to recommended setting that are provided in the
|
||||
dialog box.</td></tr>
|
||||
<tr><td>9.</td><td>Switch on "Setup -> Video options -> Aspect
|
||||
correction on".</td></tr>
|
||||
<tr><td>10.</td><td>Adjust you picture's size so that it just fits on the
|
||||
screen</td></tr>
|
||||
<tr><td>11.</td><td>Adjust "Setup -> Video options -> Aspect
|
||||
ratio" so that the white circle is perfectly circular.</td></tr>
|
||||
<tr><td>12.</td><td>If you are using a picture tube monitor, set
|
||||
"Setup -> Video options -> Display optimization for CRT".
|
||||
If you have got a flat panel LCD monitor, choose between "Setup ->
|
||||
Video options -> Display optimization for LCD (RGB)" and "Setup ->
|
||||
Video options -> Display optimization for LCD (BGR)" , whichever looks
|
||||
better.</td></tr>
|
||||
<tr><td>13.</td><td>Save your settings with "Setup -> Save
|
||||
options".</td></tr>
|
||||
<tr><td>14.</td><td>Do not touch "Brightness <img
|
||||
src="black-icon.png" alt="Brightness">" any more. You may adjust "Contrast <img
|
||||
src="picture-icon.png" alt="Contrast">" whenever you want.</td></tr>
|
||||
</table></center>
|
||||
<h1>Recommendation</h1>
|
||||
<p>If you have got an X Server that supports built-in software gamma
|
||||
correction, switch this gamma correction completely off. You will get a
|
||||
better picture. To switch the gamma correction off, edit the configuration file and set all "gamma"
|
||||
values to 1.0. After doing that, restart X Server, run Links and calibrate
|
||||
Links and the monitor.
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue