@DATABASE TruncateMail.guide
@AUTHOR "Marek Szyprowski"
@(C) Marek Szyprowski 2000/2001
@$VER 1.3 (02.02.2001)
@NODE MAIN "TruncateMail.guide"




       @{"  Polski  " LINK Polski}                   @{"  English  " LINK English}




@ENDNODE

@NODE Polski "Spis treôci"

      Spis Treôci:

 @{" Wprowadzenie " link wprowadzenie}      Co to jest?
 @{" Moûliwoôci " link mozliwosci}        Co oferuje program?

 @{" Instalacja " link instalacja}        Jak zainstalowaê?
 @{" Konfiguracja " link konfiguracja}      Co moûna zmieniê?

 @{" Skîadnia " link skladnia}          Jak go uûywaê?

 @{" Prawa autorskie " link prawa_autorskie}   Jakie jest status programu?

 @{" Bîëdy " link bledy}             Czy coô dziaîa nie tak?
 @{" Przyszîoôê " link przyszlosc}        Co nowego w przyszîoôci?
 @{" Historia " link historia}          Co byîo wczeôniej?

 @{" Autor " link autor}             Co wiadomo o autorze?


@ENDNODE

@NODE wprowadzenie "Wprowadzenie"

@{b}@{fg shine}Co to jest? @{fg text}@{ub}

@{b}Truncate Mail@{ub} to program napisany w C, którego zadaniem jest
usuwanie wszystkich zbëdnych czëôci listów e-mail - wiëkszoôci nie
uûywanych pól z nagîówka oraz reklam doklejanych przez róûne
serwery (np. list dyskusyjnych, czy darmowych kont). Efekt jest
zdumiewajâcy. Przeciëtne maile z list dyskusyjnych chudnâ nawet o
45%. Moûe nie jest to duûe zysk na pojedyïczym  pliku, jednak
najczëôciej takich plików sâ setki lub nawet tysiâce...


@ENDNODE
@NODE mozliwosci "Moûliwoôci"

@{b}@{fg shine}Co oferuje program?@{fg text}@{ub}

* moûliwoôê peînej konfiguracji programu poprzez plik konfiguracyjny

* rozpoznaje i omija zaîâczniki do listów

* jest bardzo szybki - przetworzenie 500 listów z listy dyskusyjnej
  WFMH AmigaPL trwa u mnie ok. 15 sekund

* wspóîpracuje z @{b}YAM@{ub}em dziëki dodatkowemu skryptowi w arexxie

* nie wymaga duûo pamiëci (tylko kilkanaôcie kilobajtów - nawet do
  przetworzenia bardzo duûych listów)

@ENDNODE

@NODE instalacja "Instalacja"

@{b}@{fg shine}Jak zainstalowaê?@{fg text}@{ub}

Instalacja jest bardzo prosta. Wystarczy przekopiowaê plik
"truncatemail" do katalogu C:, a plik "truncatemail.prefs" do
katalogu ENVARC: na dysku systemowym.

Jeûeli chcemy uruchamiaê @{b}Truncate Mail@{ub}a bezpoôrednio z
poziomu @{b}YAM@{ub}a, musimy zainstalowaê dodatkowy skrypt w arexxie.
Plik "TruncateFolder.yam" naleûy skopiowaê do katalogu
"YAM:rexx". Nastëpnie w oknie konfiguracyjnym programu @{b}YAM@{ub},
w zakîadce "Arexx" naleûy jeden z "wpisów do menu Skrypty"
nazwaê TruncateFolder, typ ustawiê na "AmigaDOS", a w pole skrypt
wpisaê "run >nil: rx rexx/TruncateFolder.yam". Naleûy równieû
zaznaczyê opcjë "Czekaj na zakoïczenie".

@ENDNODE
@NODE konfiguracja "Konfiguracja"

@{b}@{fg shine}Co moûna zmieniê?@{fg text}@{ub}

Po uruchomieniu @{b}TruncateMail@{ub} sprawdza plik konfiguracyjny
ENVARC:truncatemail.prefs. Plik ten skîada sië z 2 linii.

