kategoria: Programy
[#1] DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)
Jak wiadomo amigowcom z zeszłowiecznym stażem, program Lzx został załatany tak w 2000 roku, że ma coś przestać działać po 2020 roku. Co dalej, nie wiadomo, może Mikołaj Całusiński napiszę następnego patcha, a może nie. W każdym razie jest problem ;)

Mam więc propozycję napisanie konwertera archiwum w formacie lzx na format .7z. Dlaczego akurat .7z? Ano dlatego, że program 7z jest ciągle rozwijany (w odróżnieniu od lzx), bardzo wydajny i do tego przenośny, tak że można się spodziewać następnych amigowych wersji. No i nie ma żadnego problemu z rozpakowaniem archiwum 7z na Windzie.

Tyle tytułem wstępu, ale do rzeczy: skrypt ma robić konwersję z format Lzx na 7z, sprawdzić prawidłowośc przepakowania, po czym posprzątać po sobie, opcjonalnie usunąć oryginał archiwum lzx.
Wszelkie inne pomysły w temacie mile widziane.

W zasadzie dobrze by było by przepakowywał z każdego innego formatu na 7z

S.s.t. (subiektywny stopień trudności) 4/10. ;)
[#2] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #1

że ma coś przestać działać po 2020 roku


Po 2033, będzie działał tylko daty będą nieprawidłowe.

program 7z jest ciągle rozwijany


Mówisz o p7zip? Wydajny 7zip na Amidze? Klasycznej?
[#3] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@cholok, post #2

A co z nim nie tak?
Archiwum p7zip-9.13 z Aminetu ma coś 1.5Mb jako archiwum lha w oryginale, 1.2MB przepakowane na Lzx, i tylko 0.6MB po przepakowaniu na 7z.
[#4] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #3

Stopień kompresji jest bezdyskusyjny. Pomijając szczegóły (wersja beta, ixemul), jak długo się to archiwum kompresowało i ile musiałeś mieć pamięci (a sam program ma 1.5 MB rozmiaru)?
[#5] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@cholok, post #4

Cholok, offtopujesz, to nie wątek o wadach 7z, a sposobie wykorzystania pod Magellanem.
Żeby bawić się Magellanem zalecany jest średnio wypasiony klasyk. Nic nie poradzę, że ktoś korzysta nadal z np. gołej A1200 i narzeka ża to czy tamto mu źle chodzi, czy nie chodzi w ogóle, albo niczym ślimak...
[#6] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #5

Zarys skryptu:

.Key PathAN/A,ArcName/A,DestDir/A,TempDir
.Bra {
.Ket }

FailAt 21
; PathAN  - katalog, w którym znajduje się archiwum do przerobki (+nazwa archiwum) - dla DO będzie to {fu}
; ArcName - nazwa archiwum do przepakowania - dla DO będzie to {o}
; DestDir - katalog, w którym zapiszemy archiwum 7zip - dla DOpusa będzie to {d}
; TempDir - Katalog tymczasowy dla przepakowywanych plików - domyslnie T: - tu mozna poleciec DOpusowym {Rd} 

IF {TempDir}Brak EQ Brak
  SetEnv Arc27zTempDir T:
ELSE
  SetEnv Arc27zTempDir {TempDir}
ENDIF

CD $Arc27zTempDir

MakeDir Arc27zTD >NIL:
IF WARN
  Delete Arc27zTD ALL FORCE >NIL:
  MakeDir Arc27zTD >NIL:
ENDIF

xadUnFile {PathAN} Arc27zTD >NIL:

CD Arc27zTD

; Dokładna składnia dla 7zip - patrz dokumentacja archiwizera

7z a -r {DestDir}{ArcName}.7z
7z t {DestDir}{ArcName}.7z 
IF NOT WARN
  CD $Arc27zTempDir
  Delete Arc27zTD ALL FORCE >NIL:
ELSE
  ECHO "Archiwum 7zip uszkodzone. powtórz operację"
  CD $Arc27zTempDir
  Delete Arc27zTD ALL FORCE >NIL:
  CD {DestDir}
  Delete {ArcName}.7z FORCE >NIL:
ENDIF


Nietestowany, no i składnia 7zipa wzięta z sufitu (nie chce mi się sprawdzać)...


Ostatnia aktualizacja: 06.08.2013 16:53:40 przez APC74
[#7] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@APC74, post #6

Łoł, niczego sobie skrypcik. Zadanie było nieco podchwytliwe, bo sugerowałem przepakowywanie lzx jako zasadniczy cel programu.
Ale wpadłeś chyba na najprotszy i najlepszy pomysł by to zrobić całościowo, w sposób uniwersalny OK

Teraz czekamy na kogoś kto to przerobi na skrypt do Magellana ;)
[#8] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #7

Nie chciało mi się ściągać 7zipa, więc podstawiłem za niego LZX w skrypcie i na takich ustawieniach DOpusa działa (jako guzik):

[#9] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@APC74, post #8

Cwaniak ;) Ale to nadal skrypt AmigaDos, nie wykorzystuje poweru Magellana w tej dziedzinie.
Chociaż jak się uprzeć, i działa ok, to nie ma się co czepiać. Użytkownicy DOpusa 4 powinni być zadowoleni, myślę...

Ja bym tam dodał potwierdzenie poprawności przepakowania i ewentualne usunięcie oryginalnego archiwum. Poza tym to nowe archiwum 7z powinno w zasadzie pojawić się w tym samym folderze w którym było oryginalne, i te oryginalne powinno zostać usunięte, myślę.
Później popatrzę jeszcze na argumenty 7za..
[wyróżniony] [#10] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@APC74, post #6

Moja Magellanowa wersja wygląda tak:


Function :
AmigaDOS Run Say -a polski -s200 Konwersja na 7zet w toku.
AmigaDOS set folder {ou-}
AmigaDOS makedir ram:$folder
AmigaDOS XadUnFile {f} Ram:$folder
AmigaDOS 7za a $folder.7z Ram:$folder/#?
AmigaDOS 7za t $folder.7z
AmigaDOS Delete RAM:$folder ALL FORCE >NIL:
AmigaDOS Unset $folder
AmigaDOS If not warn
AmigaDOS Run Say -a polski -s200 Konwersja zakonczona powodzeniem!
AmigaDOS Else
AmigaDOS Run Say -a polski -s 200 Archiwum uszkodzone, powtorz operacje!
AmigaDOS EndIF

Flagi : CD source
No file quote
Rescan source


Uprościłem, bo nie lubię zbyt dużo interaktywności, tj. ciągłego wskazywania katalogu docelowego.
Rozpakowanie oryginalnego archiwum przez XadUnFile do RAM:. Jak ktoś ma mało RAMu to radzę użyć jakiś inny napęd fizyczny, byle nie flopka ;).

Przekonwertowane archiwum .7z pozostaje w tym samym folderze co oryginalne archiwum.
Nie usuwam automagicznie starego archiwum po udanej konwersji, bo można sobie wtedy zaoobserwować przez porównanie wydajność kompresji pakera .7z.

Zrobiłem z całego skryptu wewnętrzne polecenie Magellana, i jako takie dodałem do RMB menu lha,lzx i zip filetypów.

Niedobra wieśc, że xadunfile wiesza mi się na archiwum lzx.
Archwium lha i zip przepakowywuje prawidłowo. Wygląda na jakiś bug w xadunfile. Może ktoś potwierdzić?


Ostatnia aktualizacja: 07.08.2013 11:50:55 przez Dopuser
[#11] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #10

U mnie xadunfile działa ok.
[#12] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@cholok, post #11

A u mnie po próbie przepakowania lzx na 7z:

An error occured: filetype is unknown.
CadUnFile failed returncode 20.

Ręcznie w okienku CLI toż samo...

Ki diabeł...
[#13] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #12

Nie masz klienta w katalogu XAD.
[#14] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@cholok, post #13

Ano mam, 4528 bajtów. Wcześniej, tj. kilka lat temu, archiwa lzx rozpakowywał gucio, zgłosiłem nawet bug report autorowi... zainstaluję ponownie cały pakiet.

No i wróciłem do wersji 12.1 i działa ok.

Ostatnia aktualizacja: 07.08.2013 15:40:42 przez Dopuser
[#15] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #10

O, jeszcze taki kwiatek, jaki mi "wypluł" xadUnFile:

!!! The archive file has some corrupt data. !!!
...
Ram:DOpusShell/Source/DOpus_CMD.info: wrong checksum
Processed 14 files and 1 directory, 1 error.
xadUnFile failed returncode 10

Trzeba poprawić skrypt, aby uwzględniał błędy w archiwach znalezione przez xadUnFile, bo po takim błędzie skrypt po prostu przestaja dalej działać.

Trza po prostu wyjść ze skryptu po wykryciu przez xadUnFile wadliwego archiwum, i - oczywiście - jakoś to zasygnalizować...

Ostatnia aktualizacja: 07.08.2013 16:11:42 przez Dopuser
[#16] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #10

Fajnie, że działa - tylko tak się zastanawiam, a co z bitami protekcji? 7zip je zachowuje?
Mógłbyś przeprowadzić dla mnie mały test? Przerób to archiwum na 7zip Twoim skryptem i jeżeli się uda to prześlij mi na e-maila.


Ostatnia aktualizacja: 07.08.2013 17:33:53 przez APC74
[#17] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@APC74, post #16

Poszło.
[#18] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@Dopuser, post #17

Tak jak sądziłem - 7zip gubi bity protekcji. Oprócz tego ma problemy z plikami i katalogami zawierającymi np. spację na początku. Z innymi znakami w nazwach też różnie bywa. Efekt jest taki, że nazwa pliku zostaje zmieniona - zamiast problematycznego znaku jest wstawiany znak podkreślenia "_". To może rodzić problemy np. z MUI, z demami, grami itd.
Moim zdaniem 7zip niestety nie nadaje się (przynajmniej na razie) na amigowy archiwizer.
[#19] Re: DOpus Magellan: Lha/Lzx/ZIP/* na .7z (4/10)

@APC74, post #18

Podejrzewam, że to co opisujesz to cechy 7zip generalnie, niezależnie czy to wersja amigowa czy pecetowa. Po prostu korzystasz z niego z całym "dobrodziejstwem jego inwentarza". No i dobrze pamiętać o tym że trzeba brać poprawkę...
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem