Zum Inhalt springen

LHa (Kompressionsprogramm)

aus Wikipedia, der freien Enzyklopädie
{{#if: LHa | LHa | {{#invoke:WLink|getArticleBase}} }}

{{#if: |

colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | |
 {{#if: {{#invoke:Wikidata|claim|P154}} | 
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
 }}

}}{{#if: Screenshot |

Screenshot{{#if: Hilfeanzeige von LHarc in der Kommandozeile |
Hilfeanzeige von LHarc in der Kommandozeile }}|

}}

Basisdaten

{{#if: „LHa for UNIX“: Koji Arai |

Hauptentwickler
 {{#if: {{#invoke:Wikidata|claim|P126}} | 
Maintainer claim|P126|parameter=link|references=ja|list=, }}
 }}

}}{{#if: Haruyasu Yoshizaki et al.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20211203195906

* Vorlage:Webarchiv/Wartung/Stern{{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }} (Archivversionen) 20211203195906}} {{#if: }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein! {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20211203195906}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
      }}
  }}
{{#if: {{{webciteID}}}}} len|{{{webciteID}}}}} {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }} {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }} webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if: }}
      }}
{{{webciteID}}}}} {{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] (Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
  }}
{{#if: Vorlage:Webarchiv/Today {{#if: Vorlage:Webarchiv/Generisch {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}]
                 }}}}}}}}{{#if:2026-02-11 06:08:38 InternetArchiveBot
Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
all = url= opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original= cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv errNS = 0 template = Vorlage:Webarchiv format = * preview = 1
  }}{{#ifexpr: {{#if:20211203195906|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
{{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
getdomain|{{{archiv-url}}}}} web.archive.org =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
webcitation.org =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
Execute}}|}} {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}} }} {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
{{#if: {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|https://lha.osdn.jp/history.html}}
{{#if: }}
  }}{{#if: Archivierte Kopie
isBracketedLink|Archivierte Kopie}} {{#if: }}
      }}
{{#if: }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
addlpages= {{#if: }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|https://lha.osdn.jp/history.html%7Carchiv}} |-1
{{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://lha.osdn.jp/history.html%7C4}}%7Chttp}} |-1 {{#switch: {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html }} daserste.ndr.de | inarchive.com | webcitation.org = #default = {{#if: }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref> | 
Entwickler Haruyasu Yoshizaki et al.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20211203195906 * Vorlage:Webarchiv/Wartung/Stern{{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }} (Archivversionen) 20211203195906}} {{#if: }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein! {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20211203195906}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
      }}
  }}
{{#if: {{{webciteID}}}}} len|{{{webciteID}}}}} {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }} {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] {{#ifeq: | [] | [ | ( }}Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }} webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if: }}
      }}
{{{webciteID}}}}} {{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}] (Memento{{#if: {{#if: 2026-02-11 06:08:38 InternetArchiveBot | 2026-02-11 06:08:38 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
  }}
{{#if: Vorlage:Webarchiv/Today {{#if: Vorlage:Webarchiv/Generisch {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html}} }}]
                 }}}}}}}}{{#if:2026-02-11 06:08:38 InternetArchiveBot
Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
all = url= opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original= cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv errNS = 0 template = Vorlage:Webarchiv format = * preview = 1
  }}{{#ifexpr: {{#if:20211203195906|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
{{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
getdomain|{{{archiv-url}}}}} web.archive.org =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
webcitation.org =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
Execute}}|}} {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}} }} {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
{{#if: {{#if: }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|https://lha.osdn.jp/history.html}}
{{#if: }}
  }}{{#if: Archivierte Kopie
isBracketedLink|Archivierte Kopie}} {{#if: }}
      }}
{{#if: }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
addlpages= {{#if: }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|https://lha.osdn.jp/history.html%7Carchiv}} |-1
{{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://lha.osdn.jp/history.html%7C4}}%7Chttp}} |-1 {{#switch: {{#invoke:Webarchiv|getdomain|https://lha.osdn.jp/history.html }} daserste.ndr.de | inarchive.com | webcitation.org = #default = {{#if: }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref> |
 {{#if: {{#invoke:Wikidata|claim|P178}} | 
Entwickler claim|P178|parameter=link|references=ja|list=, }}
 }}

}}{{#if: |

Erscheinungsjahr
 {{#if: {{#invoke:Wikidata|claim|P577}} | 
Erscheinungsjahr claim|P577|references=ja|list=, }} |
   {{#if: {{#invoke:Wikidata|claim|P571}} | 
Erscheinungsjahr claim|P571|references=ja|list=, }}
   }}
 }}

}}{{#ifeq: „LHa for UNIX“: 1.14i-ac20220213 | KEINE_ANGABE || {{#if: „LHa for UNIX“: 1.14i-ac20220213 |

Aktuelle Version
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format {{{AktuelleVersionFreigabeDatum}}} | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813}} | 
Aktuelle Version claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}}) }}}}}}

}}{{#ifeq: {{{AktuelleVorabVersion}}} | KEINE_ANGABE || {{#if: |

Aktuelle Vorabversion
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format {{{AktuelleVorabVersionFreigabeDatum}}} | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724}} | 
Aktuelle Vorabversion claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}}) }}}}}}

}}{{#if: |

Ausführungsumgebung
 {{#if: plattformübergreifend verfügbar | 
Betriebssystem plattformübergreifend verfügbar |
   {{#if: {{#invoke:Wikidata|claim|P306}} | 
Betriebssystem claim|P306|parameter=link|references=ja|list=, }}
   }}
 }}

}}{{#if: C |

Programmier­sprache C |
 {{#if: {{#invoke:Wikidata|claim|P277}} | 
Programmier­sprache claim|P277|parameter=link|references=ja|list=, }}
 }}

}}{{#if: Datenkompression |

Kategorie Datenkompression

}}{{#if: Versions- und implementierungsabhängig. Die Implementierung „LHa for UNIX“ ist quelloffen. |

Lizenz
 {{#if: {{#invoke:Wikidata|claim|P275}} | 
Lizenz claim|P275|parameter=link|references=ja|list=, }}
 }}

}}{{#if: |

deutschsprachig faculty|}} | ja | nein }}

}}{{#if: |

Sonstiges {{{Sonstiges}}}Vorlage:Infobox Software/Wartung/Sonstiges

}}{{#if: github.com/jca02266/lha |

github.com/jca02266/lha |
 {{#if: {{#invoke:Wikidata|claim|P856|notdeprecated=1}} | 
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link|notdeprecated=1}}}}
 }}

}}{{#if: |

Dateien [[c:Category:Created with {{{Dateien}}}|{{{Dateien}}}]]

}}

