diff -urN lha-114d/README.ty lha-114d.ty1/README.ty
--- lha-114d/README.ty
+++ lha-114d.ty1/README.ty	Thu Nov 26 05:30:28 1998
@@ -0,0 +1,68 @@
+####################################################################
+     lha for UNIX V 1.14d.ty1
+          Yoshioka Tsuneo
+          e-mail: tsuneo-y@is.aist-nara.ac.jp,QWF00133@nifty.ne.jp
+####################################################################
+
+@ What is this?
+  This is lha archiver that can compress,uncompress,archive,extract
+files.
+  This version is editted from lha-1.14d by Yoshioka Tsuneo.
+
+@ Changes from lha-1.14d
+lha-1.14d -> lha-1.14d.ty1
+	 1998/11/26
+	 + Support Large Size SelF Extracting LHarchives until 40KB.
+	 (That may be made by UNLHA32.DLL.)
+         The size can change by MAX_SFX_HEADER_SIZE value.
+	 + You can extract lha archive that contain -lhd- header.
+
+@ Where can I get?
+The latest version can download from under URL.
+    http://infonet.aist-nara.ac.jp/~tsuneo-y/soft/lha/ (expired at 1999/03/31)
+
+@ Distribute Condition
+ Please obey V 1.14d.
+ My(Yoshioka Tsuneo) code that is changed from V1.14d is Public Domain.
+
+@ Authors.
+lha-1.14d -> lha-1.14d.ty1
+   Tsuneo Yoshioka
+   tsuneo-y@is.aist-nara.ac.jp  (expired at 1999/03/31)
+   QWF00133@nifty.ne.jp
+
+lha-1.14 -> lha-1.14d
+   Tsugio Okamoto
+   tsugio@mxv.meshnet.or.jp
+   tsugio@muc.biglobe.ne.jp
+   URL: http://www2m.biglobe.ne.jp/~dolphin/
+   lha-1.14d can download from this URL.
+
+lha-1.00 -> lha-1.14
+   1995/01/14   
+   Nobutaka Watazaki
+   JBD02514@nifty.ne.jp
+   (watazaki@shimadzu.co.jp (obsoluted?))
+
+LHx(arc) V2.00 for OSK (MS-DOS) -> lha-1.00 (UNIX)
+   1992/04/02
+   Masaru Oki
+   GGC02412@nifty.ne.jp
+   ((oki@wbg.telcom.oki.co.JP(obsoluted?))
+
+LHarc 1.02 (unix) + LHx C2.01E(MS-DOS) -> LHx(arc) V2.00 for OSK (MSDOS)
+   Sakura Tomozou
+
+LHarc1.02 (unix)
+   1990/03/19
+   Yooichi.Tagawa
+
+LHx C2.01E (MS-DOS)
+   Yoshiozaki Eiichi
+   SDI00506@nifty.ne.jp
+   URL: http://www.clione.ne.jp/lha/
+   He is original lha author.
+   Main Support Forum is FLABO of NIFTY-Serve(BBS)(http://www.nifty.ne.jp/).
+
+etc.....
+
diff -urN lha-114d/src/extract.c lha-114d.ty1/src/extract.c
--- lha-114d/src/extract.c	Wed Jan 15 18:49:30 1997
+++ lha-114d.ty1/src/extract.c	Thu Nov 26 02:51:05 1998
@@ -25,6 +25,13 @@
 	interface.packed = packed_size;
 
 	switch (method) {
+	case LZHDIRS_METHOD_NUM:        /* -lhd- */ /* by Yoshioka Tsuneo */
+		start_indicator(name, original_size
+			      ,verify_mode ? "Testing " : "Melting ", 2048);
+		if(!verify_mode){
+		  mkdir(name,0777);
+		}
+		break;
 	case LZHUFF0_METHOD_NUM:
 	case LARC4_METHOD_NUM:
 		start_indicator(name, original_size
diff -urN lha-114d/src/lharc.c lha-114d.ty1/src/lharc.c
--- lha-114d/src/lharc.c	Wed Jan 15 18:49:30 1997
+++ lha-114d.ty1/src/lharc.c	Fri Nov 27 03:30:17 1998
@@ -137,6 +137,7 @@
 LHa      for UNIX  V 1.00  Copyright(C) 1992  Masaru Oki\n\
 LHa      for UNIX  V 1.14  Modified     1995  Nobutaka Watazaki\n\
 LHa      for UNIX  V 1.14d Modified     1997  Tsugio Okamoto\n\
+LHa      for UNIX  V 1.14d.ty1 Modified 1998  Tsuneo Yoshioka\n\
 ");
 	fprintf(stderr, "\
 usage: lha [-]{axelvudmcp[q{num}][vnfodizg012]}[w=<dir>] archive_file [file...]\n\
diff -urN lha-114d/src/lhext.c lha-114d.ty1/src/lhext.c
--- lha-114d/src/lhext.c	Wed Jan 15 18:49:30 1997
+++ lha-114d.ty1/src/lhext.c	Thu Nov 26 02:51:05 1998
@@ -273,11 +273,13 @@
 			unlink(name);
 			errno = 0;
 			remove_extracting_file_when_interrupt = TRUE;
+			fp = NULL;
 
-			if ((fp = open_with_make_path(name)) != NULL) {
+			if (method == LZHDIRS_METHOD_NUM /* Yoshioka Tsuneo */
+			    || (fp = open_with_make_path(name)) != NULL) {
 				crc = decode_lzhuf
 					(afp, fp, hdr->original_size, hdr->packed_size, name, method);
-				fclose(fp);
+				if(fp) fclose(fp);
 			}
 			remove_extracting_file_when_interrupt = FALSE;
 			signal(SIGINT, SIG_DFL);
diff -urN lha-114d/src/util.c lha-114d.ty1/src/util.c
--- lha-114d/src/util.c	Wed Jan 15 18:49:30 1997
+++ lha-114d.ty1/src/util.c	Thu Nov 26 03:43:20 1998
@@ -149,17 +149,25 @@
 skip_msdos_sfx1_code(fp)
 	FILE           *fp;
 {
-	unsigned char   buffer[4096];
+#ifndef MAX_SFX_HEADER_SIZE
+#define MAX_SFX_HEADER_SIZE 40000   /* by Yoshioka Tsuneo */
+#endif
+	unsigned char buffer[MAX_SFX_HEADER_SIZE];
 	unsigned char  *p, *q;
 	int             n;
 
-	n = fread(buffer, sizeof(char), 4096, fp);
+	n = fread(buffer, sizeof(char), MAX_SFX_HEADER_SIZE, fp);
 
-	for (p = buffer + 2, q = buffer + n - 5; p < q; p++) {
+	for (p = buffer + 2, q = buffer + n - 19; p < q; p++) {
 		/* found "-l??-" keyword (as METHOD type string) */
 		if (p[0] == '-' && p[1] == 'l' && p[4] == '-') {
 			/* size and checksum validate check */
-			if (p[-2] > 20 && p[-1] == calc_sum(p, p[-2])) {
+		        /* support level 2 header by Yoshioka Tsuneo */
+		        int header_level = p[18];
+
+			if(((header_level == 0x00 || header_level == 0x01)
+			    && (p[-2] > 20 && p[-1] == calc_sum(p,p[-2])))
+			   || ((header_level == 0x02) && p[-2] >=26)){
 				fseek(fp, ((p - 2) - buffer) - n, SEEK_CUR);
 				return TRUE;
 			}
