aboutsummaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--project/Makefile4
-rw-r--r--project/revision.sh2
-rw-r--r--project/src/analyze.c2
-rw-r--r--project/src/file-type.c234
-rw-r--r--project/src/file-type.h210
-rw-r--r--project/src/lib-analyze.c47
-rw-r--r--project/src/lib-bzip2.c13
-rw-r--r--project/src/lib-bzip2.h6
-rw-r--r--project/src/lib-file.c24
-rw-r--r--project/src/lib-image2.c3
-rw-r--r--project/src/lib-lecode.c69
-rw-r--r--project/src/lib-ledis.c12
-rw-r--r--project/src/lib-lex.c12
-rw-r--r--project/src/lib-lzma.c27
-rw-r--r--project/src/lib-lzma.h13
-rw-r--r--project/src/lib-mdl.c1
-rw-r--r--project/src/lib-std.c245
-rw-r--r--project/src/lib-std.h48
-rw-r--r--project/src/lib-szs-file.h3
-rw-r--r--project/src/lib-szs.c295
-rw-r--r--project/src/lib-szs.h31
-rw-r--r--project/src/prefix.inc221
-rw-r--r--project/src/ui/tab-wbmgt.inc3
-rw-r--r--project/src/ui/tab-wctct.inc5
-rw-r--r--project/src/ui/tab-wimgt.inc3
-rw-r--r--project/src/ui/tab-wkclt.inc3
-rw-r--r--project/src/ui/tab-wkmpt.inc3
-rw-r--r--project/src/ui/tab-wlect.inc3
-rw-r--r--project/src/ui/tab-wmdlt.inc3
-rw-r--r--project/src/ui/tab-wpatt.inc3
-rw-r--r--project/src/ui/tab-wstrt.inc3
-rw-r--r--project/src/ui/tab-wszst.inc55
-rw-r--r--project/src/ui/ui-wbmgt.c24
-rw-r--r--project/src/ui/ui-wbmgt.h6
-rw-r--r--project/src/ui/ui-wctct.c26
-rw-r--r--project/src/ui/ui-wctct.h6
-rw-r--r--project/src/ui/ui-wimgt.c24
-rw-r--r--project/src/ui/ui-wimgt.h6
-rw-r--r--project/src/ui/ui-wkclt.c24
-rw-r--r--project/src/ui/ui-wkclt.h6
-rw-r--r--project/src/ui/ui-wkmpt.c24
-rw-r--r--project/src/ui/ui-wkmpt.h6
-rw-r--r--project/src/ui/ui-wlect.c24
-rw-r--r--project/src/ui/ui-wlect.h6
-rw-r--r--project/src/ui/ui-wmdlt.c24
-rw-r--r--project/src/ui/ui-wmdlt.h6
-rw-r--r--project/src/ui/ui-wpatt.c24
-rw-r--r--project/src/ui/ui-wpatt.h6
-rw-r--r--project/src/ui/ui-wstrt.c24
-rw-r--r--project/src/ui/ui-wstrt.h6
-rw-r--r--project/src/ui/ui-wszst.c355
-rw-r--r--project/src/ui/ui-wszst.h14
-rw-r--r--project/src/ui/ui.def500
-rw-r--r--project/src/wbmgt.c9
-rw-r--r--project/src/wctct.c9
-rw-r--r--project/src/wimgt.c11
-rw-r--r--project/src/wkclt.c11
-rw-r--r--project/src/wkmpt.c9
-rw-r--r--project/src/wlect.c13
-rw-r--r--project/src/wmdlt.c9
-rw-r--r--project/src/wpatt.c9
-rw-r--r--project/src/wstrt.c9
-rw-r--r--project/src/wszst.c38
-rw-r--r--project/src/wtest.c9
-rw-r--r--project/templates/HISTORY.txt32
-rw-r--r--project/templates/MILESTONES.txt3
-rw-r--r--project/templates/module/last-history.txt18
-rw-r--r--project/text-files/lpar.inc/lpar-sect-param-cr.inc7
-rw-r--r--project/text-files/setup.inc/setup-order-cr.inc4
69 files changed, 2164 insertions, 783 deletions
diff --git a/project/Makefile b/project/Makefile
index c52ba26..8ad4f88 100644
--- a/project/Makefile
+++ b/project/Makefile
@@ -57,7 +57,7 @@ WPATT_LONG = Wiimms PAT Tool
WSTRT_SHORT = wstrt
WSTRT_LONG = Wiimms StaticR Tool
-VERSION_NUM = 2.41b
+VERSION_NUM = 2.42a
BETA_VERSION = 0
# 0:off -1:"beta" >0:"beta#"
@@ -142,7 +142,7 @@ DEFINES1 += -DLARGE_FILES -D_FILE_OFFSET_BITS=64
DEFINES1 += -DWSZST # compile szs tools (switch for shared sources)
DEFINES1 += -DDEBUG_ASSERT # enable ASSERTions in release version too
DEFINES1 += -DEXTENDED_ERRORS=1 # enable extended error messages (function,line,file)
-DEFINES1 += -DUIOPT_INDEX_SIZE=330 # define max number of options (default 0x100)
+DEFINES1 += -DUIOPT_INDEX_SIZE=340 # define max number of options (default 0x100)
CFLAGS += $(DCLIB_CFLAGS)
CFLAGS += -std=gnu99 -fomit-frame-pointer -fno-strict-aliasing -funroll-loops
diff --git a/project/revision.sh b/project/revision.sh
index 2f377c3..03f89d5 100644
--- a/project/revision.sh
+++ b/project/revision.sh
@@ -1 +1 @@
-revision=8971
+revision=8989
diff --git a/project/src/analyze.c b/project/src/analyze.c
index 09d08b0..c34a454 100644
--- a/project/src/analyze.c
+++ b/project/src/analyze.c
@@ -228,7 +228,7 @@ static analyze_item_t * add_item
}
ERROR0(ERR_FATAL,"Analyze list full (max=%u): %s\n",MAX_ANA_ITEM,ana->szs->fname);
- exit(ERR_FATAL);
+ ExitFixed(ERR_FATAL);
}
///////////////////////////////////////////////////////////////////////////////
diff --git a/project/src/file-type.c b/project/src/file-type.c
index 97ba5a8..0af6f8b 100644
--- a/project/src/file-type.c
+++ b/project/src/file-type.c
@@ -78,7 +78,19 @@ const file_type_t FileTypeTab[FF_N+1] =
"YAZ0 like, but with bzip2 compression"
},
- // FF_BZIP2 = 5
+ // FF_YBZ = 5
+ {
+ FF_YBZ, 0, 0, "YBZ",
+ ".ybz", ".szs", ".ybz",
+ FFT_VALID | FFT_COMPRESS | FFT_TRACK,
+ 4, {0x59,0x42,0x5a,0x30}, // "YBZ0"
+ 0,
+ MinusString,
+ MinusString,
+ "YAZ0 like header, but with bzip2 compression"
+ },
+
+ // FF_BZIP2 = 6
{
FF_BZIP2, 0, 0, "BZIP2",
".bz2", ".szs", ".bz2",
@@ -90,7 +102,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"bzip2 compressed file"
},
- // FF_LZ = 6
+ // FF_LZ = 7
{
FF_LZ, 0, 0, "LZ",
".lz", ".szs", ".lz",
@@ -102,7 +114,19 @@ const file_type_t FileTypeTab[FF_N+1] =
"YAZ0 like, but with LZMA compression"
},
- // FF_LZMA = 7
+ // FF_YLZ = 8
+ {
+ FF_YLZ, 0, 0, "YLZ",
+ ".ylz", ".szs", ".ylz",
+ FFT_VALID | FFT_COMPRESS | FFT_TRACK,
+ 4, {0x59,0x4c,0x5a,0x30}, // "YLZ0"
+ 0,
+ MinusString,
+ MinusString,
+ "YAZ0 like header, but with LZMA compression"
+ },
+
+ // FF_LZMA = 9
{
FF_LZMA, 0, 0, "LZMA",
".lzma", ".szs", ".lzma",
@@ -114,7 +138,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"LZMA compressed file"
},
- // FF_XZ = 8
+ // FF_XZ = 10
{
FF_XZ, 0, 0, "XZ",
".xz", ".szs", ".xz",
@@ -126,7 +150,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"xz compressed file"
},
- // FF_U8 = 9
+ // FF_U8 = 11
{
FF_U8, 0, 0, "U8",
".u8", ".szs", ".u8",
@@ -138,7 +162,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Nintendos archive format"
},
- // FF_WU8 = 10
+ // FF_WU8 = 12
{
FF_WU8, 0, 0, "WU8",
".wu8", ".wu8", ".wu8",
@@ -150,7 +174,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wiimms differential U8"
},
- // FF_RARC = 11
+ // FF_RARC = 13
{
FF_RARC, 0, 0, "RARC",
".rarc", ".arc", ".rarc",
@@ -162,7 +186,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Archive format for objects"
},
- // FF_BRRES = 12
+ // FF_BRRES = 14
{
FF_BRRES, 0, 0, "BRRES",
".brres", ".szs", ".bres",
@@ -174,7 +198,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Archive format for objects"
},
- // FF_BREFF = 13
+ // FF_BREFF = 15
{
FF_BREFF, 0, 0, "BREFF",
".breff", ".szs", ".reff",
@@ -186,7 +210,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Main file of an effect pair"
},
- // FF_BREFT = 14
+ // FF_BREFT = 16
{
FF_BREFT, 0, 0, "BREFT",
".breft", ".szs", ".reft",
@@ -198,7 +222,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Image file of an effect pair"
},
- // FF_RKC = 15
+ // FF_RKC = 17
{
FF_RKC, 0, 0, "RKC",
".rkc", ".szs", ".rkc",
@@ -210,7 +234,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_PACK = 16
+ // FF_PACK = 18
{
FF_PACK, 0, 0, "PACK",
".pack", ".szs", ".pack",
@@ -222,7 +246,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Simple archive format"
},
- // FF_USE_LTA = 17
+ // FF_USE_LTA = 19
{
FF_USE_LTA, 0, 0, "USE-LTA",
".szs", ".szs", ".szs",
@@ -234,7 +258,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"LE-CODE redirect to LTA"
},
- // FF_LTA = 18
+ // FF_LTA = 20
{
FF_LTA, 0, 0, "LTA",
".lta", "", ".lta",
@@ -246,7 +270,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"LE-CODE Track Archive"
},
- // FF_LFL = 19
+ // FF_LFL = 21
{
FF_LFL, 0, 0, "LFL",
".lfl", ".szs", ".lfl",
@@ -258,7 +282,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"LE-CODE File List"
},
- // FF_CHR = 20
+ // FF_CHR = 22
{
FF_CHR, 0, 0, "CHR",
".chr", ".szs", ".chr0",
@@ -270,7 +294,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Model movement animations"
},
- // FF_CLR = 21
+ // FF_CLR = 23
{
FF_CLR, 0, 0, "CLR",
".clr", ".szs", ".clr0",
@@ -282,7 +306,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Colour changing animations"
},
- // FF_MDL = 22
+ // FF_MDL = 24
{
FF_MDL, FF_MDL, FF_MDL_TXT, "MDL",
".mdl", ".szs", ".mdl0",
@@ -294,7 +318,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Model files"
},
- // FF_PAT = 23
+ // FF_PAT = 25
{
FF_PAT, FF_PAT, FF_PAT_TXT, "PAT",
".pat", ".szs", ".pat0",
@@ -306,7 +330,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Texture swapping animations"
},
- // FF_SCN = 24
+ // FF_SCN = 26
{
FF_SCN, 0, 0, "SCN",
".scn", ".szs", ".scn0",
@@ -318,7 +342,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Polygon morphing animations"
},
- // FF_SHP = 25
+ // FF_SHP = 27
{
FF_SHP, 0, 0, "SHP",
".shp", ".szs", ".shp0",
@@ -330,7 +354,7 @@ const file_type_t FileTypeTab[FF_N+1] =
filetype_info_unknown
},
- // FF_SRT = 26
+ // FF_SRT = 28
{
FF_SRT, 0, 0, "SRT",
".srt", ".szs", ".srt0",
@@ -342,7 +366,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Texture movement animations"
},
- // FF_TEX = 27
+ // FF_TEX = 29
{
FF_TEX, 0, 0, "TEX",
".tex", ".szs", ".tex0",
@@ -354,7 +378,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Texture file"
},
- // FF_TEX_CT = 28
+ // FF_TEX_CT = 30
{
FF_TEX_CT, 0, 0, "TEX+CT",
".tex", ".szs", ".tex0",
@@ -366,7 +390,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Texture file with CTGP-CODE"
},
- // FF_CTDEF = 29
+ // FF_CTDEF = 31
{
FF_CTDEF, 0, 0, "CT-DEF",
".txt", ".szs", ".txt",
@@ -378,7 +402,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-CODE definition file"
},
- // FF_CT0_CODE = 30
+ // FF_CT0_CODE = 32
{
FF_CT0_CODE, 0, 0, "C0CODE",
".bin", ".szs", ".bin",
@@ -390,7 +414,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-CODE for main.dol section T2"
},
- // FF_CT0_DATA = 31
+ // FF_CT0_DATA = 33
{
FF_CT0_DATA, 0, 0, "C0DATA",
".bin", ".szs", ".bin",
@@ -402,7 +426,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-DATA for main.dol section D8"
},
- // FF_CT1_CODE = 32
+ // FF_CT1_CODE = 34
{
FF_CT1_CODE, 0, 0, "C1CODE",
".bin", ".szs", ".bin",
@@ -414,7 +438,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-CODE for strap TEX0 file"
},
- // FF_CT1_DATA = 33
+ // FF_CT1_DATA = 35
{
FF_CT1_DATA, 0, 0, "C1DATA",
".ctcode", ".szs", ".ctcode",
@@ -426,7 +450,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-DATA for strap TEX0 file"
},
- // FF_CUP1 = 34
+ // FF_CUP1 = 36
{
FF_CUP1, 0, 0, "CUP1",
".bin", ".szs", ".bin",
@@ -438,7 +462,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-DATA section: Cups"
},
- // FF_CRS1 = 35
+ // FF_CRS1 = 37
{
FF_CRS1, 0, 0, "CRS1",
".bin", ".szs", ".bin",
@@ -450,7 +474,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-DATA section: Tracks"
},
- // FF_MOD1 = 36
+ // FF_MOD1 = 38
{
FF_MOD1, 0, 0, "MOD1",
".bin", ".szs", ".bin",
@@ -462,7 +486,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-DATA section: main.dol patches"
},
- // FF_MOD2 = 37
+ // FF_MOD2 = 39
{
FF_MOD2, 0, 0, "MOD2",
".bin", ".szs", ".bin",
@@ -474,7 +498,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-DATA section: StaticR.rel patches"
},
- // FF_OVR1 = 38
+ // FF_OVR1 = 40
{
FF_OVR1, 0, 0, "OVR1",
".bin", ".szs", ".bin",
@@ -486,7 +510,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"CT-DATA section: Speedometer"
},
- // FF_LE_BIN = 39
+ // FF_LE_BIN = 41
{
FF_LE_BIN, 0, 0, "LE-BIN",
".bin", ".szs", ".bin",
@@ -498,7 +522,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"LE-CODE binary"
},
- // FF_LEX = 40
+ // FF_LEX = 42
{
FF_LEX, FF_LEX, FF_LEX_TXT, "LEX",
".lex", ".szs", ".lex",
@@ -510,7 +534,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"LECODE extension file"
},
- // FF_LEX_TXT = 41
+ // FF_LEX_TXT = 43
{
FF_LEX_TXT, FF_LEX, FF_LEX_TXT, "LEX-TXT",
".txt", ".szs", ".txt",
@@ -522,7 +546,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of LEX"
},
- // FF_LPAR = 42
+ // FF_LPAR = 44
{
FF_LPAR, 0, 0, "LPAR",
".txt", ".szs", ".txt",
@@ -534,7 +558,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file with LE-CODE parameters"
},
- // FF_LEDEF = 43
+ // FF_LEDEF = 45
{
FF_LEDEF, 0, 0, "LE-DEF",
".txt", ".szs", ".txt",
@@ -546,7 +570,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"LE-CODE definition file"
},
- // FF_LEDIS = 44
+ // FF_LEDIS = 46
{
FF_LEDIS, 0, 0, "LE-DIS",
".txt", ".szs", ".txt",
@@ -558,7 +582,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file with CT+LE-CODE distribution settings"
},
- // FF_LEREF = 45
+ // FF_LEREF = 47
{
FF_LEREF, 0, 0, "LE-REF",
".txt", ".szs", ".txt",
@@ -570,7 +594,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file as track reference"
},
- // FF_LESTR = 46
+ // FF_LESTR = 48
{
FF_LESTR, 0, 0, "LE-STR",
".txt", ".szs", ".txt",
@@ -582,7 +606,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file strings for tracks"
},
- // FF_SHA1REF = 47
+ // FF_SHA1REF = 49
{
FF_SHA1REF, 0, 0, "SHA1REF",
".txt", ".szs", ".txt",
@@ -594,7 +618,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file with SHA1 of tracks"
},
- // FF_SHA1ID = 48
+ // FF_SHA1ID = 50
{
FF_SHA1ID, 0, 0, "SHA1ID",
".txt", ".szs", ".txt",
@@ -606,7 +630,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file with SHA1 and file_id of tracks"
},
- // FF_PREFIX = 49
+ // FF_PREFIX = 51
{
FF_PREFIX, 0, 0, "PREFIX",
".txt", ".szs", ".txt",
@@ -618,7 +642,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file with console/game prefixes and info"
},
- // FF_MTCAT = 50
+ // FF_MTCAT = 52
{
FF_MTCAT, 0, 0, "MTCAT",
".txt", ".szs", ".txt",
@@ -630,7 +654,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file with MKW Track Categories"
},
- // FF_CT_SHA1 = 51
+ // FF_CT_SHA1 = 53
{
FF_CT_SHA1, 0, 0, "CT-SHA1",
".txt", ".szs", ".txt",
@@ -642,7 +666,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_MDL_TXT = 52
+ // FF_MDL_TXT = 54
{
FF_MDL_TXT, FF_MDL, FF_MDL_TXT, "MDLTXT",
".txt", ".szs", ".txt",
@@ -654,7 +678,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of MDL"
},
- // FF_PAT_TXT = 53
+ // FF_PAT_TXT = 55
{
FF_PAT_TXT, FF_PAT, FF_PAT_TXT, "PATTXT",
".txt", ".szs", ".txt",
@@ -666,7 +690,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of PAT"
},
- // FF_TPL = 54
+ // FF_TPL = 56
{
FF_TPL, 0, 0, "TPL",
".tpl", ".szs", ".tpl",
@@ -678,7 +702,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Image container"
},
- // FF_TPLX = 55
+ // FF_TPLX = 57
{
FF_TPLX, 0, 0, "TPLx",
".tpl", ".szs", ".tpl",
@@ -690,7 +714,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Image container with extended file header"
},
- // FF_CUPICON = 56
+ // FF_CUPICON = 58
{
FF_CUPICON, 0, 0, "TPLx",
".tpl", ".szs", ".tpl",
@@ -702,7 +726,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Alias for TPLx.CMPR"
},
- // FF_BTI = 57
+ // FF_BTI = 59
{
FF_BTI, 0, 0, "BTI",
".bti", ".szs", ".bti",
@@ -714,7 +738,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Image container"
},
- // FF_BREFT_IMG = 58
+ // FF_BREFT_IMG = 60
{
FF_BREFT_IMG, 0, 0, "BT-IMG",
".bt-img", ".szs", ".bt-img",
@@ -726,7 +750,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Raw image of BREFT file"
},
- // FF_BMG = 59
+ // FF_BMG = 61
{
FF_BMG, FF_BMG, FF_BMG_TXT, "BMG",
".bmg", ".szs", ".bmg",
@@ -738,7 +762,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Message file"
},
- // FF_BMG_TXT = 60
+ // FF_BMG_TXT = 62
{
FF_BMG_TXT, FF_BMG, FF_BMG_TXT, "BMGTXT",
".txt", ".szs", ".txt",
@@ -750,7 +774,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of BMG"
},
- // FF_KCL = 61
+ // FF_KCL = 63
{
FF_KCL, FF_KCL, FF_KCL_TXT, "KCL",
".kcl", ".szs", ".kcl",
@@ -762,7 +786,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Collision file"
},
- // FF_KCL_TXT = 62
+ // FF_KCL_TXT = 64
{
FF_KCL_TXT, FF_KCL, FF_KCL_TXT, "KCLTXT",
".obj", ".szs", ".obj",
@@ -774,7 +798,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wavefront OBJ by WSZST"
},
- // FF_WAV_OBJ = 63
+ // FF_WAV_OBJ = 65
{
FF_WAV_OBJ, FF_KCL, FF_WAV_OBJ, "WAVOBJ",
".obj", ".szs", ".obj",
@@ -786,7 +810,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wavefront OBJ"
},
- // FF_SKP_OBJ = 64
+ // FF_SKP_OBJ = 66
{
FF_SKP_OBJ, FF_KCL, FF_SKP_OBJ, "SKPOBJ",
".obj", ".szs", ".obj",
@@ -798,7 +822,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wavefront OBJ by Sketchup"
},
- // FF_KMP = 65
+ // FF_KMP = 67
{
FF_KMP, FF_KMP, FF_KMP_TXT, "KMP",
".kmp", ".szs", ".kmp",
@@ -810,7 +834,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Track information file"
},
- // FF_KMP_TXT = 66
+ // FF_KMP_TXT = 68
{
FF_KMP_TXT, FF_KMP, FF_KMP_TXT, "KMPTXT",
".txt", ".szs", ".txt",
@@ -822,7 +846,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of KMP"
},
- // FF_ITEMSLT = 67
+ // FF_ITEMSLT = 69
{
FF_ITEMSLT, FF_ITEMSLT, FF_ITEMSLT_TXT, "ITEMSLT",
".bin", ".szs", ".slt",
@@ -834,7 +858,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_ITEMSLT_TXT = 68
+ // FF_ITEMSLT_TXT = 70
{
FF_ITEMSLT_TXT, FF_ITEMSLT, FF_ITEMSLT_TXT, "ITEMSLTTXT",
".txt", ".szs", ".txt",
@@ -846,7 +870,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KMG = 69
+ // FF_KMG = 71
{
FF_KMG, FF_KMG, FF_KMG_TXT, "KMG",
".kmg", ".szs", ".kmg",
@@ -858,7 +882,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KMG_TXT = 70
+ // FF_KMG_TXT = 72
{
FF_KMG_TXT, FF_KMG, FF_KMG_TXT, "KMGTXT",
".txt", ".szs", ".txt",
@@ -870,7 +894,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRM = 71
+ // FF_KRM = 73
{
FF_KRM, FF_KRM, FF_KRM_TXT, "KRM",
".krm", ".szs", ".krm",
@@ -882,7 +906,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRM_TXT = 72
+ // FF_KRM_TXT = 74
{
FF_KRM_TXT, FF_KRM, FF_KRM_TXT, "KRMTXT",
".txt", ".szs", ".txt",
@@ -894,7 +918,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRT = 73
+ // FF_KRT = 75
{
FF_KRT, FF_KRT, FF_KRT_TXT, "KRT",
".krt", ".szs", ".krt",
@@ -906,7 +930,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRT_TXT = 74
+ // FF_KRT_TXT = 76
{
FF_KRT_TXT, FF_KRT, FF_KRT_TXT, "KRTTXT",
".txt", ".szs", ".txt",
@@ -918,7 +942,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_OBJFLOW = 75
+ // FF_OBJFLOW = 77
{
FF_OBJFLOW, FF_OBJFLOW, FF_OBJFLOW_TXT, "OBFLOW",
".bin", ".szs", ".bin",
@@ -930,7 +954,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_OBJFLOW_TXT = 76
+ // FF_OBJFLOW_TXT = 78
{
FF_OBJFLOW_TXT, FF_OBJFLOW, FF_OBJFLOW_TXT, "OF-TXT",
".txt", ".szs", ".txt",
@@ -942,7 +966,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_ITEM = 77
+ // FF_GH_ITEM = 79
{
FF_GH_ITEM, FF_GH_ITEM, FF_GH_ITEM_TXT, "GHITEM",
".bin", ".szs", ".bin",
@@ -954,7 +978,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_ITEM_TXT = 78
+ // FF_GH_ITEM_TXT = 80
{
FF_GH_ITEM_TXT, FF_GH_ITEM, FF_GH_ITEM_TXT, "GI-TXT",
".txt", ".szs", ".txt",
@@ -966,7 +990,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_IOBJ = 79
+ // FF_GH_IOBJ = 81
{
FF_GH_IOBJ, FF_GH_IOBJ, FF_GH_IOBJ_TXT, "GHIOBJ",
".bin", ".szs", ".bin",
@@ -978,7 +1002,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_IOBJ_TXT = 80
+ // FF_GH_IOBJ_TXT = 82
{
FF_GH_IOBJ_TXT, FF_GH_IOBJ, FF_GH_IOBJ_TXT, "GIOTXT",
".txt", ".szs", ".txt",
@@ -990,7 +1014,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KART = 81
+ // FF_GH_KART = 83
{
FF_GH_KART, FF_GH_KART, FF_GH_KART_TXT, "GHKART",
".bin", ".szs", ".bin",
@@ -1002,7 +1026,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KART_TXT = 82
+ // FF_GH_KART_TXT = 84
{
FF_GH_KART_TXT, FF_GH_KART, FF_GH_KART_TXT, "GK-TXT",
".txt", ".szs", ".txt",
@@ -1014,7 +1038,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KOBJ = 83
+ // FF_GH_KOBJ = 85
{
FF_GH_KOBJ, FF_GH_KOBJ, FF_GH_KOBJ_TXT, "GHKOBJ",
".bin", ".szs", ".bin",
@@ -1026,7 +1050,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KOBJ_TXT = 84
+ // FF_GH_KOBJ_TXT = 86
{
FF_GH_KOBJ_TXT, FF_GH_KOBJ, FF_GH_KOBJ_TXT, "GKOTXT",
".txt", ".szs", ".txt",
@@ -1038,7 +1062,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_DRIVER = 85
+ // FF_DRIVER = 87
{
FF_DRIVER, 0, 0, "DRV",
".bin", ".szs", ".bin",
@@ -1050,7 +1074,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_VEHICLE = 86
+ // FF_VEHICLE = 88
{
FF_VEHICLE, 0, 0, "VEH",
".bin", ".szs", ".bin",
@@ -1062,7 +1086,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_BRASD = 87
+ // FF_BRASD = 89
{
FF_BRASD, 0, 0, "BRASD",
".brasd", ".szs", ".brasd",
@@ -1074,7 +1098,7 @@ const file_type_t FileTypeTab[FF_N+1] =
filetype_info_unknown
},
- // FF_RKG = 88
+ // FF_RKG = 90
{
FF_RKG, 0, 0, "RKG",
".rkg", ".szs", ".rkg",
@@ -1086,7 +1110,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_RKCO = 89
+ // FF_RKCO = 91
{
FF_RKCO, 0, 0, "RKCO",
".rkco", ".szs", ".rkco",
@@ -1098,7 +1122,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_STATICR = 90
+ // FF_STATICR = 92
{
FF_STATICR, 0, 0, "STATICR",
".rel", ".szs", ".rel",
@@ -1110,7 +1134,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"A 'StaticR.rel' file"
},
- // FF_DOL = 91
+ // FF_DOL = 93
{
FF_DOL, 0, 0, "DOL",
".dol", ".szs", ".dol",
@@ -1122,7 +1146,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"An executable DOL file"
},
- // FF_GCT = 92
+ // FF_GCT = 94
{
FF_GCT, 0, 0, "GCT",
".gct", ".szs", ".gct",
@@ -1134,7 +1158,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Gecko Cheat Code, binary"
},
- // FF_GCT_TXT = 93
+ // FF_GCT_TXT = 95
{
FF_GCT_TXT, 0, 0, "GCT-TXT",
".gct", ".szs", ".gct",
@@ -1146,7 +1170,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Gecko Cheat Code, text"
},
- // FF_GCH = 94
+ // FF_GCH = 96
{
FF_GCH, 0, 0, "GCH",
".gch", ".szs", ".gch",
@@ -1158,7 +1182,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Gecko Cheat Handler + coded"
},
- // FF_WCH = 95
+ // FF_WCH = 97
{
FF_WCH, 0, 0, "WCH",
".wch", ".szs", ".wch",
@@ -1170,7 +1194,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wiimms Cheat Handler + codes"
},
- // FF_WPF = 96
+ // FF_WPF = 98
{
FF_WPF, 0, 0, "WPF",
".wpf", ".szs", ".wpf",
@@ -1182,7 +1206,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wiimms Patch File"
},
- // FF_XPF = 97
+ // FF_XPF = 99
{
FF_XPF, 0, 0, "XPF",
".xpf", ".szs", ".xpf",
@@ -1194,7 +1218,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Extended Patch File"
},
- // FF_DISTRIB = 98
+ // FF_DISTRIB = 100
{
FF_DISTRIB, 0, 0, "DISTRIB",
".txt", ".szs", ".txt",
@@ -1206,7 +1230,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_PNG = 99
+ // FF_PNG = 101
{
FF_PNG, 0, 0, "PNG",
".png", ".png", ".png",
@@ -1218,7 +1242,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"A public image format"
},
- // FF_PORTDB = 100
+ // FF_PORTDB = 102
{
FF_PORTDB, 0, 0, "PORTDB",
".bin", ".szs", ".bin",
@@ -1230,7 +1254,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_TXT = 101
+ // FF_TXT = 103
{
FF_TXT, 0, 0, "TXT",
".txt", ".szs", ".txt",
@@ -1242,7 +1266,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_SCRIPT = 102
+ // FF_SCRIPT = 104
{
FF_SCRIPT, 0, 0, "SCRIPT",
".script", ".szs", ".script",
@@ -1254,7 +1278,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_JSON = 103
+ // FF_JSON = 105
{
FF_JSON, 0, 0, "JSON",
".json", ".szs", ".json",
@@ -1266,7 +1290,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_SH = 104
+ // FF_SH = 106
{
FF_SH, 0, 0, "SH",
".sh", ".szs", ".sh",
@@ -1278,7 +1302,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_BASH = 105
+ // FF_BASH = 107
{
FF_BASH, 0, 0, "BASH",
".sh", ".szs", ".sh",
@@ -1290,7 +1314,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_PHP = 106
+ // FF_PHP = 108
{
FF_PHP, 0, 0, "PHP",
".php", ".szs", ".php",
@@ -1302,7 +1326,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_MAKEDOC = 107
+ // FF_MAKEDOC = 109
{
FF_MAKEDOC, 0, 0, "MAKEDOC",
".md", ".szs", ".md",
@@ -1314,7 +1338,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_DIRECTORY = 108
+ // FF_DIRECTORY = 110
{
FF_DIRECTORY, 0, 0, "DIR",
".d", ".d", ".d",
@@ -1344,8 +1368,10 @@ const KeywordTab_t cmdtab_FileType[] =
{ FF_YAZ1, "YAZ1", 0, 0x103 },
{ FF_XYZ, "XYZ", 0, 0x103 },
{ FF_BZ, "BZ", 0, 0x103 },
+ { FF_YBZ, "YBZ", 0, 0x103 },
{ FF_BZIP2, "BZ2", "BZIP2", 0x103 },
{ FF_LZ, "LZ", 0, 0x103 },
+ { FF_YLZ, "YLZ", 0, 0x103 },
{ FF_LZMA, "LZMA", 0, 0x103 },
{ FF_XZ, "XZ", 0, 0x3 },
{ FF_U8, "U8", 0, 0x10f05 },
diff --git a/project/src/file-type.h b/project/src/file-type.h
index 15c237c..81a0f08 100644
--- a/project/src/file-type.h
+++ b/project/src/file-type.h
@@ -65,139 +65,141 @@ typedef enum file_format_t
FF_YAZ1, // 2
FF_XYZ, // 3
FF_BZ, // 4
- FF_BZIP2, // 5
- FF_LZ, // 6
- FF_LZMA, // 7
- FF_XZ, // 8
+ FF_YBZ, // 5
+ FF_BZIP2, // 6
+ FF_LZ, // 7
+ FF_YLZ, // 8
+ FF_LZMA, // 9
+ FF_XZ, // 10
- FF_U8, // 9
- FF_WU8, // 10
- FF_RARC, // 11
- FF_BRRES, // 12
- FF_BREFF, // 13
- FF_BREFT, // 14
- FF_RKC, // 15
- FF_PACK, // 16
- FF_USE_LTA, // 17
- FF_LTA, // 18
- FF_LFL, // 19
+ FF_U8, // 11
+ FF_WU8, // 12
+ FF_RARC, // 13
+ FF_BRRES, // 14
+ FF_BREFF, // 15
+ FF_BREFT, // 16
+ FF_RKC, // 17
+ FF_PACK, // 18
+ FF_USE_LTA, // 19
+ FF_LTA, // 20
+ FF_LFL, // 21
- FF_CHR, // 20
- FF_CLR, // 21
- FF_MDL, // 22
- FF_PAT, // 23
- FF_SCN, // 24
- FF_SHP, // 25
- FF_SRT, // 26
- FF_TEX, // 27
+ FF_CHR, // 22
+ FF_CLR, // 23
+ FF_MDL, // 24
+ FF_PAT, // 25
+ FF_SCN, // 26
+ FF_SHP, // 27
+ FF_SRT, // 28
+ FF_TEX, // 29
- FF_TEX_CT, // 28
- FF_CTDEF, // 29
+ FF_TEX_CT, // 30
+ FF_CTDEF, // 31
- FF_CT0_CODE, // 30
- FF_CT0_DATA, // 31
- FF_CT1_CODE, // 32
- FF_CT1_DATA, // 33
+ FF_CT0_CODE, // 32
+ FF_CT0_DATA, // 33
+ FF_CT1_CODE, // 34
+ FF_CT1_DATA, // 35
- FF_CUP1, // 34
- FF_CRS1, // 35
- FF_MOD1, // 36
- FF_MOD2, // 37
- FF_OVR1, // 38
+ FF_CUP1, // 36
+ FF_CRS1, // 37
+ FF_MOD1, // 38
+ FF_MOD2, // 39
+ FF_OVR1, // 40
- FF_LE_BIN, // 39
- FF_LEX, // 40
- FF_LEX_TXT, // 41
+ FF_LE_BIN, // 41
+ FF_LEX, // 42
+ FF_LEX_TXT, // 43
- FF_LPAR, // 42
- FF_LEDEF, // 43
- FF_LEDIS, // 44
- FF_LEREF, // 45
- FF_LESTR, // 46
- FF_SHA1REF, // 47
- FF_SHA1ID, // 48
- FF_PREFIX, // 49
- FF_MTCAT, // 50
- FF_CT_SHA1, // 51
+ FF_LPAR, // 44
+ FF_LEDEF, // 45
+ FF_LEDIS, // 46
+ FF_LEREF, // 47
+ FF_LESTR, // 48
+ FF_SHA1REF, // 49
+ FF_SHA1ID, // 50
+ FF_PREFIX, // 51
+ FF_MTCAT, // 52
+ FF_CT_SHA1, // 53
- FF_MDL_TXT, // 52
+ FF_MDL_TXT, // 54
- FF_PAT_TXT, // 53
+ FF_PAT_TXT, // 55
- FF_TPL, // 54
- FF_TPLX, // 55
- FF_CUPICON, // 56
- FF_BTI, // 57
- FF_BREFT_IMG, // 58
+ FF_TPL, // 56
+ FF_TPLX, // 57
+ FF_CUPICON, // 58
+ FF_BTI, // 59
+ FF_BREFT_IMG, // 60
- FF_BMG, // 59
- FF_BMG_TXT, // 60
+ FF_BMG, // 61
+ FF_BMG_TXT, // 62
- FF_KCL, // 61
- FF_KCL_TXT, // 62
- FF_WAV_OBJ, // 63
- FF_SKP_OBJ, // 64
+ FF_KCL, // 63
+ FF_KCL_TXT, // 64
+ FF_WAV_OBJ, // 65
+ FF_SKP_OBJ, // 66
- FF_KMP, // 65
- FF_KMP_TXT, // 66
+ FF_KMP, // 67
+ FF_KMP_TXT, // 68
- FF_ITEMSLT, // 67
- FF_ITEMSLT_TXT, // 68
+ FF_ITEMSLT, // 69
+ FF_ITEMSLT_TXT, // 70
- FF_KMG, // 69
- FF_KMG_TXT, // 70
+ FF_KMG, // 71
+ FF_KMG_TXT, // 72
- FF_KRM, // 71
- FF_KRM_TXT, // 72
+ FF_KRM, // 73
+ FF_KRM_TXT, // 74
- FF_KRT, // 73
- FF_KRT_TXT, // 74
+ FF_KRT, // 75
+ FF_KRT_TXT, // 76
- FF_OBJFLOW, // 75
- FF_OBJFLOW_TXT, // 76
+ FF_OBJFLOW, // 77
+ FF_OBJFLOW_TXT, // 78
- FF_GH_ITEM, // 77
- FF_GH_ITEM_TXT, // 78
+ FF_GH_ITEM, // 79
+ FF_GH_ITEM_TXT, // 80
- FF_GH_IOBJ, // 79
- FF_GH_IOBJ_TXT, // 80
+ FF_GH_IOBJ, // 81
+ FF_GH_IOBJ_TXT, // 82
- FF_GH_KART, // 81
- FF_GH_KART_TXT, // 82
+ FF_GH_KART, // 83
+ FF_GH_KART_TXT, // 84
- FF_GH_KOBJ, // 83
- FF_GH_KOBJ_TXT, // 84
+ FF_GH_KOBJ, // 85
+ FF_GH_KOBJ_TXT, // 86
- FF_DRIVER, // 85
- FF_VEHICLE, // 86
+ FF_DRIVER, // 87
+ FF_VEHICLE, // 88
- FF_BRASD, // 87
- FF_RKG, // 88
- FF_RKCO, // 89
+ FF_BRASD, // 89
+ FF_RKG, // 90
+ FF_RKCO, // 91
- FF_STATICR, // 90
- FF_DOL, // 91
+ FF_STATICR, // 92
+ FF_DOL, // 93
- FF_GCT, // 92
- FF_GCT_TXT, // 93
- FF_GCH, // 94
- FF_WCH, // 95
- FF_WPF, // 96
- FF_XPF, // 97
- FF_DISTRIB, // 98
+ FF_GCT, // 94
+ FF_GCT_TXT, // 95
+ FF_GCH, // 96
+ FF_WCH, // 97
+ FF_WPF, // 98
+ FF_XPF, // 99
+ FF_DISTRIB, // 100
- FF_PNG, // 99
- FF_PORTDB, // 100
+ FF_PNG, // 101
+ FF_PORTDB, // 102
- FF_TXT, // 101
- FF_SCRIPT, // 102
- FF_JSON, // 103
- FF_SH, // 104
- FF_BASH, // 105
- FF_PHP, // 106
- FF_MAKEDOC, // 107
+ FF_TXT, // 103
+ FF_SCRIPT, // 104
+ FF_JSON, // 105
+ FF_SH, // 106
+ FF_BASH, // 107
+ FF_PHP, // 108
+ FF_MAKEDOC, // 109
- FF_DIRECTORY, // 108
+ FF_DIRECTORY, // 110
//--- number of elements
diff --git a/project/src/lib-analyze.c b/project/src/lib-analyze.c
index de87cca..ffb48b7 100644
--- a/project/src/lib-analyze.c
+++ b/project/src/lib-analyze.c
@@ -192,6 +192,18 @@ void AnalyzeSZS
FindSpecialFilesSZS(szs,false);
+ //--- scan slots
+
+ AnalyzeSlot(&as->slotana,szs);
+ if (fname)
+ AnalyzeSlotByName(&as->slotinfo,true,MemByString(fname));
+ if (as->slotana.mandatory_slot[0])
+ AnalyzeSlotAttrib(&as->slotinfo,false,MemByString(as->slotana.mandatory_slot));
+ FinalizeSlotInfo(&as->slotinfo,true);
+ if (*as->slotinfo.slot_attrib)
+ ct_dest = StringCat2E(ct_dest,ct_end,",",as->slotinfo.slot_attrib);
+
+
//--- scan LEX
InitializeLexInfo(&as->lexinfo);
@@ -202,26 +214,22 @@ void AnalyzeSZS
InitializeLEX(&lex);
lex.check_only = true;
ScanLEX(&lex,false,szs->course_lex_data,szs->course_lex_size);
- szs->have.lex_sect = lex.have_sect;
- szs->have.lex_feat = lex.have_feat;
- szs->have.lex_apply_otl = lex.apply_otl;
- SetupLexInfo(&as->lexinfo,&lex);
+ if (lex.have_sect)
+ {
+ szs->have.lex_sect = lex.have_sect;
+ szs->have.lex_feat = lex.have_feat;
+ szs->have.lex_apply_otl = lex.apply_otl;
+ SetupLexInfo(&as->lexinfo,&lex);
+ }
+ if (!lex.have_sect)
+ {
+ szs->course_lex_data = 0;
+ szs->course_lex_size = 0;
+ }
ResetLEX(&lex);
}
- //--- scan slots
-
- AnalyzeSlot(&as->slotana,szs);
- if (fname)
- AnalyzeSlotByName(&as->slotinfo,true,MemByString(fname));
- if (as->slotana.mandatory_slot[0])
- AnalyzeSlotAttrib(&as->slotinfo,false,MemByString(as->slotana.mandatory_slot));
- FinalizeSlotInfo(&as->slotinfo,true);
- if (*as->slotinfo.slot_attrib)
- ct_dest = StringCat2E(ct_dest,ct_end,",",as->slotinfo.slot_attrib);
-
-
//--- scan KMP
bool valid_track = true; // use temp var because of early 'return'
@@ -390,11 +398,16 @@ void AnalyzeSZS
ct_dest = StringCopyE(ct_dest,ct_end,",aiparam");
}
- if ( szs->have.szs[HAVESZS_LICENSE] > HFM_NONE )
+ if ( szs->have.szs[HAVESZS_LICENSE_TXT] > HFM_NONE )
{
ct_dest = StringCopyE(ct_dest,ct_end,",license");
}
+ if ( szs->have.szs[HAVESZS_VERSION_BIN] > HFM_NONE )
+ {
+ ct_dest = StringCopyE(ct_dest,ct_end,",vers_bin");
+ }
+
//--- scan KCL
diff --git a/project/src/lib-bzip2.c b/project/src/lib-bzip2.c
index f3f088b..363efe0 100644
--- a/project/src/lib-bzip2.c
+++ b/project/src/lib-bzip2.c
@@ -84,7 +84,7 @@ int IsBZIP2
// 1..9: seems to be BZIP2 data; compression level is returned
cvp data, // NULL or data to investigate
- uint size // size of 'data'
+ int size // size of 'data'
)
{
const u8 *d = data;
@@ -412,7 +412,7 @@ enumError EncodeBZIP2
uint *dest_written, // store num bytes written to 'dest', never NULL
bool use_iobuf, // true: allow the usage of 'iobuf'
uint header_size, // insert 'header_size' bytes before dest data
- bool add_dec_size, // true: add decompressed size
+ bool add_dec_size, // true: add decompressed size before BZIP2 header
const void *src, // source buffer
uint src_size, // size of source buffer
@@ -599,7 +599,7 @@ enumError DecodeBZIP2buf
uint dest_size, // size of 'dest'
uint *dest_written, // store num bytes written to 'dest', never NULL
- const void *src, // source buffer, first 4 bytes = dest size
+ const void *src, // source buffer
uint src_size // size of source buffer
)
{
@@ -616,7 +616,8 @@ enumError DecodeBZIP2buf
DASSERT(dest_written);
DASSERT(src);
- uint dest_need = ntohl(*(u32*)src);
+// uint dest_need = ntohl(*(u32*)src);
+ uint dest_need = dest_size;
PRINT("DecodeBZIP2buf() %u -> %u,%u bytes\n",src_size,dest_size,dest_need);
if ( be32(src+4) == 0x52415730 ) // "RAW0" == not compressed
@@ -629,7 +630,7 @@ enumError DecodeBZIP2buf
*dest_written = dest_need;
int bzerror = BZ2_bzBuffToBuffDecompress ( (char*)dest, dest_written,
- (char*)src+4, src_size-4, 0, 0 );
+ (char*)src, src_size, 0, 0 );
if ( bzerror != BZ_OK )
return ERROR0(ERR_BZIP2,
@@ -661,7 +662,7 @@ enumError DecodeBZIP2
u8 *dest = MALLOC(dest_size+header_size);
memset(dest,0,header_size);
- enumError err = DecodeBZIP2buf(dest+header_size,dest_size,dest_written,src,src_size);
+ enumError err = DecodeBZIP2buf(dest+header_size,dest_size,dest_written,src+4,src_size-4);
if (err)
{
FREE(dest);
diff --git a/project/src/lib-bzip2.h b/project/src/lib-bzip2.h
index 97a0257..e965236 100644
--- a/project/src/lib-bzip2.h
+++ b/project/src/lib-bzip2.h
@@ -88,7 +88,7 @@ int IsBZIP2
// 1..9: seems to be BZIP2 data; compression level is returned
cvp data, // NULL or data to investigate
- uint size // size of 'data'
+ int size // size of 'data'
);
//-----------------------------------------------------------------------------
@@ -221,7 +221,7 @@ enumError EncodeBZIP2
bool use_iobuf, // true: allow the usage of 'iobuf'
uint header_size, // insert 'header_size' bytes before dest data
- bool add_dec_size, // true: add decompressed size
+ bool add_dec_size, // true: add decompressed size before BZIP2 header
const void *src, // source buffer
uint src_size, // size of source buffer
@@ -264,7 +264,7 @@ enumError DecodeBZIP2buf
uint dest_size, // size of 'dest'
uint *dest_written, // store num bytes written to 'dest_ptr', never NULL
- const void *src, // source buffer, first 4 bytes = dest size
+ const void *src, // source buffer
uint src_size // size of source buffer
);
diff --git a/project/src/lib-file.c b/project/src/lib-file.c
index 68730c9..e1ef3cb 100644
--- a/project/src/lib-file.c
+++ b/project/src/lib-file.c
@@ -916,6 +916,9 @@ file_format_t GetByMagicFF
switch(magic32)
{
//--- see below for BOM support
+// case YBZ_MAGIC_NUM: return FF_YBZ;
+// case YLZ_MAGIC_NUM: return FF_YLZ;
+
case BMG_TEXT_MAGIC_NUM: return FF_BMG_TXT;
case KCL_TEXT_MAGIC_NUM: return FF_KCL_TXT;
case KMP_TEXT_MAGIC_NUM: return FF_KMP_TXT;
@@ -927,7 +930,11 @@ file_format_t GetByMagicFF
case GCTTXT_MAGIC_NUM: return FF_GCT_TXT;
- case YAZ0_MAGIC_NUM: return FF_YAZ0;
+ case YAZ0_MAGIC_NUM:
+ return IsBZIP2(data+sizeof(ybz_header_t),data_size-sizeof(ybz_header_t)) >= 0
+ ? FF_YBZ
+ : IsYLZ(data,data_size) >= 0 ? FF_YLZ : FF_YAZ0;
+
case YAZ1_MAGIC_NUM: return FF_YAZ1;
case XYZ0_MAGIC_NUM: return FF_XYZ;
// case BZ_MAGIC_NUM: return FF_BZ;
@@ -2648,6 +2655,21 @@ bool IsArchiveFF ( file_format_t ff )
//-----------------------------------------------------------------------------
+bool IsCompressFF ( file_format_t ff )
+{
+ return (uint)ff < FF_N && FileTypeTab[ff].attrib & FFT_COMPRESS;
+}
+
+//-----------------------------------------------------------------------------
+
+bool IsTrackCompressFF ( file_format_t ff )
+{
+ const uint cond = FFT_TRACK | FFT_COMPRESS;
+ return (uint)ff < FF_N && ( FileTypeTab[ff].attrib & cond ) == cond;
+}
+
+//-----------------------------------------------------------------------------
+
bool IsTextFF ( file_format_t ff )
{
return (uint)ff < FF_N && FileTypeTab[ff].attrib & FFT_TEXT;
diff --git a/project/src/lib-image2.c b/project/src/lib-image2.c
index d005ec5..be67329 100644
--- a/project/src/lib-image2.c
+++ b/project/src/lib-image2.c
@@ -2629,7 +2629,8 @@ const KeywordTab_t cmdtab_transform[] =
// [[tpl-ex+]]
{ FF_TPL, "TPL", 0, TM_IDX_FILE|TM_F_PAL },
{ FF_TPLX, "TPLx", "TPLX", TM_IDX_FILE|TM_F_PAL },
- { FF_CUPICON, "CUPICON", "CUP", TM_IDX_FILE },
+ { FF_CUPICON, "CUPICON", "CUPICONS", TM_IDX_FILE },
+ { FF_CUPICON, "CUP", "CUPS", TM_IDX_FILE },
{ FF_BTI, "BTI", 0, TM_IDX_FILE|TM_F_PAL },
{ FF_TEX, "TEX", "TEX0", TM_IDX_FILE },
{ FF_BREFT_IMG, "BREFT-IMG", "BREFTIMG", TM_IDX_FILE },
diff --git a/project/src/lib-lecode.c b/project/src/lib-lecode.c
index 4dd1078..7dacb35 100644
--- a/project/src/lib-lecode.c
+++ b/project/src/lib-lecode.c
@@ -3326,30 +3326,31 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana )
,indent,"", h->cheat_mode, GetCheatModeInfo(h->cheat_mode)
);
+ if ( ana->param_size >= sizeof(le_binpar_v1_260_t) )
+ {
+ fprintf(f,
+ "%*s" "Item cheats: %u = %s\n"
+ "%*s" "Debug mode: %u = %s\n"
+ ,indent,"", h->item_cheat, h->item_cheat ? "enabled" : "disabled"
+ ,indent,"", h->debug_mode, GetLecodeDebugInfo(h->debug_mode)
+ );
+ }
+
fprintf(f,
- "%*s" "Engine chances: "
- "%u + %u + %u = %u (1%s0cc+mirror=total)\n"
- "%*s" "200cc: %u = %sabled\n"
"%*s" "Perform. monitor: %u = %s\n"
- ,indent,""
- ,h->engine[0], h->engine[1], h->engine[2]
- ,h->engine[0] + h->engine[1] + h->engine[2]
- ,h->enable_200cc ? "50cc+20" : "00cc+15"
- ,indent,"", h->enable_200cc, h->enable_200cc ? "en" :"dis"
,indent,"", h->enable_perfmon,
h->enable_perfmon > 1 ? "Wii(U)+Dolphin"
: h->enable_perfmon ? "Wii(U) only" :"disabled"
);
- if ( ana->param_size >= sizeof(le_binpar_v1_37_t) )
- fprintf(f,
- "%*s" "Custom Timetrial: %u = %sabled\n"
- "%*s" "Extended P-Flags: %u = %sabled\n"
- "%*s" "Block tracks for: %u race%s\n"
- ,indent,"", h->enable_custom_tt, h->enable_custom_tt ? "en" :"dis"
- ,indent,"", h->enable_xpflags, h->enable_xpflags ? "en" :"dis"
- ,indent,"", h->block_track, h->block_track == 1 ? "" : "s"
- );
+ if ( ana->param_size >= sizeof(le_binpar_v1_277_t) )
+ fprintf(f,"%*s" "Slot format: %u = \"%%0%ux\"\n"
+ ,indent,"", h->slot_04x, h->slot_04x ? 4 : 3 );
+
+ if ( ana->param_size >= sizeof(le_binpar_v1_276_t) )
+ fprintf(f,"%*s" "Cup icon size: %u x %u pixels (%u bytes)\n"
+ ,indent,"", h->cup_icon_size, h->cup_icon_size
+ ,h->cup_icon_size * h->cup_icon_size / 2 );
if ( ana->param_size >= sizeof(le_binpar_v1_1bc_t) )
{
@@ -3371,15 +3372,26 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana )
indent,"", h->enable_speedo, comment );
}
- if ( ana->param_size >= sizeof(le_binpar_v1_260_t) )
- {
+ fprintf(f,
+ "%*s" "200cc: %u = %sabled\n"
+ "%*s" "Engine chances: "
+ "%u + %u + %u = %u (1%s0cc+mirror=total)\n"
+ ,indent,"", h->enable_200cc, h->enable_200cc ? "en" :"dis"
+ ,indent,""
+ ,h->engine[0], h->engine[1], h->engine[2]
+ ,h->engine[0] + h->engine[1] + h->engine[2]
+ ,h->enable_200cc ? "50cc+20" : "00cc+15"
+ );
+
+ if ( ana->param_size >= sizeof(le_binpar_v1_37_t) )
fprintf(f,
- "%*s" "Debug mode: %u = %s\n"
- "%*s" "Item cheat: %u = %s\n"
- ,indent,"", h->debug_mode, GetLecodeDebugInfo(h->debug_mode)
- ,indent,"", h->item_cheat, h->item_cheat ? "enabled" : "disabled"
+ "%*s" "Custom Timetrial: %u = %sabled\n"
+ "%*s" "Extended P-Flags: %u = %sabled\n"
+ "%*s" "Block tracks for: %u race%s\n"
+ ,indent,"", h->enable_custom_tt, h->enable_custom_tt ? "en" :"dis"
+ ,indent,"", h->enable_xpflags, h->enable_xpflags ? "en" :"dis"
+ ,indent,"", h->block_track, h->block_track == 1 ? "" : "s"
);
- }
if ( ana->param_size >= sizeof(le_binpar_v1_264_t) )
{
@@ -3427,15 +3439,6 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana )
);
}
- if ( ana->param_size >= sizeof(le_binpar_v1_276_t) )
- fprintf(f,"%*s" "Cup icon size: %u x %u pixels (%u bytes)\n"
- ,indent,"", h->cup_icon_size, h->cup_icon_size
- ,h->cup_icon_size * h->cup_icon_size / 2 );
-
- if ( ana->param_size >= sizeof(le_binpar_v1_277_t) )
- fprintf(f,"%*s" "Slot format: %u = \"%%0%ux\"\n"
- ,indent,"", h->slot_04x, h->slot_04x ? 4 : 3 );
-
// [[new-lpar]]
#if 0 // for later use
diff --git a/project/src/lib-ledis.c b/project/src/lib-ledis.c
index 9a1bb1e..9be9e53 100644
--- a/project/src/lib-ledis.c
+++ b/project/src/lib-ledis.c
@@ -8349,9 +8349,11 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt )
{
O_YAZ = 0x001, // force FF_YAZ0 compression
O_BZ = 0x002, // force FF_BZ compression
- O_BZIP2 = 0x003, // force FF_BZIP2 compression
- O_LZ = 0x004, // force FF_LZ compression
- O_LZMA = 0x005, // force FF_LZMA compression
+ O_YBZ = 0x003, // force FF_YBZ compression
+ O_BZIP2 = 0x004, // force FF_BZIP2 compression
+ O_LZ = 0x005, // force FF_LZ compression
+ O_YLZ = 0x006, // force FF_YLZ compression
+ O_LZMA = 0x007, // force FF_LZMA compression
O_M_METHOD = 0x007, // mask for above
O_RM = 0x008,
@@ -8366,8 +8368,10 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt )
{
{ O_YAZ, "YAZ0", "SZS", O_M_METHOD },
{ O_BZ, "WBZ", "BZ", O_M_METHOD },
+ { O_YBZ, "YBZ", 0, O_M_METHOD },
{ O_BZIP2, "BZIP2", "BZ2", O_M_METHOD },
{ O_LZ, "WLZ", "LZ", O_M_METHOD },
+ { O_YLZ, "YLZ", 0, O_M_METHOD },
{ O_LZMA, "LZMA", 0, O_M_METHOD },
{ O_RM, "REMOVE", "RM", 0 },
{ O_EXT, "EXT", 0, 0 },
@@ -8390,8 +8394,10 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt )
FF_UNKNOWN,
FF_YAZ0,
FF_BZ,
+ FF_YBZ,
FF_BZIP2,
FF_LZ,
+ FF_YLZ,
FF_LZMA,
};
diff --git a/project/src/lib-lex.c b/project/src/lib-lex.c
index 161a731..304b6a6 100644
--- a/project/src/lib-lex.c
+++ b/project/src/lib-lex.c
@@ -1234,7 +1234,7 @@ static bool RemoveElementLEX
for ( i = 0, ss = lex->item; i < lex->item_used; i++, ss++ )
if ( *ss == li )
{
- memmove(ss,ss+1,lex->item_used-i);
+ memmove(ss,ss+1,sizeof(*ss)*(lex->item_used-i));
lex->item_used--;
FREE((lex_item_t*)li);
UpdateHaveLex(lex);
@@ -1492,8 +1492,7 @@ void ResetLEX ( lex_t * lex )
if (lex->item)
{
- uint i;
- for ( i = 0; i < lex->item_used; i++ )
+ for ( int i = 0; i < lex->item_used; i++ )
if (lex->item[i])
FREE(lex->item[i]);
FREE(lex->item);
@@ -3705,7 +3704,12 @@ bool PurgeLEX ( lex_t * lex )
}
if (remove)
- modified |= RemoveElementLEX(lex,*ss);
+ {
+ if (RemoveElementLEX(lex,*ss))
+ modified |= 1;
+ else
+ i++;
+ }
else
i++;
}
diff --git a/project/src/lib-lzma.c b/project/src/lib-lzma.c
index 887d8a0..cb007b2 100644
--- a/project/src/lib-lzma.c
+++ b/project/src/lib-lzma.c
@@ -92,6 +92,33 @@ int IsLZ
///////////////////////////////////////////////////////////////////////////////
+int IsYLZ
+(
+ // returns
+ // -1: not LZ data
+ // 0: seems to be YLZ; compression level is unknown
+ // 1..9: seems to be YLZ; compression level is returned
+
+ cvp data, // NULL or data to investigate
+ uint size // size of 'data'
+)
+{
+ const uint delta = sizeof(ylz_header_t);
+ const u8 *d = data;
+ if ( !d || size < delta+1 || memcmp(d,YLZ_MAGIC,4) )
+ {
+ return -1;
+ }
+
+ const u32 magic = be24(d+delta);
+ if ( magic != LZMA_MAGIC_NUM3 )
+ return -1;
+
+ return GetComprLevelLZMA(le32(d+delta+1));
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
int IsLZMA
(
// returns
diff --git a/project/src/lib-lzma.h b/project/src/lib-lzma.h
index d901c02..eb89ece 100644
--- a/project/src/lib-lzma.h
+++ b/project/src/lib-lzma.h
@@ -70,6 +70,19 @@ int IsLZ
//-----------------------------------------------------------------------------
+int IsYLZ
+(
+ // returns
+ // -1: not LZ data
+ // 0: seems to be LZ; compression level is unknown
+ // 1..9: seems to be LZ; compression level is returned
+
+ cvp data, // NULL or data to investigate
+ uint size // size of 'data'
+);
+
+//-----------------------------------------------------------------------------
+
int IsLZMA
(
// returns
diff --git a/project/src/lib-mdl.c b/project/src/lib-mdl.c
index d90b6a0..aaa1ee6 100644
--- a/project/src/lib-mdl.c
+++ b/project/src/lib-mdl.c
@@ -3880,7 +3880,6 @@ static int ana_slot42_brres
&& !strcasecmp(it->name,"course")
)
{
- PRINT("MOONVIEW MDL FOUND: %x |%s|%s|\n",it->fform,it->path,it->name);
szs_file_t szs;
// [[fname+]]
InitializeSubSZS(&szs,it->szs,it->off,it->size,FF_MDL,it->path,false);
diff --git a/project/src/lib-std.c b/project/src/lib-std.c
index 73c239f..f9ec149 100644
--- a/project/src/lib-std.c
+++ b/project/src/lib-std.c
@@ -77,6 +77,7 @@
ccp opt_config = 0;
bool opt_no_pager = false;
+int opt_zero = 0;
ccp tool_name = "?";
ccp std_share_path = 0;
ccp share_path = 0;
@@ -696,6 +697,28 @@ const KeywordTab_t * CheckCommandHelper
/////////////// error messages ///////////////
///////////////////////////////////////////////////////////////////////////////
+int FixExitStatus ( int stat )
+{
+ return stat == ERR_INTERRUPT
+ ? stat
+ : opt_zero > 0 && stat <= ERR_NOT_EXISTS
+ || opt_zero > 1 && stat <= ERR_WARNING
+ || opt_zero > 2 && stat <= ERR_ERROR
+ || opt_zero > 3
+ ? 0
+ : stat;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ExitFixed ( int stat )
+{
+ exit(FixExitStatus(stat));
+ ASSERT(0);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
ccp LibGetErrorName ( int stat, ccp ret_not_found )
{
switch(stat)
@@ -3082,20 +3105,21 @@ int ScanOptCompr ( ccp arg )
{
static const KeywordTab_t alias[] =
{
- { 0, "LIST", 0, -9 },
- { 1, "C-LIST", "CLIST", -9 },
+ { 0, "LIST", 0, -9 },
+ { 1, "C-LIST", "CLIST", -9 },
- { 0, "UNCOMPRESSED", 0, -1 },
+ { 0, "UNCOMPRESSED", 0, -1 },
- { 0, "NOCHUNKS", 0, 1 },
- { 1, "FAST", 0, 1 },
- { 9, "BEST", 0, 1 },
- { 10, "ULTRA", 0, 1 },
+ { 0, "NOCHUNKS", 0, 1 },
+ { 1, "FAST", 0, 1 },
+ { 9, "BEST", 0, 1 },
+ { 10, "ULTRA", 0, 1 },
+ { COMPR_DEFAULT,"DEFAULT", 0, 1 },
- { 9, "T2", "TRY2", 2 },
- { 9, "T3", "TRY3", 3 },
- { 9, "T4", "TRY4", 4 },
- { 9, "T5", "TRY5", 5 },
+ { COMPR_DEFAULT,"T2", "TRY2", 2 },
+ { COMPR_DEFAULT,"T3", "TRY3", 3 },
+ { COMPR_DEFAULT,"T4", "TRY4", 4 },
+ { COMPR_DEFAULT,"T5", "TRY5", 5 },
{ 0,0,0,0 }
};
@@ -3137,6 +3161,38 @@ int ScanOptCompr ( ccp arg )
return 0;
}
+//-----------------------------------------------------------------------------
+
+int GetComprByFF ( file_format_t ff, int compr )
+{
+ if (!compr)
+ compr = opt_compr_mode > 0 ? opt_compr : COMPR_DEFAULT;
+
+ switch(ff)
+ {
+ case FF_BZ:
+ case FF_YBZ:
+ case FF_BZIP2:
+ return compr == COMPR_DEFAULT
+ ? BZIP2_DEFAULT_COMPR
+ : compr >= 1 && compr <= 9
+ ? compr
+ : opt_compr_mode >= 2 && opt_compr_mode <= 5
+ ? -1
+ : BZIP2_DEFAULT_COMPR;
+
+ case FF_LZ:
+ case FF_YLZ:
+ case FF_LZMA:
+ return compr >= 1 && compr <= 9 ? compr : LZMA_DEFAULT_COMPR;
+
+ default:
+ return compr < 1
+ ? 9
+ : compr;
+ }
+}
+
///////////////////////////////////////////////////////////////////////////////
int ScanOptPtDir ( ccp arg )
@@ -4160,6 +4216,98 @@ enumError cmd_error()
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// get compression level ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+int GetCompressionLevel
+(
+ // return -1: invalid ff,
+ // 0: compression level unknown
+ // 1..9: compression level unknown
+
+ file_format_t ff, // file format, call GetByMagicFF() if FF_UNKNOWN
+ cvp data, // NULL or pointer to data
+ uint size // size of data
+)
+{
+ if ( !data || size < 8 )
+ return -1;
+
+ if ( ff == FF_UNKNOWN )
+ ff = GetByMagicFF(data,size,size);
+
+ int bz_offset = -1;
+ switch(ff)
+ {
+ case FF_BZ:
+ bz_offset = sizeof(wbz_header_t) + 4;
+ break;
+
+ case FF_YBZ:
+ bz_offset = sizeof(ybz_header_t);
+ break;
+
+ case FF_BZIP2:
+ bz_offset = 0;
+ break;
+
+ case FF_LZ:
+ return IsLZ(data,size);
+
+ case FF_YLZ:
+ return IsYLZ(data,size);
+
+ case FF_LZMA:
+ return IsLZMA(data,size);
+
+ case FF_XZ:
+ return IsXZ(data,size);
+
+ default:
+ return -1;
+ }
+
+ return bz_offset >= 0 && size > bz_offset
+ ? IsBZIP2(data+bz_offset,size-bz_offset)
+ : 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetCompressionSuffix
+(
+ // returns EmptyString[] or CircBuf of format ".#"
+
+ file_format_t ff, // file format, call GetByMagicFF() if FF_UNKNOWN
+ cvp data, // NULL or pointer to data
+ uint size // size of data
+)
+{
+ const int compr_level = GetCompressionLevel(ff,data,size);
+ return compr_level > 0 ? PrintCircBuf(".%u",compr_level) : EmptyString;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetCompressionNameFF
+(
+ // returns const string or CircBuf of format "FF.#"
+
+ file_format_t ff_arch, // FF_UNKNOWN or file format of archive
+ file_format_t ff_data, // file format of data, call GetByMagicFF() if FF_UNKNOWN
+ cvp data, // NULL or pointer to data
+ uint size // size of data
+)
+{
+ ccp name = GetNameFF(ff_arch,ff_data);
+ const int compr_level = GetCompressionLevel(ff_data,data,size);
+ return compr_level > 0
+ ? PrintCircBuf("%s.%u",name,compr_level)
+ : name;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// command filetype ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -4179,13 +4327,6 @@ enumError cmd_filetype()
max_len = len;
}
- #if 0
- if ( long_count > 2 )
- printf("\n"
- "type decomp vers valid file name\n"
- "%.*s\n", max_len + 40, Minus300 );
- else
- #endif
if ( long_count > 1 )
printf("\n"
"type decomp vers valid file name\n"
@@ -4203,7 +4344,6 @@ enumError cmd_filetype()
const int bufsize = 1200000; // >1MB for BZIP2
char *buf1 = MALLOC(bufsize);
char *buf2 = MALLOC(bufsize);
- char bufstat[10];
for ( int argi = 0; argi < plist.used; argi++ )
{
@@ -4222,7 +4362,7 @@ enumError cmd_filetype()
else
fform1 = GetByMagicFF(buf1,bufsize,fatt.size);
- ccp stat1 = err > ERR_WARNING ? "-" : GetNameFF(0,fform1);
+ ccp stat1 = err > ERR_WARNING ? "-" : GetCompressionNameFF(0,fform1,buf1,bufsize);
ccp buf = buf1;
if (long_count)
{
@@ -4259,22 +4399,16 @@ enumError cmd_filetype()
const file_format_t ff_temp
= GetByMagicFF(wh->first_8,sizeof(wh->first_8),be32(wh->cdata));
stat2 = GetNameFF(0,ff_temp);
- version = GetVersionFF(ff_temp,wh->first_8,sizeof(wh->first_8),&suffix);
- if ( fatt.size >= 20 )
- {
- char compr = buf1[19];
- if ( compr >= '1' && compr <= '9' )
- {
- snprintf(bufstat,sizeof(bufstat),"%s.%c",stat1,compr);
- stat1 = bufstat;
- }
- }
+ }
+ else if ( fform1 == FF_YBZ )
+ {
+ ybz_header_t *yh = (ybz_header_t*)buf1;
+ const file_format_t ff_temp
+ = GetByMagicFF(yh->first_4,sizeof(yh->first_4),be32(yh->cdata));
+ stat2 = GetNameFF(0,ff_temp);
}
else if ( fform1 == FF_BZIP2 )
{
- snprintf(bufstat,sizeof(bufstat),"BZIP2.%u",IsBZIP2(buf1,bufsize));
- stat1 = bufstat;
-
uint wr;
DecodeBZIP2part(buf2,bufsize,&wr,buf1,bufsize);
fform2 = GetByMagicFF(buf2,wr,wr);
@@ -4288,40 +4422,22 @@ enumError cmd_filetype()
const file_format_t ff_temp
= GetByMagicFF(wh->first_8,sizeof(wh->first_8),be32(wh->cdata));
stat2 = GetNameFF(0,ff_temp);
- version = GetVersionFF(ff_temp,wh->first_8,sizeof(wh->first_8),&suffix);
- if ( fatt.size >= 20 )
- {
- const uint compr = IsLZ(buf1,bufsize);
- if ( compr >= 1 && compr <= 9 )
- {
- snprintf(bufstat,sizeof(bufstat),"%s.%u",stat1,compr);
- stat1 = bufstat;
- }
- }
+ }
+ else if ( fform1 == FF_YLZ )
+ {
+ ylz_header_t *yh = (ylz_header_t*)buf1;
+ const file_format_t ff_temp
+ = GetByMagicFF(yh->first_4,sizeof(yh->first_4),be32(yh->cdata));
+ stat2 = GetNameFF(0,ff_temp);
}
else if ( fform1 == FF_LZMA )
{
- const int level = IsLZMA(buf1,bufsize);
- if ( level >= 1 )
- {
- snprintf(bufstat,sizeof(bufstat),"LZMA.%u",level);
- stat1 = bufstat;
- }
uint wr;
DecodeLZMApart(buf2,bufsize,&wr,buf1,bufsize);
fform2 = GetByMagicFF(buf2,wr,wr);
stat2 = GetNameFF(0,fform2);
load_full = true;
}
- else if ( fform1 == FF_XZ )
- {
- const int level = IsXZ(buf1,bufsize);
- if ( level >= 1 )
- {
- snprintf(bufstat,sizeof(bufstat),"XZ.%u",level);
- stat1 = bufstat;
- }
- }
else if ( fform1 == FF_PORTDB )
{
const addr_port_version_t *update = (addr_port_version_t*)buf1;
@@ -4349,18 +4465,11 @@ enumError cmd_filetype()
else
valid = IsValid(buf,written,fatt.size,0,fform2,arg);
}
- #if 0
- if ( long_count > 2 )
- printf("%-7s %-7s %7s %-5s %s:%s\n",
- stat1, stat2, vbuf, valid_text[valid],
- GetNameFF(fform1,fform2), arg );
- else
- #endif
- printf("%-7s %-7s %7s %-5s %s\n",
- stat1, stat2, vbuf, valid_text[valid], arg );
+
+ printf("%-7s %-7s %7s %-5s %s\n", stat1, stat2, vbuf, valid_text[valid], arg );
}
else
- printf("%-7s %-7s %7s %s\n",stat1,stat2,vbuf,arg);
+ printf("%-7s %-7s %7s %s\n", stat1, stat2,vbuf,arg);
}
else
printf("%-7s %s\n",stat1,arg);
diff --git a/project/src/lib-std.h b/project/src/lib-std.h
index 6ff932c..c6b7dc8 100644
--- a/project/src/lib-std.h
+++ b/project/src/lib-std.h
@@ -121,7 +121,6 @@ void LogSHA1 ( ccp func, ccp file, uint line, cvp data, uint size, ccp info );
#define M1(a) ( (typeof(a))~0 )
#define IS_M1(a) ( (a) == (typeof(a))~0 )
-
//
///////////////////////////////////////////////////////////////////////////////
/////////////// Setup ///////////////
@@ -167,6 +166,9 @@ enum
//-----------------------------------------------------------------------------
+int FixExitStatus ( int stat );
+void ExitFixed ( int stat ) __attribute__ ((noreturn));
+
ccp LibGetErrorName ( int stat, ccp ret_not_found );
ccp LibGetErrorText ( int stat, ccp ret_not_found );
@@ -688,7 +690,7 @@ typedef enum cmd_flags_t
//-----------------------------------------------------------------------------
-ccp GetNameFF ( file_format_t ff1, file_format_t ff2 );
+ccp GetNameFF ( file_format_t ff_arch, file_format_t ff_data );
ccp GetNameFFv ( file_format_t ff1, file_format_t ff2, int version );
ccp GetExtFF ( file_format_t ff1, file_format_t ff2 );
ccp GetBinExtFF ( file_format_t ff );
@@ -761,6 +763,8 @@ bool IsByMagicBRSUB ( const void * data, uint data_size );
bool CanBeTrackFF ( file_format_t ff );
bool IsArchiveFF ( file_format_t ff );
+bool IsCompressFF ( file_format_t ff );
+bool IsTrackCompressFF ( file_format_t ff );
bool IsTextFF ( file_format_t ff );
bool IsGeoHitKartFF ( file_format_t ff );
bool IsGeoHitObjFF ( file_format_t ff );
@@ -775,7 +779,7 @@ void SetCompressionFF
(
file_format_t ff_arch, // if >=0: set 'opt_fform'
file_format_t ff_compr // if >=0: set 'fform_compr'
- // and 'fform_compr_force'
+ // and 'fform_compr_force'
);
static inline bool IsTplFF ( file_format_t ff )
@@ -1806,6 +1810,7 @@ void CheckOptDest ( ccp default_dest, bool default_mkdir );
///////////////////////////////////////////////////////////////////////////////
int ScanOptCompr ( ccp arg );
+int GetComprByFF ( file_format_t ff, int compr );
int ScanOptTracks ( ccp arg );
int ScanOptArenas ( ccp arg );
ccp NormalizeTrackName ( char *buf, uint bufsize, ccp arg );
@@ -2640,6 +2645,42 @@ void AnalyzeKCL ( const struct kcl_t * kcl );
///////////////////////////////////////////////////////////////////////////////
+int GetCompressionLevel
+(
+ // return -1: invalid ff,
+ // 0: compression level unknown
+ // 1..9: compression level unknown
+
+ file_format_t ff, // file format, call GetByMagicFF() if FF_UNKNOWN
+ cvp data, // NULL or pointer to data
+ uint size // size of data
+);
+
+//-----------------------------------------------------------------------------
+
+ccp GetCompressionSuffix
+(
+ // returns EmptyString[] or CircBuf of format ".#"
+
+ file_format_t ff, // file format, call GetByMagicFF() if FF_UNKNOWN
+ cvp data, // NULL or pointer to data
+ uint size // size of data
+);
+
+//-----------------------------------------------------------------------------
+
+ccp GetCompressionNameFF
+(
+ // returns const string or CircBuf of format "FF.#"
+
+ file_format_t ff_arch, // FF_UNKNOWN or file format of archive
+ file_format_t ff_data, // file format of data, call GetByMagicFF() if FF_UNKNOWN
+ cvp data, // NULL or pointer to data
+ uint size // size of data
+);
+
+///////////////////////////////////////////////////////////////////////////////
+
bool IsExtractEnabled(); // return true if enabled and mkdir() successful
bool PrepareExtract
@@ -2766,6 +2807,7 @@ typedef struct Image_t Image_t;
extern ccp opt_config;
extern bool opt_no_pager;
+extern int opt_zero;
extern ccp config_path;
extern ccp tool_name;
extern ccp std_share_path;
diff --git a/project/src/lib-szs-file.h b/project/src/lib-szs-file.h
index aaf7114..a070d3c 100644
--- a/project/src/lib-szs-file.h
+++ b/project/src/lib-szs-file.h
@@ -70,7 +70,8 @@ typedef enum have_szs_file_t
HAVESZS_MINIGAME, // common/minigame.kmg
HAVESZS_AIPARAM_BAA, // AIParam/AIParam.baa
HAVESZS_AIPARAM_BAS, // AIParam/AIParam.bas
- HAVESZS_LICENSE, // license.txt, any case
+ HAVESZS_LICENSE_TXT, // license.txt, any case
+ HAVESZS_VERSION_BIN, // version.bin,any case
HAVESZS__N
}
__attribute__ ((packed)) have_szs_file_t;
diff --git a/project/src/lib-szs.c b/project/src/lib-szs.c
index 7f7631d..4c22d54 100644
--- a/project/src/lib-szs.c
+++ b/project/src/lib-szs.c
@@ -73,7 +73,8 @@ const ccp have_szs_name[HAVESZS__N] =
"minigame", // HAVESZS_MINIGAME
"aiparam_baa", // HAVESZS_AIPARAM_BAA
"aiparam_bas", // HAVESZS_AIPARAM_BAS
- "license", // HAVESZS_LICENSE
+ "license", // HAVESZS_LICENSE_TXT
+ "ver_bin", // HAVESZS_VERSION_BIN
};
const ccp have_szs_file[HAVESZS__N] =
@@ -88,7 +89,8 @@ const ccp have_szs_file[HAVESZS__N] =
"common/minigame.kmg", // HAVESZS_MINIGAME
"AIParam/AIParam.baa", // HAVESZS_AIPARAM_BAA
"AIParam/AIParam.bas", // HAVESZS_AIPARAM_BAS
- "license.txt", // HAVESZS_LICENSE
+ "license.txt", // HAVESZS_LICENSE_TXT
+ "version.bin", // HAVESZS_VERSION_BIN
};
const file_format_t have_szs_fform[HAVESZS__N] =
@@ -103,7 +105,8 @@ const file_format_t have_szs_fform[HAVESZS__N] =
FF_KMG, // HAVESZS_MINIGAME
FF_UNKNOWN, // HAVESZS_AIPARAM_BAA
FF_UNKNOWN, // HAVESZS_AIPARAM_BAS
- FF_UNKNOWN, // HAVESZS_LICENSE
+ FF_UNKNOWN, // HAVESZS_LICENSE_TXT
+ FF_UNKNOWN, // HAVESZS_VERSION_BIN
};
//
@@ -907,8 +910,10 @@ enumError DecompressSZS
switch(szs->fform_file)
{
case FF_BZ: return DecompressBZ(szs,rm_compressed);
+ case FF_YBZ: return DecompressYBZ(szs,rm_compressed);
case FF_BZIP2: return DecompressBZIP2(szs,rm_compressed);
case FF_LZ: return DecompressLZ(szs,rm_compressed);
+ case FF_YLZ: return DecompressYLZ(szs,rm_compressed);
case FF_LZMA: return DecompressLZMA(szs,rm_compressed);
default: break;
}
@@ -1617,20 +1622,6 @@ enumError ClassicCompressYAZ ( yaz_compr_t *yaz, int compr )
/////////////// CompressWith() ///////////////
///////////////////////////////////////////////////////////////////////////////
-bool IsCompressFF ( file_format_t ff )
-{
- return ff == FF_YAZ0
- || ff == FF_YAZ1
- || ff == FF_XYZ
- || ff == FF_BZ
- || ff == FF_BZIP2
- || ff == FF_LZ
- || ff == FF_LZMA
- ;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
enumError CompressWith
(
// returns ERR_WARNING for invalid ff, ERR_NOTHING_TO_DO if already compressed,
@@ -1646,9 +1637,9 @@ enumError CompressWith
if (!szs)
return ERR_OK; // no data
- if (!IsCompressFF(ff_compr))
+ if (!IsTrackCompressFF(ff_compr))
{
- if (!IsCompressFF(ff_fallback))
+ if (!IsTrackCompressFF(ff_fallback))
return ERR_WARNING;
ff_compr = ff_fallback;
}
@@ -1666,8 +1657,10 @@ enumError CompressWith
switch(ff_compr)
{
case FF_BZ: return CompressBZ (szs,compr,rm_uncompr);
+ case FF_YBZ: return CompressYBZ (szs,compr,rm_uncompr);
case FF_BZIP2: return CompressBZIP2(szs,compr,rm_uncompr);
case FF_LZ: return CompressLZ (szs,compr,rm_uncompr);
+ case FF_YLZ: return CompressYLZ (szs,compr,rm_uncompr);
case FF_LZMA: return CompressLZMA (szs,compr,rm_uncompr);
default: break;
}
@@ -2096,53 +2089,28 @@ u8 * EncodeXYZ
//
///////////////////////////////////////////////////////////////////////////////
-/////////////// BZ support ///////////////
-///////////////////////////////////////////////////////////////////////////////
-
-enumError DecompressBZ ( szs_file_t * szs, bool rm_compressed )
-{
- PRINT("DecompressBZ(%p,%d)\n",szs,rm_compressed);
- DASSERT(szs);
-
- if ( !szs->csize || !szs->cdata || szs->data )
- return ERR_OK;
-
- const wbz_header_t *wh = (wbz_header_t*)szs->cdata;
- if (memcmp(wh->magic,BZ_MAGIC,sizeof(wh->magic)))
- return ERROR0(ERR_INVALID_DATA,"Invalid BZ magic!\n");
-
- u8 *data;
- uint size;
- enumError err = DecodeBZIP2( &data, &size, 0,
- wh->cdata, szs->csize - sizeof(*wh) );
- if (err)
- return err;
-
- szs->data = data;
- szs->size = size;
-// [[analyse-magic]]
- szs->fform_arch = szs->fform_current = GetByMagicFF(data,size,size);
- szs->ff_attrib = GetAttribFF(szs->fform_arch);
-// [[version-suffix]]
- szs->ff_version = GetVersionFF(szs->fform_arch,szs->data,szs->size,0);
-
- ClearContainerSZS(szs);
- if (rm_compressed)
- ClearCompressedSZS(szs);
- return ERR_OK;
-}
-
+/////////////// BZ/YBZ/BZIP2 helper ///////////////
///////////////////////////////////////////////////////////////////////////////
+// [[c_bzip2_t]]
typedef struct c_bzip2_t
{
enumError err;
u8 *cdata;
uint csize;
+ int compr_level;
}
c_bzip2_t;
-static c_bzip2_t get_compressed_bzip2 ( szs_file_t * szs, uint header_size, int compr )
+///////////////////////////////////////////////////////////////////////////////
+
+static c_bzip2_t get_compressed_bzip2
+(
+ szs_file_t *szs, // valid SZS data
+ uint header_size, // insert 'header_size' bytes before dest data
+ int compr, // compression level or COMPR_DEFAULT
+ bool add_dec_size // true: add decompressed size before BZIP2 header
+)
{
c_bzip2_t res = {0};
const int max_compr = szs->size / 100000 + 1;
@@ -2169,7 +2137,7 @@ static c_bzip2_t get_compressed_bzip2 ( szs_file_t * szs, uint header_size, int
u8 *temp_data;
uint temp_size;
enumError err = EncodeBZIP2( &temp_data, &temp_size, true,
- header_size, header_size>0, szs->data, szs->size, compr );
+ header_size, add_dec_size, szs->data, szs->size, compr );
if (err)
continue;
if ( temp_size < res.csize )
@@ -2194,13 +2162,52 @@ static c_bzip2_t get_compressed_bzip2 ( szs_file_t * szs, uint header_size, int
PRINT0(" => USE COMPRESSION %u/%u\n",compr,max_compr);
enumError err = EncodeBZIP2( &res.cdata, &res.csize, true,
- header_size, header_size>0, szs->data, szs->size, compr );
+ header_size, add_dec_size, szs->data, szs->size, compr );
if (err)
res.err = err;
}
+ res.compr_level = compr;
return res;
}
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// BZ support ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError DecompressBZ ( szs_file_t * szs, bool rm_compressed )
+{
+ PRINT("DecompressBZ(%p,%d)\n",szs,rm_compressed);
+ DASSERT(szs);
+
+ if ( !szs->csize || !szs->cdata || szs->data )
+ return ERR_OK;
+
+ const wbz_header_t *wh = (wbz_header_t*)szs->cdata;
+ if (memcmp(wh->magic,BZ_MAGIC,sizeof(wh->magic)))
+ return ERROR0(ERR_INVALID_DATA,"Invalid BZ magic!\n");
+
+ u8 *data;
+ uint size;
+ enumError err = DecodeBZIP2( &data, &size, 0,
+ wh->cdata, szs->csize - sizeof(*wh) );
+ if (err)
+ return err;
+
+ szs->data = data;
+ szs->size = size;
+// [[analyse-magic]]
+ szs->fform_arch = szs->fform_current = GetByMagicFF(data,size,size);
+ szs->ff_attrib = GetAttribFF(szs->fform_arch);
+// [[version-suffix]]
+ szs->ff_version = GetVersionFF(szs->fform_arch,szs->data,szs->size,0);
+
+ ClearContainerSZS(szs);
+ if (rm_compressed)
+ ClearCompressedSZS(szs);
+ return ERR_OK;
+}
+
///////////////////////////////////////////////////////////////////////////////
enumError CompressBZ ( szs_file_t * szs, int compr, bool remove_uncompressed )
@@ -2217,7 +2224,7 @@ enumError CompressBZ ( szs_file_t * szs, int compr, bool remove_uncompressed )
return ERR_OK;
}
- c_bzip2_t c = get_compressed_bzip2(szs,sizeof(wbz_header_t),compr);
+ c_bzip2_t c = get_compressed_bzip2(szs,sizeof(wbz_header_t),compr,true);
if (c.err)
return c.err;
szs->cdata = c.cdata;
@@ -2237,6 +2244,84 @@ enumError CompressBZ ( szs_file_t * szs, int compr, bool remove_uncompressed )
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// YBZ support ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError DecompressYBZ ( szs_file_t * szs, bool rm_compressed )
+{
+ PRINT("DecompressYBZ(%p,%d)\n",szs,rm_compressed);
+ DASSERT(szs);
+
+ if ( !szs->csize || !szs->cdata || szs->data )
+ return ERR_OK;
+
+ const ybz_header_t *yh = (ybz_header_t*)szs->cdata;
+ if (memcmp(yh->magic,YBZ_MAGIC,sizeof(yh->magic)))
+ return ERROR0(ERR_INVALID_DATA,"Invalid YBZ magic!\n");
+
+ const uint usize = ntohl(yh->uncompressed_size);
+ u8 *data = MALLOC(usize);
+ uint size;
+ enumError err = DecodeBZIP2buf( data, usize, &size,
+ yh->cdata, szs->csize - sizeof(ybz_header_t) );
+ if (err)
+ {
+ FREE(data);
+ return err;
+ }
+
+ szs->data = data;
+ szs->size = size;
+// [[analyse-magic]]
+ szs->fform_arch = szs->fform_current = GetByMagicFF(data,size,size);
+ szs->ff_attrib = GetAttribFF(szs->fform_arch);
+// [[version-suffix]]
+ szs->ff_version = GetVersionFF(szs->fform_arch,szs->data,szs->size,0);
+
+ ClearContainerSZS(szs);
+ if (rm_compressed)
+ ClearCompressedSZS(szs);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CompressYBZ ( szs_file_t * szs, int compr, bool remove_uncompressed )
+{
+ PRINT("CompressYBZ(%p,%d,%d)\n",szs,compr,remove_uncompressed);
+ DASSERT(szs);
+
+ if ( !szs->size || !szs->data || szs->cdata )
+ return ERR_OK;
+
+ if ( compr < 1 || compr == BZIP2_DEFAULT_COMPR )
+ {
+ if (CheckSZSCacheSZS(szs,FF_BZ,".ybz",remove_uncompressed))
+ return ERR_OK;
+ }
+
+ c_bzip2_t c = get_compressed_bzip2(szs,sizeof(ybz_header_t),compr,false);
+ if (c.err)
+ return c.err;
+ szs->cdata = c.cdata;
+ szs->csize = c.csize;
+ //HexDump16(stdout,0,0,c.cdata,32);
+
+ ybz_header_t *yh = (ybz_header_t*)c.cdata;
+ memcpy(yh->magic,YBZ_MAGIC,sizeof(yh->magic));
+ memcpy(yh->first_4,szs->data,sizeof(yh->first_4));
+ yh->uncompressed_size = htonl(szs->size);
+ yh->compressed_size = htonl(c.csize-sizeof(ybz_header_t));
+ szs->fform_file = FF_YBZ;
+
+ ClearContainerSZS(szs);
+ if (remove_uncompressed)
+ ClearUncompressedSZS(szs);
+ return ERR_OK;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// BZIP2 support ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -2282,7 +2367,7 @@ enumError CompressBZIP2 ( szs_file_t * szs, int compr, bool remove_uncompressed
return ERR_OK;
}
- c_bzip2_t c = get_compressed_bzip2(szs,0,compr);
+ c_bzip2_t c = get_compressed_bzip2(szs,0,compr,false);
if (c.err)
return c.err;
szs->cdata = c.cdata;
@@ -2309,13 +2394,13 @@ enumError DecompressLZ ( szs_file_t * szs, bool rm_compressed )
if ( !szs->csize || !szs->cdata || szs->data )
return ERR_OK;
- const wlz_header_t *wh = (wbz_header_t*)szs->cdata;
+ const wlz_header_t *wh = (wlz_header_t*)szs->cdata;
if (memcmp(wh->magic,LZ_MAGIC,sizeof(wh->magic)))
return ERROR0(ERR_INVALID_DATA,"Invalid LZ magic!\n");
u8 *data;
uint size;
- const uint delta = sizeof(wbz_header_t) + sizeof(u32);
+ const uint delta = sizeof(wlz_header_t) + sizeof(u32);
enumError err = DecodeLZMAbin( &data, &size, 0,
szs->cdata + delta, szs->csize - delta );
if (err)
@@ -2381,6 +2466,92 @@ enumError CompressLZ ( szs_file_t * szs, int compr, bool remove_uncompressed )
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// YLZ support ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[xcompr+]]
+
+enumError DecompressYLZ ( szs_file_t * szs, bool rm_compressed )
+{
+ PRINT("DecompressYLZ(%p,%d)\n",szs,rm_compressed);
+ DASSERT(szs);
+
+ if ( !szs->csize || !szs->cdata || szs->data )
+ return ERR_OK;
+
+ const ylz_header_t *yh = (ylz_header_t*)szs->cdata;
+ if (memcmp(yh->magic,YLZ_MAGIC,sizeof(yh->magic)))
+ return ERROR0(ERR_INVALID_DATA,"Invalid YLZ magic!\n");
+
+ u8 *data;
+ uint size;
+ const uint delta = sizeof(ylz_header_t);
+ enumError err = DecodeLZMAbin( &data, &size, 0,
+ szs->cdata + delta, szs->csize - delta );
+ if (err)
+ return err;
+
+ szs->data = data;
+ szs->size = size;
+// [[analyse-magic]]
+ szs->fform_arch = szs->fform_current = GetByMagicFF(data,size,size);
+ szs->ff_attrib = GetAttribFF(szs->fform_arch);
+// [[version-suffix]]
+ szs->ff_version = GetVersionFF(szs->fform_arch,szs->data,szs->size,0);
+
+ ClearContainerSZS(szs);
+ if (rm_compressed)
+ ClearCompressedSZS(szs);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CompressYLZ ( szs_file_t * szs, int compr, bool remove_uncompressed )
+{
+ PRINT0("CompressYLZ(%p,%d)\n",szs,remove_uncompressed);
+ DASSERT(szs);
+
+ if ( !szs->size || !szs->data || szs->cdata )
+ return ERR_OK;
+
+ if ( compr == COMPR_DEFAULT )
+ compr = LZMA_DEFAULT_COMPR;
+ else if (!compr)
+ compr = opt_compr_mode > 0 ? opt_compr : LZMA_DEFAULT_COMPR;
+ compr = CalcCompressionLevelLZMA(compr);
+ PRINT0(" => USE YLZ COMPRESSION %u\n",compr);
+
+ if ( compr == LZMA_DEFAULT_COMPR
+ && CheckSZSCacheSZS(szs,FF_YLZ,".ylz",remove_uncompressed))
+ {
+ return ERR_OK;
+ }
+
+ u8 *cdata;
+ uint csize;
+ enumError err = EncodeLZMA( &cdata, &csize, true,
+ sizeof(ylz_header_t), false, szs->data, szs->size, compr );
+ if (err)
+ return err;
+ szs->cdata = cdata;
+ szs->csize = csize;
+
+ ylz_header_t *yh = (ylz_header_t*)cdata;
+ memcpy(yh->magic,YLZ_MAGIC,sizeof(yh->magic));
+ memcpy(yh->first_4,szs->data,sizeof(yh->first_4));
+ yh->uncompressed_size = htonl(szs->size);
+ yh->compressed_size = htonl(csize-sizeof(ylz_header_t));
+ szs->fform_file = FF_YLZ;
+ //HexDump16(stdout,0,0,cdata,32);
+
+ ClearContainerSZS(szs);
+ if (remove_uncompressed)
+ ClearUncompressedSZS(szs);
+ return ERR_OK;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// LZMA support ///////////////
///////////////////////////////////////////////////////////////////////////////
diff --git a/project/src/lib-szs.h b/project/src/lib-szs.h
index 976966e..d8d4a49 100644
--- a/project/src/lib-szs.h
+++ b/project/src/lib-szs.h
@@ -634,7 +634,6 @@ static inline void LinkCacheSZS
//-----------------------------------------------------------------------------
-bool IsCompressFF ( file_format_t ff );
file_format_t GetNewCompressionSZS ( szs_file_t * szs );
#define COMPR_DEFAULT -99
@@ -1519,7 +1518,7 @@ enumError LoadRawData
///////////////////////////////////////////////////////////////////////////////
/////////////// BZ/BZIP2 support ///////////////
///////////////////////////////////////////////////////////////////////////////
-// [[wbz_header_t]]
+// [[wbz_header_t]] [[wlz_header_t]]
#define BZ_MAGIC "WBZa"
#define BZ_MAGIC_NUM 0x57425a61
@@ -1533,31 +1532,53 @@ typedef struct wbz_header_t
}
__attribute__ ((packed)) wbz_header_t;
+typedef wbz_header_t wlz_header_t;
+
+//-----------------------------------------------------------------------------
+// [[ybz_header_t]] [[ylz_header_t]]
+
+#define YBZ_MAGIC YAZ0_MAGIC
+#define YLZ_MAGIC YAZ0_MAGIC
+
+typedef struct ybz_header_t
+{
+ char magic[4]; // = YBZ_MAGIC
+ u32 uncompressed_size; // size of uncompressed data
+ u32 compressed_size; // size of compressed data
+ char first_4[4]; // copy of first 4 bytes of uncompressed
+ // data for fast magic detection.
+ u8 cdata[]; // compressed data
+}
+__attribute__ ((packed)) ybz_header_t;
+
+typedef ybz_header_t ylz_header_t;
+
//-----------------------------------------------------------------------------
enumError DecompressBZ ( szs_file_t * szs, bool rm_compressed );
+enumError DecompressYBZ ( szs_file_t * szs, bool rm_compressed );
enumError DecompressBZIP2 ( szs_file_t * szs, bool rm_compressed );
enumError CompressBZ ( szs_file_t * szs, int compr, bool remove_uncompressed );
+enumError CompressYBZ ( szs_file_t * szs, int compr, bool remove_uncompressed );
enumError CompressBZIP2 ( szs_file_t * szs, int compr, bool remove_uncompressed );
//
///////////////////////////////////////////////////////////////////////////////
/////////////// LZ/LZMA support ///////////////
///////////////////////////////////////////////////////////////////////////////
-// [[lbz_header_t]]
#define LZ_MAGIC "WLZa"
#define LZ_MAGIC_NUM 0x574c5a61
-typedef wbz_header_t wlz_header_t;
-
//-----------------------------------------------------------------------------
enumError DecompressLZ ( szs_file_t * szs, bool rm_compressed );
+enumError DecompressYLZ ( szs_file_t * szs, bool rm_compressed );
enumError DecompressLZMA ( szs_file_t * szs, bool rm_compressed );
enumError CompressLZ ( szs_file_t * szs, int compr, bool remove_uncompressed );
+enumError CompressYLZ ( szs_file_t * szs, int compr, bool remove_uncompressed );
enumError CompressLZMA ( szs_file_t * szs, int compr, bool remove_uncompressed );
//
diff --git a/project/src/prefix.inc b/project/src/prefix.inc
index 9df9f1e..5e8d8d0 100644
--- a/project/src/prefix.inc
+++ b/project/src/prefix.inc
@@ -1,117 +1,126 @@
static const u8 prefix_inc_lzma[] =
{
- // decompressed size: 0xfa2 = 4002 bytes
- 0x00,0x00,0x0f,0xa2,
+ // decompressed size: 0x1108 = 4360 bytes
+ 0x00,0x00,0x11,0x08,
// LZMA.6 compressed data
0x5d,0x00,0x00,0x80, 0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x20,0x15,
0x06,0x01,0x7b,0xa2, 0xa1,0xd0,0xb6,0xe6, 0x42,0x19,0xec,0xf7, 0x37,0x70,0x15,0x8e,
0x25,0x3c,0x80,0xfc, 0x38,0xd8,0x99,0x2a, 0xaa,0xdf,0xc9,0x44, 0x9a,0x44,0x8b,0x29,
- 0x12,0x98,0x47,0xc4, 0x6f,0x2e,0xa6,0xc1, 0x27,0xd7,0xb9,0x7e, 0x61,0xcb,0x38,0x25,
- 0x63,0x88,0x5c,0xd2, 0xf3,0xa8,0x8c,0x8e, 0x2e,0x13,0x3d,0xfb, 0x4d,0x42,0xc9,0x0d,
- 0xd5,0xbb,0xca,0x1e, 0x11,0xc8,0x3d,0x76, 0x89,0x9c,0x7b,0x06, 0x31,0xba,0x17,0xcc,
- 0x8c,0x29,0x05,0xde, 0x3a,0x2b,0xe6,0x83, 0x90,0xc2,0x83,0xeb, 0x28,0xc3,0x27,0x72,
- 0xcc,0x05,0xcc,0x73, 0x86,0xbe,0x94,0x86, 0x50,0x1f,0x05,0x4d, 0xbd,0x87,0xff,0x29,
- 0xc9,0xe3,0x76,0x70, 0x49,0x52,0xbb,0x91, 0x66,0x64,0x29,0xeb, 0x22,0x37,0x33,0x86,
- 0x5b,0x0f,0x6f,0xd3, 0x10,0x51,0xc1,0x56, 0x0d,0x64,0x9a,0xc3, 0x5b,0x29,0x63,0xc3,
- 0xd9,0xc6,0x5c,0x00, 0xf4,0x1f,0x62,0x00, 0x8b,0x5a,0xc9,0x86, 0xc5,0x0d,0xee,0xec,
- 0x58,0x2b,0x10,0xaf, 0xb1,0x48,0xd9,0x64, 0xd2,0xc4,0xd2,0x0d, 0xf3,0x22,0xa0,0x2e,
- 0x3d,0x70,0xee,0xc6, 0x58,0x56,0xa6,0x69, 0x3b,0x2d,0x01,0xda, 0x64,0x52,0xe9,0x56,
- 0x21,0x98,0xcf,0x49, 0xcc,0xf3,0xf7,0x87, 0xd4,0x80,0xbf,0x78, 0x0b,0x2a,0x58,0x46,
- 0x3c,0x32,0xd7,0x04, 0x60,0x62,0x24,0x10, 0x1a,0x7c,0x8d,0x18, 0x62,0x2e,0xc0,0x60,
- 0xe8,0x1b,0x0a,0x64, 0xd6,0x40,0x10,0x48, 0x87,0x92,0x01,0x90, 0xc5,0xef,0xf1,0x94,
- 0x47,0x34,0x20,0x14, 0x02,0x66,0x77,0xd7, 0x10,0x7a,0x18,0x64, 0x67,0x55,0x0b,0xaf,
- 0xdb,0x03,0xa4,0xec, 0x6c,0xd0,0x06,0x15, 0x30,0x17,0x33,0x24, 0xcc,0x2b,0x76,0x0b,
- 0x3b,0x8e,0x6d,0x7d, 0x36,0x91,0xe4,0x03, 0xa5,0x71,0x21,0xf9, 0x65,0xb4,0xbb,0x8a,
- 0xb9,0x7b,0xe3,0x31, 0x71,0x00,0x20,0xc3, 0x0a,0x8a,0xf1,0xe5, 0x97,0x13,0x93,0x5c,
- 0x83,0xa7,0x2e,0x3c, 0xff,0x38,0xe0,0xbc, 0x95,0x6e,0x33,0xf5, 0xcf,0xc5,0xa4,0xc9,
- 0x7a,0x83,0x09,0xd6, 0xf7,0xef,0x31,0x7a, 0xc7,0x58,0xa3,0x52, 0x41,0xdf,0x7f,0xf0,
- 0xef,0xd1,0xb9,0xe1, 0x41,0x85,0xbb,0xc0, 0xd1,0xa3,0x85,0x65, 0xcd,0x9f,0x96,0x46,
- 0x2d,0x63,0xa5,0xe4, 0x50,0x62,0x36,0x55, 0x9b,0xdb,0xb0,0x0b, 0x68,0xc5,0x36,0x85,
- 0x5e,0x18,0x25,0x90, 0x56,0xc5,0xd6,0x5d, 0xf7,0x05,0xde,0x9d, 0x51,0x59,0x70,0x61,
- 0xf7,0x18,0xc4,0xeb, 0xa3,0x98,0xc6,0x49, 0x48,0x80,0x33,0x93, 0x2a,0x98,0x26,0x23,
- 0x42,0xf5,0xfd,0x66, 0xd4,0x24,0xc1,0x87, 0xf8,0xd0,0xea,0x1c, 0xb5,0x4b,0x8a,0x8f,
- 0xcb,0xda,0xa3,0xfa, 0x1f,0x50,0x98,0xa8, 0x73,0x5c,0xb5,0x25, 0x16,0x99,0xf8,0x48,
- 0xb4,0x5c,0x59,0x43, 0xff,0x4b,0x3e,0x03, 0xe2,0x30,0x0c,0xca, 0xf6,0x1c,0xed,0x3b,
- 0x44,0x59,0x01,0xf1, 0x19,0xc2,0xe1,0xfd, 0x68,0x4a,0x6f,0x2d, 0xb8,0x68,0x6c,0x58,
- 0x31,0xfd,0x56,0x7e, 0x2b,0xad,0x16,0x1e, 0xaf,0x02,0x2c,0xeb, 0xfb,0x73,0x0a,0x0d,
- 0x81,0x3f,0xe5,0x7a, 0xed,0x74,0x62,0x7b, 0x03,0x59,0x6a,0x89, 0x04,0x32,0x6b,0xc9,
- 0x6c,0x96,0xfe,0xbc, 0x8f,0x04,0xaa,0x29, 0x67,0x20,0xbb,0x50, 0xab,0x80,0x8c,0x10,
- 0x80,0x63,0x76,0x2f, 0x30,0x6a,0xce,0x48, 0xd2,0x81,0xd9,0x2f, 0xa1,0x27,0x07,0xb0,
- 0xf8,0x83,0x4a,0x8d, 0x90,0x24,0xe2,0xa5, 0x0d,0xf4,0xe7,0x19, 0x8b,0x93,0xdb,0x11,
- 0x2a,0x03,0xba,0x8a, 0xa0,0x92,0x62,0x9d, 0x40,0xac,0x61,0x08, 0x63,0x2d,0x9f,0xb6,
- 0xce,0x68,0xb0,0xa9, 0x11,0x64,0x9f,0x97, 0x71,0xd4,0xe2,0x26, 0x16,0x67,0xe7,0xb4,
- 0xd0,0x1d,0x5a,0xc3, 0x5f,0x3e,0x25,0x3f, 0xa0,0x0c,0x9c,0xb1, 0x65,0x3e,0x08,0xc6,
- 0x66,0xb1,0x5a,0x5f, 0x08,0x23,0x1c,0xb3, 0x42,0xb8,0xe7,0x71, 0x86,0xd0,0xd7,0x60,
- 0x4e,0x48,0x9a,0x6b, 0x41,0x74,0xa3,0xae, 0x71,0x9b,0x13,0x13, 0x1a,0xa2,0x8e,0x2c,
- 0xe3,0x38,0x51,0x95, 0x20,0xb6,0x1d,0x31, 0x5c,0xd6,0xd7,0xe2, 0xd7,0x5a,0xfd,0xfb,
- 0xa9,0x4e,0xfa,0xf3, 0x75,0x32,0x6e,0x55, 0xf2,0x52,0xbb,0x27, 0xad,0x2c,0x56,0x3a,
- 0x6f,0x4b,0x1f,0x20, 0xa0,0xaa,0x85,0x4b, 0x1a,0x69,0x1d,0x04, 0x67,0x28,0xa1,0xa9,
- 0xe7,0x8e,0x48,0xb7, 0x51,0x66,0xdb,0x46, 0x32,0xfb,0x6e,0x9d, 0x19,0x6b,0x7f,0x20,
- 0xf4,0xcf,0x7e,0xf1, 0xa6,0x3f,0xc5,0x44, 0x92,0x87,0x8b,0xd4, 0x3d,0xfe,0xfc,0xbb,
- 0xe7,0x70,0x99,0xac, 0x2c,0x5d,0x0e,0xa7, 0x10,0x76,0xed,0x08, 0x5c,0x50,0x0c,0xb3,
- 0xe6,0xcf,0x7c,0x73, 0x62,0x22,0xce,0xe9, 0x94,0x8d,0x12,0xb1, 0xb3,0x2d,0x43,0xee,
- 0xc4,0xfc,0xd0,0xb1, 0xca,0x3b,0x5a,0xae, 0x7d,0x93,0x19,0x36, 0x0e,0x5f,0x01,0xb6,
- 0x9c,0x54,0x16,0x2e, 0x2d,0x37,0xba,0x86, 0x79,0xea,0x16,0x77, 0x1e,0x56,0xee,0x57,
- 0x11,0x5d,0x6e,0xfb, 0x95,0xa6,0xc7,0x75, 0x70,0x37,0x02,0x96, 0x9d,0x5e,0x0a,0xec,
- 0xd4,0xd3,0x72,0xa9, 0xd4,0x3d,0x05,0xe9, 0x81,0x4d,0x3d,0x5d, 0x8e,0x05,0xf8,0x17,
- 0x58,0xed,0xe7,0xd4, 0x9b,0xc0,0xa1,0x2e, 0x7b,0x3d,0x79,0x5f, 0xa5,0xf8,0x22,0x17,
- 0x53,0xa5,0x47,0x03, 0x31,0xe4,0x52,0x83, 0x69,0xd1,0x12,0x4b, 0x6b,0x32,0xf5,0xc6,
- 0x49,0xa0,0xca,0xad, 0xed,0x74,0x52,0xbc, 0x15,0xf4,0x90,0x5d, 0xa0,0x8a,0xd9,0xfd,
- 0x6d,0xb3,0xc7,0xe0, 0x14,0x5b,0xcc,0x3d, 0xf4,0x92,0x62,0x21, 0xaa,0xf2,0xee,0x10,
- 0x60,0x5c,0x58,0xdf, 0x85,0xd0,0x22,0x76, 0x98,0x0f,0xf1,0xcb, 0x17,0x63,0xc6,0xd8,
- 0xa8,0x19,0x67,0xf4, 0x92,0x69,0xfa,0x84, 0x64,0xc8,0x5d,0xa1, 0xb0,0x39,0x08,0xce,
- 0xa6,0x89,0x40,0x6b, 0x93,0x7a,0x9c,0x8c, 0x73,0x89,0x28,0x5e, 0xe0,0x83,0x45,0xc2,
- 0xe2,0x3a,0x61,0x62, 0xea,0x71,0x36,0x7e, 0xbf,0xe6,0xc7,0x7f, 0xee,0x55,0xc7,0x5b,
- 0xd0,0xfd,0x9e,0x09, 0x07,0xb3,0xe5,0x4f, 0x2d,0x21,0x66,0x2a, 0x9e,0x9d,0x53,0xd3,
- 0x5c,0xad,0x97,0x8d, 0x9e,0xfb,0xec,0xe7, 0x71,0x6d,0x8c,0x78, 0x5d,0x2d,0x32,0xe4,
- 0x94,0x14,0x4d,0xad, 0xbe,0x8d,0x84,0x8a, 0x81,0xc4,0xd4,0x27, 0xa0,0xab,0x68,0xfd,
- 0x9d,0x1c,0xfe,0x80, 0x63,0xda,0x9d,0xc0, 0x6f,0x74,0x77,0x6c, 0xa6,0x34,0xdb,0xf0,
- 0x96,0x26,0xf6,0x9f, 0xca,0xfb,0xa3,0xfc, 0x80,0x3d,0x9c,0xe4, 0x2e,0x27,0x73,0x52,
- 0x5f,0xba,0xff,0xeb, 0xf8,0x4e,0x40,0xd4, 0xc4,0xe1,0x06,0x47, 0x2c,0x67,0x94,0x87,
- 0x5e,0x75,0x0e,0x9c, 0x6c,0x7a,0x49,0x6e, 0x9d,0xe7,0x63,0x3d, 0x81,0xcb,0xf0,0xff,
- 0x84,0x5f,0x8a,0xab, 0x70,0x07,0x1b,0x71, 0xed,0xdb,0xbb,0x39, 0x3c,0xfe,0x7b,0x15,
- 0x11,0xae,0xc3,0x6e, 0x1e,0x92,0x32,0xa7, 0x4c,0xfa,0x94,0xd1, 0x1b,0x45,0xa4,0x05,
- 0x83,0xd3,0xaa,0xd3, 0xa8,0xb8,0x3b,0xf2, 0xcc,0xc6,0x12,0x41, 0xd8,0xc9,0x80,0x6f,
- 0x19,0x78,0x33,0xcc, 0xd8,0xc9,0x4a,0x05, 0x6a,0x7f,0x72,0x07, 0x80,0x2c,0x00,0x72,
- 0x90,0x44,0xab,0xcb, 0x19,0xdf,0x50,0x92, 0x9b,0xfc,0x29,0x81, 0x46,0x8f,0xaf,0xcc,
- 0xda,0xd9,0xb7,0x6f, 0x62,0x9f,0xa2,0x07, 0x23,0x08,0x20,0xd8, 0x14,0xa6,0xc8,0x49,
- 0xc0,0x05,0x0c,0x42, 0x60,0xe7,0x2c,0x6b, 0x7f,0x25,0x81,0xe6, 0x6c,0x5e,0xe3,0x34,
- 0x8c,0xd2,0x6c,0xa2, 0x03,0x14,0x3e,0x64, 0xfc,0x20,0x5a,0xd6, 0x24,0xc5,0xca,0x45,
- 0x2f,0x1f,0x65,0x25, 0x25,0xfd,0x32,0x9e, 0x16,0x2e,0xe1,0x4a, 0xb9,0xc9,0xa5,0x9c,
- 0x76,0x49,0xfb,0xfe, 0x05,0x83,0x37,0x98, 0xb3,0x80,0x7e,0x1c, 0xb2,0xcd,0xbd,0xda,
- 0xa6,0xce,0xe6,0x25, 0x5f,0x31,0x66,0x09, 0x21,0xba,0xda,0x69, 0xf4,0x4b,0x47,0x1e,
- 0x65,0xd2,0x4c,0x33, 0x7e,0xf0,0x02,0x7d, 0xdf,0x81,0x58,0xd6, 0x63,0x6e,0x32,0x68,
- 0x42,0x5a,0xa3,0x1f, 0x67,0x20,0x12,0x1d, 0xd5,0x02,0x86,0xa2, 0xc1,0x91,0x80,0xc6,
- 0xef,0x65,0x60,0x8e, 0x7f,0x09,0xa1,0x3b, 0xf1,0xf6,0x21,0xd5, 0x9e,0x33,0x9c,0xca,
- 0x90,0xe0,0x43,0x70, 0x68,0x5f,0x24,0x48, 0xbc,0x2d,0xd6,0x0d, 0x67,0x98,0xdb,0xe0,
- 0xe4,0x15,0xdd,0x3e, 0xb3,0xf1,0x63,0x0e, 0xf5,0xf9,0xa6,0x27, 0xae,0x3f,0x43,0xfe,
- 0x03,0x79,0x08,0xdd, 0xfc,0x0f,0xae,0xb6, 0x72,0x73,0xc7,0x1f, 0x43,0x42,0x7d,0x08,
- 0x14,0x41,0xd5,0x89, 0x2a,0x56,0xf0,0xb9, 0xe4,0xb5,0x64,0xe1, 0x9e,0x95,0xff,0x84,
- 0x8f,0xa9,0xce,0xb3, 0x17,0x40,0xa4,0xf0, 0xb1,0x48,0x90,0x49, 0xda,0xc0,0x81,0xf5,
- 0x4b,0xfc,0xf6,0x56, 0xc1,0x7c,0x5c,0x9a, 0x25,0x47,0xb1,0x08, 0x6c,0xd3,0xe4,0xc1,
- 0xbb,0x8d,0x2a,0xa8, 0x84,0xd4,0x0f,0x1c, 0x78,0x6d,0x0d,0x01, 0x05,0xa3,0x7d,0x67,
- 0x5c,0x24,0x36,0x8b, 0x51,0x1a,0x04,0xbf, 0x14,0xe0,0xb3,0x7e, 0x5e,0xfe,0xfb,0x65,
- 0x3b,0x89,0x70,0x60, 0x52,0x9b,0x7e,0xe6, 0x55,0xda,0x90,0x2a, 0x2c,0x50,0xdc,0xaf,
- 0xd0,0x27,0xc0,0x5b, 0xb7,0x2b,0x62,0x49, 0xb5,0x70,0x84,0xe5, 0x7b,0xb9,0x6d,0x50,
- 0x63,0x9d,0xde,0xe0, 0x3e,0x40,0x9a,0x7d, 0x7a,0x27,0x08,0x88, 0xa9,0x19,0xab,0xbb,
- 0x5c,0xb1,0x5c,0x6e, 0x11,0xa0,0x08,0x27, 0x5e,0xab,0x3b,0x2d, 0x98,0x1d,0x33,0x24,
- 0xa9,0xfc,0xd2,0x56, 0xf5,0x0a,0x31,0x5d, 0x01,0x62,0xfe,0x0d, 0x55,0xec,0x9b,0x71,
- 0x87,0xcf,0xa6,0xfb, 0x51,0x95,0xa0,0x59, 0xd9,0xa2,0xbf,0xd6, 0x95,0xd5,0x3b,0xb1,
- 0x04,0x34,0xd3,0x7a, 0x69,0x6d,0x0a,0xef, 0xe1,0x32,0xa7,0x72, 0xc7,0x6f,0xc3,0x0b,
- 0xb6,0x9d,0x1e,0x1d, 0x5d,0x5e,0x98,0x37, 0x98,0x93,0xec,0xa6, 0xeb,0xeb,0xfb,0xe6,
- 0xb2,0x24,0x92,0xb6, 0xd5,0xd2,0x1a,0x97, 0x82,0x55,0xaa,0x4d, 0xd9,0xff,0xcc,0xfe,
- 0xe7,0x37,0xb6,0xe3, 0x68,0x38,0xaf,0xe0, 0x3d,0x6d,0xca,0x16, 0x2c,0x39,0xd0,0xe2,
- 0x90,0x08,0xa2,0x54, 0x6f,0x9a,0x8b,0x9d, 0x71,0x71,0x1e,0x1f, 0x9e,0x1e,0x08,0xc7,
- 0x0b,0x06,0x2b,0x00, 0xd6,0x33,0x6c,0x3a, 0x0d,0x3e,0x89,0x9d, 0xad,0x10,0xdf,0x72,
- 0xb4,0x9f,0x5c,0xf0, 0xa2,0xf8,0xad,0x1c, 0xc8,0x95,0xf7,0x17, 0x14,0x64,0xe8,0x73,
- 0xf3,0x8b,0xa1,0x7b, 0x33,0x04,0x85,0xa7, 0x90,0xe0,0xf1,0x8b, 0x72,0xb9,0x1a,0x29,
- 0x2e,0x1c,0x4c,0x38, 0x8f,0xb9,0x8b,0x21, 0x33,0x5e,0x85,0x9e, 0x2e,0xb6,0xcf,0x5c,
- 0x7c,0xfe,0x28,0x68, 0x54,0x7e,0xa1,0x4f, 0x6a,0x97,0x49,0xcc, 0x21,0x4d,0x9b,0xb6,
- 0x50,0x98,0x25,0x8f, 0x3c,0x64,0xad,0xeb, 0xad,0x52,0x0c,0xc4, 0xdf,0xff,0xb3,0xad,
- 0x16,0x24,
- // 0x692 = 1682 data bytes (42%)
+ 0x12,0x98,0x47,0xc4, 0x6f,0x2e,0xa6,0xc1, 0x27,0xd7,0xb5,0x08, 0x35,0x76,0xf8,0xfb,
+ 0xfc,0xa3,0x5c,0x36, 0x8d,0xde,0xa4,0xa7, 0x30,0xd0,0x73,0x77, 0xc9,0x74,0x74,0x89,
+ 0xe7,0x00,0x01,0x1f, 0xb7,0x49,0x7c,0x4c, 0x1d,0x88,0x68,0xf9, 0x6b,0x9b,0x02,0x9d,
+ 0xa4,0x3b,0x33,0x72, 0x04,0xae,0x3c,0xe0, 0x44,0x0c,0x9c,0x4e, 0x83,0xfe,0x1b,0x8e,
+ 0x21,0x13,0xef,0x59, 0x72,0x74,0xff,0xa1, 0x97,0x59,0x21,0x23, 0xce,0xe9,0x1a,0xa7,
+ 0x0e,0x0f,0x33,0xf4, 0x92,0xab,0x84,0x0f, 0x10,0x27,0x32,0x46, 0xa6,0xba,0x8f,0xc4,
+ 0xfe,0xc5,0x95,0x15, 0xdb,0x7a,0xeb,0x67, 0x08,0x6a,0x89,0x49, 0xc3,0x4a,0x3f,0x9e,
+ 0xe3,0x3b,0x65,0x7b, 0x8b,0x27,0x58,0xae, 0xfe,0x40,0x4b,0x91, 0xcd,0x5f,0xc4,0xa7,
+ 0x1f,0x83,0x90,0x14, 0xb2,0x42,0x47,0xb2, 0x49,0x3f,0x6e,0x9f, 0x82,0xec,0x42,0x67,
+ 0x12,0x15,0x53,0x1d, 0x6a,0xc4,0x7a,0x00, 0xfc,0x5b,0x03,0x1c, 0x5b,0xc4,0x8a,0x67,
+ 0x5f,0x56,0x75,0x86, 0xe4,0x47,0x0e,0x47, 0x60,0x03,0x45,0x5b, 0x16,0xfc,0x8b,0x6f,
+ 0x46,0xee,0xf5,0x64, 0x08,0xbf,0x7c,0xa3, 0x32,0x63,0x5f,0xef, 0xc8,0x5b,0xec,0x58,
+ 0x8f,0x88,0xd1,0x88, 0x22,0xe0,0x8b,0x96, 0xca,0x1e,0x08,0x99, 0xd8,0x45,0x55,0x4f,
+ 0x46,0x4b,0xaa,0x41, 0xc9,0xc1,0x7b,0x90, 0x8a,0xae,0xa7,0xb6, 0x7f,0x99,0xd5,0xf9,
+ 0x84,0x80,0x1c,0x12, 0x83,0x39,0xa5,0x4d, 0x27,0xee,0xf8,0xa8, 0x18,0xab,0xe3,0xb6,
+ 0xae,0x3f,0x9d,0xf7, 0x88,0xfa,0x84,0xc3, 0x56,0xfe,0x6e,0xf6, 0x44,0x2b,0xa3,0x8c,
+ 0xa3,0xad,0x29,0xdc, 0xc0,0x13,0xc1,0x65, 0xc7,0x70,0x51,0x50, 0xe4,0xb4,0x08,0xf3,
+ 0xe7,0xdf,0xcb,0x0d, 0x0c,0x01,0x4f,0x9d, 0xb0,0x15,0xe9,0x6d, 0xd4,0x48,0x25,0x79,
+ 0x4a,0xa1,0x9e,0x72, 0x51,0x7a,0x02,0x08, 0x58,0x21,0x0e,0xe8, 0x40,0x2f,0x75,0x65,
+ 0x33,0x16,0x30,0x6f, 0x41,0x9c,0xd1,0x2f, 0xf4,0xf7,0xa3,0x8e, 0x01,0xb5,0xed,0x76,
+ 0x4d,0xcd,0xaa,0xc7, 0x2e,0xbb,0x01,0xbf, 0xa3,0xf0,0xe9,0xb3, 0x85,0x85,0xf7,0xb5,
+ 0x75,0xb5,0x18,0xf8, 0xdd,0x24,0x0e,0xda, 0x7e,0xb6,0x32,0xfb, 0x88,0xdb,0x97,0x28,
+ 0x50,0xe2,0x86,0xc5, 0xd5,0xc4,0x25,0xc3, 0x50,0x16,0x10,0x62, 0xe3,0x1e,0x22,0x2f,
+ 0xd2,0xe0,0x7f,0x52, 0xc8,0xfe,0xc2,0xd6, 0x38,0x31,0xdb,0x1c, 0x19,0x6d,0x7f,0xd3,
+ 0x6d,0x43,0x15,0xb3, 0xb6,0x52,0xc0,0x38, 0x48,0x74,0x68,0x13, 0x17,0x8c,0x74,0x0c,
+ 0x11,0x45,0x18,0xef, 0x81,0xa4,0x8e,0x1b, 0xdd,0x39,0x20,0xeb, 0x3f,0xf7,0xb6,0x4c,
+ 0x9c,0x6a,0xb4,0x6e, 0x42,0x6b,0x8c,0x12, 0xb1,0xf0,0x15,0x76, 0x1d,0xd9,0xd9,0x43,
+ 0xe3,0x63,0x09,0x6b, 0x43,0x72,0x59,0xf0, 0xe2,0xa0,0xd6,0x69, 0xaf,0x73,0x47,0x38,
+ 0x8e,0xc6,0x11,0xd6, 0xe0,0x5e,0x36,0x60, 0x40,0x4d,0xbe,0xfe, 0xd7,0xb6,0xa1,0xb1,
+ 0xae,0x57,0x09,0x7e, 0xbc,0xdf,0xb3,0x7f, 0xf9,0x4c,0x33,0xeb, 0xbb,0xfb,0x59,0xed,
+ 0xc6,0x9b,0x23,0x65, 0x1a,0x87,0x5a,0xdd, 0xf6,0xd5,0xdf,0xbb, 0xc3,0x9d,0xad,0x6d,
+ 0xe8,0x3c,0xaf,0xc6, 0x60,0x7e,0x11,0x3c, 0xa3,0xa8,0x4a,0xc5, 0x2c,0xfe,0x7d,0x84,
+ 0x57,0xba,0x26,0xd4, 0xc1,0x3a,0xab,0x2e, 0x72,0x05,0xe3,0x60, 0x2c,0x4c,0x6a,0xfe,
+ 0xe5,0x45,0x13,0x77, 0x53,0x8e,0xc4,0x3e, 0x44,0xd5,0xc4,0x29, 0x5d,0x9d,0x7e,0xf6,
+ 0x2d,0xdc,0x9f,0x66, 0x54,0x3c,0x5d,0x17, 0x3e,0x61,0x8f,0xb4, 0x0c,0xaa,0xb6,0x52,
+ 0xf7,0xb8,0x90,0xf0, 0xed,0x80,0x47,0x67, 0xc1,0x74,0xe7,0x04, 0x84,0x71,0xba,0xb9,
+ 0x40,0xd8,0x10,0xe3, 0xcd,0xf1,0x47,0x38, 0x65,0x93,0x25,0xcd, 0x5a,0x60,0xe2,0xcc,
+ 0x44,0x97,0xbd,0x81, 0x07,0x7e,0x59,0x36, 0x3a,0x57,0xc2,0x49, 0x9f,0x75,0x06,0x56,
+ 0x5f,0xc2,0x8c,0xfd, 0xb9,0x9c,0x39,0xf6, 0xcb,0xc5,0xeb,0xd6, 0x75,0xc1,0xa3,0xc7,
+ 0x2e,0xde,0x8a,0x53, 0x78,0x72,0xe9,0xd5, 0xd6,0x0b,0xaa,0xee, 0xd4,0x6d,0x5a,0xfd,
+ 0x30,0x11,0xfd,0x10, 0x32,0xea,0xa8,0x0f, 0x30,0x8c,0xa0,0x88, 0x18,0x96,0x32,0xe0,
+ 0x87,0xb3,0x54,0xd6, 0x76,0x13,0xd7,0x86, 0xd1,0xb4,0x15,0x28, 0xc1,0x9c,0x7f,0x13,
+ 0xbf,0x8f,0x9e,0xe1, 0xd4,0xc0,0x52,0x78, 0x2b,0x8c,0xc3,0x34, 0xa9,0x32,0x06,0xe9,
+ 0x4d,0xa9,0xb6,0x16, 0xbc,0x0a,0xea,0xf5, 0x44,0xdd,0x71,0xce, 0x78,0xd1,0xe6,0xef,
+ 0x94,0x90,0xfa,0x1f, 0x5e,0x08,0x76,0xd1, 0x0d,0xb4,0xbc,0x4c, 0x5d,0x29,0xf9,0xb8,
+ 0x81,0xf3,0x20,0xc8, 0xa7,0x4f,0x3e,0x20, 0x55,0xd6,0xe2,0x09, 0x87,0xe6,0x06,0x01,
+ 0x19,0xfa,0x5c,0xfa, 0x34,0x0e,0x81,0x95, 0x5e,0xe7,0xff,0xd6, 0x7a,0x10,0x31,0x4b,
+ 0xfd,0xb1,0x4c,0xf9, 0xc4,0xf1,0x48,0x01, 0x81,0xbe,0xbc,0xa7, 0x6e,0xc7,0x99,0x9b,
+ 0x29,0x92,0x9e,0x15, 0x12,0xe3,0x99,0x42, 0x4f,0x9d,0xdc,0xd1, 0x87,0x63,0xd5,0x59,
+ 0x08,0x29,0x2f,0xfe, 0x37,0x5a,0x73,0xf0, 0x95,0x7b,0xbf,0xde, 0xfb,0x46,0x75,0x6e,
+ 0x12,0x61,0x75,0xb5, 0x54,0x11,0x71,0xe3, 0x56,0x87,0x2f,0x0d, 0xdf,0x8e,0x41,0x6f,
+ 0x7d,0x4c,0xb4,0x68, 0x71,0x27,0xbb,0xf7, 0x78,0xbc,0xa7,0x9f, 0x2a,0xbd,0x1b,0x0a,
+ 0x0d,0xce,0xf2,0x86, 0x29,0xd1,0x36,0xe3, 0x15,0xb9,0x4b,0x13, 0x4b,0x35,0x53,0xf3,
+ 0xd0,0xd3,0xa3,0x1f, 0x30,0x0d,0xf7,0xd2, 0xd0,0x65,0xa2,0x51, 0xca,0xbc,0xf1,0xad,
+ 0x05,0xbf,0x5a,0x82, 0x60,0xc2,0xbc,0x0a, 0x12,0x08,0x28,0xce, 0x10,0x23,0x36,0xd1,
+ 0x1e,0x91,0xac,0x9b, 0xcd,0x96,0xc1,0xf1, 0xe4,0x57,0xdb,0xfb, 0xc0,0x14,0xf4,0x79,
+ 0x0c,0x09,0x1b,0xdd, 0x27,0x8b,0xa1,0x62, 0x3c,0xd9,0x04,0xbf, 0x8a,0xbd,0x35,0xb5,
+ 0x45,0x96,0x6c,0xee, 0x64,0x33,0x82,0x20, 0x11,0x10,0x10,0x97, 0x7c,0x51,0x83,0x91,
+ 0xb5,0xca,0x88,0x5e, 0x71,0xe2,0xb7,0xad, 0xe2,0xfe,0x75,0xec, 0x96,0xc0,0x85,0xe4,
+ 0x9a,0x4c,0x74,0x5e, 0x98,0x22,0x33,0x5f, 0x7a,0x5a,0x6d,0xbb, 0x2d,0xc7,0x8d,0x15,
+ 0xbc,0xea,0xf3,0x56, 0x3a,0x03,0xab,0x57, 0x25,0x63,0x9c,0x64, 0x4d,0x38,0x25,0x7b,
+ 0x5c,0x98,0x7e,0x7a, 0x78,0xd7,0x4a,0xcb, 0xaa,0x50,0xb6,0xa0, 0xd4,0x8c,0x33,0x38,
+ 0x42,0xf4,0x28,0xea, 0x11,0x98,0xc6,0xc7, 0xad,0x11,0x5d,0x96, 0xb1,0xdc,0x41,0xc9,
+ 0x99,0x45,0x2b,0x76, 0xa9,0x8a,0x22,0xfe, 0xb1,0x84,0xb4,0x37, 0x65,0xf5,0x2b,0xab,
+ 0xbb,0x29,0x47,0x5c, 0xf6,0x88,0x53,0x22, 0x81,0xc4,0x60,0x69, 0x35,0xc5,0x46,0xc0,
+ 0x04,0xba,0xdf,0x21, 0x8c,0x01,0x94,0xff, 0x16,0xd5,0x4d,0x1c, 0xb9,0xc8,0xda,0x22,
+ 0xcf,0xb5,0x77,0xf4, 0x17,0x08,0xdc,0x69, 0x50,0x29,0xf7,0xc1, 0xe1,0x71,0xdc,0x47,
+ 0x06,0x78,0x6b,0x8b, 0x18,0x34,0xa0,0x18, 0x70,0xa6,0x8e,0x6f, 0x5b,0x7f,0xec,0xc8,
+ 0xab,0x0b,0x04,0x21, 0xcb,0xc7,0x9b,0x02, 0x29,0xf2,0x52,0x1f, 0xde,0xc6,0x93,0x22,
+ 0xc1,0x1a,0x59,0x87, 0xeb,0xd4,0x74,0x2e, 0xbe,0x2f,0x39,0xd7, 0xa3,0xa5,0xf6,0x85,
+ 0xbe,0x04,0x08,0x3c, 0x77,0x67,0xcc,0xf7, 0xde,0xab,0xd8,0x50, 0x93,0x4b,0xcd,0x55,
+ 0x73,0xd3,0x8a,0xb3, 0xdc,0xad,0xca,0x81, 0xf1,0xeb,0xc5,0x9f, 0x46,0x8a,0x9b,0x8c,
+ 0x22,0xa0,0xf4,0x14, 0x9e,0x44,0x51,0xd4, 0x5a,0xf0,0x6b,0x82, 0xf4,0xb5,0x00,0xa0,
+ 0xe0,0x73,0x24,0xdd, 0x53,0xeb,0x17,0xb5, 0xe1,0xa9,0x39,0xf2, 0x0a,0x74,0x2d,0xe7,
+ 0x1e,0x69,0x1c,0x3b, 0x4a,0x20,0x22,0xeb, 0x89,0x4b,0x56,0xad, 0x2f,0xb5,0x5f,0x22,
+ 0x44,0xab,0x68,0x02, 0xa6,0x42,0xa2,0x66, 0x7f,0xcd,0x52,0x40, 0x27,0xab,0xee,0x4b,
+ 0xd5,0xd4,0x7e,0x4f, 0x48,0x99,0x3b,0x46, 0x38,0x1a,0x74,0xe4, 0x61,0xeb,0xee,0x04,
+ 0xab,0x23,0x8b,0xfd, 0x07,0xda,0xcc,0x2d, 0xf2,0x54,0xcc,0xe4, 0xa4,0x2d,0x18,0xe3,
+ 0x0d,0xca,0x21,0xe6, 0xaf,0x2d,0xc2,0x18, 0x33,0x22,0x90,0x5e, 0xa5,0xa2,0x82,0x03,
+ 0xb9,0xe0,0x31,0x1a, 0x08,0xb4,0x2b,0x34, 0x15,0xea,0x88,0xaa, 0xfa,0xc5,0x11,0x9c,
+ 0x65,0x8b,0xaf,0x64, 0xc9,0x0d,0xdf,0xf3, 0x29,0x0f,0xf9,0x46, 0x68,0x62,0xe1,0x7c,
+ 0x0e,0x70,0xc0,0x8f, 0x82,0x4f,0x7e,0xf1, 0x36,0x02,0x93,0x51, 0x5c,0xe7,0xd2,0x72,
+ 0x91,0x29,0xc9,0x22, 0x5a,0x97,0xce,0x59, 0x26,0x24,0xda,0xf6, 0xf9,0x03,0xec,0xf3,
+ 0x4f,0x0a,0x5d,0xde, 0x99,0xf1,0x86,0x55, 0xeb,0x37,0x70,0xe4, 0x36,0x34,0x36,0x06,
+ 0x9f,0x30,0x03,0xb6, 0x4c,0x9a,0x30,0x28, 0xc8,0xfa,0x9a,0x4b, 0x94,0xf6,0x59,0x94,
+ 0x7b,0xc5,0x00,0x50, 0x2c,0x41,0x88,0xc0, 0xa2,0x28,0xf7,0x14, 0xe9,0x2f,0x7c,0x90,
+ 0xf2,0xb1,0x81,0x5d, 0x06,0x5d,0xbb,0xec, 0x2e,0x92,0xff,0xca, 0xdd,0xd1,0xfc,0x75,
+ 0x0e,0x7b,0x80,0x9f, 0xef,0x5a,0x59,0x70, 0xbe,0xe7,0x9c,0xfb, 0xcc,0x5e,0xf4,0xea,
+ 0xcc,0xf3,0x78,0x4d, 0xd6,0x50,0xd2,0x39, 0x7e,0x09,0xcc,0x6e, 0x03,0xe2,0xf0,0x69,
+ 0x5f,0x99,0x2b,0xe0, 0x29,0x20,0x29,0xed, 0xf0,0xb1,0xb7,0xfb, 0x5b,0xc4,0xb9,0x16,
+ 0x0c,0x98,0x5d,0x20, 0x89,0x96,0xd6,0xc4, 0xd3,0xc0,0xb9,0x82, 0xa9,0xf4,0xd7,0x96,
+ 0xdd,0xdb,0x2e,0x3c, 0x40,0x1b,0x2a,0x47, 0xf0,0x04,0x98,0x6d, 0x6d,0x2d,0xa9,0xa5,
+ 0x83,0x9c,0xcc,0xb3, 0xc1,0x76,0x7a,0xce, 0xa0,0xbf,0xff,0x96, 0xb2,0x49,0x9a,0x7c,
+ 0xe7,0x65,0x2c,0x38, 0x47,0xbf,0x50,0xdc, 0x6c,0x8f,0x21,0x32, 0x2b,0x29,0xb8,0x27,
+ 0x2c,0x2d,0x56,0x57, 0xe4,0x43,0xa1,0x54, 0x1f,0x43,0xc8,0x1e, 0x2e,0xe4,0xe2,0x26,
+ 0x8c,0x0c,0x35,0x4d, 0xd4,0xb9,0xb3,0x70, 0x05,0xbe,0xe8,0xb0, 0xba,0xeb,0x4a,0x0e,
+ 0xb0,0x80,0xcd,0x45, 0x73,0xec,0x3b,0x9f, 0xd5,0x54,0x93,0x8f, 0x85,0x30,0xb6,0x8d,
+ 0x60,0xdf,0xec,0x24, 0xe7,0x99,0x16,0x72, 0xfa,0xcf,0x95,0x42, 0x74,0xcf,0x76,0xdc,
+ 0x95,0x8b,0x22,0x65, 0xfa,0xc3,0xcd,0x88, 0x2b,0xf5,0x38,0xc4, 0xa2,0x0b,0x82,0xe1,
+ 0x14,0xea,0x45,0xa0, 0x02,0xe1,0x4b,0xe9, 0x44,0x15,0x61,0x06, 0x62,0x98,0xc5,0xcf,
+ 0xb4,0x58,0xaa,0x5f, 0x5b,0x16,0x8f,0x5a, 0x1b,0xe9,0x31,0x75, 0xef,0x0f,0x26,0x50,
+ 0x50,0xda,0x89,0xd2, 0x2b,0x54,0xa6,0xd9, 0xf5,0xc9,0xb7,0x6c, 0xc4,0xef,0xf0,0xc8,
+ 0xb6,0x32,0xd6,0xb5, 0xfb,0xe4,0xac,0x6c, 0xc0,0xcb,0x00,0x18, 0x7f,0x8c,0x98,0x43,
+ 0x42,0x61,0xb4,0xa6, 0xc6,0x5a,0xc5,0x35, 0x0f,0xf9,0x0c,0x4d, 0xc8,0x8b,0x2b,0xb4,
+ 0xa0,0x2c,0x37,0xe8, 0xac,0x8e,0x6c,0xa3, 0x58,0x42,0x26,0x23, 0x5b,0x42,0x2b,0xc5,
+ 0xdb,0x68,0x02,0xbe, 0x5c,0x42,0x39,0x30, 0xdc,0x0c,0x91,0x2b, 0x9a,0x54,0xf1,0xc1,
+ 0x1a,0xf1,0xa5,0xe2, 0x7e,0x10,0x9d,0x6a, 0xf8,0x51,0x34,0x0e, 0xce,0xdd,0x4b,0xf5,
+ 0xbe,0x62,0x7f,0x05, 0x88,0x3f,0xb2,0xcc, 0xe9,0x07,0x4c,0x98, 0x3f,0xbf,0xfe,0x93,
+ 0x86,0xa6,0x93,0xd9, 0x71,0x9f,0x30,0x18, 0xb6,0x7d,0x4b,0x81, 0xfa,0x96,0x52,0xaf,
+ 0xdb,0x57,0xd5,0xad, 0xa2,0xeb,0x6b,0x19, 0x7e,0x2b,0x28,0xe1, 0xef,0x44,0xcc,0x8a,
+ 0x91,0xc3,0xda,0x68, 0x95,0x7d,0xb0,0xa6, 0xb9,0x2a,0x9d,0x31, 0x07,0xe9,0xff,0xd2,
+ 0xa0,0x2b,0xfc,
+ // 0x723 = 1827 data bytes (42%)
};
static CompressManager_t prefix_inc_mgr
diff --git a/project/src/ui/tab-wbmgt.inc b/project/src/ui/tab-wbmgt.inc
index 0b5b527..3c2046f 100644
--- a/project/src/ui/tab-wbmgt.inc
+++ b/project/src/ui/tab-wbmgt.inc
@@ -231,6 +231,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wctct.inc b/project/src/ui/tab-wctct.inc
index 5a114d4..0f624c5 100644
--- a/project/src/ui/tab-wctct.inc
+++ b/project/src/ui/tab-wctct.inc
@@ -215,6 +215,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -449,7 +452,7 @@
" is expected. If preceded by a minus sign, the slots are disabled."
" The keywords are: @TRACKS@ (slots 0:0x1f), @ARENAS@ (0x20:0x29)"
" and @SPECIAL@ (0x36:0x3a)."
- " @CTCODE@ is an abbreviation for @ARENAS,SPECIAL@."
+ " @CTCODE@ is a short cut for @ARENAS,SPECIAL@."
"\n "
" The default is to enable slot ranges"
" @0x00:0x1f@, @0x2a:0x35@, @0x3b:0x41@ and @0x44:0xfe@." },
diff --git a/project/src/ui/tab-wimgt.inc b/project/src/ui/tab-wimgt.inc
index 67fb5da..9eec0ed 100644
--- a/project/src/ui/tab-wimgt.inc
+++ b/project/src/ui/tab-wimgt.inc
@@ -191,6 +191,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wkclt.inc b/project/src/ui/tab-wkclt.inc
index 38207d5..2d9b06b 100644
--- a/project/src/ui/tab-wkclt.inc
+++ b/project/src/ui/tab-wkclt.inc
@@ -306,6 +306,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wkmpt.inc b/project/src/ui/tab-wkmpt.inc
index 0accc19..27632c7 100644
--- a/project/src/ui/tab-wkmpt.inc
+++ b/project/src/ui/tab-wkmpt.inc
@@ -284,6 +284,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wlect.inc b/project/src/ui/tab-wlect.inc
index 217419c..d25cf5d 100644
--- a/project/src/ui/tab-wlect.inc
+++ b/project/src/ui/tab-wlect.inc
@@ -259,6 +259,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wmdlt.inc b/project/src/ui/tab-wmdlt.inc
index b927eab..a595cfb 100644
--- a/project/src/ui/tab-wmdlt.inc
+++ b/project/src/ui/tab-wmdlt.inc
@@ -209,6 +209,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wpatt.inc b/project/src/ui/tab-wpatt.inc
index 39413d7..06fe50f 100644
--- a/project/src/ui/tab-wpatt.inc
+++ b/project/src/ui/tab-wpatt.inc
@@ -174,6 +174,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wstrt.inc b/project/src/ui/tab-wstrt.inc
index 3dd0dca..5ee314a 100644
--- a/project/src/ui/tab-wstrt.inc
+++ b/project/src/ui/tab-wstrt.inc
@@ -243,6 +243,9 @@
"NO_PAGER", "no-pager|nopager",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wszst.inc b/project/src/ui/tab-wszst.inc
index af24140..cfe7da5 100644
--- a/project/src/ui/tab-wszst.inc
+++ b/project/src/ui/tab-wszst.inc
@@ -799,6 +799,14 @@
0,
"Forbid the internal usage of a pager." },
+ { T_OPT_GM, "ZERO", "z|zero",
+ 0,
+ "This option affects the exit status of the programs."
+ " Instead of an exit status, the value 0 is returned for OK."
+ " This happens for notices ({-v}, status<15), warnings ({-vv}, status<29),"
+ " errors ({-vvv}, status<115) and fatal errors ({-vvvv})."
+ " The exit status for INTERRUPT (112) is never replaced." },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0,
"Be quiet and print only error messages."
@@ -1711,12 +1719,11 @@
{ T_OPT_CP, "CUP_ICONS", "cup-icons|cupicons",
"image",
- "Load given image, convert it to TPL.CMPR and add the result as sub-files"
+ "Load given image, convert it to TPLx.CMPR and add the result as sub-files"
" 'button/timg/ct_icons.tpl' and as 'control/timg/ct_icons.tpl'"
" to files 'Channel.szs', 'MenuMulti.szs' and 'MenuSingle.szs'."
" Both sub-files are always linked, so that storage space is saved."
- " The usual size for each single icon is 128x128."
- " This can be changed by LPAR setting CUP-ICON-SIZE." },
+ " The usual size for each single icon is 128x128." },
{ T_OPT_C, "NO_COPY", "no-copy|nocopy",
0,
@@ -2103,15 +2110,39 @@
0,
"If creating a compressed file, create a BZIP2 compatible file." },
+ { T_OPT_G, "CYBZ", "cybz",
+ 0,
+ "If creating a compressed file, force YBZ compression"
+ " (YAZ0 file header, but BZIP2 compression),"
+ " but don't change the payload." },
+
+ { T_OPT_G, "YBZ", "ybz",
+ 0,
+ "If creating a compressed file, force archive format U8"
+ " with YBZ compression (YAZ0 file header, but BZIP2 compression)."
+ " Therefore it is a short cut for {--u8 --cybz}." },
+
{ T_OPT_G, "LZ", "lz",
0,
- "If creating a compressed file, force BZ compression"
+ "If creating a compressed file, force LZ compression"
" (a YAZ0 like file format with LZMA compression)." },
{ T_OPT_G, "LZMA", "lzma",
0,
"If creating a compressed file, create a LZMA compatible file." },
+ { T_OPT_G, "CYLZ", "cylz",
+ 0,
+ "If creating a compressed file, force YLZ compression"
+ " (YAZ0 file header, but LZMA compression),"
+ " but don't change the payload." },
+
+ { T_OPT_G, "YLZ", "ylz",
+ 0,
+ "If creating a compressed file, force archive format U8"
+ " with YLZ compression (YAZ0 file header, but LZMA compression)."
+ " Therefore it is a short cut for {--u8 --cylz}." },
+
{ T_SEP_OPT, 0,0,0,0 }, //----- separator -----
{ T_OPT_G, "SH", "sh",
@@ -2163,7 +2194,7 @@
{ H_OPT_CP, "FMODES", "fmodes|feature-modes|featuremodes",
"list",
- "--fmodes is an abbreviation for --feature-modes and declares an output filter."
+ "--fmodes is a short cut for --feature-modes and declares an output filter."
" @LIST@ is a keyword list. The keywords are:"
" @SECTION, VISUAL, GAMEPLAY, BATTLE, RACING, TIMETRIAL, OFFLINE@ and @ONLINE@."
" A feature is only printed if *all* set keywords match."
@@ -2511,8 +2542,12 @@
" N modes of 9, 1, 8, 2, 5. @TRY2@ is used for normalizing."
" For non bz-compression, @TRY*@ are the same as @BEST@."
"\n "
+ " Do not use compression level >6 for LZMA if the file is intended"
+ " for Mario Kart Wii, as too much memory is required for decoding.\n"
+ "\n "
" Option {--norm} takes precedence over {--compr}"
- " and sets the compression level to @TRY2@ (@BEST@)."
+ " and sets the compression level for bzip2 to @TRY2@ (@BEST@)"
+ " and for LZMA to 6."
"\n "
" For more modes and details type {wszst -C list}."
" To force colorized output type {wszst -C clist}." },
@@ -2747,8 +2782,12 @@
{ H_COPT, "XYZ", 0,0,0 },
{ T_COPT, "BZ", 0,0,0 },
{ T_COPT, "BZIP2", 0,0,0 },
+ { T_COPT, "CYBZ", 0,0,0 },
+ { T_COPT, "YBZ", 0,0,0 },
{ T_COPT, "LZ", 0,0,0 },
{ T_COPT, "LZMA", 0,0,0 },
+ { T_COPT, "CYLZ", 0,0,0 },
+ { T_COPT, "YLZ", 0,0,0 },
{ T_COPT, "SZS", 0,0,0 },
{ H_COPT, "XWU8", 0,0,0 },
{ T_COPT, "WBZ", 0,0,0 },
@@ -2771,8 +2810,12 @@
{ H_COPT, "XYZ", 0,0,0 },
{ T_COPT, "BZ", 0,0,0 },
{ T_COPT, "BZIP2", 0,0,0 },
+ { T_COPT, "CYBZ", 0,0,0 },
+ { T_COPT, "YBZ", 0,0,0 },
{ T_COPT, "LZ", 0,0,0 },
{ T_COPT, "LZMA", 0,0,0 },
+ { T_COPT, "CYLZ", 0,0,0 },
+ { T_COPT, "YLZ", 0,0,0 },
{ T_COPT, "SZS", 0,0,0 },
{ H_COPT, "XWU8", 0,0,0 },
{ T_COPT, "WBZ", 0,0,0 },
diff --git a/project/src/ui/ui-wbmgt.c b/project/src/ui/ui-wbmgt.c
index c5c1055..6500c1a 100644
--- a/project/src/ui/ui-wbmgt.c
+++ b/project/src/ui/ui-wbmgt.c
@@ -374,6 +374,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -583,7 +592,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 71
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 72
};
@@ -713,7 +722,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHBM:T:A:td:D:E:orupiP:1X";
+static const char OptionShort[] = "VhzqvLYW:c:lHBM:T:A:td:D:E:orupiP:1X";
static const struct option OptionLong[] =
{
@@ -730,6 +739,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -890,7 +900,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x074 t */ OPT_TEST,
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
- /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x077 */ 0,0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -945,7 +957,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -1108,6 +1121,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -1541,7 +1555,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"wbmgt [option]... command [option|parameter|file]...",
"Wiimms BMG Tool : Convert and patch raw and text BMG (message) files.",
0,
- 30,
+ 31,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wbmgt.h b/project/src/ui/ui-wbmgt.h
index 06e69a2..0267dd9 100644
--- a/project/src/ui/ui-wbmgt.h
+++ b/project/src/ui/ui-wbmgt.h
@@ -104,6 +104,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -132,7 +133,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 71
+ OPT__N_TOTAL // == 72
} enumOptions;
@@ -395,6 +396,7 @@ typedef enum enumGetOpt
GO_TEST = 't',
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -454,7 +456,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wbmgt;
diff --git a/project/src/ui/ui-wctct.c b/project/src/ui/ui-wctct.c
index 2b6b334..aba47a7 100644
--- a/project/src/ui/ui-wctct.c
+++ b/project/src/ui/ui-wctct.c
@@ -474,6 +474,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -715,12 +724,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" separated list of slots (A), slot ranges (A:B) or keywords is"
" expected. If preceded by a minus sign, the slots are disabled. The"
" keywords are: TRACKS (slots 0:0x1f), ARENAS (0x20:0x29) and SPECIAL"
- " (0x36:0x3a). CTCODE is an abbreviation for ARENAS,SPECIAL.\n"
+ " (0x36:0x3a). CTCODE is a short cut for ARENAS,SPECIAL.\n"
" The default is to enable slot ranges 0x00:0x1f, 0x2a:0x35,"
" 0x3b:0x41 and 0x44:0xfe."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 91
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 92
};
@@ -910,7 +919,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHB1XPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhzqvLYW:c:lHB1XPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -927,6 +936,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -1116,7 +1126,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x074 t */ OPT_TEST,
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
- /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x077 */ 0,0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -1189,7 +1201,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -1352,6 +1365,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -1772,7 +1786,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms CT-CODE Tool : Manage the CT-CODE extension. BRRES, TEX0,"
" CT-CODE, CT-TEXT and LE-BIN files are accepted as input.",
0,
- 33,
+ 34,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wctct.h b/project/src/ui/ui-wctct.h
index 70257de..6645493 100644
--- a/project/src/ui/ui-wctct.h
+++ b/project/src/ui/ui-wctct.h
@@ -119,6 +119,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -152,7 +153,7 @@ typedef enum enumOptions
OPT_CT_LOG,
OPT_ALLOW_SLOTS,
- OPT__N_TOTAL // == 91
+ OPT__N_TOTAL // == 92
} enumOptions;
@@ -463,6 +464,7 @@ typedef enum enumGetOpt
GO_TEST = 't',
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -541,7 +543,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wctct;
diff --git a/project/src/ui/ui-wimgt.c b/project/src/ui/ui-wimgt.c
index 9d61c4e..901f399 100644
--- a/project/src/ui/ui-wimgt.c
+++ b/project/src/ui/ui-wimgt.c
@@ -340,6 +340,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -537,7 +546,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 64
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 65
};
@@ -657,7 +666,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHBM:T:A:td:D:E:orupiaP:x:";
+static const char OptionShort[] = "VhzqvLYW:c:lHBM:T:A:td:D:E:orupiaP:x:";
static const struct option OptionLong[] =
{
@@ -674,6 +683,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -820,7 +830,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x076 v */ OPT_VERBOSE,
/* 0x077 */ 0,
/* 0x078 x */ OPT_TRANSFORM,
- /* 0x079 */ 0,0,0,0, 0,0,0,
+ /* 0x079 */ 0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -868,7 +880,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -978,6 +991,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -1307,7 +1321,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms Image Tool : Extract and convert graphic images. The file"
" formats TPL, TEX, BTI, BREFT and PNG are supported.",
0,
- 27,
+ 28,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wimgt.h b/project/src/ui/ui-wimgt.h
index 9703127..9051fa6 100644
--- a/project/src/ui/ui-wimgt.h
+++ b/project/src/ui/ui-wimgt.h
@@ -98,6 +98,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -125,7 +126,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 64
+ OPT__N_TOTAL // == 65
} enumOptions;
@@ -320,6 +321,7 @@ typedef enum enumGetOpt
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
GO_TRANSFORM = 'x',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -372,7 +374,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wimgt;
diff --git a/project/src/ui/ui-wkclt.c b/project/src/ui/ui-wkclt.c
index 3981df6..81cbacb 100644
--- a/project/src/ui/ui-wkclt.c
+++ b/project/src/ui/ui-wkclt.c
@@ -474,6 +474,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -722,7 +731,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 84
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 85
};
@@ -994,7 +1003,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhzqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -1011,6 +1020,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -1173,7 +1183,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x074 t */ OPT_TEST,
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
- /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x077 */ 0,0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -1241,7 +1253,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -1464,6 +1477,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -2278,7 +2292,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms KCL Tool : Analyze, modify, export and create KCL and OBJ"
" files.",
0,
- 31,
+ 32,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wkclt.h b/project/src/ui/ui-wkclt.h
index 3f8a2e9..f467063 100644
--- a/project/src/ui/ui-wkclt.h
+++ b/project/src/ui/ui-wkclt.h
@@ -113,6 +113,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -145,7 +146,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 84
+ OPT__N_TOTAL // == 85
} enumOptions;
@@ -473,6 +474,7 @@ typedef enum enumGetOpt
GO_TEST = 't',
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -546,7 +548,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wkclt;
diff --git a/project/src/ui/ui-wkmpt.c b/project/src/ui/ui-wkmpt.c
index f04bd3c..fc470b8 100644
--- a/project/src/ui/ui-wkmpt.c
+++ b/project/src/ui/ui-wkmpt.c
@@ -566,6 +566,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -926,7 +935,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 102
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 103
};
@@ -1211,7 +1220,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:w:lHBXPGNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhzqvLYW:c:w:lHBXPGNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -1228,6 +1237,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -1425,7 +1435,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
/* 0x077 w */ OPT_DRAW,
- /* 0x078 */ 0,0,0,0, 0,0,0,0,
+ /* 0x078 */ 0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -1507,7 +1519,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -1718,6 +1731,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -2341,7 +2355,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms KMP Tool : Analyze, modify, export and create (compile) KMP"
" files.",
0,
- 40,
+ 41,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wkmpt.h b/project/src/ui/ui-wkmpt.h
index d0ac366..8095fce 100644
--- a/project/src/ui/ui-wkmpt.h
+++ b/project/src/ui/ui-wkmpt.h
@@ -121,6 +121,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -163,7 +164,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 102
+ OPT__N_TOTAL // == 103
} enumOptions;
@@ -491,6 +492,7 @@ typedef enum enumGetOpt
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
GO_DRAW = 'w',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -579,7 +581,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wkmpt;
diff --git a/project/src/ui/ui-wlect.c b/project/src/ui/ui-wlect.c
index c265634..912e2e1 100644
--- a/project/src/ui/ui-wlect.c
+++ b/project/src/ui/ui-wlect.c
@@ -468,6 +468,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -712,7 +721,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 93
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 94
};
@@ -886,7 +895,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHBXPM:tCd:D:E:orupi";
+static const char OptionShort[] = "VhzqvLYW:c:lHBXPM:tCd:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -903,6 +912,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -1094,7 +1104,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x074 t */ OPT_TEST,
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
- /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x077 */ 0,0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -1171,7 +1183,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -1376,6 +1389,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -1969,7 +1983,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"wlect [option]... command [option|parameter|file]...",
"Wiimms LE-CODE Tool : Manage the LE-CODE and LEX extensions.",
0,
- 37,
+ 38,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wlect.h b/project/src/ui/ui-wlect.h
index dfad948..55aeacb 100644
--- a/project/src/ui/ui-wlect.h
+++ b/project/src/ui/ui-wlect.h
@@ -119,6 +119,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -154,7 +155,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 93
+ OPT__N_TOTAL // == 94
} enumOptions;
@@ -462,6 +463,7 @@ typedef enum enumGetOpt
GO_TEST = 't',
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -545,7 +547,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wlect;
diff --git a/project/src/ui/ui-wmdlt.c b/project/src/ui/ui-wmdlt.c
index a3e2c36..663346c 100644
--- a/project/src/ui/ui-wmdlt.c
+++ b/project/src/ui/ui-wmdlt.c
@@ -396,6 +396,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -614,7 +623,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 73
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 74
};
@@ -772,7 +781,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhzqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -789,6 +798,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -930,7 +940,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x074 t */ OPT_TEST,
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
- /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x077 */ 0,0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -988,7 +1000,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -1145,6 +1158,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -1565,7 +1579,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"wmdlt [option]... command [option|parameter|file]...",
"Wiimms MDL Tool : Decode raw MDL and encode text MDL files.",
0,
- 29,
+ 30,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wmdlt.h b/project/src/ui/ui-wmdlt.h
index e6d46bd..5e7f493 100644
--- a/project/src/ui/ui-wmdlt.h
+++ b/project/src/ui/ui-wmdlt.h
@@ -105,6 +105,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -134,7 +135,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 73
+ OPT__N_TOTAL // == 74
} enumOptions;
@@ -385,6 +386,7 @@ typedef enum enumGetOpt
GO_TEST = 't',
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -447,7 +449,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wmdlt;
diff --git a/project/src/ui/ui-wpatt.c b/project/src/ui/ui-wpatt.c
index 07ce14d..79b02eb 100644
--- a/project/src/ui/ui-wpatt.c
+++ b/project/src/ui/ui-wpatt.c
@@ -238,6 +238,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -445,7 +454,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 57
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 58
};
@@ -569,7 +578,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhzqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -586,6 +595,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -709,7 +719,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x074 t */ OPT_TEST,
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
- /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x077 */ 0,0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -752,7 +764,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -867,6 +880,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -1097,7 +1111,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"wpatt [option]... command [option|parameter|file]...",
"Wiimms PAT Tool : Decode raw PAT and encode text PAT files.",
0,
- 28,
+ 29,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wpatt.h b/project/src/ui/ui-wpatt.h
index ad0847b..fe05b39 100644
--- a/project/src/ui/ui-wpatt.h
+++ b/project/src/ui/ui-wpatt.h
@@ -90,6 +90,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -118,7 +119,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 57
+ OPT__N_TOTAL // == 58
} enumOptions;
@@ -302,6 +303,7 @@ typedef enum enumGetOpt
GO_TEST = 't',
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -348,7 +350,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wpatt;
diff --git a/project/src/ui/ui-wstrt.c b/project/src/ui/ui-wstrt.c
index d7a4c55..54ac589 100644
--- a/project/src/ui/ui-wstrt.c
+++ b/project/src/ui/ui-wstrt.c
@@ -593,6 +593,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -949,7 +958,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" directory."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 127
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 128
};
@@ -1160,7 +1169,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "Vh@qvLYW:c:lBHT:A:R:td:D:E:orupi0U";
+static const char OptionShort[] = "Vh@zqvLYW:c:lBHT:A:R:td:D:E:orupi0U";
static const struct option OptionLong[] =
{
@@ -1178,6 +1187,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -1404,7 +1414,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x074 t */ OPT_TEST,
/* 0x075 u */ OPT_UPDATE,
/* 0x076 v */ OPT_VERBOSE,
- /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x077 */ 0,0,0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -1511,7 +1523,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
- /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x150 */ 0,0,0,0,
};
//
@@ -1711,6 +1724,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -2170,7 +2184,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms StaticR Tool : Manipulate the 'main.dol' and 'StaticR.rel'"
" files of Mario Kart Wii.",
0,
- 44,
+ 45,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wstrt.h b/project/src/ui/ui-wstrt.h
index 4ed5b83..0fa2cfd 100644
--- a/project/src/ui/ui-wstrt.h
+++ b/project/src/ui/ui-wstrt.h
@@ -141,6 +141,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -188,7 +189,7 @@ typedef enum enumOptions
OPT_CLEAN_DOL,
OPT_CT_DIR,
- OPT__N_TOTAL // == 127
+ OPT__N_TOTAL // == 128
} enumOptions;
@@ -518,6 +519,7 @@ typedef enum enumGetOpt
GO_TEST = 't',
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -633,7 +635,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wstrt;
diff --git a/project/src/ui/ui-wszst.c b/project/src/ui/ui-wszst.c
index 06ed088..9ea4297 100644
--- a/project/src/ui/ui-wszst.c
+++ b/project/src/ui/ui-wszst.c
@@ -502,12 +502,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_CUP_ICONS, false, false, false, false, false, 0, "cup-icons",
"image",
- "Load given image, convert it to TPL.CMPR and add the result as"
+ "Load given image, convert it to TPLx.CMPR and add the result as"
" sub-files 'button/timg/ct_icons.tpl' and as"
" 'control/timg/ct_icons.tpl' to files 'Channel.szs', 'MenuMulti.szs'"
" and 'MenuSingle.szs'. Both sub-files are always linked, so that"
" storage space is saved. The usual size for each single icon is"
- " 128x128. This can be changed by LPAR setting CUP-ICON-SIZE."
+ " 128x128."
},
{ OPT_NO_COPY, false, false, false, false, false, 0, "no-copy",
@@ -757,10 +757,10 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_FMODES, false, true, false, false, false, 0, "fmodes",
"list",
- "--fmodes is an abbreviation for --feature-modes and declares an"
- " output filter. LIST is a keyword list. The keywords are: SECTION,"
- " VISUAL, GAMEPLAY, BATTLE, RACING, TIMETRIAL, OFFLINE and ONLINE. A"
- " feature is only printed if *all* set keywords match.\n"
+ "--fmodes is a short cut for --feature-modes and declares an output"
+ " filter. LIST is a keyword list. The keywords are: SECTION, VISUAL,"
+ " GAMEPLAY, BATTLE, RACING, TIMETRIAL, OFFLINE and ONLINE. A feature"
+ " is only printed if *all* set keywords match.\n"
" Each keyword can also be used with a minus as prefix to define a"
" second condition. In this case the feature is excluded from printing"
" if *any* set keywords match."
@@ -1087,8 +1087,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" the best compression mode with testing the first N modes of 9, 1, 8,"
" 2, 5. TRY2 is used for normalizing. For non bz-compression, TRY* are"
" the same as BEST.\n"
+ " Do not use compression level >6 for LZMA if the file is intended"
+ " for Mario Kart Wii, as too much memory is required for decoding.\n"
+ "\n"
" Option --norm takes precedence over --compr and sets the"
- " compression level to TRY2 (BEST).\n"
+ " compression level for bzip2 to TRY2 (BEST) and for LZMA to 6.\n"
" For more modes and details type 'wszst -C list'. To force colorized"
" output type 'wszst -C clist'."
},
@@ -1302,6 +1305,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Forbid the internal usage of a pager."
},
+ { OPT_ZERO, false, false, false, false, false, 'z', "zero",
+ 0,
+ "This option affects the exit status of the programs. Instead of an"
+ " exit status, the value 0 is returned for OK. This happens for"
+ " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv,"
+ " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT"
+ " (112) is never replaced."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple use is possible."
@@ -1862,9 +1874,22 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"If creating a compressed file, create a BZIP2 compatible file."
},
+ { OPT_CYBZ, false, false, false, false, false, 0, "cybz",
+ 0,
+ "If creating a compressed file, force YBZ compression (YAZ0 file"
+ " header, but BZIP2 compression), but don't change the payload."
+ },
+
+ { OPT_YBZ, false, false, false, false, false, 0, "ybz",
+ 0,
+ "If creating a compressed file, force archive format U8 with YBZ"
+ " compression (YAZ0 file header, but BZIP2 compression). Therefore it"
+ " is a short cut for '--u8 --cybz'."
+ },
+
{ OPT_LZ, false, false, false, false, false, 0, "lz",
0,
- "If creating a compressed file, force BZ compression (a YAZ0 like file"
+ "If creating a compressed file, force LZ compression (a YAZ0 like file"
" format with LZMA compression)."
},
@@ -1873,6 +1898,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"If creating a compressed file, create a LZMA compatible file."
},
+ { OPT_CYLZ, false, false, false, false, false, 0, "cylz",
+ 0,
+ "If creating a compressed file, force YLZ compression (YAZ0 file"
+ " header, but LZMA compression), but don't change the payload."
+ },
+
+ { OPT_YLZ, false, false, false, false, false, 0, "ylz",
+ 0,
+ "If creating a compressed file, force archive format U8 with YLZ"
+ " compression (YAZ0 file header, but LZMA compression). Therefore it"
+ " is a short cut for '--u8 --cylz'."
+ },
+
{ OPT_SH, false, false, false, false, true, 0, "sh",
0,
"Dump info using SH syntax. Use '--var name' as prefix."
@@ -1951,7 +1989,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" helper option."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 238
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 243
};
@@ -2586,7 +2624,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLYW:c:lHB1XPS:M:T:A:x:ts:d:D:E:orupiNC:nRea";
+static const char OptionShort[] = "VhzqvLYW:c:lHB1XPS:M:T:A:x:ts:d:D:E:orupiNC:nRea";
static const struct option OptionLong[] =
{
@@ -2603,6 +2641,7 @@ static const struct option OptionLong[] =
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
{ "no-pager", 0, 0, GO_NO_PAGER },
{ "nopager", 0, 0, GO_NO_PAGER },
+ { "zero", 0, 0, 'z' },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
@@ -2844,8 +2883,12 @@ static const struct option OptionLong[] =
{ "bz", 0, 0, GO_BZ },
{ "bzip2", 0, 0, GO_BZIP2 },
{ "bz2", 0, 0, GO_BZIP2 },
+ { "cybz", 0, 0, GO_CYBZ },
+ { "ybz", 0, 0, GO_YBZ },
{ "lz", 0, 0, GO_LZ },
{ "lzma", 0, 0, GO_LZMA },
+ { "cylz", 0, 0, GO_CYLZ },
+ { "ylz", 0, 0, GO_YLZ },
{ "sh", 0, 0, GO_SH },
{ "bash", 0, 0, GO_BASH },
{ "json", 0, 0, GO_JSON },
@@ -3051,7 +3094,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x076 v */ OPT_VERBOSE,
/* 0x077 */ 0,
/* 0x078 x */ OPT_TRANSFORM,
- /* 0x079 */ 0,0,0,0, 0,0,0,
+ /* 0x079 */ 0,
+ /* 0x07a z */ OPT_ZERO,
+ /* 0x07b */ 0,0,0,0, 0,
/* 0x080 */ OPT_XHELP,
/* 0x081 */ OPT_CONFIG,
/* 0x082 */ OPT_YDEBUG,
@@ -3188,72 +3233,77 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x105 */ OPT_XYZ,
/* 0x106 */ OPT_BZ,
/* 0x107 */ OPT_BZIP2,
- /* 0x108 */ OPT_LZ,
- /* 0x109 */ OPT_LZMA,
- /* 0x10a */ OPT_SH,
- /* 0x10b */ OPT_BASH,
- /* 0x10c */ OPT_JSON,
- /* 0x10d */ OPT_PHP,
- /* 0x10e */ OPT_MAKEDOC,
- /* 0x10f */ OPT_VAR,
- /* 0x110 */ OPT_ARRAY,
- /* 0x111 */ OPT_AVAR,
- /* 0x112 */ OPT_CASE,
- /* 0x113 */ OPT_FMODES,
- /* 0x114 */ OPT_INSTALL,
- /* 0x115 */ OPT_ANALYZE,
- /* 0x116 */ OPT_ANALYZE_MODE,
- /* 0x117 */ OPT_OLD,
- /* 0x118 */ OPT_STD,
- /* 0x119 */ OPT_NEW,
- /* 0x11a */ OPT_EXTRACT,
- /* 0x11b */ OPT_ID_LIST,
- /* 0x11c */ OPT_REFERENCE,
- /* 0x11d */ OPT_NUMBER,
- /* 0x11e */ OPT_REMOVE_SRC,
- /* 0x11f */ OPT_IGNORE_SETUP,
- /* 0x120 */ OPT_PURGE,
- /* 0x121 */ OPT_ALIGN_U8,
- /* 0x122 */ OPT_ALIGN_LTA,
- /* 0x123 */ OPT_ALIGN_PACK,
- /* 0x124 */ OPT_ALIGN_BRRES,
- /* 0x125 */ OPT_ALIGN_BREFF,
- /* 0x126 */ OPT_ALIGN_BREFT,
- /* 0x127 */ OPT_ALIGN,
- /* 0x128 */ OPT_ENCODE_ALL,
- /* 0x129 */ OPT_ENCODE_IMG,
- /* 0x12a */ OPT_NO_ENCODE,
- /* 0x12b */ OPT_NO_RECURSE,
- /* 0x12c */ OPT_AUTO_ADD,
- /* 0x12d */ OPT_NO_ECHO,
- /* 0x12e */ OPT_PT_DIR,
- /* 0x12f */ OPT_RM_AIPARAM,
- /* 0x130 */ OPT_U8,
- /* 0x131 */ OPT_SZS,
- /* 0x132 */ OPT_WU8,
- /* 0x133 */ OPT_XWU8,
- /* 0x134 */ OPT_WBZ,
- /* 0x135 */ OPT_WLZ,
- /* 0x136 */ OPT_LFL,
- /* 0x137 */ OPT_PACK,
- /* 0x138 */ OPT_BRRES,
- /* 0x139 */ OPT_BREFF,
- /* 0x13a */ OPT_BREFT,
- /* 0x13b */ OPT_NO_COMPRESS,
- /* 0x13c */ OPT_FAST,
- /* 0x13d */ OPT_LINKS,
- /* 0x13e */ OPT_BASEDIR,
- /* 0x13f */ OPT_DECODE,
- /* 0x140 */ OPT_MIPMAPS,
- /* 0x141 */ OPT_NO_MIPMAPS,
- /* 0x142 */ OPT_N_MIPMAPS,
- /* 0x143 */ OPT_MAX_MIPMAPS,
- /* 0x144 */ OPT_MIPMAP_SIZE,
- /* 0x145 */ OPT_FAST_MIPMAPS,
- /* 0x146 */ OPT_CMPR_DEFAULT,
- /* 0x147 */ OPT_CUT,
- /* 0x148 */ OPT_RAW,
- /* 0x149 */ OPT_SECTIONS,
+ /* 0x108 */ OPT_CYBZ,
+ /* 0x109 */ OPT_YBZ,
+ /* 0x10a */ OPT_LZ,
+ /* 0x10b */ OPT_LZMA,
+ /* 0x10c */ OPT_CYLZ,
+ /* 0x10d */ OPT_YLZ,
+ /* 0x10e */ OPT_SH,
+ /* 0x10f */ OPT_BASH,
+ /* 0x110 */ OPT_JSON,
+ /* 0x111 */ OPT_PHP,
+ /* 0x112 */ OPT_MAKEDOC,
+ /* 0x113 */ OPT_VAR,
+ /* 0x114 */ OPT_ARRAY,
+ /* 0x115 */ OPT_AVAR,
+ /* 0x116 */ OPT_CASE,
+ /* 0x117 */ OPT_FMODES,
+ /* 0x118 */ OPT_INSTALL,
+ /* 0x119 */ OPT_ANALYZE,
+ /* 0x11a */ OPT_ANALYZE_MODE,
+ /* 0x11b */ OPT_OLD,
+ /* 0x11c */ OPT_STD,
+ /* 0x11d */ OPT_NEW,
+ /* 0x11e */ OPT_EXTRACT,
+ /* 0x11f */ OPT_ID_LIST,
+ /* 0x120 */ OPT_REFERENCE,
+ /* 0x121 */ OPT_NUMBER,
+ /* 0x122 */ OPT_REMOVE_SRC,
+ /* 0x123 */ OPT_IGNORE_SETUP,
+ /* 0x124 */ OPT_PURGE,
+ /* 0x125 */ OPT_ALIGN_U8,
+ /* 0x126 */ OPT_ALIGN_LTA,
+ /* 0x127 */ OPT_ALIGN_PACK,
+ /* 0x128 */ OPT_ALIGN_BRRES,
+ /* 0x129 */ OPT_ALIGN_BREFF,
+ /* 0x12a */ OPT_ALIGN_BREFT,
+ /* 0x12b */ OPT_ALIGN,
+ /* 0x12c */ OPT_ENCODE_ALL,
+ /* 0x12d */ OPT_ENCODE_IMG,
+ /* 0x12e */ OPT_NO_ENCODE,
+ /* 0x12f */ OPT_NO_RECURSE,
+ /* 0x130 */ OPT_AUTO_ADD,
+ /* 0x131 */ OPT_NO_ECHO,
+ /* 0x132 */ OPT_PT_DIR,
+ /* 0x133 */ OPT_RM_AIPARAM,
+ /* 0x134 */ OPT_U8,
+ /* 0x135 */ OPT_SZS,
+ /* 0x136 */ OPT_WU8,
+ /* 0x137 */ OPT_XWU8,
+ /* 0x138 */ OPT_WBZ,
+ /* 0x139 */ OPT_WLZ,
+ /* 0x13a */ OPT_LFL,
+ /* 0x13b */ OPT_PACK,
+ /* 0x13c */ OPT_BRRES,
+ /* 0x13d */ OPT_BREFF,
+ /* 0x13e */ OPT_BREFT,
+ /* 0x13f */ OPT_NO_COMPRESS,
+ /* 0x140 */ OPT_FAST,
+ /* 0x141 */ OPT_LINKS,
+ /* 0x142 */ OPT_BASEDIR,
+ /* 0x143 */ OPT_DECODE,
+ /* 0x144 */ OPT_MIPMAPS,
+ /* 0x145 */ OPT_NO_MIPMAPS,
+ /* 0x146 */ OPT_N_MIPMAPS,
+ /* 0x147 */ OPT_MAX_MIPMAPS,
+ /* 0x148 */ OPT_MIPMAP_SIZE,
+ /* 0x149 */ OPT_FAST_MIPMAPS,
+ /* 0x14a */ OPT_CMPR_DEFAULT,
+ /* 0x14b */ OPT_CUT,
+ /* 0x14c */ OPT_RAW,
+ /* 0x14d */ OPT_SECTIONS,
+ /* 0x14e */ 0,0,0,0, 0,0,
};
//
@@ -4016,6 +4066,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
OptionInfo + OPT_NO_PAGER,
+ OptionInfo + OPT_ZERO,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
@@ -4079,8 +4130,12 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_XYZ,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_NONE, // separator
@@ -4430,8 +4485,12 @@ static const InfoOption_t * option_tab_cmd_LIST[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -4506,8 +4565,12 @@ static const InfoOption_t * option_tab_cmd_LIST_L[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -4582,8 +4645,12 @@ static const InfoOption_t * option_tab_cmd_LIST_LL[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -4658,8 +4725,12 @@ static const InfoOption_t * option_tab_cmd_LIST_LLL[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -4734,8 +4805,12 @@ static const InfoOption_t * option_tab_cmd_LIST_A[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -4810,8 +4885,12 @@ static const InfoOption_t * option_tab_cmd_LIST_LA[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -4893,8 +4972,12 @@ static const InfoOption_t * option_tab_cmd_ILIST[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -4966,8 +5049,12 @@ static const InfoOption_t * option_tab_cmd_ILIST_L[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5039,8 +5126,12 @@ static const InfoOption_t * option_tab_cmd_ILIST_LL[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5112,8 +5203,12 @@ static const InfoOption_t * option_tab_cmd_ILIST_A[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5185,8 +5280,12 @@ static const InfoOption_t * option_tab_cmd_ILIST_LA[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5263,8 +5362,12 @@ static const InfoOption_t * option_tab_cmd_MEMORY[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5341,8 +5444,12 @@ static const InfoOption_t * option_tab_cmd_MEMORY_A[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5409,8 +5516,12 @@ static const InfoOption_t * option_tab_cmd_DUMP[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5481,8 +5592,12 @@ static const InfoOption_t * option_tab_cmd_SHA1[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5675,8 +5790,12 @@ static const InfoOption_t * option_tab_cmd_DISTRIBUTION[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5764,8 +5883,12 @@ static const InfoOption_t * option_tab_cmd_CHECK[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -5887,8 +6010,12 @@ static const InfoOption_t * option_tab_cmd_SLOTS[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -6052,8 +6179,12 @@ static const InfoOption_t * option_tab_cmd_NORMALIZE[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -6163,8 +6294,12 @@ static const InfoOption_t * option_tab_cmd_PATCH[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -6275,8 +6410,12 @@ static const InfoOption_t * option_tab_cmd_COPY[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -6388,8 +6527,12 @@ static const InfoOption_t * option_tab_cmd_DUPLICATE[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -6560,8 +6703,12 @@ static const InfoOption_t * option_tab_cmd_COMPRESS[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -6868,8 +7015,12 @@ static const InfoOption_t * option_tab_cmd_CREATE[] =
OptionInfo + OPT_YAZ1,
OptionInfo + OPT_BZ,
OptionInfo + OPT_BZIP2,
+ OptionInfo + OPT_CYBZ,
+ OptionInfo + OPT_YBZ,
OptionInfo + OPT_LZ,
OptionInfo + OPT_LZMA,
+ OptionInfo + OPT_CYLZ,
+ OptionInfo + OPT_YLZ,
OptionInfo + OPT_SZS,
OptionInfo + OPT_WBZ,
OptionInfo + OPT_WLZ,
@@ -7875,7 +8026,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" SZS, U8, PACK, BRRES, BREFF and BREFT archives. Additonally, RARC"
" archive can be extracted. It is also a wrapper to all other tools.",
0,
- 80,
+ 85,
option_tab_tool,
0
},
@@ -8409,7 +8560,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" characters are parsed, see https://szs.wiimm.de/doc/wildcards for"
" details.",
0,
- 58,
+ 62,
option_tab_cmd_LIST,
option_allowed_cmd_LIST
},
@@ -8425,7 +8576,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" 'LIST --long'. Wildcards and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details.",
0,
- 58,
+ 62,
option_tab_cmd_LIST_L,
option_allowed_cmd_LIST_L
},
@@ -8441,7 +8592,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" short cuts for 'LIST --long --long'. Wildcards and pipe characters"
" are parsed, see https://szs.wiimm.de/doc/wildcards for details.",
0,
- 58,
+ 62,
option_tab_cmd_LIST_LL,
option_allowed_cmd_LIST_LL
},
@@ -8458,7 +8609,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details.",
0,
- 58,
+ 62,
option_tab_cmd_LIST_LLL,
option_allowed_cmd_LIST_LLL
},
@@ -8474,7 +8625,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" cuts for 'LIST --long --all --all'. Wildcards and pipe characters"
" are parsed, see https://szs.wiimm.de/doc/wildcards for details.",
0,
- 58,
+ 62,
option_tab_cmd_LIST_A,
option_allowed_cmd_LIST_A
},
@@ -8491,7 +8642,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details.",
0,
- 58,
+ 62,
option_tab_cmd_LIST_LA,
option_allowed_cmd_LIST_LA
},
@@ -8527,7 +8678,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" does it) and listed. Wildcards and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details.",
0,
- 55,
+ 59,
option_tab_cmd_ILIST,
option_allowed_cmd_ILIST
},
@@ -8542,7 +8693,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all image files with geometry data. 'ILIST-L' and 'ILL' are"
" short cuts for 'ILIST --long'.",
0,
- 55,
+ 59,
option_tab_cmd_ILIST_L,
option_allowed_cmd_ILIST_L
},
@@ -8557,7 +8708,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with advanced geometry data. 'ILIST-LL' and 'ILLL'"
" are short cuts for 'ILIST --long --long'.",
0,
- 55,
+ 59,
option_tab_cmd_ILIST_LL,
option_allowed_cmd_ILIST_LL
},
@@ -8572,7 +8723,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all image files. 'ILIST-A' and 'ILA' are short cuts"
" for 'ILIST --all'.",
0,
- 55,
+ 59,
option_tab_cmd_ILIST_A,
option_allowed_cmd_ILIST_A
},
@@ -8587,7 +8738,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all image files with geometry data. 'ILIST-LA' and"
" 'ILLA' are short cuts for 'ILIST --long --all'.",
0,
- 55,
+ 59,
option_tab_cmd_ILIST_LA,
option_allowed_cmd_ILIST_LA
},
@@ -8603,7 +8754,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" directories) are also supported. Wildcards and pipe characters are"
" parsed, see https://szs.wiimm.de/doc/wildcards for details.",
0,
- 57,
+ 61,
option_tab_cmd_MEMORY,
option_allowed_cmd_MEMORY
},
@@ -8618,7 +8769,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Dump recursive a memory map of each source file. 'MEMORY-A' and"
" 'MEMA' are short cuts for 'MEMORY --all --all'.",
0,
- 57,
+ 61,
option_tab_cmd_MEMORY_A,
option_allowed_cmd_MEMORY_A
},
@@ -8636,7 +8787,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" supported. Wildcards and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details.",
0,
- 51,
+ 55,
option_tab_cmd_DUMP,
option_allowed_cmd_DUMP
},
@@ -8653,7 +8804,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" characters are parsed, see https://szs.wiimm.de/doc/wildcards for"
" details.",
0,
- 59,
+ 63,
option_tab_cmd_SHA1,
option_allowed_cmd_SHA1
},
@@ -8755,7 +8906,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" See »welect DISTRIBUTION« for a new and alternative implementation"
" of this.",
0,
- 55,
+ 59,
option_tab_cmd_DISTRIBUTION,
option_allowed_cmd_DISTRIBUTION
},
@@ -8792,7 +8943,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" or WBZ file, or an U8 like directory. Wildcards and pipe characters"
" are parsed, see https://szs.wiimm.de/doc/wildcards for details.",
0,
- 107,
+ 111,
option_tab_cmd_CHECK,
option_allowed_cmd_CHECK
},
@@ -8811,7 +8962,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" arenas, the keyword ARENA is printed. Wildcards and pipe characters"
" are parsed, see https://szs.wiimm.de/doc/wildcards for details.",
0,
- 103,
+ 107,
option_tab_cmd_SLOTS,
option_allowed_cmd_SLOTS
},
@@ -8873,7 +9024,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" https://szs.wiimm.de/doc/wildcards for details.\n"
" 'wszst NORMALIZE' is the same as 'wszst PATCH --norm'.",
0,
- 89,
+ 93,
option_tab_cmd_NORMALIZE,
option_allowed_cmd_NORMALIZE
},
@@ -8892,7 +9043,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details.",
0,
- 91,
+ 95,
option_tab_cmd_PATCH,
option_allowed_cmd_PATCH
},
@@ -8916,7 +9067,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" https://szs.wiimm.de/doc/wildcards for details. Patching is also"
" possible and option --overwrite is set implicitly.",
0,
- 91,
+ 95,
option_tab_cmd_COPY,
option_allowed_cmd_COPY
},
@@ -8941,7 +9092,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Use command 'wkmpt GAMEMODES' to list all variants and to check them"
" beforehand.",
0,
- 92,
+ 96,
option_tab_cmd_DUPLICATE,
option_allowed_cmd_DUPLICATE
},
@@ -8977,7 +9128,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" destination is '%P/%N.szs'. Wildcards and pipe characters are"
" parsed, see https://szs.wiimm.de/doc/wildcards for details.",
0,
- 90,
+ 94,
option_tab_cmd_COMPRESS,
option_allowed_cmd_COMPRESS
},
@@ -9028,7 +9179,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Wildcards and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details.",
0,
- 113,
+ 117,
option_tab_cmd_CREATE,
option_allowed_cmd_CREATE
},
diff --git a/project/src/ui/ui-wszst.h b/project/src/ui/ui-wszst.h
index e8774b0..6200428 100644
--- a/project/src/ui/ui-wszst.h
+++ b/project/src/ui/ui-wszst.h
@@ -219,6 +219,7 @@ typedef enum enumOptions
OPT_WIDTH,
OPT_MAX_WIDTH,
OPT_NO_PAGER,
+ OPT_ZERO,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
@@ -283,8 +284,12 @@ typedef enum enumOptions
OPT_XYZ,
OPT_BZ,
OPT_BZIP2,
+ OPT_CYBZ,
+ OPT_YBZ,
OPT_LZ,
OPT_LZMA,
+ OPT_CYLZ,
+ OPT_YLZ,
OPT_SH,
OPT_BASH,
OPT_JSON,
@@ -299,7 +304,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 238
+ OPT__N_TOTAL // == 243
} enumOptions;
@@ -1240,6 +1245,7 @@ typedef enum enumGetOpt
GO_UPDATE = 'u',
GO_VERBOSE = 'v',
GO_TRANSFORM = 'x',
+ GO_ZERO = 'z',
GO_XHELP = 0x80,
GO_CONFIG,
@@ -1377,8 +1383,12 @@ typedef enum enumGetOpt
GO_XYZ,
GO_BZ,
GO_BZIP2,
+ GO_CYBZ,
+ GO_YBZ,
GO_LZ,
GO_LZMA,
+ GO_CYLZ,
+ GO_YLZ,
GO_SH,
GO_BASH,
GO_JSON,
@@ -1457,7 +1467,7 @@ typedef enum enumGetOpt
//extern const struct option OptionLong[];
//extern u8 OptionUsed[OPT__N_TOTAL+1];
//extern const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE];
-//UIOPT_INDEX_SIZE := 0x14a = 330
+//UIOPT_INDEX_SIZE := 0x154 = 340
//extern const InfoCommand_t CommandInfo[CMD__N+1];
extern const InfoUI_t InfoUI_wszst;
diff --git a/project/src/ui/ui.def b/project/src/ui/ui.def
index eced772..a3b76f7 100644
--- a/project/src/ui/ui.def
+++ b/project/src/ui/ui.def
@@ -621,6 +621,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -1383,12 +1391,12 @@
#:def_opt( "CUP_ICONS", "cup-icons|cupicons", "CP", \
"image", \
- "Load given image, convert it to TPL.CMPR and add the result as" \
+ "Load given image, convert it to TPLx.CMPR and add the result as" \
" sub-files 'button/timg/ct_icons.tpl' and as" \
" 'control/timg/ct_icons.tpl' to files 'Channel.szs', 'MenuMulti.szs'" \
" and 'MenuSingle.szs'. Both sub-files are always linked, so that" \
" storage space is saved. The usual size for each single icon is" \
- " 128x128. This can be changed by LPAR setting CUP-ICON-SIZE." )
+ " 128x128." )
#:def_opt( "NO_COPY", "no-copy|nocopy", "C", \
"", \
@@ -1714,15 +1722,37 @@
"", \
"If creating a compressed file, create a BZIP2 compatible file." )
+#:def_opt( "CYBZ", "cybz", "G", \
+ "", \
+ "If creating a compressed file, force YBZ compression (YAZ0 file" \
+ " header, but BZIP2 compression), but don't change the payload." )
+
+#:def_opt( "YBZ", "ybz", "G", \
+ "", \
+ "If creating a compressed file, force archive format U8 with YBZ" \
+ " compression (YAZ0 file header, but BZIP2 compression). Therefore it" \
+ " is a short cut for {--u8 --cybz}." )
+
#:def_opt( "LZ", "lz", "G", \
"", \
- "If creating a compressed file, force BZ compression (a YAZ0 like file" \
+ "If creating a compressed file, force LZ compression (a YAZ0 like file" \
" format with LZMA compression)." )
#:def_opt( "LZMA", "lzma", "G", \
"", \
"If creating a compressed file, create a LZMA compatible file." )
+#:def_opt( "CYLZ", "cylz", "G", \
+ "", \
+ "If creating a compressed file, force YLZ compression (YAZ0 file" \
+ " header, but LZMA compression), but don't change the payload." )
+
+#:def_opt( "YLZ", "ylz", "G", \
+ "", \
+ "If creating a compressed file, force archive format U8 with YLZ" \
+ " compression (YAZ0 file header, but LZMA compression). Therefore it" \
+ " is a short cut for {--u8 --cylz}." )
+
#:def_opt( "SH", "sh", "G", \
"", \
"Dump info using SH syntax. Use {--var name} as prefix." )
@@ -2023,8 +2053,11 @@
" find the best compression mode with testing the first N modes of 9," \
" 1, 8, 2, 5. @TRY2@ is used for normalizing. For non bz-compression," \
" @TRY*@ are the same as @BEST@.\n" \
+ " Do not use compression level >6 for LZMA if the file is intended" \
+ " for Mario Kart Wii, as too much memory is required for decoding.\n" \
+ "\n" \
" Option {--norm} takes precedence over {--compr} and sets the" \
- " compression level to @TRY2@ (@BEST@).\n" \
+ " compression level for bzip2 to @TRY2@ (@BEST@) and for LZMA to 6.\n" \
" For more modes and details type {wszst -C list}. To force colorized" \
" output type {wszst -C clist}." )
@@ -2723,6 +2756,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST", "LZ", \
"", \
"" )
@@ -2731,6 +2772,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST", "SZS", \
"", \
"" )
@@ -2956,6 +3005,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_L", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_L", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_L", "LZ", \
"", \
"" )
@@ -2964,6 +3021,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_L", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_L", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_L", "SZS", \
"", \
"" )
@@ -3189,6 +3254,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LL", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_LL", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LL", "LZ", \
"", \
"" )
@@ -3197,6 +3270,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LL", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_LL", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LL", "SZS", \
"", \
"" )
@@ -3422,6 +3503,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LLL", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_LLL", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LLL", "LZ", \
"", \
"" )
@@ -3430,6 +3519,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LLL", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_LLL", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LLL", "SZS", \
"", \
"" )
@@ -3655,6 +3752,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_A", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_A", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_A", "LZ", \
"", \
"" )
@@ -3663,6 +3768,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_A", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_A", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_A", "SZS", \
"", \
"" )
@@ -3888,6 +4001,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LA", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_LA", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LA", "LZ", \
"", \
"" )
@@ -3896,6 +4017,14 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LA", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "LIST_LA", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LA", "SZS", \
"", \
"" )
@@ -4132,6 +4261,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST", "LZ", \
"", \
"" )
@@ -4140,6 +4277,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST", "SZS", \
"", \
"" )
@@ -4353,6 +4498,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_L", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_L", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_L", "LZ", \
"", \
"" )
@@ -4361,6 +4514,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_L", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_L", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_L", "SZS", \
"", \
"" )
@@ -4574,6 +4735,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LL", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_LL", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LL", "LZ", \
"", \
"" )
@@ -4582,6 +4751,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LL", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_LL", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LL", "SZS", \
"", \
"" )
@@ -4795,6 +4972,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_A", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_A", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_A", "LZ", \
"", \
"" )
@@ -4803,6 +4988,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_A", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_A", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_A", "SZS", \
"", \
"" )
@@ -5016,6 +5209,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LA", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_LA", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LA", "LZ", \
"", \
"" )
@@ -5024,6 +5225,14 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LA", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ILIST_LA", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LA", "SZS", \
"", \
"" )
@@ -5245,6 +5454,14 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "MEMORY", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY", "LZ", \
"", \
"" )
@@ -5253,6 +5470,14 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "MEMORY", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY", "SZS", \
"", \
"" )
@@ -5474,6 +5699,14 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY_A", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "MEMORY_A", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY_A", "LZ", \
"", \
"" )
@@ -5482,6 +5715,14 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY_A", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "MEMORY_A", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY_A", "SZS", \
"", \
"" )
@@ -5674,6 +5915,14 @@
"", \
"" )
+#:def_cmd_opt( "DUMP", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DUMP", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DUMP", "LZ", \
"", \
"" )
@@ -5682,6 +5931,14 @@
"", \
"" )
+#:def_cmd_opt( "DUMP", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DUMP", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DUMP", "SZS", \
"", \
"" )
@@ -5891,6 +6148,14 @@
"", \
"" )
+#:def_cmd_opt( "SHA1", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SHA1", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SHA1", "LZ", \
"", \
"" )
@@ -5899,6 +6164,14 @@
"", \
"" )
+#:def_cmd_opt( "SHA1", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SHA1", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SHA1", "SZS", \
"", \
"" )
@@ -6395,6 +6668,14 @@
"", \
"" )
+#:def_cmd_opt( "DISTRIBUTION", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DISTRIBUTION", "LZ", \
"", \
"" )
@@ -6403,6 +6684,14 @@
"", \
"" )
+#:def_cmd_opt( "DISTRIBUTION", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DISTRIBUTION", "SZS", \
"", \
"" )
@@ -6663,6 +6952,14 @@
"", \
"" )
+#:def_cmd_opt( "CHECK", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "CHECK", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CHECK", "LZ", \
"", \
"" )
@@ -6671,6 +6968,14 @@
"", \
"" )
+#:def_cmd_opt( "CHECK", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "CHECK", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CHECK", "SZS", \
"", \
"" )
@@ -7072,6 +7377,14 @@
"", \
"" )
+#:def_cmd_opt( "SLOTS", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SLOTS", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SLOTS", "LZ", \
"", \
"" )
@@ -7080,6 +7393,14 @@
"", \
"" )
+#:def_cmd_opt( "SLOTS", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SLOTS", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SLOTS", "SZS", \
"", \
"" )
@@ -7556,6 +7877,14 @@
"", \
"" )
+#:def_cmd_opt( "NORMALIZE", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "NORMALIZE", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "NORMALIZE", "LZ", \
"", \
"" )
@@ -7564,6 +7893,14 @@
"", \
"" )
+#:def_cmd_opt( "NORMALIZE", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "NORMALIZE", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "NORMALIZE", "SZS", \
"", \
"" )
@@ -7916,6 +8253,14 @@
"", \
"" )
+#:def_cmd_opt( "PATCH", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "PATCH", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "PATCH", "LZ", \
"", \
"" )
@@ -7924,6 +8269,14 @@
"", \
"" )
+#:def_cmd_opt( "PATCH", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "PATCH", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "PATCH", "SZS", \
"", \
"" )
@@ -8280,6 +8633,14 @@
"", \
"" )
+#:def_cmd_opt( "COPY", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "COPY", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "COPY", "LZ", \
"", \
"" )
@@ -8288,6 +8649,14 @@
"", \
"" )
+#:def_cmd_opt( "COPY", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "COPY", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "COPY", "SZS", \
"", \
"" )
@@ -8648,6 +9017,14 @@
"", \
"" )
+#:def_cmd_opt( "DUPLICATE", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DUPLICATE", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DUPLICATE", "LZ", \
"", \
"" )
@@ -8656,6 +9033,14 @@
"", \
"" )
+#:def_cmd_opt( "DUPLICATE", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DUPLICATE", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DUPLICATE", "SZS", \
"", \
"" )
@@ -9205,6 +9590,14 @@
"", \
"" )
+#:def_cmd_opt( "COMPRESS", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "COMPRESS", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "COMPRESS", "LZ", \
"", \
"" )
@@ -9213,6 +9606,14 @@
"", \
"" )
+#:def_cmd_opt( "COMPRESS", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "COMPRESS", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "COMPRESS", "SZS", \
"", \
"" )
@@ -10222,6 +10623,14 @@
"", \
"" )
+#:def_cmd_opt( "CREATE", "CYBZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "CREATE", "YBZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CREATE", "LZ", \
"", \
"" )
@@ -10230,6 +10639,14 @@
"", \
"" )
+#:def_cmd_opt( "CREATE", "CYLZ", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "CREATE", "YLZ", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CREATE", "SZS", \
"", \
"" )
@@ -13496,6 +13913,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -14875,6 +15300,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -15191,8 +15624,7 @@
" separated list of slots (A), slot ranges (A:B) or keywords is" \
" expected. If preceded by a minus sign, the slots are disabled. The" \
" keywords are: @TRACKS@ (slots 0:0x1f), @ARENAS@ (0x20:0x29) and" \
- " @SPECIAL@ (0x36:0x3a). @CTCODE@ is an abbreviation for" \
- " @ARENAS,SPECIAL@.\n" \
+ " @SPECIAL@ (0x36:0x3a). @CTCODE@ is a short cut for @ARENAS,SPECIAL@.\n" \
" The default is to enable slot ranges @0x00:0x1f@, @0x2a:0x35@," \
" @0x3b:0x41@ and @0x44:0xfe@." )
@@ -16347,6 +16779,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -17469,6 +17909,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -20145,6 +20593,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -22364,6 +22820,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -24148,6 +24612,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -25515,6 +25987,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
@@ -26220,6 +26700,14 @@
"", \
"Forbid the internal usage of a pager." )
+#:def_opt( "ZERO", "z|zero", "GM", \
+ "", \
+ "This option affects the exit status of the programs. Instead of an" \
+ " exit status, the value 0 is returned for OK. This happens for" \
+ " notices ({-v}, status<15), warnings ({-vv}, status<29), errors" \
+ " ({-vvv}, status<115) and fatal errors ({-vvvv}). The exit status for" \
+ " INTERRUPT (112) is never replaced." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple use is possible." \
diff --git a/project/src/wbmgt.c b/project/src/wbmgt.c
index e0161b1..6efb5bd 100644
--- a/project/src/wbmgt.c
+++ b/project/src/wbmgt.c
@@ -81,7 +81,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wbmgt,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -106,7 +106,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -140,7 +140,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
//
@@ -785,6 +785,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -991,7 +992,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wctct.c b/project/src/wctct.c
index 754d58b..7fc9c47 100644
--- a/project/src/wctct.c
+++ b/project/src/wctct.c
@@ -72,7 +72,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wctct,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -97,7 +97,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -131,7 +131,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
//
@@ -766,6 +766,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -1003,7 +1004,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wimgt.c b/project/src/wimgt.c
index 5071f5c..8874221 100644
--- a/project/src/wimgt.c
+++ b/project/src/wimgt.c
@@ -77,7 +77,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wimgt,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -102,7 +102,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -136,7 +136,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
///////////////////////////////////////////////////////////////////////////////
@@ -169,7 +169,7 @@ static void syntax_error ( ccp func, ccp file, uint line )
}
else
PrintErrorFile(func,file,line,0,0,ERR_SYNTAX,"Syntax Error!\n");
- exit(ERR_SYNTAX);
+ ExitFixed(ERR_SYNTAX);
}
//
@@ -621,6 +621,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -813,7 +814,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wkclt.c b/project/src/wkclt.c
index a70c2f9..ee7c4fd 100644
--- a/project/src/wkclt.c
+++ b/project/src/wkclt.c
@@ -73,7 +73,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wkclt,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -98,7 +98,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -132,7 +132,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
///////////////////////////////////////////////////////////////////////////////
@@ -165,7 +165,7 @@ static void syntax_error ( ccp func, ccp file, uint line )
}
else
PrintErrorFile(func,file,line,0,0,ERR_SYNTAX,"Syntax Error!\n");
- exit(ERR_SYNTAX);
+ ExitFixed(ERR_SYNTAX);
}
//
@@ -1315,6 +1315,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -1545,7 +1546,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wkmpt.c b/project/src/wkmpt.c
index c91cda6..0ae30bf 100644
--- a/project/src/wkmpt.c
+++ b/project/src/wkmpt.c
@@ -72,7 +72,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wkmpt,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -97,7 +97,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -131,7 +131,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
//
@@ -1603,6 +1603,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -1850,7 +1851,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wlect.c b/project/src/wlect.c
index 257f24d..6191272 100644
--- a/project/src/wlect.c
+++ b/project/src/wlect.c
@@ -75,7 +75,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wlect,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -100,7 +100,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -134,7 +134,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
//
@@ -1021,7 +1021,7 @@ static void help_create ( enumError exit_code )
ProgInfo.progname,
ProgInfo.progname );
ClosePager();
- exit(exit_code);
+ ExitFixed(exit_code);
}
///////////////////////////////////////////////////////////////////////////////
@@ -2031,7 +2031,7 @@ static void help_distrib ( enumError exit_code )
,GetLecodeInfoLEREG(LEREG_KOR)
);
ClosePager();
- exit(exit_code);
+ ExitFixed(exit_code);
}
///////////////////////////////////////////////////////////////////////////////
@@ -2751,6 +2751,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -3018,7 +3019,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wmdlt.c b/project/src/wmdlt.c
index a39b068..f7c3169 100644
--- a/project/src/wmdlt.c
+++ b/project/src/wmdlt.c
@@ -66,7 +66,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wmdlt,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -91,7 +91,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -125,7 +125,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
//
@@ -558,6 +558,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -765,7 +766,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wpatt.c b/project/src/wpatt.c
index c4424d8..ea79d5c 100644
--- a/project/src/wpatt.c
+++ b/project/src/wpatt.c
@@ -66,7 +66,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wpatt,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -91,7 +91,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -125,7 +125,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
//
@@ -358,6 +358,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -546,7 +547,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wstrt.c b/project/src/wstrt.c
index 800275a..cc13aa0 100644
--- a/project/src/wstrt.c
+++ b/project/src/wstrt.c
@@ -78,7 +78,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wstrt,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -103,7 +103,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -137,7 +137,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
//
@@ -1605,6 +1605,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -1909,7 +1910,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wszst.c b/project/src/wszst.c
index e6bdee2..9d2d965 100644
--- a/project/src/wszst.c
+++ b/project/src/wszst.c
@@ -99,7 +99,7 @@ static void help_exit ( bool xmode )
PrintHelpCmd(&InfoUI_wszst,stdout,0,0,"HELP",0,URI_HOME);
ClosePager();
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -107,7 +107,10 @@ static void help_exit ( bool xmode )
static void list_compressions_exit()
{
SetupColors();
- const int fw = GetTermWidth(80,40) - 1;
+ int fw = GetTermWidth(80,40) - 1;
+ if ( fw > 120 )
+ fw = 120;
+
PrintColoredLines(stdout,colout,0,fw,0,0,
"\n{setup|%s}\n\n{caption|Compression modes:}\n"
"\n"
@@ -116,7 +119,7 @@ static void list_compressions_exit()
" Each methods and level can be address by a numerical mode"
" and some by a name.\n"
"\n"
- "In general, 2 compression formats are supported: YAZ0/YAZ1 and BZ (bzip2).\n"
+ "In general, 3 compression formats are supported: YAZ0/YAZ1, BZ (bzip2) and LZ (LZMA).\n"
"\n"
"The following list shows all modes."
" A mode can by selected by option {opt|--compr=param} or {opt|-C param}.\n"
@@ -131,9 +134,13 @@ static void list_compressions_exit()
"\t{hl| 1\tFAST}\t|"
"Fastest available standard compression.\n"
"\t{hl|1-8\t}\t|"
- "Standard levels between {par|FAST} and {par|BEST}.\n"
+ "Standard levels between {par|FAST} and {par|BEST}."
+ " Do not use compression level >6 for {cmd|LZMA} if the file is intended"
+ " for Mario Kart Wii, as too much memory is required for decoding.\n"
"\t{hl| 9\tBEST}\t|"
- "Best and {par|default} standard compression.\n"
+ "Best compression level.\n"
+ "\t{hl|\tDEFAULT}\t|"
+ "Default compression: {par|6} for {cmd|LZMA} and {par|9} for all other methods.\n"
"\n"
"\t\t{hl|TRY2 - TRY5}\t|"
"Because of many repeated data, the best {cmd|BZ} compression mode varies."
@@ -177,7 +184,7 @@ static void list_compressions_exit()
,3*fw,ThinLine300_3
);
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -202,7 +209,7 @@ static void version_exit()
else
fputs( TITLE "\n", stdout );
- exit(ERR_OK);
+ ExitFixed(ERR_OK);
}
///////////////////////////////////////////////////////////////////////////////
@@ -236,7 +243,7 @@ static void hint_exit ( enumError stat )
fprintf(stderr,
"-> Type '%s -h' or '%s help' (pipe it to a pager like 'less') for more help.\n\n",
ProgInfo.progname, ProgInfo.progname );
- exit(stat);
+ ExitFixed(stat);
}
///////////////////////////////////////////////////////////////////////////////
@@ -626,6 +633,8 @@ static const sizeof_info_t sizeof_info_szs_list[] =
SIZEOF_INFO_ENTRY(raw_data_t)
SIZEOF_INFO_ENTRY(wbz_header_t)
SIZEOF_INFO_ENTRY(wlz_header_t)
+ SIZEOF_INFO_ENTRY(ybz_header_t)
+ SIZEOF_INFO_ENTRY(ylz_header_t)
SIZEOF_INFO_ENTRY(analyze_param_t)
SIZEOF_INFO_ENTRY(analyze_szs_t)
SIZEOF_INFO_ENTRY(file_type_t)
@@ -672,7 +681,7 @@ static enumError cmd_test_options()
printf(" align-breff: %16x = %12d\n",opt_align_breff,opt_align_breff);
printf(" align-breft: %16x = %12d\n",opt_align_breft,opt_align_breft);
printf(" tiny: %16x = %12d\n",opt_tiny,opt_tiny);
- printf(" compression: mode %2d, level %d\n",opt_compr_mode,opt_compr);
+ printf(" compression: mode %2d, level %d ==> %d\n",opt_compr_mode,opt_compr,GetComprByFF(fform_compr,0));
printf(" recurse: %16x = %12d\n",opt_recurse,opt_recurse);
printf(" cmpr-default: valid=%d, RGB565: %04x %04x, RGB: %06x %06x\n",
opt_cmpr_valid,
@@ -1443,7 +1452,7 @@ static enumError cmd_code()
{
ERROR0(ERR_NOT_IMPLEMENTED,
"Command _RECODE not implemented in this version!\n");
- exit(ERR_NOT_IMPLEMENTED);
+ ExitFixed(ERR_NOT_IMPLEMENTED);
}
#endif
@@ -5758,7 +5767,7 @@ static enumError cmd_yazdump()
{
ERROR0(ERR_NOT_IMPLEMENTED,
"Command VEHICLE not implemented in this version!\n");
- exit(ERR_NOT_IMPLEMENTED);
+ ExitFixed(ERR_NOT_IMPLEMENTED);
}
#endif
@@ -5798,6 +5807,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
case GO_NO_PAGER: opt_no_pager = true; break;
+ case GO_ZERO: opt_zero++; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
@@ -5926,8 +5936,10 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_XYZ: SetCompressionFF(FF_INVALID,FF_XYZ); break;
case GO_BZ: SetCompressionFF(FF_INVALID,FF_BZ); break;
case GO_BZIP2: SetCompressionFF(FF_INVALID,FF_BZIP2); break;
+ case GO_CYBZ: SetCompressionFF(FF_INVALID,FF_YBZ); break;
case GO_LZ: SetCompressionFF(FF_INVALID,FF_LZ); break;
case GO_LZMA: SetCompressionFF(FF_INVALID,FF_LZMA); break;
+ case GO_CYLZ: SetCompressionFF(FF_INVALID,FF_YLZ); break;
case GO_U8: SetCompressionFF(FF_U8,FF_INVALID); break;
case GO_SZS: SetCompressionFF(FF_U8,FF_YAZ0); break;
@@ -5935,6 +5947,8 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_XWU8: SetCompressionFF(FF_WU8,FF_XYZ); break;
case GO_WBZ: SetCompressionFF(FF_WU8,FF_BZ); break;
case GO_WLZ: SetCompressionFF(FF_WU8,FF_LZ); break;
+ case GO_YBZ: SetCompressionFF(FF_U8,FF_YBZ); break;
+ case GO_YLZ: SetCompressionFF(FF_U8,FF_YLZ); break;
//case GO_LTA: SetCompressionFF(FF_LTA,FF_INVALID); break;
case GO_LFL: SetCompressionFF(FF_LFL,FF_INVALID); break;
//case GO_ARC: SetCompressionFF(FF_RARC,FF_INVALID); break;
@@ -6575,7 +6589,7 @@ int main ( int argc, char ** argv )
DASSERT(w);
const int err = w->func(argc,argv);
ClosePager();
- return err;
+ return FixExitStatus(err);
}
//
diff --git a/project/src/wtest.c b/project/src/wtest.c
index 3cc7003..cec42c7 100644
--- a/project/src/wtest.c
+++ b/project/src/wtest.c
@@ -4214,7 +4214,7 @@ static enumError test_pf_expand ( int argc, char ** argv )
" -i : Set mode to INSERT (default).\n"
" -a : Set mode to APPEND.\n"
"\n");
- exit(1);
+ ExitFixed(1);
}
@@ -4269,7 +4269,7 @@ static enumError test_coded_version ( int argc, char ** argv )
if ( argc <= 1 )
{
printf( "\nSyntax: VERSIONCODE | VC [number]...\n\n");
- exit(1);
+ ExitFixed(1);
}
int fw = 11;
@@ -4318,7 +4318,7 @@ static enumError test_key_list ( int argc, char ** argv )
if ( argc <= 1 )
{
printf( "\nSyntax: KEY-LIST | KL [options] [a..b] [args]...\n\n");
- exit(1);
+ ExitFixed(1);
}
static const KeywordTab_t keytab[] =
@@ -4807,7 +4807,6 @@ be32n((u32*)head,(u32*)head,sizeof(head)/4);
be32n((u32*)node,(u32*)node,sizeof(node)/4);
while ( node->data_size )
{
-xBINGO;
if (!strcasecmp(node->file_name,path))
{
res.data = (u8*)node + node->data_offset;
@@ -5283,7 +5282,7 @@ void help_exit()
#endif
ClosePager();
- exit(ERR_SYNTAX);
+ ExitFixed(ERR_SYNTAX);
};
//
diff --git a/project/templates/HISTORY.txt b/project/templates/HISTORY.txt
index 0060f87..a40f435 100644
--- a/project/templates/HISTORY.txt
+++ b/project/templates/HISTORY.txt
@@ -424,7 +424,7 @@ szs v2.20a r8279 - 2020-10-03
and self linked item routes with 1 point.
- wszst CHECK: Hints about unusual TEX version 1 are suppressed now if option
--verbose is not set.
- - Fewer program crashes when reading faulty SZS files.
+ - Fewer program crashes when reading faulty SZS files.
szs v2.21a r8311 - 2020-11-30
@@ -436,7 +436,7 @@ szs v2.21a r8311 - 2020-11-30
- Support of LE-CODE build 25:
- Speedometer support for LPAR-files.
- New option for wlect: --speedometer=off/on
- - Again fewer program crashes when reading faulty SZS files.
+ - Again fewer program crashes when reading faulty SZS files.
- BMG supports little endian files now, but only encoding UTF-8 was checked.
I need example files to verify other encodings (CP-1252,UTF-16,SHIFT-JIS).
- KCL/OBJ: Faces with any number of vertices are accepted now. Before there
@@ -672,7 +672,7 @@ szs v2.31a r8725 - 2022-12-16
- File format LE-DEF: Instructions STANDARD-BATTLE-ARENAS and/or
STANDARD-VERSUS-TRACKS will be executed automatically if no other battle
arena or no other versus track are defined.
- - wlect DISTRIB:
+ - wlect DISTRIB:
- Bug fix: Random slots are ignored now if adding missed tracks to cups.
- Fixed import of LE-CODE binaries without standard tracks.
- New instructions: CUP-ICONS, CUP-INFO (both are experimental).
@@ -688,7 +688,7 @@ szs v2.32a r8742 - 2022-12-25
- wlect DISTRIB:
- Instructions cup-icons= and cup-info=:
- By default, 5 characters are used for the name part. The source can
- now be specified as an optional storage indicator.
+ now be specified as an optional storage indicator.
- Fixed some issues.
- Instruction distrib=: Improved track list.
- New instruction report=: Analyse the distribution and print a report.
@@ -775,17 +775,17 @@ szs v2.36a r8834 - 2023-07-22
- The 114 commands of the following list including their short cuts accept
wildcards as source now:
- wszst: ANALYZE AUTOADD BINARY BMG BRSUB CAT CHECK COMPRESS COPY CREATE
- DECOMPRESS DISTRIBUTION DUMP ENCODE EXTRACT FEATURES FILETYPE
- GHOST ILIST INFO INSTALL IS-ARENA IS-TEXTURE KCL KMP LEX MEMORY
- MINIMAP NAME-REF NORMALIZE PATCH SHA1 SLOTS SPLIT STGI TEXT
- UPDATE XALL XCOMMON XDECODE XEXPORT YAZDUMP
+ DECOMPRESS DISTRIBUTION DUMP ENCODE EXTRACT FEATURES FILETYPE
+ GHOST ILIST INFO INSTALL IS-ARENA IS-TEXTURE KCL KMP LEX MEMORY
+ MINIMAP NAME-REF NORMALIZE PATCH SHA1 SLOTS SPLIT STGI TEXT
+ UPDATE XALL XCOMMON XDECODE XEXPORT YAZDUMP
- wbmgt: CAT DECODE ENCODE FILETYPE LIST MIX SECTIONS PATCH SLOTS
- wctct: CAT CREATE DECODE DUMP FILETYPE PATCH
- wimgt: CONVERT COPY DECODE ENCODE FILETYPE LIST
- wkclt: ANALYZE BLOW CAT CFF CHECK COPY DECODE DUMP ENCODE FILETYPE
- FLAGS LIST SHA1 TRIANGLES
+ FLAGS LIST SHA1 TRIANGLES
- wkmpt: CAT CHECK DECODE DRAW ENCODE FILETYPE GAMEMODES GOBJ KTPT ROUTES
- STGI
+ STGI
- wlect: CAT DECODE DUMP ENCODE FILETYPE LPAR PATCH TIMESTAMP
- wmdlt: CAT DECODE ENCODE FILETYPE GEOMETRY STRINGS XTEST
- wpatt: CAT DECODE ENCODE FILETYPE
@@ -827,9 +827,9 @@ szs v2.38a r8889 - 2023-09-22
- Fixed a bug that caused distribution files to be read incorrectly.
- New compression formats:
LZ: Read and create LZ compressed files. LZ is like YAZ0 and BZ, but
- with LZMA compression.
+ with LZMA compression.
LZMA: Read and create LZMA compressed files. Tracks compressed with LZMA
- are approx 40% smaller than the YAZ0 compressed tracks.
+ are approx 40% smaller than the YAZ0 compressed tracks.
XZ: Detect XZ compressed files.
- Formats BZIP2, LZMA and XZ are compatible with external tools like 'bzip2',
'lzma' and 'xz'.
@@ -919,6 +919,14 @@ szs v2.41a r8953 - 2024-02-17
- New LPAR setting: SLOT-04X.
+szs v2.41b r8971 - 2024-02-23
+ - Cygwin only: Fixed a silent stack overflow if reordering the tracks.
+ - New image format TPLx: Technically, TPLx is a TPL file with 2 extensions.
+ The main feature is the conversion of width and height so that images with
+ a height >65535 lines can be used. Cup icons are an example of this.
+ - New virtual image type CUPICON: Alias for TPLx.CMPR.
+
+
@@MODULE(last-history.txt)@@
diff --git a/project/templates/MILESTONES.txt b/project/templates/MILESTONES.txt
index 91b85c1..a47a8be 100644
--- a/project/templates/MILESTONES.txt
+++ b/project/templates/MILESTONES.txt
@@ -166,3 +166,6 @@ szs v2.34a
szs v2.41a
- LE-CODE supports 8192 tracks and 2048 versus cups now.
+szs v2.41b
+ - Support of file format TPLx.
+
diff --git a/project/templates/module/last-history.txt b/project/templates/module/last-history.txt
index 5b4d3a0..f9b0eeb 100644
--- a/project/templates/module/last-history.txt
+++ b/project/templates/module/last-history.txt
@@ -1,10 +1,18 @@
szs v@@VERSION@@ r@@REV-NEXT@@ - @@@@-@@-@@
- - Cygwin only: Fixed a silent stack overflow if reordering the tracks.
- - New image format TPLx: Technically, TPLx is a TPL file with 2 extensions.
- The main feature is the conversion of width and height so that images with
- a height >65535 lines can be used. Cup icons are an example of this.
- - New virtual image type CUPICON: Alias for TPLx.CMPR.
+ - Updated prefix database: Added CTGPS, EX, EXTR, GK2, GK3, GK7, HGSS, HWTA,
+ SBSPLCP, SKK, TGO. Removed LPC.
+ - Bug fix for option --lex-purge: The tools occasionally crashed when
+ attempting to delete an existing but unneeded LEX file.
+ - Added support for compression methods YBZ and YLZ (Yaz0 header, but
+ alternative compressions bzip2 or LZMA). Use one of the new options --cybz,
+ --ybz, --cylz or --ylz to select the new methods. LE-CODE supports YLZ.
+ - New option --zero (-z): This option affects the exit status of the
+ programs. Instead of an exit status, the value 0 is returned for OK. This
+ happens for notices (-v, status<15), warnings (-vv, status<29), errors
+ (-vvv, status<115) and fatal errors (-vvvv). The exit status for INTERRUPT
+ (112) is never replaced.
+ - Information only: wszst now knows 243 different options.
~ - KMP:STGI support for up to 255 laps.
~ - Option --kmp=MODES supports now settings 1LAP .. 15LAPS.
diff --git a/project/text-files/lpar.inc/lpar-sect-param-cr.inc b/project/text-files/lpar.inc/lpar-sect-param-cr.inc
index f6d757b..3c5b556 100644
--- a/project/text-files/lpar.inc/lpar-sect-param-cr.inc
+++ b/project/text-files/lpar.inc/lpar-sect-param-cr.inc
@@ -151,6 +151,10 @@ MAX-ONLINE-SEC = %3u%s
# 64x64 (saves 75%% space) for >800 cups and more. The image with the cup
# icons, which is loaded with the --cup-icons option, for example, must have
# the appropriate size.
+#
+# As of build 41, LE-CODE supports the TPLx file format. If the cup icons are
+# in this file format and a valid signature is found, then CUP-ICON-SIZE will
+# be ignored.
CUP-ICON-SIZE = %u
@@ -159,6 +163,9 @@ CUP-ICON-SIZE = %u
# format (same number of characters). However, this is only relevant if a slot
# ≥0x1000 (≥4096) is used. The distribution creator must ensure that the files
# in ./Race/Course/ and directories in ./Race/Common/ are in the same format.
+#
+# As of build 41, LE-CODE scans the ./Race/Course/ directory and finds out
+# which format is used. This setting is then only used as a fallback.
SLOT-04X = %u
diff --git a/project/text-files/setup.inc/setup-order-cr.inc b/project/text-files/setup.inc/setup-order-cr.inc
index 45c96fc..a6b1152 100644
--- a/project/text-files/setup.inc/setup-order-cr.inc
+++ b/project/text-files/setup.inc/setup-order-cr.inc
@@ -4,8 +4,8 @@
[order]
# This list contains all extracted files in the order of the original archive.
-# If creating archives (but not U8) this list will be used to sort the found
-# files. For archives with directory support (all but not PACK) it is very
+# If creating archives (but neither U8 nor LTA) this list will be used to sort
+# the found files. For archives with directory support (all except PACK) it is
# important, that the directories are listed before the files that resides in
# the directories.
#