{{#if:| {{#if:| {{#if:| {{#if:application/x-lzh-compressed| {{#if:| {{#if:| {{#if:| {{#ifeq: | KEINE_ANGABE || {{#if: | {{#if:Datenkompression| {{#if:beliebige Dateien| {{#if:| {{#if:| {{#if:| {{#if:| {{#if: |
{{#if: LZH | LZH | {{#invoke:WLink|getArticleBase}} }}

}}

}}

{{#ifexist:Media:|[[Datei:|270px|]]|

{{#ifeq:0|0|}} }} {{#if:|
}} }}

Dateiendung: {{#if: trim | .lzh, .lha }} | keine}}
MIME-Type: application/x-lzh-compressed

}}

Magische Zahl: hex

}} {{#if:| () }} }}

Entwickelt von:

}}

Erstveröffentlichung: Execute}}|}} | }}

}}

Aktuelle Version
() }}
 {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356}} |
Aktuelle Version claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356|qualifier=P577}}) }}}}}}

}}

Art: Datenkompression

}}

Container für: beliebige Dateien

}}

Enthalten in:

}}

Erweitert von:

}}

Erweitert zu:

}}

Standard(s):

}}

|

{{#if: {{#invoke:Wikidata|claim|P856}} |

{{#invoke:WLink|formatURL| {{#invoke:Wikidata|claim|P856|parameter=link}}}}

}} }}

