mirror of https://github.com/postgres/postgres
Attached to the mail is locale-patch.tar.gz. In the archive there are: file README.locale short description directory src/test/locale test suite; currently only koi8-r tests, but the suite can be easily extended file locale.patch the very patch; to apply: patch < locale.patch; should be applied to postgres-6.3.2 (at least I created it with 6.3.2 without any additional patches) Files touched by the patch: src/include/utils/builtins.h src/backend/utils/adt/char.c src/backend/utils/adt/varchar.c src/backend/utils/adt/varlena.c OlegREL6_4
parent
67a636918a
commit
8d8bcda253
@ -0,0 +1,17 @@ |
||||
|
||||
1998 May 25 |
||||
|
||||
I extended locale support. Now ORDER BY (if PostgreSQL configured with |
||||
--enable-locale) uses strcoll() for all text fields: char(n), varchar(n), |
||||
text. (I am not sure about ORDER BY char2/char4/etc.) |
||||
|
||||
I included test suite .../src/test/locale. I didn't include this in |
||||
the regression test because not so much people require locale support. Read |
||||
.../src/test/locale/README for details on the test suite. |
||||
|
||||
Many thanks to Oleg Bartunov (oleg@sai.msu.su) and Thomas G. Lockhart |
||||
(lockhart@alumni.caltech.edu) for hints, tips, help and discussion. |
||||
|
||||
Oleg. |
||||
---- |
||||
Oleg Broytmann http://members.tripod.com/~phd2/ phd2@earthling.net |
||||
@ -0,0 +1,33 @@ |
||||
#
|
||||
# Makefile for example programs
|
||||
#
|
||||
|
||||
SRCDIR= ../..
|
||||
include ../../Makefile.global |
||||
|
||||
#
|
||||
# And where libpq goes, so goes the authentication stuff...
|
||||
#
|
||||
ifdef KRBVERS |
||||
LDFLAGS+= $(KRBLIBS)
|
||||
CFLAGS+= $(KRBFLAGS)
|
||||
endif |
||||
|
||||
PROGS = test-pgsql-locale test-ctype
|
||||
DIRS = koi8-r
|
||||
|
||||
all: $(PROGS) |
||||
|
||||
$(PROGS): % : %.c |
||||
$(CC) $(CFLAGS) -o $@ $@.c $(LDFLAGS)
|
||||
|
||||
clean: |
||||
rm -f $(PROGS) *.out
|
||||
for d in $(DIRS); do \
|
||||
cd $$d; \
|
||||
$(MAKE) clean; \
|
||||
cd ..; \
|
||||
done
|
||||
|
||||
test-%: all |
||||
@cd `echo $@ | sed s/^test-//` && $(MAKE) test
|
||||
@ -0,0 +1,27 @@ |
||||
|
||||
1998 May 25 |
||||
|
||||
This directory contains a set of tests for locales. I provided one C |
||||
program test-ctype.c to test CTYPE support in libc and installed |
||||
localedata. Then there are test-sort.pl and test-sort.py that tests |
||||
collating. (Also there is test-sort.py but it is commented out in scripts; |
||||
uncomment it if you have Python interpreter installed). |
||||
To run a test for some locale (koi8, e.g) run |
||||
make all test-$locale |
||||
(for example) |
||||
make all test-koi8 |
||||
|
||||
Currently, only tests for koi8 locale (russian cyrillic for UN*X) |
||||
provided in koi8 directory. Script `runall' calls test-pgsql-locale to test |
||||
whether locale support had been compiled into PotgreSQL, test-ctype to test |
||||
libc and localedata, test-sort.pl (uncomment test-sort.py, if you have |
||||
Python interpreter installed) and does tests on PostgreSQL with |
||||
test-koi8*.sql.in. |
||||
|
||||
To add locale tests one need to create directory $locale and create |
||||
Makefile (and other files) similar to koi8-r/*. Actually, the simplest (I |
||||
think) method is just copy koi8-r directory and edit/replace files. |
||||
|
||||
Oleg. |
||||
---- |
||||
Oleg Broytmann http://members.tripod.com/~phd2/ phd2@earthling.net |
||||
@ -0,0 +1,12 @@ |
||||
#
|
||||
# Makefile for example programs
|
||||
#
|
||||
|
||||
all: |
||||
-@echo "make: Nothing to be done for \`all'."
|
||||
|
||||
test: |
||||
@./runall
|
||||
|
||||
clean: |
||||
rm -f *.out
|
||||
@ -0,0 +1,55 @@ |
||||
abbrev|name_en |name_ru |
||||
------+--------------------+------------------------------------------------------------ |
||||
ID |Idaho |áÊÄÁÈÏ |
||||
IA |Iowa |áÊÏ×Á |
||||
AL |Alabama |áÌÁÂÁÍÁ |
||||
AK |Alaska |áÌÑÓËÁ |
||||
AZ |Arizona |áÒÉÚÏÎÁ |
||||
AR |Arkansas |áÒËÁÎÚÁÓ |
||||
WY |Wyoming |÷ÁÊÏÍÉÎÇ |
||||
WA |Washington |÷ÁÛÉÎÇÔÏÎ |
||||
VT |Vermont |÷ÅÒÍÏÎÔ |
||||
VA |Virginia |փ񀅃냄 |
||||
WI |Wisconsin |÷ÉÓËÏÎÓÉÎ |
||||
DE |Delaware |äÅÌÁ×ÜÒ |
||||
GA |Georgia |äÖÏÒÄÖÉÑ |
||||
WV |West Virginia |úÁÐÁÄÎÁÑ ÷ÉÒÄÖÉÎÉÑ |
||||
IL |Illinois |éÌÌÉÎÏÊÓ |
||||
IN |Indiana |éÎÄÉÁÎÁ |
||||
CA |California |ëÁÌÉÆÏÒÎÉÑ |
||||
KA |Kansas |ëÁÎÚÁÓ |
||||
KY |Kentucky |ëÅÎÔÕËËÉ |
||||
CO |Colorado |ëÏÌÏÒÁÄÏ |
||||
CT |Connecticut |ëÏÎÎÅËÔÉËÕÔ |
||||
LA |Louisiana |ìÕÉÚÉÁÎÁ |
||||
MA |Massachusetts |íÁÓÓÁÞÕÓÅÔÓ |
||||
MN |Minnesota |íÉÎÎÅÓÏÔÁ |
||||
MS |Mississippi |íÉÓÓÉÓÉÐÉ |
||||
MO |Missouri |íÉÓÓÕÒÉ |
||||
MI |Michigan |íÉÞÉÇÁÎ |
||||
MT |Montana |íÏÎÔÁÎÁ |
||||
ME |Maine |íÜÎ |
||||
MD |Maryland |íÜÒÉÌÅÎÄ |
||||
NE |Nebraska |îÅÂÒÁÓËÁ |
||||
NV |Nevada |îÅ×ÁÄÁ |
||||
NH |New Hampshire |îØÀ-çÜÍÐÛÉÒ |
||||
NJ |New Jersey |îØÀ-äÖÅÒÓÉ |
||||
NY |New York |îØÀ-êÏÒË |
||||
NM |New Mexico |îØÀ-íÅËÓÉËÏ |
||||
OH |Ohio |ïÇÁÊÏ |
||||
OK |Oklahoma |ïËÌÁÈÏÍÁ |
||||
DC |Washington DC |ÏËÒÕÇ ëÏÌÕÍÂÉÑ (ÓÏÚÄÁÎ ÓÐÅÃÉÁÌØÎÏ ÐÏÄ ÓÔÏÌÉÃÕ) |
||||
OR |Oregon |ïÒÅÇÏÎ |
||||
PA |Pennsylvania |ðÅÎÓÉÌØ×ÁÎÉÑ |
||||
RI |Rhode Island |òÏÄ-áÊÌÅÎÄ |
||||
ND |North Dakota |óÅ×ÅÒÎÁÑ äÁËÏÔÁ |
||||
NC |North Carolina |óÅ×ÅÒÎÁÑ ëÁÒÏÌÉÎÁ |
||||
TN |Tennessee |ôÅÎÎÅÓÓÉ |
||||
TX |Texas |ôÅÈÁÓ |
||||
FL |Florida |æÌÏÒÉÄÁ |
||||
SD |South Dakota |àÖÎÁÑ äÁËÏÔÁ |
||||
SC |South Carolina |àÖÎÁÑ ëÁÒÏÌÉÎÁ |
||||
UT |Utah |àÔÁ |
||||
(50 rows) |
||||
|
||||
EOF |
||||
@ -0,0 +1,9 @@ |
||||
abbrev|name_en |name_ru |
||||
------+--------------------+---------------------------------------------- |
||||
OH |Ohio |Огайо |
||||
OK |Oklahoma |Оклахома |
||||
DC |Washington DC |округ Колумбия (создан специально под столицу) |
||||
OR |Oregon |Орегон |
||||
(4 rows) |
||||
|
||||
EOF |
||||
@ -0,0 +1,9 @@ |
||||
Bording |
||||
hoarding |
||||
Vesta |
||||
vesta |
||||
ÁÌØÑÎÓ |
||||
áÆÒÉËÁ |
||||
óÅ×ÅÒ |
||||
ãÁÐÌÑ |
||||
àÇ |
||||
@ -0,0 +1,55 @@ |
||||
abbrev|name_en |name_ru |
||||
------+--------------------+---------------------------------------------- |
||||
ID |Idaho |áÊÄÁÈÏ |
||||
IA |Iowa |áÊÏ×Á |
||||
AL |Alabama |áÌÁÂÁÍÁ |
||||
AK |Alaska |áÌÑÓËÁ |
||||
AZ |Arizona |áÒÉÚÏÎÁ |
||||
AR |Arkansas |áÒËÁÎÚÁÓ |
||||
WY |Wyoming |÷ÁÊÏÍÉÎÇ |
||||
WA |Washington |÷ÁÛÉÎÇÔÏÎ |
||||
VT |Vermont |÷ÅÒÍÏÎÔ |
||||
VA |Virginia |փ񀅃냄 |
||||
WI |Wisconsin |÷ÉÓËÏÎÓÉÎ |
||||
DE |Delaware |äÅÌÁ×ÜÒ |
||||
GA |Georgia |äÖÏÒÄÖÉÑ |
||||
WV |West Virginia |úÁÐÁÄÎÁÑ ÷ÉÒÄÖÉÎÉÑ |
||||
IL |Illinois |éÌÌÉÎÏÊÓ |
||||
IN |Indiana |éÎÄÉÁÎÁ |
||||
CA |California |ëÁÌÉÆÏÒÎÉÑ |
||||
KA |Kansas |ëÁÎÚÁÓ |
||||
KY |Kentucky |ëÅÎÔÕËËÉ |
||||
CO |Colorado |ëÏÌÏÒÁÄÏ |
||||
CT |Connecticut |ëÏÎÎÅËÔÉËÕÔ |
||||
LA |Louisiana |ìÕÉÚÉÁÎÁ |
||||
MA |Massachusetts |íÁÓÓÁÞÕÓÅÔÓ |
||||
MN |Minnesota |íÉÎÎÅÓÏÔÁ |
||||
MS |Mississippi |íÉÓÓÉÓÉÐÉ |
||||
MO |Missouri |íÉÓÓÕÒÉ |
||||
MI |Michigan |íÉÞÉÇÁÎ |
||||
MT |Montana |íÏÎÔÁÎÁ |
||||
ME |Maine |íÜÎ |
||||
MD |Maryland |íÜÒÉÌÅÎÄ |
||||
NE |Nebraska |îÅÂÒÁÓËÁ |
||||
NV |Nevada |îÅ×ÁÄÁ |
||||
NH |New Hampshire |îØÀ-çÜÍÐÛÉÒ |
||||
NJ |New Jersey |îØÀ-äÖÅÒÓÉ |
||||
NY |New York |îØÀ-êÏÒË |
||||
NM |New Mexico |îØÀ-íÅËÓÉËÏ |
||||
OH |Ohio |ïÇÁÊÏ |
||||
OK |Oklahoma |ïËÌÁÈÏÍÁ |
||||
DC |Washington DC |ÏËÒÕÇ ëÏÌÕÍÂÉÑ (ÓÏÚÄÁÎ ÓÐÅÃÉÁÌØÎÏ ÐÏÄ ÓÔÏÌÉÃÕ) |
||||
OR |Oregon |ïÒÅÇÏÎ |
||||
PA |Pennsylvania |ðÅÎÓÉÌØ×ÁÎÉÑ |
||||
RI |Rhode Island |òÏÄ-áÊÌÅÎÄ |
||||
ND |North Dakota |óÅ×ÅÒÎÁÑ äÁËÏÔÁ |
||||
NC |North Carolina |óÅ×ÅÒÎÁÑ ëÁÒÏÌÉÎÁ |
||||
TN |Tennessee |ôÅÎÎÅÓÓÉ |
||||
TX |Texas |ôÅÈÁÓ |
||||
FL |Florida |æÌÏÒÉÄÁ |
||||
SD |South Dakota |àÖÎÁÑ äÁËÏÔÁ |
||||
SC |South Carolina |àÖÎÁÑ ëÁÒÏÌÉÎÁ |
||||
UT |Utah |àÔÁ |
||||
(50 rows) |
||||
|
||||
EOF |
||||
@ -0,0 +1,55 @@ |
||||
abbrev|name_en |name_ru |
||||
------+--------------------+---------------------------------------------- |
||||
ID |Idaho |áÊÄÁÈÏ |
||||
IA |Iowa |áÊÏ×Á |
||||
AL |Alabama |áÌÁÂÁÍÁ |
||||
AK |Alaska |áÌÑÓËÁ |
||||
AZ |Arizona |áÒÉÚÏÎÁ |
||||
AR |Arkansas |áÒËÁÎÚÁÓ |
||||
WY |Wyoming |÷ÁÊÏÍÉÎÇ |
||||
WA |Washington |÷ÁÛÉÎÇÔÏÎ |
||||
VT |Vermont |÷ÅÒÍÏÎÔ |
||||
VA |Virginia |փ񀅃냄 |
||||
WI |Wisconsin |÷ÉÓËÏÎÓÉÎ |
||||
DE |Delaware |äÅÌÁ×ÜÒ |
||||
GA |Georgia |äÖÏÒÄÖÉÑ |
||||
WV |West Virginia |úÁÐÁÄÎÁÑ ÷ÉÒÄÖÉÎÉÑ |
||||
IL |Illinois |éÌÌÉÎÏÊÓ |
||||
IN |Indiana |éÎÄÉÁÎÁ |
||||
CA |California |ëÁÌÉÆÏÒÎÉÑ |
||||
KA |Kansas |ëÁÎÚÁÓ |
||||
KY |Kentucky |ëÅÎÔÕËËÉ |
||||
CO |Colorado |ëÏÌÏÒÁÄÏ |
||||
CT |Connecticut |ëÏÎÎÅËÔÉËÕÔ |
||||
LA |Louisiana |ìÕÉÚÉÁÎÁ |
||||
MA |Massachusetts |íÁÓÓÁÞÕÓÅÔÓ |
||||
MN |Minnesota |íÉÎÎÅÓÏÔÁ |
||||
MS |Mississippi |íÉÓÓÉÓÉÐÉ |
||||
MO |Missouri |íÉÓÓÕÒÉ |
||||
MI |Michigan |íÉÞÉÇÁÎ |
||||
MT |Montana |íÏÎÔÁÎÁ |
||||
ME |Maine |íÜÎ |
||||
MD |Maryland |íÜÒÉÌÅÎÄ |
||||
NE |Nebraska |îÅÂÒÁÓËÁ |
||||
NV |Nevada |îÅ×ÁÄÁ |
||||
NH |New Hampshire |îØÀ-çÜÍÐÛÉÒ |
||||
NJ |New Jersey |îØÀ-äÖÅÒÓÉ |
||||
NY |New York |îØÀ-êÏÒË |
||||
NM |New Mexico |îØÀ-íÅËÓÉËÏ |
||||
OH |Ohio |ïÇÁÊÏ |
||||
OK |Oklahoma |ïËÌÁÈÏÍÁ |
||||
DC |Washington DC |ÏËÒÕÇ ëÏÌÕÍÂÉÑ (ÓÏÚÄÁÎ ÓÐÅÃÉÁÌØÎÏ ÐÏÄ ÓÔÏÌÉÃÕ) |
||||
OR |Oregon |ïÒÅÇÏÎ |
||||
PA |Pennsylvania |ðÅÎÓÉÌØ×ÁÎÉÑ |
||||
RI |Rhode Island |òÏÄ-áÊÌÅÎÄ |
||||
ND |North Dakota |óÅ×ÅÒÎÁÑ äÁËÏÔÁ |
||||
NC |North Carolina |óÅ×ÅÒÎÁÑ ëÁÒÏÌÉÎÁ |
||||
TN |Tennessee |ôÅÎÎÅÓÓÉ |
||||
TX |Texas |ôÅÈÁÓ |
||||
FL |Florida |æÌÏÒÉÄÁ |
||||
SD |South Dakota |àÖÎÁÑ äÁËÏÔÁ |
||||
SC |South Carolina |àÖÎÁÑ ëÁÒÏÌÉÎÁ |
||||
UT |Utah |àÔÁ |
||||
(50 rows) |
||||
|
||||
EOF |
||||
@ -0,0 +1,52 @@ |
||||
#! /bin/sh |
||||
|
||||
PATH=..:$PATH |
||||
|
||||
echo "Testing PostgreSQL compilation..." |
||||
if ! test-pgsql-locale; then |
||||
exit 1 |
||||
fi |
||||
|
||||
LC_CTYPE=ru_RU.KOI8-R |
||||
LC_COLLATE=$LC_CTYPE |
||||
export LC_CTYPE LC_COLLATE |
||||
|
||||
echo "Testing LC_CTYPE..." |
||||
if ! test-ctype > koi8-ctype.out; then |
||||
exit 1 |
||||
fi |
||||
diff expected/koi8-ctype.out koi8-ctype.out |
||||
|
||||
echo "Testing LC_COLLATE..." |
||||
perl ../sort-test.pl test-koi8-sort.in > test-koi8-sort.out |
||||
diff expected/test-koi8-sort.out test-koi8-sort.out |
||||
|
||||
### If you have Python - uncomment the following two lines |
||||
#python ../sort-test.py test-koi8-sort.in > test-koi8-sort.out |
||||
#diff expected/test-koi8-sort.out test-koi8-sort.out |
||||
|
||||
|
||||
abort() { |
||||
[ "$1" ] && echo "$*" |
||||
exit 1 |
||||
} |
||||
|
||||
for f in char varchar text; do |
||||
if echo $f | grep -q char; then |
||||
ftype="$f(60)" |
||||
else |
||||
ftype="$f" |
||||
fi |
||||
echo "Testing PgSQL: sort on $ftype type..." |
||||
|
||||
destroydb testlocale >/dev/null 2>&1 |
||||
createdb testlocale || abort "createdb failed" |
||||
psql -d testlocale -c "CREATE TABLE usastates (abbrev char2, name_en char(20), name_ru $ftype);" >/dev/null 2>&1 || abort "createtable failed" |
||||
psql testlocale < test-koi8.sql.in > test-koi8-$f.sql.out 2>/dev/null || abort "test query failed" |
||||
diff expected/test-koi8-$f.sql.out test-koi8-$f.sql.out |
||||
done |
||||
echo "Testing PgSQL: select on regexp..." |
||||
psql testlocale < test-koi8-select.sql.in > test-koi8-select.sql.out 2>/dev/null || abort "select query failed" |
||||
diff expected/test-koi8-select.sql.out test-koi8-select.sql.out |
||||
destroydb testlocale || abort "destroydb failed" |
||||
echo "Finished." |
||||
@ -0,0 +1 @@ |
||||
SELECT * FROM usastates WHERE name_ru ~* '^Ï.*' ORDER BY name_ru; |
||||
@ -0,0 +1,9 @@ |
||||
Vesta |
||||
vesta |
||||
àÇ |
||||
ÁÌØÑÎÓ |
||||
áÆÒÉËÁ |
||||
óÅ×ÅÒ |
||||
ãÁÐÌÑ |
||||
Bording |
||||
hoarding |
||||
@ -0,0 +1,53 @@ |
||||
COPY usastates FROM stdin USING DELIMITERS '|'; |
||||
AK|Alaska |áÌÑÓËÁ |
||||
WA|Washington |÷ÁÛÉÎÇÔÏÎ |
||||
OR|Oregon |ïÒÅÇÏÎ |
||||
CA|California |ëÁÌÉÆÏÒÎÉÑ |
||||
NV|Nevada |îÅ×ÁÄÁ |
||||
ID|Idaho |áÊÄÁÈÏ |
||||
UT|Utah |àÔÁ |
||||
AZ|Arizona |áÒÉÚÏÎÁ |
||||
MT|Montana |íÏÎÔÁÎÁ |
||||
WY|Wyoming |÷ÁÊÏÍÉÎÇ |
||||
CO|Colorado |ëÏÌÏÒÁÄÏ |
||||
NM|New Mexico |îØÀ-íÅËÓÉËÏ |
||||
ND|North Dakota |óÅ×ÅÒÎÁÑ äÁËÏÔÁ |
||||
SD|South Dakota |àÖÎÁÑ äÁËÏÔÁ |
||||
NE|Nebraska |îÅÂÒÁÓËÁ |
||||
KA|Kansas |ëÁÎÚÁÓ |
||||
OK|Oklahoma |ïËÌÁÈÏÍÁ |
||||
TX|Texas |ôÅÈÁÓ |
||||
MN|Minnesota |íÉÎÎÅÓÏÔÁ |
||||
IA|Iowa |áÊÏ×Á |
||||
MO|Missouri |íÉÓÓÕÒÉ |
||||
AR|Arkansas |áÒËÁÎÚÁÓ |
||||
LA|Louisiana |ìÕÉÚÉÁÎÁ |
||||
WI|Wisconsin |÷ÉÓËÏÎÓÉÎ |
||||
IL|Illinois |éÌÌÉÎÏÊÓ |
||||
IN|Indiana |éÎÄÉÁÎÁ |
||||
MS|Mississippi |íÉÓÓÉÓÉÐÉ |
||||
AL|Alabama |áÌÁÂÁÍÁ |
||||
MI|Michigan |íÉÞÉÇÁÎ |
||||
OH|Ohio |ïÇÁÊÏ |
||||
KY|Kentucky |ëÅÎÔÕËËÉ |
||||
TN|Tennessee |ôÅÎÎÅÓÓÉ |
||||
GA|Georgia |äÖÏÒÄÖÉÑ |
||||
FL|Florida |æÌÏÒÉÄÁ |
||||
PA|Pennsylvania |ðÅÎÓÉÌØ×ÁÎÉÑ |
||||
WV|West Virginia |úÁÐÁÄÎÁÑ ÷ÉÒÄÖÉÎÉÑ |
||||
VA|Virginia |փ񀅃냄 |
||||
NC|North Carolina|óÅ×ÅÒÎÁÑ ëÁÒÏÌÉÎÁ |
||||
SC|South Carolina|àÖÎÁÑ ëÁÒÏÌÉÎÁ |
||||
NY|New York |îØÀ-êÏÒË |
||||
NJ|New Jersey |îØÀ-äÖÅÒÓÉ |
||||
DE|Delaware |äÅÌÁ×ÜÒ |
||||
MD|Maryland |íÜÒÉÌÅÎÄ |
||||
DC|Washington DC |ÏËÒÕÇ ëÏÌÕÍÂÉÑ (ÓÏÚÄÁÎ ÓÐÅÃÉÁÌØÎÏ ÐÏÄ ÓÔÏÌÉÃÕ) |
||||
VT|Vermont |÷ÅÒÍÏÎÔ |
||||
MA|Massachusetts |íÁÓÓÁÞÕÓÅÔÓ |
||||
CT|Connecticut |ëÏÎÎÅËÔÉËÕÔ |
||||
ME|Maine |íÜÎ |
||||
NH|New Hampshire |îØÀ-çÜÍÐÛÉÒ |
||||
RI|Rhode Island |òÏÄ-áÊÌÅÎÄ |
||||
\. |
||||
SELECT * FROM usastates ORDER BY name_ru; |
||||
@ -0,0 +1,12 @@ |
||||
#!/usr/local/bin/perl -w |
||||
use locale; |
||||
|
||||
open(INFILE, "<$ARGV[0]"); |
||||
chop(my(@words) = <INFILE>); |
||||
close(INFILE); |
||||
|
||||
$"="\n"; |
||||
my(@result) = sort @words; |
||||
|
||||
print "@result\n"; |
||||
|
||||
@ -0,0 +1,18 @@ |
||||
#! /usr/local/bin/python |
||||
|
||||
import sys, string, locale |
||||
locale.setlocale(locale.LC_ALL, "") |
||||
|
||||
if len(sys.argv) <> 2: |
||||
sys.stderr.write("Usage: sort.py filename\n") |
||||
sys.exit(1) |
||||
|
||||
infile = open(sys.argv[1], 'r') |
||||
list = infile.readlines() |
||||
infile.close() |
||||
|
||||
for i in range(0, len(list)): |
||||
list[i] = list[i][:-1] # chop! |
||||
|
||||
list.sort(locale.strcoll) |
||||
print string.join(list, '\n') |
||||
@ -0,0 +1,65 @@ |
||||
|
||||
/*
|
||||
|
||||
test-ctype.c |
||||
|
||||
Written by Oleg BroytMann, phd2@earthling.net |
||||
with help from Oleg Bartunov, oleg@sai.msu.su |
||||
Copyright (C) 1998 PhiloSoft Design |
||||
|
||||
This is copyrighted but free software. You can use it, modify and distribute |
||||
in original or modified form providing that the author's names and the above |
||||
copyright notice will remain. |
||||
|
||||
Disclaimer, legal notice and absence of warranty. |
||||
This software provided "as is" without any kind of warranty. In no event |
||||
the author shall be liable for any damage, etc. |
||||
|
||||
*/ |
||||
|
||||
#include <stdio.h> |
||||
#include <locale.h> |
||||
#include <ctype.h> |
||||
|
||||
char * flag(int b); |
||||
void describe_char(int c); |
||||
|
||||
#undef LONG_FLAG |
||||
|
||||
char * flag(int b) |
||||
{ |
||||
#ifdef LONG_FLAG |
||||
return b ? "yes" : "no"; |
||||
#else |
||||
return b ? "+" : " "; |
||||
#endif |
||||
} |
||||
|
||||
void describe_char(int c) |
||||
{ |
||||
char cp = c, up = toupper(c), lo = tolower(c); |
||||
if (!isprint(cp)) cp = ' '; |
||||
if (!isprint(up)) up = ' '; |
||||
if (!isprint(lo)) lo = ' '; |
||||
|
||||
printf("chr#%-4d%2c%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%4c%4c\n", c, cp, flag(isalnum(c)), flag(isalpha(c)), flag(iscntrl(c)), flag(isdigit(c)), flag(islower(c)), flag(isgraph(c)), flag(isprint(c)), flag(ispunct(c)), flag(isspace(c)), flag(isupper(c)), flag(isxdigit(c)), lo, up); |
||||
} |
||||
|
||||
int main() { |
||||
short c; |
||||
char * cur_locale; |
||||
|
||||
cur_locale = setlocale(LC_ALL, ""); |
||||
if (cur_locale) { |
||||
fprintf(stderr, "Successfulle set locale to %s\n", cur_locale); |
||||
} else { |
||||
fprintf(stderr, "Cannot setup locale. Either your libc does not provide\nlocale support, or your locale data is corrupt, or you have not set\nLANG or LC_CTYPE environment variable to proper value. Program aborted.\n"); |
||||
return 1; |
||||
} |
||||
|
||||
printf("char# char alnum alpha cntrl digit lower graph print punct space upper xdigit lo up\n"); |
||||
for (c = 0; c <= 255; c++) |
||||
describe_char(c); |
||||
|
||||
return 0; |
||||
} |
||||
@ -0,0 +1,13 @@ |
||||
|
||||
#include <stdio.h> |
||||
#include "postgres.h" |
||||
|
||||
int main() { |
||||
#ifdef USE_LOCALE |
||||
printf("PostgreSQL compiled with locale support\n"); |
||||
return 0; |
||||
#else |
||||
printf("PostgreSQL compiled without locale support\n"); |
||||
return 1; |
||||
#endif |
||||
} |
||||
Loading…
Reference in new issue