[ConvPL] by kravietZ 31.01.96 (Mazovia) Uniwersalny konwerter standard˘w polskich znak˘w v2.01 ConvPL v2.01 jest programem freeware, rozprowadzanym wraz z kodem ¦r˘d’owym. To co go wyr˘§nia od innych tego typu program˘w, to liczba obs’ugiwanych standard˘w, dowolnožŤ kierunk˘w konwersji i maksymalnie uproszczona - choŤ daj†ca wiele mo§liwožci - linia polece¤. :SKśADNIA: ~~~~~~~~~~ cpl [] [] [] Parametr to dwie cyfry/litery, okrežlaj†ce standard ¦r˘d’owy (pierwsza) i docelowy (druga) przeprowadzanej konwersji. Parametr okrežla rodzaj opcjonalnie stosowanej konwersji zako¤czenia linii pomi‘dzy DOSem a Unixem i Amig†. Parametry "wejscie.txt" i "wyjscie.txt" to nazwy plik˘w odpowiednio ¦r˘d’owego i docelowego. ******************************************************************** Podanie tylko jednej nazwy - pliku wejžciowego - spowoduje zapisanie tekstu po konwersji pod t† sam† nazw†. ******************************************************************** :OBSśUGIWANE STANDARDY: ~~~~~~~~~~~~~~~~~~~~~~~ Dost‘pne standardy (podajemy dwie cyfry/litery): 0: bez polskich liter (ASCII,CP473) a: Microvex 1: Mazovia b: Amiga PL 2: FidoMazovia c: CP/J (Elwro 800 Junior) 3: IBM-Latin/2 (CP852) d: FAT 4: ISO-Latin/2 (ISO-8859/2) e: Windows 3.0 (CP1250) 5: DHN f: XJP 6: CSK g: Ventura 7: Cyfromat h: Macintosh 8: IEA i: TeX PL 9: LOGIC j: Corel 2.0 Podanie "?" spowoduje pr˘b‘ rozpoznania zastosowanego w tekžcie standardu. Wi‘cej na ten temat znajdziesz w pliku qpl.txt. :skr˘ty: Zamiast najcz‘žciej stosowanych konwersji mo§na stosowaŤ skr˘ty. Podajemy w˘wczas tylko jedn† liter‘: l: Mazovia na IBM-Latin/2 m: IBM-Latin/2 na Mazovi‘ x: Mazovia na ASCII y: IBM-Latin/2 na ASCII z: Fido-Mazovia na Mazovi‘ DowolnožŤ konwersji jest ca’kowita, z jednym wyj†tkiem. Standard ASCII nie mo§e byŤ standardem ¦r˘d’owym konwersji (przyczyna jest chyba dožŤ oczywista). :konwersja zako¤cze¤ linii: ConvPL umo§liwia r˘wnoleg’† konwersj‘ pomi‘dzy tekstem spod DOSa, a tekstem spod Unixa czy Amigi. Rodzaj docelowej konwersji okrežlaj† parametry: -: konwersja do tekstu Unixa (Amigi) -> NL =: konwersja do tekstu DOSa -> CR+LF Zmieni’em wyst‘puj†ce w poprzednich wersjach oznaczenia tych parametr˘w (/,\), poniewa§ backslash jest znakiem specjalnym pod U*xem. Nowe ustawienia mo§na r˘wnie ’atwo zapami‘taŤ: pod U*xem koniec linii to jeden znak (NL), wi‘c jedna kreska: "-"; pod DOSem s† to dwa znaki (CR+LF), st†d dwie kreski: "=". Patrz r˘wnie§ rozdzia’ Uwagi, akapit Konwersja Unix<->DOS. :PRACA W TRYBIE FILTRU: ~~~~~~~~~~~~~~~~~~~~~~~ ConvPL mo§e pracowaŤ r˘wnie§ w trybie filtru. Brak nazw plik˘w we/wy spowoduje pobranie tekstu z standardowego urz†dzenia wejžcia - stdin (klawiatura) i zapisanie go do standardowego wyjžcia - stdout (monitor, terminal, drukarka). Przyk’ady: cpl l - ka§da linia wpisywana z klawiatury b‘dzie pojawia’a si‘ poni§ej po wcižni‘ciu , znaki z kodu Mazovia b‘d† zamieniane na IBM Latin 2 cpl l prn - konwersja pliku joke.txt i wys’anie wynik˘w bezpožrednio na drukark‘ (DOS); cpl l joke2.txt - r˘wnoznaczne poleceniu "cpl l joke.txt" Ježli nie chcemy zažmiecaŤ sobie dysku, wydajemy nast‘puj†ce polecenia: cpl l nul (MSDOS) Tryb filtru umo§liwia r˘wnie§ przetwarzanie tekstu w potoku (pipe). Przyk’ad: type joke.txt joke2.txt | cpl 14/ >joke3.txt Przyjmuj†c, §e pliki joke.txt i joke2.txt s† napisane oryginalnie w Mazovii i pod MSDOSem, takie polecenie spowoduje po’†czenie obu plik˘w, konwersj‘ z Mazovii na ISO-Latin-2, i przy okazji z CR+LF -> NL, a nast‘pnie zapis do pliku joke3.txt. Uruchamiaj†c ConvPL w tym trybie nale§y uwa§aŤ na pomy’ki takie jak ta: cpl l joke.txt >prn -tekst zostanie przekonwertowany zgodnie z regu’† 13 (skr˘t "l"), ale na drukark‘ nie zostanie wys’any, gdy§ ConvPL b‘dzie go zapisywa’ do pliku joke.txt a nie na standardowe wyjžcie. W rzeczywistožci powy§sze (b’‘dne) polecenie oznacza: konwertuj plik joke.txt, zapisuj†c wynik pod t† sam† nazw†, zaž na drukark‘ wysy’aj wyjžcie przez program normalnie wyžwietlane na ekranie, czyli komunikaty. Uszkodzenie pliku spowoduje polecenie typu: cpl l joke.txt (obie nazwy takie same) Po prostu, system wy’o§y si‘ na pr˘bie r˘wnoczesnego czytania i pisania do pliku, a ucierpi na tym ten§e plik. Pami‘tajmy: aby uruchomiŤ ConvPL w trybie filtru, potok danych musi przychodziŤ ze stdin i wychodziŤ na stdout. Ježli nie wiesz o co chodzi, to poczytaj o potokach, filtrach oraz roli symboli <, |, > itp. w poleceniach DOSa i Unixa. :UWAGI: ~~~~~~~ :komentarz do standard˘w: Za definicj‘ Amiga PL dzi‘kuj‘ Marcinowi K†dzio’ce <2:484/15.16@fidonet>. Definicje dodane w wersji 1.75 udost‘pni’ mi Edwin Wierszelis <2:482/16@fidonet>, autor konwertera KPN. "Standard" ASCII to oczywižcie zwyk’e literki ASCII, zast‘puj†ce odpowiednie polskie znaki. Taki tekst zwie si‘ zwykle "polskawym", a standard okrežla jako CP473 (podstawowa, ameryka¤ska strona kodowa). Fido-Mazovia jest p˘’formalnym standardem, przyj‘tym w žrodowisku sieci Fido. Jedyna r˘§nica w stosunku do klasycznej Mazovii to zamiana znaku c' (141) na c-cedilla (135), wynikaj†ca ze wzgl‘dow technicznych. Standard IBM-Latin/2 (CP852), rozpowszechniony g’˘wnie w žrodowisku DOSa, jest lansowany m.in. przez Micro$oft. ISO-8859/2, znany te§ jako ISO-Latin/2 jest standardem rozpowszechnionym zw’aszcza w systemach unixowych, pracujacych pod X-windowsami. Jest r˘wnie§ standardem zalecanym przez Polskie Normy. Standard FAT jest jednym z amigowskich dialekt˘w, znalezionym w diskmagu pt. FAT przez Edwina Wierszelisa. Standard Windows 3.0 jest uproszczon†, 8-bitow† wersj† UniCode, zdefiniowan† jako strona kodowa 1250 (CP1250). Znany te§ jako Windows-EE, czyli strona kodowa dla Europy Wschodniej. Standard DHN jest rozpowszechniony wraz z polskim ChiWriterem. :konwersja tekstu Unix<->DOS: Pod Unixem ka§da linijka tekstu ko¤czy si‘ znakiem NL (new line) o kodzie 0xa, r˘wnoznaczny DOSowemu LF (line feed). Pod DOSem zako¤czenie linii stanowi para znak˘w CR+LF, czyli 0x0d,0x0a. Parametr "-" wymusza zako¤czenie linii znakiem NL, zaž "=" - par† CR+LF. Brak okrežlonego kierunku konwersji nie spowoduje §adnej zmiany ko¤c˘w linii w pliku wynikowym. Parametry konwersji zako¤cze¤ linii dodaje si‘ "na trzeciego" do parametr˘w konwersji standard˘w. UWAGA: od wersji 2.1 istnieje mo§liwož‡ wykonywania konwersji zako¤cze¤ linii bez zmiany standardu polskich znak˘w. Wystarczy jako standard ¦r˘d’owy poda‡ ASCII - "0" (do tej pory by’o to niedopuszczalne), zaž jako drugi parametr opcj‘ konwersji zako¤cze¤ linii "-" lub "=". Drugi parametr, podany zgodnie z konwencj† i okrežlaj†cy standard docelowy jest w tym wypadku ignorowany. A zatem, ka§dy z poni§szych przyk’ad˘w ma takie samo dzia’anie: cpl 0- joke.txt cpl 00- joke.txt cpl 02- joke.txt czyli konwersj‘ zako¤cze¤ linii do pojedy¤czych NL, bez naruszania polskich liter. :kod ¦r˘d’owy: Program by’ z powodzeniem kompilowany Borlandem 3.1, gcc 2.7.0 pod Linuxem (a.out) oraz DJGPP pod DOSem (gcc 2.6.3). Prosz‘ o kontakt w razie wyst†pienia niekompatybilnožci kodu ¦r˘d’owego w innych systemach. :licznik linii: Typowy "wodotrysk". Zwalnia prac‘ o ok. 30%. Standardowo wy’†czony, w celu w’†czenia trzeba przekompilowaŤ ¦r˘d’a bez opcji NO_LINE_COUNT. Licznik jest zawsze wy’†czony podczas pracy w trybie stdin/stdout (czyli zazwyczaj jako filtr, CGI itp.). :inne opcje: -?, -h, /?, --help: wyžwietlaj† list‘ wszystkich dost‘pnych parametr˘w, sk’adni‘ linii komend itp. -V, --version: wyžwietla (na stdout) numer wersji CPL -L, --licencja: wyžwietlan† licencj‘ u§ytkowania programu. -S, --standard: wyžwietlaj† tabelk‘ wszystkich obs’ugiwanych standard˘w polskich znak˘w. :HISTORIA: ~~~~~~~~~~ 1.0 pierwsza wersja (dla pakietu PGP-pl); 1.2 definicje standard˘w przeniesione do polish.c; par‘ nowych definicji; 1.3 Amiga PL; nowy uk’ad polish.c; 1.5 nieco przyspieszona praca; nowy kod ¦r˘d’owy, makefile; 1.6 skr˘ty dla najcz‘žciej u§ywanych konwersji; tryb stdin/stdout (filtr) 1.7 konwersja mi‘dzy tekstem unixowym (amigowym) i DOSowym 1.72 licznik linii 1.75 nowe definicje (Win 3.0, FAT, XJP, CP/J); 1.76 nowe definicje (Ventura, Macintosh, TeX PL i Corel); 1.90 dodana konwersja wielu plikow, pare innych zmian; 2.00 napisany w 90% od nowa, usuni‘te stare pluskwy, wprowadzone nowe ;) dodane rozpoznawanie standardow 2.01 kilka dodatk˘w, zmiany w interpretacji niekt˘rych polece¤ W planach: * 'spolszczanie' cyrylicy * kody wieloznakowe * znaki globalne, exclude .............................................................................. Autor : Pawel Krawczyk <2:486/18.4@fidonet> Najnowsza wersja : ftp://pipeta.chemia.pk.edu.pl/pub/convpl/cpl201.zip