Podpora :: RAR Features

2021-06-25 11:18:53
Tom
Pozastavení extrakce při chybějícím partu

Dobrý den,

chci se zeptat, zda by bylo možné poupravit chování RARu při extrakci (linux verze a SFX linux verze) způsobem:
- pokud nenajde další part, choval by se jako při použití přepínače -vp a zobrazil čekací dotaz pro další part.

U SFX to nelze a u RARu zastavuje nyní po každém partu.

Předem děkuji

2021-06-27 13:48:11
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Dobrý den,

díky za návrh, poslal jsem dál a dám vědět jakmile budu mít odpověď.

Ľubomír Mlích

2021-06-29 20:11:55
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Odpověď od ER:

Pokud není parametr -vp použit, RAR zapíná -vp chování v případě, že dokáže poznat, zda se archiv nachází na vyjmutelném disku (zařízení). Mysím, že to je rozumné výchozí nastavení a zdá se že dobře funguje ve Windows.

Bohužel se mi nepodařilo najít dostatečně jednoduchý a přenostitelný způsob jak totéž rozeznat na Linuxu. Ve chvíli kdy RAR neumí poznat, zda se jedná o vyjmutelný disk, zdá se být nejlepší přístup použít vychozí nastavení pro nevyjímatelné zařízení. Protože si myslím, že častěji jsou archivy ukládáný na nejvyjímatelné disky.

Bylo by lepší přidat rozpoznávání jestli je zařízení vyjímatelné i na Unixu, Pokud se mi podaří najít vhodnou metodu, možná to jednou implementuji. Ve Windows je řešení triviální zavoláním GetDriveType a ověřením, zda odpověď je DRIVE_REMOVABLE nebo DRIVE_CDROM

 

2021-06-30 09:11:35
Tom
Re: Pozastavení extrakce při chybějícím partu

Bohužel řeč nebyla o vyjmutelném disku.
Podle mě není nutné ani rozeznávat druh média, ale udělat to univerzálně všude > nenajdu další part, tak čekám. Tak jak to dělá přímo WinRAR.
V CLI tohle nedokáže rozeznávat. Vypíše jenom hlášku o nenalezení dalšího partu a skončí.

2021-06-30 19:59:46
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Ovšem, máte pravdu, moje chyba, viděl jsem ten dotaz schovaný v té vaší původní zprávě, ale nepředal jsem to dál. Tak zkusím znova a lépe.

2021-07-01 19:47:30
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu
Pomohlo by přidat parametr -vp do .rarrc souboru nebo do proměnné prostředí RAR?
2021-07-01 20:46:18
Tom
Re: Pozastavení extrakce při chybějícím partu

Takhle to řeším teď.
Výsledek:
> zastavuje po každém partu
> musí se dávat pozor, ze kterého partu se rozbaluje > po povelu pokračovat na partu, který tam ještě není, dokáže zrušit i 45 minut práce a je nutné začít znovu

2021-07-01 22:02:45
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Ztrácím se, chcete, aby se to chovalo jako s parametrem -vp tj. aby to vždy čekalo na povel až zadáte pokračovat s dalším partem.

Ale zároveň říkáte, že když to zadáte do .rarrc souboru tak vám toto chování nevyhovuje, protože se extrakce zastavuje po každém partu?
 

2021-07-01 23:34:14
Tom
Re: Pozastavení extrakce při chybějícím partu

Pokud zadám -vp , zastavuje po každém partu i když další tam existuje. Tohle nevyhovuje. Chci, aby zastavil až v případě že nenajde další part.
Příklad: mám party 1 až 5 z celkových 30. Dám rozbalit a zastavit by měl až na partu 5. Stáhne se např. dalších 6 partů, dám pokračovat, zastaví na partu 11.
Jinak řečeno, aby se choval tak, jak je to u WinRARu nebo windows SFX GUI verze.

2021-07-02 22:27:12
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Díky za vysvětlení, napíšu až ER odpoví.

2021-07-05 20:12:05
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

ER si není jistý, jestli ostatní unixoví uživatelé RARu budou spokojení, když se jim začne objevovat dotaz "vložte další disk" i při rozbalování vícedílného archivu na neodpojitelném disku. Používání konzole a GUI se od sebe liší.

Pokud budeme uvažovat o chování s přepínačem -vp, dotali jsme od uživatele žádost, aby tam dotaz na vložení dalšího dílu byl, i když je díl přítomen. Potřeboval to, protože rozbaloval díly ve stejnou dobu, kdy je stahoval a nechtěl, aby RAR začal rozbalovat částečně stažený archiv,

Ptal jsem se, jestli by bylo možné implementovat jiný parametr, pomocí kterého by bylo dosažitelné vámi požadované chování a dám vědět až přijde odpověď. Předpokládám, že nad tím bude uvažovat, když se ozve ještě někdo další, kdo by to potřeboval.
 

2021-07-05 20:16:06
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Ano, požadavky vícero uživatelů mají přednost před požadavky jediného uživatele.

2021-07-06 17:09:17
Tom
Re: Pozastavení extrakce při chybějícím partu

Upraveno.
https://uloz.to/file/BbNjBHelCwmF/unrar-custom-rar

Bude to chtít ještě trochu upravit - ptá se 2x za sebou, ale jinak funkční.
Je tam i demonstrační video, které porovnává s původním chováním.

2021-07-06 17:23:31
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Díky, moc pěkné. +1

Pošlu dál a dám vědět.

2021-07-08 22:12:19
Ľubomír Mlích
Re: Pozastavení extrakce při chybějícím partu

Odpověď zní, že

  • výchozí nastavení ER měnit nechce z důvodů uvedneých dříve (chybí mu linux funkce pro rozeznnávání zda je disk vyjímatelný)
  • přidávat nový parametr, který by umožňoval takové chování také nechce, protože každý nový přepínač znamená větší kód, potenciálně víc bugů, větší dokumentaci a horší pochopitelnost uživateli. Pokud by toto chování požadovalo vícero uživatelů, zvážil by to. V tomto případě neví.
I thought about -vp1 switch too. Bit typically I avoid adding switches when I suspect they will be useful for very small number of users, let's say less than 10 worldwide. Every new switch or option makes the source code larger, increasing potential to introduce bugs. It also makes documentation larger and more difficult for users to comprehend. It is ok if option is needed for noticeable amount of users, but in this case I am not certain yet. I still have not decided how to handle it. Maybe I'll change the default behavior of -vp switch when extracting to proposed one and check if there are any complains. Maybe I'll also check if next volume is opened in any other program and issue the prompt only if it is opened, which might indicate that it is still in process of downloading. Maybe I'll keep it as is. Need to think about it more. Checking if file is opened by another process is rather trivial in Windows, but again I couldn't find an universal and portable way in Unix. Linux solutions include scanning /proc/*/fd or calling fcntl(fd, F_SETLEASE, F_RDLCK), which may involve access restriction issues and hardly portable to other platforms like FreeBSD.

...

In any case I appreciate your feedback :-)