home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
swCHIP 1991 January
/
swCHIP_95-1.bin
/
dos
/
arj241cz
/
arj241cz.exe
/
TECHNOTE.DOC
< prev
next >
Wrap
Text File
|
1994-09-12
|
10KB
|
203 lines
TECHNICKÉ INFORMACE O ARJ Zá⌐í 1994
** DªLEÆITÉ ZMëNY ****************************************************
Nêkteré programy, které usnadñují práci s archivaçními utilitami,
pouæívají k identifikaci ARJ archívu postup, kterÿ není spolehlivÿ.
Poçínaje ARJ verzí 2.39, existují dvê varianty "velkého" (ARJSFX)
samorozbalovacího modulu. Modul o délce 17kB umoæñuje zabezpeçení
archívu ochrannou obálkou ARJ-SECURITY, standardnê poæívanÿ modul
o délce 15kB pouæití obálky neumoæñuje. Poprvé v historii jsou
ve⌐ejnê popsána pole v hlaviçce ARJ archívu vyuæívaná bezpeçnostní
obálkou.
Dal¿í zmênou je, æe hlavní hlaviçka ARJ archívu v samorozbalovacím
archívu nyní nenásleduje têsnê za dekompresním EXE modulem.
ARJ pouæívá k identifikaci ARJ archívu stále stejnÿ postup, kterÿ
se od verze 1.00 nezmênil. Algoritmus je následující:
(1) Najdi identifikaçní bajty hlaviçky ARJ archívu, 0x60 a 0xEA.
(2) P⌐eçti z dal¿ích dvou bajtû délku hlaviçky v bajtech
(3) Jestliæe délka hlaviçky p⌐ekroçí 2600 bajtû, vraƒ se zpátky
k identifikaçním bajtûm, posuñ se têsnê za nê a pokraçuj opêt
krokem (1).
(4) P⌐eçti hlaviçku archívu (délku zná¿)
(5) Spoçítej dvaat⌐icetibitovÿ kontrolní souçet (CRC) hlaviçky.
(6) P⌐eçti z dal¿ích çty⌐ bajtû uloæenÿ kontrolní souçet hlaviçky.
(7) Pokud se skuteçnÿ kontrolní souçet li¿í od uloæeného, vraƒ se
k identifikaçním bajtûm, posuñ se têsnê za nê a pokraçuj opêt
krokem (1).
Tento algoritmus je v nezkrácené podobê obsaæen ve zdrojovém kódu
k programu UNARJ.
Pouæívají-li p⌐i práci s ARJ soubory-seznamy, mêly by podpûrné
ARJ programy (archivaçní "shelly" apod.) p⌐epínaçem "-p" zajistit,
æe ARJ z archívu rozbalí opravdu pouze specifikované soubory. Mûæe
to bÿt dûleæité u archívû, v nichæ jsou uchovávána jména adresá⌐û,
ve kterÿch byly archivované soubory pûvodnê uloæeny.
Ve zpracování roz¿í⌐ené hlaviçky ve star¿ích verzích ARJ, AV.C
a UNARJ.C je chyba. P⌐i zpracování hlaviçky ve funkci read_header()
by se mêly p⌐eskoçit çty⌐i bajty kontrolního souçtu, a ne jen dva.
Tato chyba v¿ak v souçasné dobê nemá æádné negativní dûsledky,
protoæe æádná verze ARJ zatím roz¿í⌐enou hlaviçku nepouæívá.
**********************************************************************
Seznam provedenÿch zmên:
Datum Popis zmêny:
-------- ------------------------------------------------------------
03/17/93 P⌐ipojena informace o "rozdvojení" ARJSFX modulu.
02/17/93 P⌐ipojen popis polí vyuæívanÿch bezpeçnostní obálkou.
P⌐ipojen popis pole, v nêmæ se uchovává datum/ças,
kdy byla v archívu naposledy provedena zmêna.
12/03/91 K p⌐íznakûm v hlaviçce ARJ p⌐ipojen p⌐íznak BACKUP.
11/21/91 Oddêlenê popsány obê varianty hlaviçek, které se
v ARJ archívech vyskytují.
11/11/91 P⌐ipojena informace o odli¿nostech p⌐i pouæití
textového reæimu.
06/28/91 P⌐ipojeno nêkolik novÿch çísel pro dal¿í operaçní systémy.
05/19/91 Vylep¿en popis zpracování roz¿í⌐ené hlaviçky.
05/11/91 Zjednodu¿ení dokumentu.
P⌐ipojen typ "název disku" (volume label).
03/11/91 P⌐ipojen typ "adresá⌐" (directory).
02/23/91 P⌐ipojeny dal¿í komentá⌐e.
01/10/91 Opraven popis pole datum/ças a po⌐adí reæimu p⌐ístupu
k souboru.
10/30/90 Opraveny hodnoty ARJ p⌐íznakû.
ARJ archív obsahuje dva druhy hlaviçek:
Hlavní hlaviçku achívu - na zaçátku archívu.
Lokální hlaviçky archivovanÿch souborû - p⌐edcházejí kaædému
archivovanému souboru.
Struktura hlavní hlaviçky archívu
(⌐ádovê nejniæ¿í slabiky jsou uvádêny jako první):
Bajty Popis
----- -------------------------------------------------------------------
2 identifikaçní bajty hlaviçky (hlavní i lokální) = 0x60 0xEA
2 základní velikost hlaviçky (od 'first_hdr_size' do 'comment')
= first_hdr_size + strlen(filename) + 1 + strlen(comment) + 1
= 0 jde-li o konec archívu
maximální délka hlaviçky mûæe bÿt 2600 bajtû.
1 first_hdr_size (délka aæ k p⌐ípadnému roz¿í⌐ení vçetnê).
1 çíslo verze ARJ.
1 nejniæ¿í çíslo verze ARJ, která umoæní rozbalení archívu.
1 hostitelskÿ operaçní systém (0 = MSDOS, 1 = PRIMOS, 2 = UNIX,
3 = AMIGA, 4 = MAC-OS, 5 = OS/2, 6 = APPLE GS, 7 = ATARI ST,
8 = NEXT, 9 = VAX VMS)
1 p⌐íznaky
(0x01 = nevyuæito)
(0x02 = OLD_SECURED_FLAG; p⌐íznak staré verze
bezpeçnostní obálky)
(0x04 = VOLUME_FLAG) indikuje existenci svazku, kterÿ
na tento svazek navazuje.
(0x08 = nevyuæito)
(0x10 = PATHSYM_FLAG) indikuje, æe jméno archívu bylo
p⌐eloæeno ("\" zmênêno na "/")
(0x20 = BACKUP_FLAG) indikuje archív se zálohami
(0x40 = SECURED_FLAG)
1 verze bezpeçnostní obálky (2 = souçasná)
1 typ souboru (musí bÿt roven 2)
1 vyhrazeno
4 datum/ças prvotního vytvo⌐ení archívu.
4 datum/ças naposledy provedené zmêny v archívu.
4 velikost archívu (v souçasné dobê vyuæito jen v archívech
chránênÿch bezpeçnostní obálkou)
4 umístêní bezpeçnostní obálky
2 zaçátek jména souboru ve specifikaci souboru
2 délka bezpeçnostní obálky v bajtech
2 (prozatím nevyuæito)
? (prozatím nic)
? pûvodní název archívu (zakonçen nulovÿm terminátorem)
? komentá⌐ k archívu (zakonçen nulovÿm terminátorem)
4 kontrolní souçet základní çásti hlaviçky
2 velikost první roz¿í⌐ené hlaviçky (0, jestliæe neexistuje)
? první roz¿í⌐ená hlaviçka (prozatím se nevyuæívá)
4 kontrolní souçet první roz¿í⌐ené hlaviçky (pouze,
je-li délka roz¿í⌐ené hlaviçky nenulová)
Struktura lokální hlaviçky archivovaného souboru
(⌐ádovê nejniæ¿í slabiky jsou uvádêny jako první):
Bajty Popis
----- -------------------------------------------------------------------
2 identifikaçní bajty hlaviçky (hlavní i lokální) = 0x60 0xEA
2 základní velikost hlaviçky (od 'first_hdr_size' do 'comment')
= first_hdr_size + strlen(filename) + 1 + strlen(comment) + 1
= 0 jde-li o konec archívu
maximální délka hlaviçky mûæe bÿt 2600 bajtû.
1 first_hdr_size (délka aæ k p⌐ípadnému roz¿í⌐ení vçetnê).
1 çíslo verze ARJ.
1 nejniæ¿í çíslo verze ARJ, která umoæní rozbalení souboru.
1 hostitelskÿ operaçní systém (0 = MSDOS, 1 = PRIMOS, 2 = UNIX,
3 = AMIGA, 4 = MAC-OS, 5 = OS/2, 6 = APPLE GS, 7 = ATARI ST,
8 = NEXT, 9 = VAX VMS)
1 p⌐íznaky (0x01 = GARBLED_FLAG) indikuje za¿ifrovanÿ soubor
(0x02 = nevyuæito)
(0x04 = VOLUME_FLAG) indikuje soubor, kterÿ pokraçuje
v dal¿ím svazku (soubor je rozdêlen)
(0x08 = EXTFILE_FLAG) indikuje soubor, kterÿ zaçíná
v p⌐edcházejícím svazku
(0x10 = PATHSYM_FLAG) indikuje, æe jméno souboru bylo
p⌐eloæeno ("\" zmênêno na "/")
(0x20 = BACKUP_FLAG) indikuje soubor oznaçenÿ jako záloha
1 pouæitá kompresní metoda (0 = bez komprese,
1 = komprimováno co nejúçinnêji...
4 = komprimováno co nejrychleji)
1 typ souboru (0 = binární, 1 = sedmibitovÿ text,
3 = adresá⌐, 4 = název disku)
1 vyhrazeno
4 datum/ças naposledy provedené zmêny v souboru
4 délka po sbalení
4 pûvodní délka (li¿í se u souborû sbalenÿch v textovém reæimu)
4 kontrolní souçet pûvodního souboru
2 zaçátek jména souboru ve specifikaci souboru
2 reæim p⌐ístupu k souboru
2 informace o hostitelském operaçním systému (prozatím nevyuæito)
? p⌐ípadné dal¿í údaje
4 bajty v p⌐ípadê, æe soubor pokraçuje z p⌐edcházejícího
svazku (pak obsahuje pozici zaçátku této çásti souboru)
(tyto çty⌐i bajty jsou obsaæeny jen v p⌐ípadê, æe je nastaven
p⌐íznak EXTFILE_FLAG).
0 bajtû ve v¿ech ostatních p⌐ípadech.
? název souboru (zakonçen nulovÿm terminátorem)
? komentá⌐ k souboru (zakonçen nulovÿm terminátorem)
4 kontrolní souçet základní çásti hlaviçky
2 velikost první roz¿í⌐ené hlaviçky (0, jestliæe neexistuje)
? první roz¿í⌐ená hlaviçka (prozatím se nevyuæívá)
4 kontrolní souçet první roz¿í⌐ené hlaviçky (pouze,
je-li délka roz¿í⌐ené hlaviçky nenulová)
...
? komprimovanÿ soubor
Formát polí datum/ças:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
|<---- rok-1980 ---->|<- mêsíc ->|<--- den ---->|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|<-- hodiny -->|<---- minuty --->|<- sekundy/2 ->|
konec dokumentu