[ConvPL] by kravietZ                                                15.10.96


ISO-8859-2 (ISO-Latin-2)


                         Uniwersalny konwerter
                       standardw polskich znakw
                                 v2.07


ConvPL v2.07 jest programem freeware, rozprowadzanym wraz z kodem
rdowym. To co go wyrnia od innych tego typu programw, to liczba
obsugiwanych standardw, dowolno kierunkw konwersji i maksymalnie
uproszczona - cho dajca wiele moliwoci - linia polece.


:SKADNIA:
~~~~~~~~~~

        cpl <nn>[konwersja] [-] [plik1.txt] [plik2.txt ...]

Parametr <nn> to dwie cyfry/litery, okrelajce standard rdowy (pierwsza)
i docelowy (druga) przeprowadzanej konwersji.

Jednoznakowy i opcjonalny parametr [konwersja] okrela rodzaj stosowanej
konwersji zakocze linii pomidzy DOSem a Unixem i Amig.

**************************************************************************
Poczynajc od wersji 2.05 zasza do znaczca zmiana w 
okrelaniu plikw majcych ulec konwersji: podajemy kolejno nazwy 
plikw, ktre zostan przekonwertowane i zapisane _pod tymi samymi 
nazwami_. Mona rwnie podawa maski z uyciem znakw globalnych "*" 
i "?", tak jak to jest powszechnie przyjte pod DOSem i unixami.
***************************************************************************

Przykady:

        cpl 14 tekst1.txt        - plik tekst1.txt (Mazovia -> ISO-Latin-2)

        cpl 14 *.txt             - wszystkie pliki z rozszerzeniem .txt

        cpl 14 tekst1.txt *.doc  - plik tekst1.txt i wszystkie .doc

:OBSUGIWANE STANDARDY:
~~~~~~~~~~~~~~~~~~~~~~~

Dostpne standardy (podajemy dwie cyfry/litery):

         0: bez polskich liter (ASCII,CP473) d: Amiga FAT
         1: Mazovia                          e: Windows 3.0 (CP1250)
         2: FidoMazovia                      f: Amiga XJP
         3: IBM Latin 2 (CP852)              g: Ventura
         4: ISO Latin 2 (ISO-8859-2)         h: Macintosh
         5: DHN                              i: TeX PL
         6: CSK                              j: Corel 2.0
         7: Cyfromat (IINTE-ISIS)            k: Atari Calamus
         8: IEA                              l: FX
         9: LOGIC                            m: KWK
         a: Microvex                         n: MS Works
         b: Amiga PL                         o: ATM
         c: CP/J (Elwro 800 Junior)

:skrty:

Zamiast najczciej stosowanych konwersji mona stosowa skrty. Podajemy
wwczas tylko jedn liter:

             A: Mazovia na IBM Latin 2
             B: IBM Latin 2 na Mazovi

             C: Mazovia na ASCII
             D: IBM Latin 2 na ASCII

             F: FidoMazovia na Mazovi

Dowolno konwersji jest cakowita, z jednym wyjtkiem. Standard ASCII nie
moe by standardem rdowym konwersji (przyczyna jest oczywista - eby nie
pokaszani caego tekstu - ale jest od tej reguy wyjtek! patrz UWAGI).

:konwersja zakocze linii:

ConvPL umoliwia rwnoleg konwersj pomidzy tekstem spod DOSa, a tekstem
spod Unixa czy Amigi. Rodzaj docelowej konwersji okrelaj parametry:

          -: konwersja do tekstu Unixa (Amigi)  -> NL
          =: konwersja do tekstu DOSa           -> CR+LF

Zmieniem wystpujce w poprzednich wersjach oznaczenia tych parametrw
(/,\), poniewa ukonik odwrotny jest znakiem specjalnym pod unixami. 
Nowe ustawienia mona rwnie atwo zapamita: pod U*xem koniec linii 
to jeden znak (NL), wic jedna kreska: "-"; pod DOSem s to dwa znaki 
(CR+LF), std dwie kreski: "=". Logiczne ;)

Patrz rwnie rozdzia Uwagi, akapit Konwersja Unix<->DOS.

:PRACA W TRYBIE FILTRU:
~~~~~~~~~~~~~~~~~~~~~~~

ConvPL moe pracowa rwnie w trybie filtru. Podanie znaku "-" zamiast
nazw plikw spowoduje pobranie tekstu z standardowego urzdzenia wejcia 
- stdin (klawiatura) i zapisanie go do standardowego wyjcia - stdout 
(monitor, terminal, drukarka). Przykady:

        cpl A -                    - kada linia wpisywana z klawiatury bdzie
                                     pojawiaa si poniej po wciniciu
                                     <Enter>, znaki z kodu Mazovia bd
                                     zamieniane na IBM Latin 2

        cpl 13 <joke.txt >prn      - konwersja pliku joke.txt i wysanie
                                     wynikw bezporednio na drukark (DOS);
                                     czsto sam z tego korzystam, bo na moim PC
                                     pod DOSem mam Mazovi, a na drukarce CP852