W pierwszej zapisane sâ nazwy pól (pooddzielane spacjami), jakie program ma
pozostawiê w wynikowym liôcie. Na tâ listë nie ma potrzeby wpisywania pola
"content" (i wszystkich z nim zwiâzanych) - jest ono specjalnie traktowane i
nigdy nie zostanie skasowane, gdyû odpowiada za poprawnâ obsîugë zaîâczników.

Druga linia zawiera znaki (równieû pooddzielane spacjami), z których zbudowana
jest linia rozpoczynajâca reklamë.
                                             
W kolejnych liniach znajdujâ sië filtry, okreôlajâce, przy jakich listach
program nie bëdzie ingerowaî w ich treôê. W liniach tych moûna stosowaê typowe
wzorce znane z AmigaDOSu. Dopisanie linii: "Subject:#?aminews#?", spowoduje,
ûe program bëdzie usuwaî tylko zbëdne pola z nagîówków wszystkich listów,
które majâ w tytule sîowo "aminews", natomiast dodanie linii
"~(Reply-To:#?amigapl@amiga.com.pl#?)" zabezpieczy treôê wszystkich listów z
wyjâtkiem tych z listy dyskusyjnej AmigaPL.

Przy stosowaniu wzorców z negacjâ (znak "~") naleûy uwaûaê. Program sprawdza
bowiem, czy dana linia nagîówka pasuje do @{b}jakiegokolwiek@{ub} wzorca podanego w
pliku z preferencjami. Oznacza to, ûe jeûeli decydujemy sië na uûywanie kilku
takich wzorców, musimy napisaê je wszystkie w jednej linijce (jako jeden
wzorzec), np.:
~(Reply-To:#?amigapl@amiga.com.pl#?|Reply-To:#?amigadev-pl@yahoogroups.com#?)

  
Oto przykîadowy plik konfiguracyjny:

@{fg back}@{bg text}from: to: date: subject: reply-to: message-id:
- _ =                                         @{bg back}@{fg text}
@{fg back}@{bg text}Subject:#?aminews#?                           @{bg back}@{fg text}

@ENDNODE
@NODE skladnia "Skîadnia"

@{b}@{fg shine}Jak go uûywaê?@{fg text}@{ub}

Wzorzec wywoîania programu to:

truncatemail PATTERN/A CHECKDATE/S ONLYHEADERS/S IGNOREFILTERS/S

Parametr PATTERN oznacza dowolny poprawny wzorzec AmigaDOSu (np.
YAM:aminet/0#?). Okreôla on, jakie pliki przetworzy program.

Przeîâcznik CHECKDATE kaûe programowi porównaê datë przetwarzanych plików z
datâ pliku kontrolnego ".lasttruncated", znajdujâcego sië w tym samym
katalogu. Wszystkie pliki starsze od niego zostanâ zignorowane. Na koniec
program uaktualni datë pliku kontrolnego.
                                       
Przeîâcznik ONLYHEADERS kaûe progromowi modyfikowaê tylko i wyîâcznie nagîówek
listu. Wîaôciwa treôê e-maila nie zostanie zmieniona, nawet, jeûeli wystëpujâ
w niej reklamy.
               
Przeîâcznik IGNOREFILTERS, jak sama nazwa wskazuje, kaûe programowi zignorowaê
filtry ustawione w pliku konfiguracyjnym. Oznacza to, ûe treôê wszystkich
przetwarzanych listów zostanie równieû pozbawiona reklam.
 
Oto przykîadowe wywoîania programu:

@{fg back}@{bg text}truncatemail Yam:aminet/08247.009@{fg text}@{bg back}
Program wytnie zbëdne czëôci w liôcie Yam:aminet/08247.009.

@{fg back}@{bg text}truncatemail Yam:amigapl/0#? checkdate@{fg text}@{bg back}
Program przetworzy wszystkie nowe (od poprzedniego uruchomienia)
pliki w katalogu Yam:amigapl, pasujâce do wzorca "0#?".

@{fg back}@{bg text}truncatemail Yam:incoming/0#? checkdate onlyheaders@{fg text}@{bg back}
Program przetworzy wszystkie nowe listy w teczce "Yam:incoming". Usuniëte
zostanâ tylko zbëdne pola z nagîówka.

Jeszcze prostsze jest korzystanie z programu z poziomu @{b}YAM@{ub}a, jeûeli
mamy zainstalowany skrypt "TruncateFolder.yam". Wystarczy wybraê opcjë
"TruncateFolder" z menu Skrypty, a program sam przetworzy wszystkie nowe (od
poprzedniego jego uruchomienia) listy w aktualnej teczce. Aby zaoszczëdziê
czas skrypt nie kaûe aktualizowaê indeksu danej teczki, przez co @{b}YAM@{ub}
bëdzie pokazywaî trochë wiëksze rozmiary plików z listami. Nie przeszkadza to
jednak w pracy.

@ENDNODE
@NODE prawa_autorskie "Prawa autorskie"

@{b}@{fg shine}Jaki jest status programu?@{fg text}@{ub}

Program jest programem freeware. Moûesz dowolnie rozpowszechniaê niezmienione
wersje. Autor nie bierze ûadnej odpowiedzialnoôci za dziaîanie programu i
ewentualne szkody wyrzâdzone przez niego (np. skasowanie listu). Uûywasz go na
wîasne ryzyko!

@ENDNODE
@NODE bledy "Bîëdy"

@{b}@{fg shine}Czy coô dziaîa nie tak?@{fg text}@{ub}

Niektórzy budujâ ramki wokóî sygnaturek ze znaków "-", "_" i "=", co powoduje,
ûe TruncateMail rozpoznaje je jako reklamy i usuwa.

Program "gîupieje" jeûeli pola CONTENT w nagîówku majâ bîëdnâ zawartoôê.
               
Skrypt TruncateFolder.yam nie potrafi znaleúê katalogu teczki, jeûeli jej
ôcieûka dostëpu zawiera spacje.
 
@ENDNODE
@NODE przyszlosc "Przyszîoôê"

@{b}@{fg shine}Co nowego w przyszîoôci?@{fg text}@{ub}

* Poprawa ewentualnych bîëdów
   
* Obsîuga plików Mailbox
 
Jeûeli chciaîbyô, abym dodaê coô, napisz @{"do mnie" link autor}.

@ENDNODE
@NODE historia "Historia"

@{b}@{fg shine}Co byîo wczeôniej?@{fg text}@{ub}

v1.x - bardzo wolno dziaîajâce makro w arexxie

v2.x - skrypt w AmigaDOSie - proteza i program napisany w czystym
       ANSI C

v3.0 - samodzielny program napisany w C z wykorzystaniem amigowych
       bibliotek

v3.01 - usuniëty gîupi bîâd - TruncateMail nie mógî odczytaê preferencji
            
v3.1 - program zrekompilowany pod GCC
     - nowa, mniejsza procedura inicjujâca;
     - zredukowane do minimum uûycie stosu (wymaga tylko ok. 500 bajtów)
               
v3.11 - usuniëty gîupi bîâd wprowadzony w poprzedniej wersji - w pewnych
        okolicznoôciach program kasowaî caîâ treôê listu.

v3.2 - nowa procedura usuwajâca reklamy (wycina równieû reklamy dodawane
       na poczâtku listu - np. przez serwery eGroups)
     - plik kontrolny ".lasttruncate" nie ma juû dîugoôci 0, co powinno
       zapobiec problemom z program PFSDefrag.
     - poprawne obsîugiwanie listów napisanych w HTMLu (Content-Type:
       multipart/alternative)

v3.3 - dodany nowy parametr - "ONLYHADERS" - wyîâczajâcy wycinanie reklam
     - dodane obsîuga filtrów i parametr "IGNOREFILTERS"
     - program nie zwraca bîëdu, gdy rzaden plik nie pasuje do wzorca
      
@ENDNODE
@NODE autor "Informacje o autorze"

@{b}@{fg shine}Co wiadomo o autorze?@{fg text}@{ub}

Autorem programu jest Marek Szyprowski. Jeûeli masz jakieô uwagi lub sugestie
napisz do mnie: march@staszic.waw.pl.

@ENDNODE

@NODE english "Contents"

      Contents:

 @{" Introduction " link introduction}      What is this?
 @{" Features " link features}          What this tool can?

 @{" Installation " link installation}      Haw to install it?
 @{" Configuration " link configuration}     What can You change?

 @{" Syntax and usage " link syntax}  How to use it?

 @{" Copyrights " link copyrights}        Can You copy it?

 @{" Bugs " link bugs}              What works wrong?
 @{" Future " link future}            What will be in the future?
 @{" History " link history}           What we know about earlier versions?

 @{" Author " link author}            What is known about author?


@ENDNODE

@NODE introduction "Introduction"

@{b}@{fg shine}What is this?@{fg text}@{ub}

@{fg text}TruncateMail@{fg text} is a small tool written in C, which removes all
unnecessary parts from e-mail files - most lines from header and
advetisments added by various servers. After this operation
typical mail from mailing lists is about 45% smaller!

@ENDNODE
@NODE features "Features"

@{b}@{fg shine}What this tool can?@{fg text}@{ub}

* it is fully configurable by editing prefs file

* while processing mail files do not affect any attachments

* it is very fast - processing 500 typical mails from WFMH
  AmigaPL mailing list takes about 15 seconds on my system

* works with @{b}YAM@{ub} through additional arexx script

* do not need much memory - only a few kilobytes, even while
  processing big files

@ENDNODE

@NODE installation "Installation"

@{b}@{fg shine}How to install?@{fg text}@{ub}
                  
Installation is easy. Just copy "truncatemail" file to C:
directory and "truncatemail.prefs" to ENVARC: directory.

If You want to run @{b}TruncateMail@{ub} from YAM, You have to install
additional arexx script. Copy "TruncateFolder.yam" file to
"YAM:rexx" directory. Then, open YAM Configuration window and go
to "Arexx" options. Select one of "Script menu entry" items. Name
it "TruncateFolder", type change to "AmigaDOS" and as "Script"
write "run >nil: rx rexx/TruncateFolder.yam". Then select option
"Wait for temination".

@ENDNODE
@NODE configuration "Configuration"

@{b}@{fg shine}What can You change?@{fg text}@{ub}

After start TruncateMail checks his configuration file
ENVARC:truncatemail.prefs.
 
In first line there are written names of fields from header, which
TruncateMail won't remove. They are separated by space char. On this list
there isn't "CONTENT" field, because it contains informations about
attachments, so it shouldn't be removed.

Second line contains chars (separated by space char), from which a first line
of advertisements is usually built.
            
In next lines are defined filters, which determinate in which e-mails
TruncateMail will remove only unnecessary lines from headers. In these lines
You can use typical AmigaDOS patters. If You add line: "Subject:#?aminews#?",
program won't modify body of mails, which subjects contain aminews word.
If You add line: "~(Reply-To:#?amigapl@amiga.com.pl#?)", TruncateMail will
process only headers in all mails, which aren't from AmigaPL mailling list.

You sould be careful if You use patters with negation ("~" char). TruncateMail
checks weather any line from header matches to @{b}any@{ub} patters from prefs
file. So if You want to use more than one pattern with negation, You should
write them in single line, as one pattern:
~(Reply-To:#?amigapl@amiga.com.pl#?|Reply-To:#?amigadev-pl@yahoogroups.com#?)
 
This is a example prefs file:

@{fg back}@{bg text}from: to: date: subject: reply-to: message-id:
- _ =                                         @{bg back}@{fg text}
@{fg back}@{bg text}Subject:#?aminews#?                           @{bg back}@{fg text}

 
@ENDNODE
@NODE syntax "Syntax"

@{b}@{fg shine}How to use it?@{fg text}@{ub}

The syntax is:

truncate_mail PATTERN/A CHECKDATE/S ONLYHEADERS/S IGNOREFILTERS/S

PATTERN is any correct AmigaDOS pattern (i.e. YAM:aminet/0#?). It determinates
which files @{b}TruncateMail@{ub} will process.

CHECKDATE is a switch which determinates wheather @{b}TruncateMail@{ub} will
compare dates of processed files with date of special, control file
".lasttruncated", located in the same dir. All files which are earlier than
control file will be ignored. Then, the date of ".lasttruncated" file will be
actualized.

ONLYHEADERS is a switch which lets @{b}TruncateMail@{ub} to process only
headers lines. The body of mail won't be modified, even if it contains any
advertisements.

IGN0REFILTERS is a switch which lets @{b}TruncateMail@{ub} to ignore filters
defined in prefs file.

Examples:

@{fg back}@{bg text}truncatemail Yam:aminet/08247.009@{fg text}@{bg back}
@{b}TruncateMail@{ub} will remove all unnecessary parts from
Yam:aminet/08247.009 mail.

@{fg back}@{bg text}truncatemail Yam:amigapl/0#? checkdate@{fg text}@{bg back}
@{b}TruncateMail@{ub} will process all new (later than control
file) files in "Yam:amigapl" dir, which fit to "0#?" pattern.
                     
@{fg back}@{bg text}truncatemail Yam:incoming/0#? checkdate onlyheaders@{fg text}@{bg back}
@{b}TruncateMail@{ub} will process all new (later than control file) files in
"Yam:incoming" dir. Only unnecessary fields from header will be removed.
 
Evem easier You can use it from @{b}YAM@{ub}, if you have "TruncateFolder.yam"
script installed. Just select "TruncateFolder" item from menu "Scripts" and
@{b}TruncateMail@{ub} will process all new (later than control file) mail
files in curent folder. To save time arexx script will not update index of the
folder, so @{b}YAM@{ub} will not show that mails are smaller.

@ENDNODE
@NODE copyrights "Copyrights"

@{b}@{fg shine}Can You copy it?@{fg text}@{ub}

@{b}TruncateMail@{ub} is a freeware tool. You can copy or distribute
unmodified version as You wish. Author do not take any responsible of any
damage done by this tool. Use it at Your own risk!

@ENDNODE
@NODE Bugs "Bugs"

@{b}@{fg shine}What works wrong?@{fg text}@{ub}
            
Somebody makes frames around signatures from "-", "_" or "=" chars.
@{b}TruncateMail@{ub} will recognise them as advertisements and remove.

@{b}TruncateMail@{ub} do not works correctly when CONTENT lines in header are
corrupted.
      
TruncateFolder.yam arexx script could not find the folder directory, if path
contains space-char.
 
@ENDNODE
@NODE future "Future"

@{b}@{fg shine}What will be in the future?@{fg text}@{ub}

* Remove bugs
                  
* Add support for mailbox-file format
  
If You have any suggestion write @{"to me" link author}.

@ENDNODE
@NODE history "History"

@{b}@{fg shine}What we know about earlier versions?@{fg text}@{ub}

v1.x - very slow arexx script

v2.x - script in AmigaDOS and tool written in pure ANSI C

v3.0 - standalone tool written in C

v3.01 - removed stupid bug - TruncateMail couln't read prefs

v3.1 - recompiled with GCC
     - new, smaller init procedure
     - reduced stack usage (now TruncateMail needs only about
       500 bytes of stack)
       
v3.11 - removed stupid bug introduced in previous version -
        TruncateMail sometimes removed everything from body
        of mail.

v3.2 - new advertisements removing procedure - it also removes
       advertisements from the top of e-mail body (like these added
       by eGroups mailing lists)
     - size of file ".lasttruncated" is not 0, so problems with
       PFSDefrag should go away
     - better support for e-mails written in HTML (Content-Type:
       multipart/alternative)

v3.3 - Added new switch - "0NLYHEADERS" - TruncateMail won't modify
       the body of mails
     - New options in prefs file - You can set global template for
       mails, which only headers should be modified
     - TruncateMail will exit without any errors if there is no file
       matching given pattern

@ENDNODE
@NODE author "Author"

@{b}@{fg shine}What is known about author?@{fg text}@{ub}

The author of @{b}TruncateMail@{ub} is Marek Szyprowski. If You have any
suggestions send me e-mail: march@staszic.waw.pl.
 
@ENDNODE
