/* Ìâì ÿâõæâþêæû õæâôýå þåôõêê glimpse 3.0, 3.5, 4.0 ÊÕÌÂÆÛ ÒÐ ÔÈÕÕÌÊ ? */ /* Glimpse 4.15 _ÿâõæâþíóæû_ ÏÅ ÏÂÄÐ. Ðï ê æâì ìðôôåìæïð êüåæ òð ôèõõìê êõòðíûÿèó íðìâíû $ENV{LANG}="ru_RU.koi8r"; Õìðîòêíêôèëæå åúð (4.15), ê êõòðíûÿèëæå ïâ ÿäðôðþûå. */ /* * õÒÐÕÐ× No 1. ìÐÔÔÅÌÆÏÝË * 1. õÌÐÎÒÊÍÊÔÐÞÂÆÛ Õ ÖÍÂÚÐÎ ISO_CHAR_SET = 1 ÄÍÓ ØÆÐÚÐ ÄÐ×ÂÞÊÆÛ Þ CFLAGS -DISO_CHAR_SET=1 ÞÐ ÞÕÅ Makefile 2. èÕÆÂÏÐÞÊÆÛ Ï ÌÐÎÒÛÁÆÅÔÅ ÏÐÔÎÂÍÛÏÝË locale ÕÐÐÆÞÅÆÕÆÞÈÁÜÊË ÊÕÒÐÍÛßÈÅÎÐË ÌÐÄÊÔÐÞÌÅ. 3. þ .profile ÈÕÆÂÏÂÞÍÊÞÂÅÎ ÒÅÔÅÎÅÏÏÝÅ ÐÌÔÈÃÅÏÊÓ LANG=ru export LANG 4. þ cgi-ÕÌÔÊÒÆÂÉ: ÄÐ×ÂÞÍÓÅÎ ÕÆÔÐÀÌÈ $ENV{LANG} = 'ru'; # Perl LANG=ru export LANG # Shell-ÕÌÔÊÒÆÝ # þÐßÎÐÃÏÐ Ê ÆÂÌÐÅ ÏÂßÞÂÏÊÅ: ru.RU.KOI8-R LANG=ru_RU.KOI8-R LC_CTYPE=ru_RU.KOI8-R ôÂ×ÐÆÂÅÆ ÆÐÍÛÌÐ ÏÂÀÊÏÂÓ Õ glimpse ÞÅÔÕÊÊ 4.0, ÒÐÆÐÎÈ ÀÆÐ Þ glimpse 3.* ÕÌÐÎÒÊÍÊÔÐÞÂÏÏÝÎ Õ ÖÍÂÚÐÎ ISO ÐÆÞÂÍÊÞÂÍÂÕÛ ÐÒÇÊÓ -n - "ÏÈÎÅÔÐÞÂÆÛ ÕÆÔÐÌÊ"... */ /* * õÒÐÕÐ× No 2. ïÅÌÐÔÔÅÌÆÏÝË, ÏÐ ÔÂ×ÐÆÂÁÜÊË ÒÔÊ ÍÁ×ÐË ÒÐÚÐÄÅ * åÕÍÊ ÏÅ ÈÄÂÅÆÕÓ ÏÂËÆÊ ÌÐÎÒÍÅÌÆ ÍÐÌÂÍÊßÂÇÊÊ ÄÍÓ ÞÂÙÅÚÐ Unix, ÐÕÆÂÅÆÕÓ, * ÅÕÆÅÕÆÞÅÏÏÐ, ÏÂÕÊÍÊÅ ÏÂÄ ÊÕÉÐÄÏÝÎÊ ÆÅÌÕÆÂÎÊ * ÞÅßÄÅ Ê ÞÕÁÄÈ glimpse ÐÒÔÅÄÅÍÓÅÆ, ×ÈÌÞ ÍÊ ÕÊÎÞÐÍ, ÊÍÊ ×ÈÌÞÂ/ÊÍÊ/ÇÊÖÔ ÊÕÒÐÍÛßÈÓ ÕÆÂÏÄÂÔÆÏÝÅ ÖÈÏÌÇÊÊ Êß ctype Ê locale ÌÂÆÅÚÐÔÊË isalpha(), isalnum(), islower(), isupper(), tolower(), toupper() îÐÔÂÍÛ: ÞÕÁÄÈ Þ ÆÅÌÕÆÅ ÎÅÏÓÅÎ ÊÉ Ï ÕÞÐÊ Ê ÒÐÄÌÍÂÄÝÞÂÅÎ ÄÐÒÐÍÏÊÆÅÍÛÏÝË ÎÐÄÈÍÛ Ï ÌÐÎÒÊÍÓÇÊÊ Makefile.linux ISO_CHAR_SET = 1 LINKFLAGS = /home/moshkow/locale.o compress/Makefile.linux ISO_CHAR_SET = 1 LINKFLAGS = /home/moshkow/locale.o agrep/Makefile.linux ISO_CHAR_SET = 1 LINKFLAGS = /home/moshkow/locale.o index/Makefile.linux ISO_CHAR_SET = 1 LINKFLAGS = /home/moshkow/locale.o õÌÐÒÊÔÈËÆÅ ØÆÐÆ ÖÂËÍ locale.c Þ ÌÂÆÂÍÐÚ /home/moshkow þÕÌÔÐËÆÅ Þ /home/moshkow ÊÕÉÐÄÏÊÌÊ glimpse ê ÕÄÅÍÂËÆÅ COPY PASTE ÕÍÅÄÈÁÜÅÚÐ ÖÔÂÚÎÅÏÆ ÒÔÓÎÐ Þ ÐÌÐÙÌÐ xterm' òÐÕÍÅ ØÆÐÚÐ ÎÐÃÏÐ ÞÉÐÄÊÆÛ Þ ÌÂÆÂÍÐÚ glimse-?.? Ê ÚÐÞÐÔÊÆÛ ÆÂÎ "make" ###----------------------- CUT ---------------------------------------- USERDIR=/home/moshkow export USERDIR cd [ -d $USERDIR ] || USERDIR=`pwd` cd $USERDIR cat > lechitelx <<\EOF #!/bin/sh TMP=/tmp/anti$$ sed -e " s/isalpha/BESTAisAlpha/g s/isalnum/BESTAisAlnum/g s/isupper/BESTAisUpper/g s/islower/BESTAisLower/g s/toupper/BESTAtoUpper/g s/tolower/BESTAtoLower/g s/^ISO_CHAR_SET = 0$/ISO_CHAR_SET = 1/ s%^LINKFLAGS.*= %LINKFLAGS = $USERDIR/locale.o % s%^LDFLAGS.*= %LDFLAGS = $USERDIR/locale.o % s/OPTIMIZEFLAGS.*=.*-O$/OPTIMIZEFLAGS = -O2/ " $1 > $TMP mv $TMP $1 EOF chmod a+x lechitelx [ -f locale.c ] || cp public_html/book/WEBMASTER/locale.c . gcc -O2 -c locale.c cd glimpse-4.1 || exit 1 sh configure find . -type f \( -name "*.c" -o -name "*.h" -o -name "Makefile*" \) -exec $USERDIR/lechitelx {} \; -print ###----------------------- END CUT ---------------------------------------- öÂËÍ locale.c : */ static unsigned char BESTA_ISALPHA [256]={ 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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; static unsigned char BESTA_ISALNUM [256]={ 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,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0, 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; static unsigned char BESTA_ISUPPER [256]={ 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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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, }; static unsigned char BESTA_ISLOWER [256]={ 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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; static unsigned char BESTA_ASCII [256]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, '0','1','2','3','4','5','6','7','8','9', 58, 59, 60, 61, 62, 63, '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', 'P','Q','R','S','T','U','V','W','X','Y','Z','[', 92,']','^','_', '`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o', 'p','q','r','s','t','u','v','w','x','y','z','{','|','}','~',127, 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, 'á','â','÷','ç','ä','å','ö','ú','é','ê','ë','ì','í','î','ï','ð', 'ò','ó','ô','õ','æ','è','ã','þ','û','ý','ÿ','ù','ø','ü','à','ñ', 'Á','Â','×','Ç','Ä','Å','Ö','Ú','É','Ê','Ë','Ì','Í','Î','Ï','Ð', 'Ò','Ó','Ô','Õ','Æ','È','Ã','Þ','Û','Ý','ß','Ù','Ø','Ü','À',255 }; static unsigned char BESTA_TOLOWER [256]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o', 'p','q','r','s','t','u','v','w','x','y','z', 91, 92, 93, 94, 95, 96,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o', 'p','q','r','s','t','u','v','w','x','y','z',123,124,125,126,127, 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, 'Á','Â','×','Ç','Ä','Å','Ö','Ú','É','Ê','Ë','Ì','Í','Î','Ï','Ð', 'Ò','Ó','Ô','Õ','Æ','È','Ã','Þ','Û','Ý','ß','Ù','Ø','Ü','À',255, 'Á','Â','×','Ç','Ä','Å','Ö','Ú','É','Ê','Ë','Ì','Í','Î','Ï','Ð', 'Ò','Ó','Ô','Õ','Æ','È','Ã','Þ','Û','Ý','ß','Ù','Ø','Ü','À','ñ' }; static unsigned char BESTA_TOUPPER [256]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', 'P','Q','R','S','T','U','V','W','X','Y','Z', 91, 92, 93, 94, 95, 96,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', 'P','Q','R','S','T','U','V','W','X','Y','Z',123,124,125,126,127, 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, 'á','â','÷','ç','ä','å','ö','ú','é','ê','ë','ì','í','î','ï','ð', 'ò','ó','ô','õ','æ','è','ã','þ','û','ý','ÿ','ù','ø','ü','à','ñ', 'á','â','÷','ç','ä','å','ö','ú','é','ê','ë','ì','í','î','ï','ð', 'ò','ó','ô','õ','æ','è','ã','þ','û','ý','ÿ','ù','ø','ü','à','ƒ' }; BESTAisAlpha(c) unsigned char c ;{return BESTA_ISALPHA [c];} BESTAisAlnum(c) unsigned char c ;{return BESTA_ISALNUM [c];} BESTAisLower(c) unsigned char c ;{return BESTA_ISLOWER [c];} BESTAisUpper(c) unsigned char c ;{return BESTA_ISUPPER [c];} BESTAtoLower(c) unsigned char c ;{return BESTA_TOLOWER [c];} BESTAtoUpper(c) unsigned char c ;{return BESTA_TOUPPER [c];}