{{#ifeq:0|0|

{{#if:Datenkompression| |}} {{#if:.lzh, .lha | |}} {{#if:| |}} {{#if:| |}} {{#if:| |}} {{#if:application/x-lzh-compressed| |}} {{#if:|
}} {{#if:| |}} {{#if:| |}} }}

{{#invoke:TemplatePar|check all= opt= Name= Icon= Logo= Screenshot= Beschreibung= Dateiendung= MIME= MIME-Anm= MagischeZahl= MagischeZahlNotation= MagischeZahlHex= Entwickler= Veröffentlicht= LetzteVersion= LetzteVersionDatum= Art= Container für= Enthalten in= Erweitert von= Erweitert zu= Standard= Website= format=@@@ 0 | Wikipedia:Vorlagenfehler/Vorlage:Infobox Dateiformat}} template=Vorlage:Infobox Dateiformat

}}

LHa bezeichnet eine Kompressionsprogrammfamilie zur Dateiarchivierung. Das zugehörige Dateiformat LZH basiert auf dem LZHUFF-Verfahren, bei dem zuerst mit dem Lempel-Ziv-Storer-Szymanski-Algorithmus (LZSS) sich wiederholende Abschnitte eines Datenstroms dedupliziert und im zweiten Schritt mit einer Entropiekodierung nach Huffman noch stärker komprimiert werden. Aus den LHa-Quelltexten wurde der weit verbreitete Deflate-Algorithmus abgeleitet.

Dateiformat LZH und Algorithmus LZHUFF

Geschichte

Das Format LZH wurde 1988 vom Mediziner Haruyasu Yoshizaki ({{#invoke:Vorlage:lang|flat}}, Yoshizaki Haruyasu) mit Unterstützung von Professor Haruhiko Okumura ({{#invoke:Vorlage:lang|flat}}) von der Universität Matsusaka (heute: Mie-Chūkyō-Universität) für sein Kompressionsprogramm LHarc entworfen.

Dateinamenerweiterungen und MIME-Type

Neben der plattformübergreifenden Dateinamenerweiterung .lzh wird auf dem Amiga von Commodore die Erweiterung .lha verwendet sowie historisch auch .pma (PMarc) und .lzs (LArc). Der MIME-Type ist application/x-lzh-compressed.

Byte-Reihenfolge

Die Byte-Reihenfolge des LZH-Formats ist little-endian.

Headerformat

In LZH-Archiven ist jeder darin befindlichen Datei ein Header vorangestellt, der Informationen zur jeweiligen Datei enthält. Das LZH-Format kann drei Arten von Headern enthalten, und zwar Header nach level-0, level-1 oder level-2. In den folgenden zwei Tabellen ist die interne Struktur des LZH-Formats schematisch dargestellt.

level-0
LZH-Header
Komprimierte Daten
LZH-Header
Komprimierte Daten
level-1, level-2
LZH-Header
Erweiterungsheader
Erweiterungsheader
Komprimierte Daten
LZH-Header
Erweiterungsheader
Erweiterungsheader
Komprimierte Daten

Kompressionsmethoden

Die LH-Verfahren nutzen ein Stringersatzverfahren basierend auf dem Lempel-Ziv-Storer-Szymanski-Algorithmus (LZSS) und eine Entropiekodierung nach Huffman.

Das Dateiformat lässt die Nutzung verschiedener Packmethoden zu, normalerweise verschiedene Versionen des LH-Algorithmus mit Unterschieden in der

  • Fensterlänge (bis zu 4k bei LArc, bis zu 64k bei LHa),
  • maximalen Wortlänge (LArc: 17, LHa: 60, 256),
  • der Höhe des Grenzwertes des LZSS-Algorithmus (2, 3) und
  • statischem oder dynamischem Huffman:
Kanonisches LZH
-lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd-
Schiebewörterbuchlänge unkomprimiert 4 KiB 8 KiB 8 KiB 4 KiB 8 KiB 32 KiB 64 KiB leere Ordner
max. Wortlänge 60 bytes 256 bytes 256 bytes 256 bytes 256 bytes 256 bytes 256 bytes
Huffman dynamisch dynamisch statisch statisch statisch statisch statisch

Historische und nicht-kanonische Methoden:

LArc-Methoden: -lzs-, -lz2-, -lz3-, -lz4-, -lz5-, -lz7-, -lz8-;
LHa Joe Jared extensions: -lh8-, -lh9-, -lha-, -lhb-, -lhc-, -lhe-; -lhx-;
PMarc-Methoden: -pm0-, -pm1-, -pm2-, -pms-

Implementierungen von LHa

Ausgangspunkt war das Packprogramm LArc eines anderen Autors. Ursprünglich hieß das Programm LHarc. Eine komplett neugeschriebene Version wurde vorläufig LHx genannt und letztendlich als LH veröffentlicht. Um nicht mit dem damals neuen gleichnamigen Befehl „load high“ von MS-DOS 5.0 in Konflikt zu geraten, wurde es in LHa umbenannt.

Verwendung und Verbreitung

Erste größere Popularität erlangte nicht LHarc selbst, sondern eine in Mailboxnetzen um 1989 verbreitete, manipulierte Version namens LHice beziehungsweise ICE mit der Versionsnummer 1.14. Sie war praktisch identisch mit LHarc, aber die Endung der erzeugten Files lautete „.ice“, und in der Fortschrittsanzeige wurde „{{#invoke:Vorlage:lang|flat}}“ bzw. „{{#invoke:Vorlage:lang|flat}}“ statt „{{#invoke:Vorlage:lang|flat}}“ bzw. „{{#invoke:Vorlage:lang|flat}}“ ausgegeben. In der bald darauf folgenden Version LHarc 2.0 wurden derartige Manipulationen durch eine Verschlüsselung der programminternen Textstrings erschwert. Trotzdem tauchte auch von LHarc 2.0 eine gehackte Version auf, die sich „FOOBAR“ („Florian Orjanov’s and Olga Bachetzka’s ARchiver“) nannte und Archive mit der Dateiendung „.foo“ erzeugte.

Das Format wurde von id Software benutzt, um die Installationsdateien ihrer frühen Computerspiele zu komprimieren, beispielsweise Doom. LHa wurde in viele Betriebssystemumgebungen portiert und ist auf dem Amiga das meistbenutzte Archivformat, insbesondere im Aminet.

Der LZH-Algorithmus wurde von Firmen wie AMI für ihr BIOS verwendet, um den begrenzten Platz der Speicherbausteine auf der Hauptplatine im Computer effizient auszunutzen.<ref>{{#invoke:Vorlage:Literatur|f}}{{#if: 2022-11-29 12:46:22 InternetArchiveBot

       | {{#if: Vorlage:Cite book/ParamBool
               | Vorlage:Toter Link/archivebot
               | Vorlage:Webarchiv/archiv-bot
         }}
  }}{{#invoke:TemplatePar|check
   |all    = title=
   |opt    = vauthors= author= author1= authorlink= author-link= author-link1= author1-link= author2= author3= author4= author5= author6= author7= author8= author9= editor= last= first= last1= first1= last2= first2= last3= first3= last4= first4= last5= first5= last6= first6= last7= first7= last8= first8= last9= first9= last10= first10= last11= first11= last12= first12= last13= first13= last14= first14= last15= first15= others= script-title= trans-title= date= year= volume= issue= number= series= page= pages= at= issn= arxiv= bibcode= doi= pmid= pmc= jstor= oclc= id= url= url-status= format= access-date= archive-date= archive-url= archivebot= offline= location= publisher= language= quote= work= journal= newspaper= magazine= periodical=  name-list-style= url-access= doi-access= display-authors= via= s2cid= mr= type= citeseerx=  accessdate= archivedate= archiveurl= coauthors= month= day= last16= first16= last17= first17= last18= first18= last19= first19= last20= first20= last21= first21= last22= first22= last23= first23= last24= first24= last25= first25= last26= first26= last27= first27= last28= first28= last29= first29= last30= first30= last31= first31=
   |cat      = Wikipedia:Vorlagenfehler/Vorlage:Cite journal
   |errNS    = 0
   |template = Vorlage:Cite journal
   |format   = 
   |preview  = 1
  }}Vorlage:Cite book/URL{{#if:  | Vorlage:Cite book/Meldung }}{{#if:        | Vorlage:Cite book/Meldung }}{{#if: c’t
     || Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
        | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
       | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}Vorlage:Cite book/Meldung2{{#ifexpr: 0{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}}{{#ifeq:Andreas Stiller|^^||+1}}{{#ifeq:^^|^^||+1}} > 1
    | Vorlage:Cite book/Meldung
  }}</ref>

Das LZH-Format wird heute zwar in Europa und den USA kaum noch verwendet, ist aber nach wie vor in Japan sehr beliebt. Die Firma Microsoft hat für ihr Betriebssystem Windows XP in Japan eine Erweiterung für komprimierte Ordner im LZH-Format herausgebracht.<ref>support.microsoft.com</ref>

Y2K11-Bug

Zeitstempel seit dem Jahr 2011 werden auf 1980 gesetzt. Dieser Fehler erfordert ein Update des Packprogramms.<ref>aminet.net für die Vergangenheit</ref><ref>aminet.net für die Zukunft</ref> Es wurde in Assemblersprache der Überlauftest cmpi.l #2010,d6 benutzt, offensichtlich ein Zahlendreher zu 2100.

Siehe auch

Weblinks

Einzelnachweise

<references />