gif gif gif
Dalej: pine a polskie literki Wyżej: PC-Pine a polskie literki Poprzednio: PC-Pine a polskie literki

Wstęp: pine i UNIX

 

Popularny (w środowisku UNIX) program pocztowy Pine ma całkiem nieźle rozwiązane mechanizmy obsługi przesyłek MIME (czytaj również jego dokumentacje.). Kwestia wprowadzania i wyświetlania "polskich" liter w środowisku UNIX pozostawiona została przemyślności użytkowników (lub też systemu operacyjnego). Jedyną czynnością konfiguracyjną jest poprawne ustawienie w pliku .pinerec wartości zmiennej character-set. W przypadku liter polskich powinna ona mieć wartość character-set=ISO-8859-2.

Konfiguracji programu pine dokunuje się najprościej wybierając w menu głównym pozycję Configure, a następnie Setup. Wśród wielu pozycji (które możemy zmienić zgodnie ze swoimi upodobaniami) znajdujemy ,,character-set'' (wystarczy nacisnąć W (od Where is) i wpisać pierwsze znaki szukanego wyrazu i nacisnąć Enter) i w odpowiednim polu wpisujemy ,,ISO-8859-2''. Następnie wychodzimy z menu konfiguracyjnego (Exit - program poprosi o potwierdzenie wprowadzonych zmian). I gotowe!

Poza tym, należy mieć jeszcze odpowiednie fonty i przystosować sobie klawiaturę.

Jeżeli pracujemy z terminala znakowego (nieumiejącego przekodowywać ,,w locie'') w środowisku DOS lub Windows sprawy się nieco komplikują, ale i na to znaleziono jakieś rozwiązanie.

Problem można również rozwiązać w inny sposób. Mechanizmy wbudowane w najnowsze wersje programu (o ile pamiętam począwszy od wersji 3.92) pozwalają poddać przesyłkę przed wyświetleniem procedurze obróbki zależnej od zawartość przesyłki.

Program pozwala zdefiniować tak zwany ,,filtr'', który będzie uruchamiany jeżeli w treści przesyłki wystąpi zadana sekwencja znaków. W naszym przypdaku, będziemy chcieli zamienić wszystkie znaki ,,polskie'' ich łacińskimi odpowiednikami - zamienić litery ą ć ę ł ń ó ś ż ź Ą Ć Ę Ł Ń Ó Ś Ż Ź na a c e l n o s z z A C E L N O S Z Z (lub jakiekolwiek inne).

Aby zdefiniować filtr musimy wykonać kilka czynności:

  1. Obmyśleć w jaki sposób dokonamy tej zamiany.

    Ja proponiję dwa proste sposoby:

    Każde inne rozwiązanie jest również dopuszczalne (o ile tylko działa poprawnie).gif

  2. W pliku konfiguracyjnym .pinrrc zdefiniować wartość zmiennej display-filters. Zmienna ta określa procedurę jakiej ma być poddana wiadomość po odkodowaniu MIME a przed wyświetleniem jej na ekranie. W zależności od ,,zawartości'' przesyłki podejmowane mogą być różne akcje. Ogólna postać definicji wygląda w sposób następijący:
    <trigger> <command and args>
    gdzie:
    trigger
    to tekst, znalezienie którego w treści wiadomości powoduje podjęcie zdefiniowanej akcji; jeżeli tekst zawiera odstępy, musi być cały ujęty w spacje; pusty ciąg znaków ("") spowoduje, że polecenie będzie uruchamiane zawsze.

    W normalnych warunkach wystąpienie zadanego ciągu znaków gdziekolwiek w treści wiadomości spowoduje spełnienie warunku i uruchomienie zdefiniowanej proceduru. Jeżeli chcemy poszukiwać zadanego ciągu znaków w szczególnych miejscach musimy użyć kilku dostępnych funkcji:

    _CHARSET(string)_
    polecenie to nakazuje wykonać zadane polecenie jeżeli przesyłka została nadana z użyciem zdefiniowanego zestawu znaków (na przykład ISO-8859-2 lub ISO-2022-JP).
    _LEADING(string)_
    nakazuje poszukiwać zadanego ciągu znaków wśród pierwszych znaków wiadomości.
    _BEGINNING(string)_
    poszukuje zadanego ciągu znaków na początku wiersza tekstu.

    command and args
    jest to pocecenie (wraz ze wszystkimi argumentami), które ma być wykonane po znalezieniu zadanego ciągu znaków. Nazwa polecenia musi być podana jako pełna ścieżka dostępu (to znaczy wraz z podaniem pełnej nazwy kartoteki, w której program się znajduje). Wśród argumentów mogą pojawić się następujące symbole specjalne:
    _RECIPIENTS_
    zostanie zastąpione przez listę wszystkich odbiorców listu; poszczególne adresu oddzielone są odstępami.
    _TMPFILE_
    zostanie zastąpione przez pełną nazwę pliku, w którym znajduje się tekst, który ma być poddany ,,filtracji''.
    _RESULTFILE_
    zostanie zastąpiony przez pełną nazwę pliku, w którym zapisane zostaną wyniki filtracji.
    _DATAFILE_
    zostanie zastąpiony przez unikalną, generowaną raz podczas sesji korzystania z programu nazwę pliku, służącego do przechowywania tymczasowych informacji niezbędnych podczas kolejnych wywołań programu filtra. Po zakończeniu sesji plik jest kasowany.
    _PREPENDKEY_
    zostanie zastąpione przez losowo wygenerowaną liczbę unikalną dla każdej sesji programu i generowaną raz podczas sesji. Może być ona wykorzystana do tworzenia unikalnych nazw plików.

    Jeżeli w lini komendy nie wystąpi ani _TMPFILE_ ani _RESULTFILE_ zakłada się, że filtr czyta dane ze standardowego wejścia i wyniki wyprowadza na standardowe wyjście.

    Przykładowy fragment pliku .pinerc wyglądać może w sposób następujący (wszytsko powinno być zapisane w jednej linii!):

    display-filters=_CHARSET_(ISO-8859-2)_  
      /usr/bin/tr "ąćęłńóśżźĄĆĘŁŃÓŚŻŹ" "acelnoszzACELNOSZZ"
    
    (wszystkie wiadomości napisane z wykorzystaniem zestawu znaków ISO-8859-2 poddane będą filtracji za pomocą programu tr).

  3. Po dokonaniu wszystkich modyfikacji powinniśmy sprawdzić poprawność działania programu. W tym celu możemy wysłać list na adres mime@immt.pwr.wroc.pl zawierający w polu Subject: treść daj iso-8859-2. W odpowiedzi powinniśmy otrzymać list zawierający pełny zestaw znaków ISO-8859-2 wraz z ich opisem.

    Zwracam jednak uwagę, że nasz filtr dokonuje konwersji jedynie polskich znaków pozostawiając wszystkie pozostałe znaki z zestawu Latin2 nietknięte. Porządny filtr powinien używać jakiegoś lepszego rozwiązania.

Powyższych mechanizmów można również użyć do automatycznego kodowania lub rozkodowywania (podpisywania lub sprawdzania elektronicznych podpisów) przesyłek z wykorzystaniem PGP.



gif gif gif
Dalej: pine a polskie literki Wyżej: PC-Pine a polskie literki Poprzednio: PC-Pine a polskie literki



(C) by Wojciech Myszka
PON, 7 PAŹD 1996 12:43:12