Jeli nie chcemy zamieca sobie dysku, wydajemy nastpujce polecenia:

        cpl A - <joke.txt >nul (MSDOS) lub >/dev/null (Unix) ;)))

Tryb filtru umoliwia rwnie przetwarzanie tekstu w potoku (pipe).

Na przykad:

      type joke1.txt | cpl 14- - >joke3.txt (MSDOS)

Plik joke1.txt zostanie przepuszczony przez konwersj Mazovia -> ISO-Latin-2,
a koce linii zostan zamienione na mod unixow. Wynik zostanie 
zapisany do pliku joke3.txt

Zwr uwag na obecno dwch minusw w linii polece - kady peni inn
funkcj. Pierwszy, poczony z opisem konwersji ("14-"), wcza konwersj
zakocze linii. Drugi, samodzielny, wcza tryb filtru.

      cat joke.txt1 joke2.txt | cpl 14- - >joke3.txt (Unix)

Przyjmujc, e pliki joke.txt i joke2.txt s napisane oryginalnie
w Mazovii i pod MSDOSem, takie polecenie spowoduje poczenie obu plikw,
konwersj caoci z Mazovii na ISO Latin 2, i przy okazji z CR+LF -> NL, 
a nastpnie zapis do pliku joke3.txt.

Uruchamiajc ConvPL w tym trybie naley uwaa na pomyki takie jak ta:

        cpl A joke.txt >prn

Tekst zostanie przekonwertowany zgodnie z regu 13 (skrt "A"), ale na
drukark nie zostanie wysany, gdy ConvPL bdzie go zapisywa do pliku
joke.txt a nie na standardowe wyjcie. W rzeczywistoci powysze (bdne)
polecenie oznacza: konwertuj plik joke.txt, zapisujc wynik pod t sam nazw,
za na drukark wysyaj wyjcie przez program normalnie wywietlane na ekranie,
czyli komunikaty.

Polecenie ponisze spowoduje najprawdopodobniej uszkodzenie oryginalnego pliku,
wic naley si go wystrzega:

        cpl A - <joke.txt >joke.txt (obie nazwy takie same!)

Po prostu, system straci gow prbujc rwnoczenie czyta i pisa
do pliku, a ucierpi na tym tene plik.

Pamitajmy: aby uruchomi ConvPL w trybie filtru, potok danych musi
przychodzi ze stdin i wychodzi na stdout (a nie czciowo z pliku, czciowo
z potoku). Jeli nie wiesz o co chodzi, to poczytaj o potokach, filtrach oraz
roli symboli <, |, > itp. w poleceniach DOSa i Unixa.


:UWAGI:
~~~~~~~
:komentarz do standardw:

Za definicj Amiga PL dzikuj Marcinowi Kdzioce <2:484/15.16@fidonet>.

Definicje dodane w wersji 1.75 udostpni mi Edwin Wierszelis
<2:482/16@fidonet>, autor konwertera KPN.

"Standard" ASCII to oczywicie zwyke literki ASCII, zastpujce odpowiednie
polskie znaki. Taki tekst zwie si zwykle "polskawym", a standard okrela
jako CP473 (oryginalna, amerykaska strona kodowa).

FidoMazovia jest pformalnym (jak caa reszta ;) standardem, przyjtym 
w rodowisku sieci Fido. Jedyna rnica w stosunku do klasycznej Mazovii 
to zamiana znaku c' (141) na c-cedilla (135), wynikajca ze wzgldow 
technicznych.

Standard IBM Latin 2 (CP852) jest lansowany przez Micro$oft wraz z systemem
MSDOS. Kolejny produkt M$, Windows, by tak niesychanie wanym wydarzeniem
na rynku oprogramowania ;) , e oczywicie musia mie wasny standard
kodowania polskich znakw. Jest to tzw. strona kodowa 1250 (CP1250). 
Znany te jako Windows-EE, czyli strona kodowa dla Europy Wschodniej.

ISO-8859-2, znany te jako ISO Latin 2 jest standardem rozpowszechnionym
zwaszcza w systemach unixowych i pracujacych pod X-windowsami. Jest rwnie
standardem zalecanym przez Polskie Normy oraz uznanym za obowizujcy
w polskojzycznym WWW oraz, ostatnio, w polskim UseNecie.

Standard FAT jest jednym z amigowskich dialektw, znalezionym w diskmagu
FAT przez Edwina Wierszelisa.

Standard DHN jest rozpowszechniony wraz z polskim ChiWriterem.

Standardy FX, KWK, i MS Works pochodz z konwertera MPL,
podpisanego "KKL (23 Wrzesien 1995 Rabka)". Niestety nie byem w stanie
skontaktowa si z autorem.

Niektre standardy pochodz z Polskiej Strony Ogonkowej 
http://www.uci.agh.edu.pl/ogonki/, na ktrej mona znale wiele 
cennych informacji na temat polskich liter.

Przydatnym narzdziem dla kadego, kto ma problemy z rnymi standardami
kodowania znakw narodowych bdzie program recode, do znalezienia
w kadym archiwum programw GNU (np. ftp://ftp.agh.edu.pl/pub/gnu/).

:konwersja tekstu Unix<->DOS:

Pod Unixem kada linijka tekstu koczy si znakiem NL (new line) o kodzie 0xa,
rwnoznaczny DOSowemu LF (line feed). Pod DOSem zakoczenie linii stanowi
para znakw CR+LF, czyli 0xd,0xa. Parametr "-" wymusza zakoczenie linii
znakiem NL, za "=" - par CR+LF. Brak okrelonego kierunku konwersji
nie spowoduje adnej zmiany kocw linii w pliku wynikowym. Parametry konwersji
zakocze linii dodaje si "na trzeciego" do parametrw konwersji standardw.

UWAGA: od wersji 2.01 istnieje moliwo wykonywania konwersji zakocze linii
bez zmiany standardu polskich znakw. Wystarczy jako standard rdowy
poda ASCII - "0" (do tej pory byo to niedopuszczalne), za jako drugi
parametr opcj konwersji zakocze linii "-" lub "=".  Drugi parametr,
podany zgodnie z konwencj i okrelajcy standard docelowy jest w tym
wypadku ignorowany. A zatem, kady z poniszych przykadw ma takie samo
dziaanie:

        cpl 0- joke.txt
        cpl 00- joke.txt
        cpl 02- joke.txt         ("2" jest cakiem ignorowane)

czyli konwersj zakocze linii do pojedyczych NL, bez naruszania
polskich liter.

:kod rdowy:

Program by z powodzeniem kompilowany Borlandem 3.1, gcc 2.7.2 pod Linuxem
(a.out, ELF), oraz DJGPP pod DOSem (gcc 2.6.3). Prosz o kontakt w razie 
wystpienia niekompatybilnoci kodu rdowego w innych systemach.

Wersja 2.04 i wysze s kompilowalne tylko pod Linuxem (i by moe
innymi unixami).

:licznik linii:

Typowy "wodotrysk". Zwalnia prac o ok. 30%. Standardowo wyczony, w celu
wczenia trzeba przekompilowa rda bez opcji NO_LINE_COUNT. Licznik jest
zawsze wyczony podczas pracy w trybie stdin/stdout (czyli zazwyczaj jako
filtr itp.).

:inne opcje:

-?, -h, --help: wywietlaj list wszystkich dostpnych parametrw,
                skadni linii komend itp.
-V,  --version: wywietla (na stdout) numer wersji CPL
-L, --licencja: wywietlan licencj uytkowania programu.
-S, --standard: wywietlaj tabelk wszystkich obsugiwanych
                standardw polskich znakw.

:znane bdy:

Tekst nie moe zawiera znaku ASCII 0 (^@), ktry jest uywany jako
znacznik koca pliku.

:HISTORIA:
~~~~~~~~~~
        --- MSDOS, Linux i reszta ---
1.0     pierwsza wersja (quick fix dla pakietu PGP-pl);
1.2     definicje standardw przeniesione do polish.c; par nowych definicji;
1.3     Amiga PL; nowy ukad polish.c;
1.5     nieco przyspieszona praca; nowy kod rdowy, makefile;
1.6     skrty dla najczciej uywanych konwersji; tryb stdin/stdout (filtr)
1.7     konwersja midzy 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, usunite stare pluskwy, wprowadzone nowe ;)
        dodane rozpoznawanie standardow
2.01    kilka dodatkw, zmiany w interpretacji niektrych polece (patrz Uwagi)
2.02    moliwo skompilowania jako CGI; umoliwia to wywoywanie CPL przez
        serwer WWW i konwersj tekstw dokonywan on-line (patrz Uwagi)
        --- tylko Linux ---
2.04b   obsuga znakw globalnych, a co si z tym wie - zmiana 
        skadni linii polece - sprawd powyej.
2.05    dodane nowe standardy; usunem moliwo skompilowania jako
        CGI - w zwizku z trendem ujednolicania standardu na stronach
        WWW (ISO-8859-2), lokalne konwertery stron trac sens; poprawione
        dziaanie niektrych opcji.
2.06    drobne zmiany i poprawki
2.07    poprawiona kompilacja pod rnymi wersjami Linuxa

..............................................................................
Autor            : Pawel Krawczyk <kravietz@ceti.com.pl>
                                  <2:486/23@fidonet>
Najnowsza wersja : ftp://pipeta.chemia.pk.edu.pl/pub/convpl/
                   http://ceti.com.pl/~kravietz/cpl.html

