aboutsummaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
authorWiimm <wiimm@wiimm.de>2022-08-06 16:20:07 +0200
committerWiimm <wiimm@wiimm.de>2022-08-06 16:20:07 +0200
commit7fad9e9383d01cce3ac17176404e1ab4e738736c (patch)
treedf39dd0616554ce9daa138f2e9778c88fbf9ac55 /project
parent06ff18cd020779c226f7c25d22016e06b898f303 (diff)
SZS v2.28a.beta2
Diffstat (limited to '')
-rw-r--r--project/Makefile2
-rw-r--r--project/dclib/dclib-basics.c113
-rw-r--r--project/dclib/dclib-basics.h105
-rw-r--r--project/dclib/dclib-file.c4
-rw-r--r--project/dclib/dclib-file.h2
-rw-r--r--project/dclib/dclib-network.c4
-rw-r--r--project/dclib/dclib-ui.c4
-rw-r--r--project/dclib/dclib-utf8.c78
-rw-r--r--project/dclib/dclib-utf8.h6
-rw-r--r--project/revision.sh2
-rw-r--r--project/src/lib-file.c442
-rw-r--r--project/src/lib-lecode.c2
-rw-r--r--project/src/lib-ledis.c273
-rw-r--r--project/src/lib-ledis.h23
-rw-r--r--project/src/lib-lex.c66
-rw-r--r--project/src/lib-lex.h16
-rw-r--r--project/src/lib-std.c11
-rw-r--r--project/src/lib-std.h126
-rw-r--r--project/src/lib-szs-create.c16
-rw-r--r--project/src/lib-szs.h5
-rw-r--r--project/src/prefix.inc148
-rw-r--r--project/src/ui/tab-wbmgt.inc3
-rw-r--r--project/src/ui/tab-wctct.inc3
-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.inc11
-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.inc4
-rw-r--r--project/src/ui/tab-wszst.inc42
-rw-r--r--project/src/ui/ui-wbmgt.c23
-rw-r--r--project/src/ui/ui-wbmgt.h4
-rw-r--r--project/src/ui/ui-wctct.c23
-rw-r--r--project/src/ui/ui-wctct.h4
-rw-r--r--project/src/ui/ui-wimgt.c24
-rw-r--r--project/src/ui/ui-wimgt.h4
-rw-r--r--project/src/ui/ui-wkclt.c24
-rw-r--r--project/src/ui/ui-wkclt.h4
-rw-r--r--project/src/ui/ui-wkmpt.c23
-rw-r--r--project/src/ui/ui-wkmpt.h4
-rw-r--r--project/src/ui/ui-wlect.c31
-rw-r--r--project/src/ui/ui-wlect.h4
-rw-r--r--project/src/ui/ui-wmdlt.c24
-rw-r--r--project/src/ui/ui-wmdlt.h4
-rw-r--r--project/src/ui/ui-wpatt.c24
-rw-r--r--project/src/ui/ui-wpatt.h4
-rw-r--r--project/src/ui/ui-wstrt.c27
-rw-r--r--project/src/ui/ui-wstrt.h4
-rw-r--r--project/src/ui/ui-wszst.c1203
-rw-r--r--project/src/ui/ui-wszst.h10
-rw-r--r--project/src/ui/ui.def363
-rw-r--r--project/src/wbmgt.c3
-rw-r--r--project/src/wctct.c3
-rw-r--r--project/src/wimgt.c3
-rw-r--r--project/src/wkclt.c3
-rw-r--r--project/src/wkmpt.c3
-rw-r--r--project/src/wlect.c105
-rw-r--r--project/src/wmdlt.c3
-rw-r--r--project/src/wpatt.c3
-rw-r--r--project/src/wstrt.c3
-rw-r--r--project/src/wszst.c32
-rw-r--r--project/templates/HISTORY.txt20
-rw-r--r--project/templates/module/last-history.txt36
-rw-r--r--project/text-files/lex.inc/lex-elem-feat-cr.inc5
65 files changed, 2475 insertions, 1108 deletions
diff --git a/project/Makefile b/project/Makefile
index 10ef3b2..1dea50b 100644
--- a/project/Makefile
+++ b/project/Makefile
@@ -58,7 +58,7 @@ WSTRT_SHORT = wstrt
WSTRT_LONG = Wiimms StaticR Tool
VERSION_NUM = 2.28a
-BETA_VERSION = -1
+BETA_VERSION = 2
# 0:off -1:"beta" >0:"beta#"
URI_HOME = https://szs.wiimm.de/
diff --git a/project/dclib/dclib-basics.c b/project/dclib/dclib-basics.c
index 03e3215..d2eca00 100644
--- a/project/dclib/dclib-basics.c
+++ b/project/dclib/dclib-basics.c
@@ -408,22 +408,19 @@ void FreeString ( ccp str )
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-char * StringCopyE ( char * buf, ccp buf_end, ccp src )
+char * StringCopyS ( char * buf, ssize_t buf_size, ccp src )
{
- // RESULT: end of copied string pointing to NULL
- // 'src' may be a NULL pointer.
-
- if ( buf >= buf_end )
- return (char*)buf_end - 1;
-
DASSERT(buf);
- DASSERT(buf<buf_end);
+ if ( !buf || buf_size <= 0 )
+ return buf;
if (src)
{
- buf_end--;
- while( buf < buf_end && *src )
- *buf++ = *src++;
+ size_t slen = strlen(src);
+ if ( slen >= buf_size )
+ slen = buf_size-1;
+ memcpy(buf,src,slen);
+ buf += slen;
}
*buf = 0;
@@ -432,49 +429,49 @@ char * StringCopyE ( char * buf, ccp buf_end, ccp src )
//-----------------------------------------------------------------------------
-char * StringCopyS ( char * buf, size_t buf_size, ccp src )
+char * StringCopySM ( char * buf, ssize_t buf_size, ccp src, ssize_t max_copy )
{
DASSERT(buf);
- if ( buf_size <= 0 )
+ if ( !buf || buf_size <= 0 )
return buf;
- DASSERT(buf_size>=0);
-
if (src)
- while( --buf_size > 0 && *src )
- *buf++ = *src++;
+ {
+ size_t slen = strlen(src);
+ if ( slen >= buf_size )
+ slen = buf_size-1;
+ if ( max_copy >= 0 && slen >= max_copy )
+ slen = max_copy;
+ memcpy(buf,src,slen);
+ buf += slen;
+ }
+
*buf = 0;
return buf;
}
-///////////////////////////////////////////////////////////////////////////////
+//-----------------------------------------------------------------------------
-char * StringCopyEM ( char * buf, ccp buf_end, ccp src, ssize_t max_copy )
+char * StringCopySL ( char * buf, ssize_t buf_size, ccp src, ssize_t src_len )
{
- // RESULT: end of copied string pointing to NULL
- // 'src' may be a NULL pointer.
-
DASSERT(buf);
- DASSERT(buf<buf_end);
- buf_end--;
- if ( max_copy >= 0 && buf + max_copy < buf_end )
- buf_end = buf + max_copy;
+ if ( !buf || buf_size <= 0 )
+ return buf;
if (src)
- while( buf < buf_end && *src )
- *buf++ = *src++;
+ {
+ if ( src_len < 0 )
+ src_len = strlen(src);
+ if ( src_len >= buf_size )
+ src_len = buf_size-1;
+ memcpy(buf,src,src_len);
+ buf += src_len;
+ }
*buf = 0;
return buf;
}
-//-----------------------------------------------------------------------------
-
-char * StringCopySM ( char * buf, size_t buf_size, ccp src, ssize_t max_copy )
-{
- return StringCopyEM(buf,buf+buf_size,src,max_copy);
-}
-
///////////////////////////////////////////////////////////////////////////////
char * StringCat2E ( char * buf, ccp buf_end, ccp src1, ccp src2 )
@@ -500,7 +497,7 @@ char * StringCat2E ( char * buf, ccp buf_end, ccp src1, ccp src2 )
//-----------------------------------------------------------------------------
-char * StringCat2S ( char * buf, size_t buf_size, ccp src1, ccp src2 )
+char * StringCat2S ( char * buf, ssize_t buf_size, ccp src1, ccp src2 )
{
return StringCat2E(buf,buf+buf_size,src1,src2);
}
@@ -541,7 +538,7 @@ char * StringCatSep2E ( char * buf, ccp buf_end, ccp sep, ccp src1, ccp src2 )
//-----------------------------------------------------------------------------
-char * StringCatSep2S ( char * buf, size_t buf_size, ccp sep, ccp src1, ccp src2 )
+char * StringCatSep2S ( char * buf, ssize_t buf_size, ccp sep, ccp src1, ccp src2 )
{
return StringCatSep2E(buf,buf+buf_size,sep,src1,src2);
}
@@ -575,7 +572,7 @@ char * StringCat3E ( char * buf, ccp buf_end, ccp src1, ccp src2, ccp src3 )
//-----------------------------------------------------------------------------
-char * StringCat3S ( char * buf, size_t buf_size, ccp src1, ccp src2, ccp src3 )
+char * StringCat3S ( char * buf, ssize_t buf_size, ccp src1, ccp src2, ccp src3 )
{
return StringCat3E(buf,buf+buf_size,src1,src2,src3);
}
@@ -631,7 +628,7 @@ char * StringCatSep3E
//-----------------------------------------------------------------------------
char * StringCatSep3S
- ( char * buf, size_t buf_size, ccp sep, ccp src1, ccp src2, ccp src3 )
+ ( char * buf, ssize_t buf_size, ccp sep, ccp src1, ccp src2, ccp src3 )
{
return StringCatSep3E(buf,buf+buf_size,sep,src1,src2,src3);
}
@@ -745,7 +742,7 @@ char * StringLowerE ( char * buf, ccp buf_end, ccp src )
//-----------------------------------------------------------------------------
-char * StringLowerS ( char * buf, size_t buf_size, ccp src )
+char * StringLowerS ( char * buf, ssize_t buf_size, ccp src )
{
return StringLowerE(buf,buf+buf_size,src);
}
@@ -777,7 +774,7 @@ char * MemLowerE ( char * buf, ccp buf_end, mem_t src )
//-----------------------------------------------------------------------------
-char * MemLowerS ( char * buf, size_t buf_size, mem_t src )
+char * MemLowerS ( char * buf, ssize_t buf_size, mem_t src )
{
return MemLowerE(buf,buf+buf_size,src);
}
@@ -806,7 +803,7 @@ char * StringUpperE ( char * buf, ccp buf_end, ccp src )
//-----------------------------------------------------------------------------
-char * StringUpperS ( char * buf, size_t buf_size, ccp src )
+char * StringUpperS ( char * buf, ssize_t buf_size, ccp src )
{
return StringUpperE(buf,buf+buf_size,src);
}
@@ -838,7 +835,7 @@ char * MemUpperE ( char * buf, ccp buf_end, mem_t src )
//-----------------------------------------------------------------------------
-char * MemUpperS ( char * buf, size_t buf_size, mem_t src )
+char * MemUpperS ( char * buf, ssize_t buf_size, mem_t src )
{
return MemUpperE(buf,buf+buf_size,src);
}
@@ -1008,7 +1005,7 @@ int SleepNSec ( s_nsec_t nsec )
/////////////// PathCat*() ///////////////
///////////////////////////////////////////////////////////////////////////////
-char * PathCatBufPP ( char * buf, size_t bufsize, ccp path1, ccp path2 )
+char * PathCatBufPP ( char * buf, ssize_t bufsize, ccp path1, ccp path2 )
{
// concatenate path + path; returns buf
@@ -1039,7 +1036,7 @@ char * PathCatBufPP ( char * buf, size_t bufsize, ccp path1, ccp path2 )
///////////////////////////////////////////////////////////////////////////////
-ccp PathCatPP ( char * buf, size_t bufsize, ccp path1, ccp path2 )
+ccp PathCatPP ( char * buf, ssize_t bufsize, ccp path1, ccp path2 )
{
// concatenate path + path; returns path1 | path2 | buf
@@ -1061,7 +1058,7 @@ ccp PathCatPP ( char * buf, size_t bufsize, ccp path1, ccp path2 )
///////////////////////////////////////////////////////////////////////////////
-ccp PathCatDirP ( char * buf, size_t bufsize, ccp path1, ccp path2 )
+ccp PathCatDirP ( char * buf, ssize_t bufsize, ccp path1, ccp path2 )
{
// concatenate path + path; returns path1 | path2 | buf
@@ -1085,7 +1082,7 @@ ccp PathAllocPP ( ccp path1, ccp path2 )
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-char * PathCatBufPPE ( char * buf, size_t bufsize, ccp path1, ccp path2, ccp ext )
+char * PathCatBufPPE ( char * buf, ssize_t bufsize, ccp path1, ccp path2, ccp ext )
{
// concatenate path + path; returns (by definition) path1 | path2 | buf
@@ -1125,7 +1122,7 @@ ccp PathAllocPPE ( ccp path1, ccp path2, ccp ext )
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-char * PathCatBufBP ( char *buf, size_t bufsize, ccp base, ccp path )
+char * PathCatBufBP ( char *buf, ssize_t bufsize, ccp base, ccp path )
{
// PathCatBP() is special: path can be part of buf
@@ -1167,7 +1164,7 @@ char * PathCatBufBP ( char *buf, size_t bufsize, ccp base, ccp path )
///////////////////////////////////////////////////////////////////////////////
-ccp PathCatBP ( char *buf, size_t bufsize, ccp base, ccp path )
+ccp PathCatBP ( char *buf, ssize_t bufsize, ccp base, ccp path )
{
// PathCatBP() is special: path can be part of buf
@@ -1188,7 +1185,7 @@ ccp PathAllocBP ( ccp base, ccp path )
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-char * PathCatBufBPP ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2 )
+char * PathCatBufBPP ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2 )
{
ccp path = PathCatPP(buf,bufsize,path1,path2);
return PathCatBufBP(buf,bufsize,base,path);
@@ -1196,7 +1193,7 @@ char * PathCatBufBPP ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path
///////////////////////////////////////////////////////////////////////////////
-ccp PathCatBPP ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2 )
+ccp PathCatBPP ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2 )
{
ccp path = PathCatPP(buf,bufsize,path1,path2);
return PathCatBP(buf,bufsize,base,path);
@@ -1213,7 +1210,7 @@ ccp PathAllocBPP ( ccp base, ccp path1, ccp path2 )
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-char * PathCatBufBPPE ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2, ccp ext )
+char * PathCatBufBPPE ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2, ccp ext )
{
ccp path = PathCatPPE(buf,bufsize,path1,path2,ext);
return PathCatBufBP(buf,bufsize,base,path);
@@ -1221,7 +1218,7 @@ char * PathCatBufBPPE ( char * buf, size_t bufsize, ccp base, ccp path1, ccp pat
///////////////////////////////////////////////////////////////////////////////
-ccp PathCatBPPE ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2, ccp ext )
+ccp PathCatBPPE ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2, ccp ext )
{
ccp path = PathCatPPE(buf,bufsize,path1,path2,ext);
return PathCatBP(buf,bufsize,base,path);
@@ -1316,7 +1313,7 @@ char * NewFileExtE ( char * buf, ccp buf_end, ccp path, ccp ext )
///////////////////////////////////////////////////////////////////////////////
-char * NewFileExtS ( char * buf, size_t bufsize, ccp path, ccp ext )
+char * NewFileExtS ( char * buf, ssize_t bufsize, ccp path, ccp ext )
{
return NewFileExtE(buf,buf+bufsize,path,ext);
}
@@ -3239,14 +3236,14 @@ uint ScanQuotedArgManager ( ArgManager_t *am, ccp src, bool is_utf8 )
}
else
{
- while ( dest < bufend && !isspace(*src) && *src != '\'' && *src != '\"' )
+ while ( dest < bufend && *src && !isspace(*src) && *src != '\'' && *src != '\"' )
{
if ( *src == '\\' && src[1] )
src++;
*dest++ = *src++;
}
}
- if (isspace(*src))
+ if ( !*src || isspace(*src) )
break;
}
ccp arg = MEMDUP(buf,dest-buf);
@@ -3377,7 +3374,7 @@ enumError ExpandAtArgManager
if (n_rm)
{
- PRINT1("rm @%u %d, file=%s\n",pos,n_rm,fname);
+ PRINT0("rm @%u %d, file=%s\n",pos,n_rm,fname);
int n_added;
enumError err = ScanFileArgManager(am,pos,fname,silent,&n_added);
if ( max_err < err )
@@ -3389,7 +3386,7 @@ enumError ExpandAtArgManager
}
// remove after insert to keep fname valid!
- PRINT1("rm @%u %d\n",pos,n_rm);
+ PRINT0("rm @%u %d\n",pos,n_rm);
RemoveArgManager(am,pos,n_rm);
}
else
diff --git a/project/dclib/dclib-basics.h b/project/dclib/dclib-basics.h
index 01e53a7..d15997c 100644
--- a/project/dclib/dclib-basics.h
+++ b/project/dclib/dclib-basics.h
@@ -58,6 +58,20 @@
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// conditionals ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// support function utimensat()
+
+#undef SUPPORT_UTIMENSAT
+
+#if defined(UTIME_OMIT) && !defined(__APPLE__)
+ #define SUPPORT_UTIMENSAT 1
+#else
+ #define SUPPORT_UTIMENSAT 0
+#endif
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// helpers ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -1472,52 +1486,61 @@ int GetProgramPath
//-----
-// StringCopyS(), StringCopyE(), StringCat*()
+// StringCopy*(), StringCat*()
// RESULT: end of copied string pointing to a NULL character.
// 'src*' may be a NULL pointer.
-// if max_copy<0: ignore it!
+// MAX_COPY define max number of bytes to copy.
+// It's only relevant if src is longer.
+// If MAX_COPY<0: ignore it.
+// SRC_LEN is the length of src (or the number of bytes to copy)
+// If SRC_LEN<0: use strlen(src)
-char * StringCopyS ( char *buf, size_t bufsize, ccp src );
-char * StringCopySM ( char *buf, size_t bufsize, ccp src, ssize_t max_copy );
-char * StringCat2S ( char *buf, size_t bufsize, ccp src1, ccp src2 );
-char * StringCat3S ( char *buf, size_t bufsize, ccp src1, ccp src2, ccp src3 );
+char * StringCopyS ( char *buf, ssize_t buf_size, ccp src );
+char * StringCopySM ( char *buf, ssize_t buf_size, ccp src, ssize_t max_copy );
+char * StringCopySL ( char *buf, ssize_t buf_size, ccp src, ssize_t src_len );
-char * StringCopyE ( char *buf, ccp buf_end, ccp src );
-char * StringCopyEM ( char *buf, ccp buf_end, ccp src, ssize_t max_copy );
-char * StringCat2E ( char *buf, ccp buf_end, ccp src1, ccp src2 );
-char * StringCat3E ( char *buf, ccp buf_end, ccp src1, ccp src2, ccp src3 );
+static inline char * StringCopyE ( char * buf, ccp buf_end, ccp src )
+ { return StringCopyS(buf,buf_end-buf,src); }
+static inline char * StringCopyEM ( char *buf, ccp buf_end, ccp src, ssize_t max_copy )
+ { return StringCopySM(buf,buf_end-buf,src,max_copy ); }
+static inline char * StringCopyEL ( char *buf, ccp buf_end, ccp src, ssize_t src_len )
+ { return StringCopySL(buf,buf_end-buf,src,src_len ); }
-// alloc space and return
-char * StringCat2A ( ccp src1, ccp src2 );
-char * StringCat3A ( ccp src1, ccp src2, ccp src3 );
+// concat sources, *A(): use MALLOC()
+char * StringCat2S ( char *buf, ssize_t buf_size, ccp src1, ccp src2 );
+char * StringCat3S ( char *buf, ssize_t buf_size, ccp src1, ccp src2, ccp src3 );
+char * StringCat2E ( char *buf, ccp buf_end, ccp src1, ccp src2 );
+char * StringCat3E ( char *buf, ccp buf_end, ccp src1, ccp src2, ccp src3 );
+char * StringCat2A ( ccp src1, ccp src2 );
+char * StringCat3A ( ccp src1, ccp src2, ccp src3 );
// like above, but cat with separators
-char * StringCatSep2S ( char *buf, size_t bufsize, ccp sep, ccp src1, ccp src2 );
-char * StringCatSep3S ( char *buf, size_t bufsize, ccp sep, ccp src1, ccp src2, ccp src3 );
-char * StringCatSep2E ( char *buf, ccp buf_end, ccp sep, ccp src1, ccp src2 );
-char * StringCatSep3E ( char *buf, ccp buf_end, ccp sep, ccp src1, ccp src2, ccp src3 );
+char * StringCatSep2S ( char *buf, ssize_t bufsize, ccp sep, ccp src1, ccp src2 );
+char * StringCatSep3S ( char *buf, ssize_t bufsize, ccp sep, ccp src1, ccp src2, ccp src3 );
+char * StringCatSep2E ( char *buf, ccp buf_end, ccp sep, ccp src1, ccp src2 );
+char * StringCatSep3E ( char *buf, ccp buf_end, ccp sep, ccp src1, ccp src2, ccp src3 );
char * StringCatSep2A ( ccp sep, ccp src1, ccp src2 );
char * StringCatSep3A ( ccp sep, ccp src1, ccp src2, ccp src3 );
// center string
ccp StringCenterE ( char * buf, ccp buf_end, ccp src, int width );
-static inline ccp StringCenterS ( char *buf, size_t bufsize, ccp src, int width )
+static inline ccp StringCenterS ( char *buf, ssize_t bufsize, ccp src, int width )
{ return StringCenterE(buf,buf+bufsize,src,width); }
-static inline char * StringCopySMem ( char *buf, size_t bufsize, mem_t mem )
+static inline char * StringCopySMem ( char *buf, ssize_t bufsize, mem_t mem )
{ return StringCopySM(buf,bufsize,mem.ptr,mem.len); }
static inline char * StringCopyEMem ( char *buf, ccp buf_end, mem_t mem )
{ return StringCopyEM(buf,buf_end,mem.ptr,mem.len); }
-char * StringLowerS ( char * buf, size_t bufsize, ccp src );
-char * StringLowerE ( char * buf, ccp buf_end, ccp src );
-char * StringUpperS ( char * buf, size_t bufsize, ccp src );
-char * StringUpperE ( char * buf, ccp buf_end, ccp src );
+char * StringLowerS ( char * buf, ssize_t bufsize, ccp src );
+char * StringLowerE ( char * buf, ccp buf_end, ccp src );
+char * StringUpperS ( char * buf, ssize_t bufsize, ccp src );
+char * StringUpperE ( char * buf, ccp buf_end, ccp src );
-char * MemLowerE ( char * buf, ccp buf_end, mem_t src );
-char * MemLowerS ( char * buf, size_t bufsize, mem_t src );
-char * MemUpperE ( char * buf, ccp buf_end, mem_t src );
-char * MemUpperS ( char * buf, size_t bufsize, mem_t src );
+char * MemLowerE ( char * buf, ccp buf_end, mem_t src );
+char * MemLowerS ( char * buf, ssize_t bufsize, mem_t src );
+char * MemUpperE ( char * buf, ccp buf_end, mem_t src );
+char * MemUpperS ( char * buf, ssize_t bufsize, mem_t src );
// special handling for unsigned decimals
int StrNumCmp ( ccp a, ccp b );
@@ -1533,29 +1556,29 @@ mem_t SkipEscapesM ( mem_t mem );
// Concatenate path + path, return pointer to buf
// Return pointer to buf or path1|path2|buf or alloced string
-char *PathCatBufPP ( char *buf, size_t bufsize, ccp path1, ccp path2 );
-char *PathCatBufPPE ( char *buf, size_t bufsize, ccp path1, ccp path2, ccp ext );
-ccp PathCatPP ( char *buf, size_t bufsize, ccp path1, ccp path2 );
-//ccp PathCatPPE ( char *buf, size_t bufsize, ccp path1, ccp path2, ccp ext );
+char *PathCatBufPP ( char *buf, ssize_t bufsize, ccp path1, ccp path2 );
+char *PathCatBufPPE ( char *buf, ssize_t bufsize, ccp path1, ccp path2, ccp ext );
+ccp PathCatPP ( char *buf, ssize_t bufsize, ccp path1, ccp path2 );
+//ccp PathCatPPE ( char *buf, ssize_t bufsize, ccp path1, ccp path2, ccp ext );
ccp PathAllocPP ( ccp path1, ccp path2 );
ccp PathAllocPPE ( ccp path1, ccp path2, ccp ext );
// inline wrapper
-static inline ccp PathCatPPE ( char *buf, size_t bufsize, ccp path1, ccp path2, ccp ext )
+static inline ccp PathCatPPE ( char *buf, ssize_t bufsize, ccp path1, ccp path2, ccp ext )
{ return PathCatBufPPE(buf,bufsize,path1,path2,ext); }
// like PathCatPP(), but ignores path2, if path1 is not empty and not a directory
-ccp PathCatDirP ( char * buf, size_t bufsize, ccp path1, ccp path2 );
+ccp PathCatDirP ( char * buf, ssize_t bufsize, ccp path1, ccp path2 );
// Same as PathCatPP*(), but use 'base' as prefix for relative paths.
// If 'base' is NULL (but not empty), use getcwd() instead.
// PathCatBufBP() and PathCatBP() are special: path can be part of buf
-char *PathCatBufBP ( char *buf, size_t bufsize, ccp base, ccp path );
-char *PathCatBufBPP ( char *buf, size_t bufsize, ccp base, ccp path1, ccp path2 );
-char *PathCatBufBPPE ( char *buf, size_t bufsize, ccp base, ccp path1, ccp path2, ccp ext );
-ccp PathCatBP ( char *buf, size_t bufsize, ccp base, ccp path );
-ccp PathCatBPP ( char *buf, size_t bufsize, ccp base, ccp path1, ccp path2 );
-ccp PathCatBPPE ( char *buf, size_t bufsize, ccp base, ccp path1, ccp path2, ccp ext );
+char *PathCatBufBP ( char *buf, ssize_t bufsize, ccp base, ccp path );
+char *PathCatBufBPP ( char *buf, ssize_t bufsize, ccp base, ccp path1, ccp path2 );
+char *PathCatBufBPPE ( char *buf, ssize_t bufsize, ccp base, ccp path1, ccp path2, ccp ext );
+ccp PathCatBP ( char *buf, ssize_t bufsize, ccp base, ccp path );
+ccp PathCatBPP ( char *buf, ssize_t bufsize, ccp base, ccp path1, ccp path2 );
+ccp PathCatBPPE ( char *buf, ssize_t bufsize, ccp base, ccp path1, ccp path2, ccp ext );
ccp PathAllocBP ( ccp base, ccp path );
ccp PathAllocBPP ( ccp base, ccp path1, ccp path2 );
ccp PathAllocBPPE ( ccp base, ccp path1, ccp path2, ccp ext );
@@ -1567,8 +1590,8 @@ char * PathCombineFast ( char *dest_buf, uint buf_size, ccp path, ccp base_path
// If ext==NULL or emtpy: remove only
// 'ext' may start with '.'. If not, a additional '.' is included
// If 'path' is NULL or path==buf: Inplace job using 'buf' as source.
-char * NewFileExtE ( char * buf, ccp buf_end, ccp path, ccp ext );
-char * NewFileExtS ( char * buf, size_t bufsize, ccp path, ccp ext );
+char * NewFileExtE ( char * buf, ccp buf_end, ccp path, ccp ext );
+char * NewFileExtS ( char * buf, ssize_t bufsize, ccp path, ccp ext );
// eliminate leading './' before comparing
int StrPathCmp ( ccp path1, ccp path2 );
diff --git a/project/dclib/dclib-file.c b/project/dclib/dclib-file.c
index d1f93da..44bf5ec 100644
--- a/project/dclib/dclib-file.c
+++ b/project/dclib/dclib-file.c
@@ -579,7 +579,7 @@ FileAttrib_t * ClearFileAttrib
dest->mtime.tv_nsec =
dest->ctime.tv_nsec =
dest->itime.tv_nsec =
- #ifdef UTIME_OMIT
+ #if SUPPORT_UTIMENSAT
UTIME_OMIT;
#else
-2;
@@ -775,7 +775,7 @@ int CompareTimeSpec0 ( const struct timespec *a, const struct timespec *b )
void SetAMTimes ( ccp fname, const struct timespec times[2] )
{
- #ifdef UTIME_OMIT
+ #if SUPPORT_UTIMENSAT
utimensat(AT_FDCWD,fname,times,0);
#else
struct timeval tv[2];
diff --git a/project/dclib/dclib-file.h b/project/dclib/dclib-file.h
index 92a3283..010e6b0 100644
--- a/project/dclib/dclib-file.h
+++ b/project/dclib/dclib-file.h
@@ -1625,7 +1625,7 @@ typedef struct PrintScript_t
int var_size; // if > 0: print size of var name (some 'fform' only)
int eq_tabstop; // if > 0: indent '=' to set tabstop (some 'fform' only)
LowerUpper_t force_case; // change case of var names if not LOUP_AUTO
- bool create_array; // true: create ar arrays
+ bool create_array; // true: create arrays
bool auto_quote; // true: detect quotes and use EscapeString()
bool add_index; // true: add index to varname
bool ena_empty; // true: enable empty lines
diff --git a/project/dclib/dclib-network.c b/project/dclib/dclib-network.c
index 9c350b9..b069ba2 100644
--- a/project/dclib/dclib-network.c
+++ b/project/dclib/dclib-network.c
@@ -3520,7 +3520,7 @@ int PrintBinary1TCPStream
return -1;
char buf[10000], *end_buf = buf + sizeof(buf) - 4;
- #if 0 // dcc12: throws error: buf may be used uninitialized
+ #if 0 // gcc-12: throws error: 'buf' may be used uninitialized
char *dest = StringCopyE(buf,end_buf,cmd);
#else
char *dest = StringCopyS(buf,sizeof(buf)-4,cmd);
@@ -3583,7 +3583,7 @@ int PrintBinary2TCPStream
return -1;
char buf[10000], *end_buf = buf + sizeof(buf) - 4;
- #if 0 // dcc12: throws error: buf may be used uninitialized
+ #if 0 // gcc-12: throws error: 'buf' may be used uninitialized
char *dest = StringCopyE(buf,end_buf,cmd);
#else
char *dest = StringCopyS(buf,sizeof(buf)-4,cmd);
diff --git a/project/dclib/dclib-ui.c b/project/dclib/dclib-ui.c
index b477d74..6a01793 100644
--- a/project/dclib/dclib-ui.c
+++ b/project/dclib/dclib-ui.c
@@ -254,13 +254,13 @@ enumError CheckEnvOptions ( ccp varname, check_opt_func func )
if ( !env || !*env )
return ERR_OK;
- TRACE("env[%s] = %s\n",varname,env);
+ PRINT("env[%s] = %s\n",varname,env);
#if 1 // [[new]] with ArgManager_t
-
ArgManager_t am = {0};
AppendArgManager(&am,ProgInfo.progname,0,false);
ScanQuotedArgManager(&am,env,true);
+
#ifdef DEBUG
for ( int i = 0; i < am.argc; i++ )
printf(" [%02u] |%s|\n",i,am.argv[i]);
diff --git a/project/dclib/dclib-utf8.c b/project/dclib/dclib-utf8.c
index 1ad06ce..e998ac7 100644
--- a/project/dclib/dclib-utf8.c
+++ b/project/dclib/dclib-utf8.c
@@ -1054,6 +1054,45 @@ char * PrintUTF8CharToCircBuf ( u32 code )
}
///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+exmem_t AlignUTF8 ( exmem_dest_t *dest, ccp str, int str_len, int fw, int prec )
+{
+ int slen = str_len < 0
+ ? ScanUTF8Length(str)
+ : ScanUTF8LengthE(str,str+str_len);
+
+ if ( prec >= 0 && slen > prec )
+ slen = prec;
+
+ const int align_left = fw < 0;
+ if (align_left)
+ fw = -fw;
+ if ( fw < slen )
+ fw = slen;
+ int spaces = fw - slen;
+
+ ccp end = SkipUTF8Char(str,slen);
+ const int copy_len = end - str;
+
+ exmem_t res = GetExmemDestBuf(dest,copy_len+spaces);
+ char *buf = (char*)res.data.ptr;
+
+ DASSERT(buf);
+ if (align_left)
+ {
+ memcpy(buf,str,copy_len);
+ memset(buf+copy_len,' ',spaces);
+ }
+ else
+ {
+ memset(buf,' ',spaces);
+ memcpy(buf+spaces,str,copy_len);
+ }
+ return res;
+}
+
+///////////////////////////////////////////////////////////////////////////////
ccp AlignUTF8ToCircBuf ( ccp str, int fw, int prec )
{
@@ -1088,6 +1127,45 @@ ccp AlignUTF8ToCircBuf ( ccp str, int fw, int prec )
}
///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+exmem_t AlignEUTF8 ( exmem_dest_t *dest, ccp str, int str_len, int fw, int prec )
+{
+ int slen = str_len < 0
+ ? ScanUTF8Length(str)
+ : ScanUTF8LengthE(str,str+str_len);
+
+ if ( prec >= 0 && slen > prec )
+ slen = prec;
+
+ const int align_left = fw < 0;
+ if (align_left)
+ fw = -fw;
+ if ( fw < slen )
+ fw = slen;
+ int spaces = fw - slen;
+
+ ccp end = SkipEUTF8Char(str,slen);
+ const int copy_len = end - str;
+
+ exmem_t res = GetExmemDestBuf(dest,copy_len+spaces);
+ char *buf = (char*)res.data.ptr;
+
+ DASSERT(buf);
+ if (align_left)
+ {
+ memcpy(buf,str,copy_len);
+ memset(buf+copy_len,' ',spaces);
+ }
+ else
+ {
+ memset(buf,' ',spaces);
+ memcpy(buf+spaces,str,copy_len);
+ }
+ return res;
+}
+
+///////////////////////////////////////////////////////////////////////////////
ccp AlignEUTF8ToCircBuf ( ccp str, int fw, int prec )
{
diff --git a/project/dclib/dclib-utf8.h b/project/dclib/dclib-utf8.h
index 5236a4e..86556c5 100644
--- a/project/dclib/dclib-utf8.h
+++ b/project/dclib/dclib-utf8.h
@@ -36,7 +36,7 @@
#define DCLIB_UTF8_H 1
#ifndef WIN_DCLIB
-#include "dclib-types.h"
+#include "dclib-basics.h"
///////////////////////////////////////////////////////////////////////////////
///// this software is taken from dcLib2 and now publiced under GPL2. /////
@@ -113,10 +113,11 @@ int CalcUTF8PrintFW ( ccp str, ccp end, uint wanted_fw );
char * PrintUTF8Char ( char * buf, u32 code );
char * PrintUTF8CharToCircBuf ( u32 code );
+exmem_t AlignUTF8 ( exmem_dest_t *dest, ccp str, int str_len, int fw, int prec );
ccp AlignUTF8ToCircBuf ( ccp str, int fw, int prec );
///////////////////////////////////////////////////////////////////////////////
-// special variants, that ignore known escape seqeuences
+// special variants, that ignore known escape sequences
char * NextEUTF8Char ( ccp str );
char * NextEUTF8CharE ( ccp str, ccp end );
@@ -125,6 +126,7 @@ char * SkipEUTF8CharE ( ccp str, ccp end, int skip );
int ScanEUTF8Length ( ccp str );
int ScanEUTF8LengthE ( ccp str, ccp end );
+exmem_t AlignEUTF8 ( exmem_dest_t *dest, ccp str, int str_len, int fw, int prec );
ccp AlignEUTF8ToCircBuf ( ccp str, int fw, int prec );
///////////////////////////////////////////////////////////////////////////////
diff --git a/project/revision.sh b/project/revision.sh
index 59a8b6f..f274cf3 100644
--- a/project/revision.sh
+++ b/project/revision.sh
@@ -1 +1 @@
-revision=8612
+revision=8627
diff --git a/project/src/lib-file.c b/project/src/lib-file.c
index 16037f7..94d1b80 100644
--- a/project/src/lib-file.c
+++ b/project/src/lib-file.c
@@ -4074,7 +4074,7 @@ enumError SavePrefixTable ( FILE *f, const mkw_prefix_t * tab )
fprintf(f,
"#PREFIX1\r\n"
- "#> prefix|info|flags|order|\r\n"
+ "#> prefix|info|flags|order|color_index|\r\n"
"# Info flags: N: by Nintento, M: Original Mario Kart\r\n"
"# Functional flags: 1|2: Can be used as first|second part of a combi\r\n"
"#%.68s\r\n"
@@ -4092,13 +4092,13 @@ enumError SavePrefixTable ( FILE *f, const mkw_prefix_t * tab )
if ( fw_info < info.data.len )
fw_info = info.data.len;
- fprintf(f,"%s|%s|%s%s%s%s|%u|\r\n",
+ fprintf(f,"%s|%s|%s%s%s%s|%u|%u|\r\n",
prefix.data.ptr, info.data.ptr,
tab->flags & MPF_NINTENDO ? "N" : "",
tab->flags & MPF_MARIOKART ? "M" : "",
tab->flags & MPF_PREFIX1 ? "1" : "",
tab->flags & MPF_PREFIX2 ? "2" : "",
- tab->order );
+ tab->order, tab->color );
FreeExMem(&prefix);
FreeExMem(&info);
@@ -4135,6 +4135,7 @@ enumError SavePrefixTableFN ( ccp fname, const mkw_prefix_t * tab )
///////////////////////////////////////////////////////////////////////////////
ccp opt_plus = "+";
+ccp opt_printf = 0;
///////////////////////////////////////////////////////////////////////////////
@@ -4153,7 +4154,7 @@ void ResetSPF ( split_filename_t *spf )
void AnalyseSPF
(
- split_filename_t *spf, // valid pointet
+ split_filename_t *spf, // valid pointer
bool init_spf, // true: InitializeSPF(), false: ResetSPF()
ccp source, // NULL or ponter to name
ccp src_end, // end of source. if 0 then use strlen()
@@ -4174,6 +4175,7 @@ void AnalyseSPF
if ( !source || !*source || src_end && src_end <= source )
return;
+ const int max_attrib = 100;
char buf[100];
@@ -4276,7 +4278,7 @@ void AnalyseSPF
spf->norm.len = nlen;
- //--- attributes and authors
+ //--- attributes
p1 = memrchr(name,'[',nlen);
if (p1)
@@ -4291,8 +4293,34 @@ void AnalyseSPF
while ( end > name && end[-1] == ' ' )
end--;
nlen = end - name;
+
+ mem_t attrib_list[max_attrib+2];
+ const uint n = SplitByCharMem(attrib_list,max_attrib+1,spf->attribs,',');
+ for ( int i = 0; i < n; i++ )
+ {
+ mem_t p = attrib_list[i];
+
+ float speed = 0.0;
+ char *end;
+ if ( p.ptr[0] == 'x' )
+ speed = strtof(p.ptr+1,&end);
+ else if (!memcmp(p.ptr,"×",2))
+ speed = strtof(p.ptr+2,&end);
+ if ( speed > 0.0 && end == p.ptr + p.len )
+ spf->speed_factor = speed;
+
+ if ( p.len == 4 && !memcmp(p.ptr+1,"lap",3) || p.len == 5 && !memcmp(p.ptr+1,"laps",4) )
+ {
+ const uint laps = p.ptr[0] - '0';
+ if ( laps < 10 )
+ spf->lap_count = laps;
+ }
+ }
}
+
+ //--- authors
+
p1 = memrchr(name,'(',nlen);
if (p1)
{
@@ -4421,34 +4449,6 @@ void AnalyseSPF
}
- //--- special chars
-
- #if SUPPORT_SPLIT_SIGN
- p1 = name;
- for (;;)
- {
- p2 = NextUTF8Char(p1);
- const int len = p2 - p1;
- if ( ( !len || memcmp(p1,"→",len) && memcmp(p1,"»",len) )
- && ( len != 1 || !strchr("~>^",*p1) )
- )
- {
- break;
- }
- p1 = p2;
- }
- if ( p1 > name )
- {
- if ( *p1 == ' ' )
- p1++;
- spf->sign.ptr = name;
- spf->sign.len = p1 - name;
- name = p1;
- nlen = end - name;
- }
- #endif
-
-
//--- boost
if (!strncasecmp(name,"boost:",6))
@@ -4474,7 +4474,7 @@ void AnalyseSPF
spf->game1.ptr = name;
spf->game1.len = p1 - name;
spf->game = spf->game1;
- spf->game_color = pre1->color;
+ spf->game1_color = pre1->color;
spf->game_order = 1000 * pre1->order;
int add_game = 998;
name = p1+1;
@@ -4488,12 +4488,13 @@ void AnalyseSPF
const mkw_prefix_t *pre2 = FindPrefix(name,p1-name,true);
if ( pre2 && pre2->flags & MPF_PREFIX2 )
{
- spf->game2.ptr = name;
- spf->game2.len = p1 - name;
- spf->game.len += spf->game2.len + 1;
- name = p1+1;
- nlen = end - name;
- add_game = 2*pre2->order;
+ spf->game2.ptr = name;
+ spf->game2.len = p1 - name;
+ spf->game.len += spf->game2.len + 1;
+ spf->game2_color = pre2->color;
+ name = p1+1;
+ nlen = end - name;
+ add_game = 2*pre2->order;
}
}
}
@@ -4510,6 +4511,367 @@ void AnalyseSPF
spf->name.len = nlen;
}
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetPSP ( print_split_par_t *psp )
+{
+ if (psp)
+ {
+ ResetEML(&psp->u_list);
+ memset(psp,0,sizeof(*psp));
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+exmem_t PrintSPF
+(
+ exmem_dest_t *dest, // Kind of destination, if NULL then MALLOC()
+ const split_filename_t
+ *spf, // Valid and initialized source
+ print_split_par_t *par // valid struct with parameters
+)
+{
+ const int MAX_FW = 1000;
+ int active_color = 0;
+
+ bool skip = false;
+ ccp format = 0;
+ char fbuf[500];
+ if (par)
+ {
+ par->u_item = 0;
+
+ if (par->format)
+ {
+ ScanEscapedString(fbuf,sizeof(fbuf),par->format,-1,true,0,0);
+ format = fbuf;
+ }
+ }
+
+ char buf[2000], tempbuf[20];
+ char *end_buf = buf + sizeof(buf) - 1, *ptr = buf;
+
+ char destbuf[200];
+ exmem_dest_t exdest = { .buf = destbuf, .buf_size = sizeof(destbuf), .try_circ = true };
+
+ if ( spf && format )
+ {
+ ccp saved_format[4] = {0}; // max 3 needed, 4'th for security
+ int saved_index = 0;
+
+ for(;;)
+ {
+ while ( *format && ptr < end_buf )
+ {
+ if ( *format != '%' )
+ {
+ *ptr++ = *format++;
+ continue;
+ }
+
+ format++;
+ if ( *format == '%' )
+ {
+ *ptr++ = *format++;
+ continue;
+ }
+
+
+ //--- now we have a print instruction
+ //--- scan flags
+
+ bool left_adjust = false;
+ int add_space = 0; // -1:suppres, 0:auto, 1:force
+ int add_colors = 0;
+ bool no_braces = false;
+ ccp force_braces = 0;
+ bool multi_use = false;
+ int always = 0;
+
+ for(;;)
+ {
+ switch(*format++)
+ {
+ case '-': left_adjust = true; break;
+ case ' ': add_space = 1; break;
+ case '0': add_space = -1; break;
+ case '!': no_braces = true; break;
+ case '(': force_braces = "()"; break;
+ case '{': force_braces = "{}"; break;
+ case '[': force_braces = "[]"; break;
+ case '<': force_braces = "<>"; break;
+ case '+': multi_use = true; break;
+ case '@': always++; break;
+ case '#': add_colors++; break;
+ default: goto end_scan_flags;
+ }
+ }
+ end_scan_flags:;
+ --format;
+
+
+ //--- skip entry*
+
+ if ( multi_use )
+ {
+ if ( par->u_skip_mode > 0 )
+ skip = true;
+
+ if ( par->u_use_list && !par->u_item )
+ {
+ *ptr = 0;
+ bool found;
+ par->u_item = FindInsertEML(&par->u_list,buf,CPM_COPY,&found);
+ if ( !found && !par->u_skip_mode )
+ skip = true;
+ }
+ }
+
+
+ //--- scan field width
+
+ int fw = 0;
+ if ( *format >= '0' && *format <= '9' )
+ {
+ while ( *format >= '0' && *format <= '9' )
+ fw = fw * 10 + *format++ - '0';
+ }
+ if ( fw > MAX_FW )
+ fw = MAX_FW;
+
+
+ //----- scan precision
+
+ int prec = -1;
+ if ( *format == '.' )
+ {
+ format++;
+ prec = 0;
+
+ while ( *format >= '0' && *format <= '9' )
+ prec = prec * 10 + *format++ - '0';
+ if ( prec > MAX_FW )
+ prec = MAX_FW;
+ }
+
+ mem_t src = {0}; // source string
+ int color = 0; // >0: color index
+ ccp braces = 0; // NULL or kind of default braces
+ bool auto_space = true; // add additional space before
+
+ switch(*format++)
+ {
+ case 'a': // authors: list of authors, format "(authors)", options=raw, curly braces
+ src = spf->authors;
+ braces = "()";
+ break;
+
+ case 'A': // attribs: list of attributes, format "(authors)", options=raw
+ src = spf->attribs;
+ braces = "[]";
+ break;
+
+ case 'b': // boost: boost prefix
+ src = spf->boost;
+ if (add_colors)
+ color = 0x32; // RED3
+ break;
+
+ case 'D': // f_d: empty or "_d"
+ src = spf->f_d;
+ if (!add_space)
+ add_space = -1;
+ break;
+
+ case 'e': // extra: extra info, format "(extra)", options=raw, curly braces
+ src = spf->extra;
+ braces = "()";
+ if (add_colors)
+ color = 0x21; // BLUE1
+ break;
+
+ case 'E': // f_ext: file extention
+ src = spf->f_ext;
+ if (!add_space)
+ add_space = -1;
+ break;
+
+ case 'g': // game1: first game prefix
+ src = spf->game1;
+ if (add_colors)
+ color = spf->game1_color;
+ break;
+
+ case 'G': // game2: second game prefix
+ src = spf->game2;
+ if (add_colors)
+ color = spf->game2_color;
+ break;
+
+ case 'F': // f_name: source name, stripped
+ src = spf->f_name;
+ break;
+
+ case 'l': // lap_count
+ {
+ int laps = par->lap_count > 0 ? par->lap_count : spf->lap_count;
+ if ( always > 1 || laps > 0 && ( always || laps != 3 ))
+ {
+ if (!laps)
+ laps = 3;
+ src.ptr = tempbuf;
+ src.len = snprintf(tempbuf,sizeof(tempbuf), "%u%s%s",
+ laps,
+ no_braces ? "" : "lap",
+ no_braces ? "" : laps != 1 ? "s" : fw > 4 ? " " : "" );
+ if (add_colors)
+ color = 0x21; // BLUE1
+ }
+ }
+ break;
+
+ case 'L': // LOTTERY ALIAS
+ saved_format[saved_index++] = format;
+ format = add_colors > 1
+ ? "%#N%#e%#s%#+v" : add_colors
+ ? "%#N%e%#s%#+v"
+ : "%N%e%s%+v";
+ break;
+
+ case 'n': // name: name
+ src = spf->name;
+ break;
+
+ case 'N': // RACE ALIAS
+ saved_format[saved_index++] = format;
+ format = add_colors ? "%#P%#b%#p%n" : "%P%b%p%n";
+ break;
+
+ case 'O': // norm: normalized name, alloced
+ src = spf->norm;
+ break;
+
+ case 'p': // game: combined game prefix
+ src = spf->game;
+ if (add_colors)
+ color = spf->game1_color;
+ break;
+
+ case 'P': // plus: plus prefix
+ src = spf->plus;
+ if (add_colors)
+ color = 0x31; // BLUE2
+ break;
+
+ case 'R': // RACE ALIAS
+ saved_format[saved_index++] = format;
+ format = add_colors > 1
+ ? "%##L\n%!a" : add_colors
+ ? "%#L\n%!a"
+ : "%L\n%!a";
+ break;
+
+ case 's': // speed_factor
+ {
+ float speed = par->speed_factor > 0.0 ? par->speed_factor : spf->speed_factor;
+ if ( always > 1 || speed > 0.0 && ( always || speed != 1.0 ))
+ {
+ if ( speed <= 0.0 )
+ speed = 1.0;
+ src.ptr = tempbuf;
+ src.len = snprintf(tempbuf,sizeof(tempbuf), "%s%*.*f",
+ no_braces ? "" : "×", fw, prec<0 ? 2 : prec, speed );
+ if ( prec < 0 )
+ {
+ while ( src.ptr[src.len-1] == '0' )
+ src.len--;
+ if ( src.ptr[src.len-1] == '.' )
+ src.len--;
+ }
+ if (add_colors)
+ color = 0x21; // BLUE1
+ prec = -1;
+ }
+ }
+ break;
+
+ case 'v': // version: version number
+ src = spf->version;
+ if (add_colors)
+ color = 0x21; // BLUE1
+ break;
+ }
+
+ if ( skip && multi_use )
+ par->u_skip_count++;
+ else if ( src.len )
+ {
+ if (force_braces)
+ braces = force_braces;
+ else if (no_braces)
+ braces = 0;
+
+ if ( add_space > 0 || add_space == 0 && auto_space && ptr > buf && (u8)ptr[-1] > ' ' )
+ *ptr++ = ' ';
+
+ if ( color != active_color )
+ {
+ snprintf(destbuf,sizeof(destbuf),"\\c{%x}",color);
+ ptr = StringCopyE(ptr,end_buf,destbuf);
+ active_color = color;
+ }
+
+ if (braces)
+ {
+ *ptr++ = braces[0];
+ fw = fw > 2 ? fw-2 : 0;
+ }
+
+ if ( fw > 0 || prec >= 0 )
+ {
+ exmem_t res = AlignUTF8(&exdest,src.ptr,src.len,left_adjust?-fw:fw,prec);
+ ptr = StringCopyEM(ptr,end_buf,res.data.ptr,res.data.len);
+ FreeExMem(&res);
+ }
+ else
+ ptr = StringCopyEM(ptr,end_buf,src.ptr,src.len);
+
+ if (braces)
+ *ptr++ = braces[1];
+ }
+ } // while
+ if (!saved_index)
+ break;
+ format = saved_format[--saved_index];
+ } // for
+ } // if
+
+ *ptr = 0;
+ exmem_t res = GetExmemDestBuf(dest,ptr-buf);
+ memcpy((char*)res.data.ptr,buf,res.data.len+1);
+ return res;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+exmem_t PrintNameSPF
+(
+ exmem_dest_t *dest, // Kind of destination, if NULL then MALLOC()
+ ccp source, // NULL or pointer to name to analyze
+ ccp src_end, // End of source. If 0 then use strlen().
+ print_split_par_t *par // valid struct with parameters
+)
+{
+
+ split_filename_t spf;
+ AnalyseSPF(&spf,true,source,src_end,CPM_LINK,par?par->plus_mode:0);
+ exmem_t res = PrintSPF(dest,&spf,par);
+ ResetSPF(&spf);
+ return res;
+}
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// END ///////////////
diff --git a/project/src/lib-lecode.c b/project/src/lib-lecode.c
index ad6d94c..4d06fb0 100644
--- a/project/src/lib-lecode.c
+++ b/project/src/lib-lecode.c
@@ -139,7 +139,7 @@ int ScanOptSzsMode ( ccp arg )
return 1;
opt_szs_mode = cmd->id;
- PRINT1("SZS-MODE=%d\n",opt_szs_mode);
+ PRINT("SZS-MODE=%d\n",opt_szs_mode);
return 0;
}
diff --git a/project/src/lib-ledis.c b/project/src/lib-ledis.c
index e85b31a..3bc85a2 100644
--- a/project/src/lib-ledis.c
+++ b/project/src/lib-ledis.c
@@ -1649,6 +1649,7 @@ void ResetLD ( le_distrib_t *ld )
ResetParamField(&ld->dis_param);
FREE(ld->lpar);
ResetLSP(&ld->spar);
+ FreeString(ld->separator);
if (ld->ctcode)
{
@@ -2290,6 +2291,8 @@ void ScanRefSTLD
IDX_MUSIC,
IDX_FLAGS,
IDX_HIDDEN,
+ IDX_LAPS,
+ IDX_SPEED,
IDX_SHA1,
IDX_SHA1_D,
IDX_IDENT,
@@ -2305,6 +2308,9 @@ void ScanRefSTLD
while (NextLineScanText(st))
{
+ if ( *st->line == '@' )
+ continue;
+
mem_t srcline = { .ptr = st->line, .len = st->eol - st->line };
mem_t src[IDX__N+2];
const uint n = SplitByCharMem(src,IDX__N+1,srcline,'|');
@@ -2322,6 +2328,8 @@ void ScanRefSTLD
lt->property = str2l(src[IDX_PROPERTY].ptr,0,10);
lt->music = str2l(src[IDX_MUSIC].ptr,0,10);
lt->flags = str2l(src[IDX_FLAGS].ptr,0,10);
+ lt->lap_count = str2l(src[IDX_LAPS].ptr,0,10);
+ lt->speed_factor= strtof(src[IDX_SPEED].ptr,0);
char buf[LE_TRACK_STRING_MAX+1];
if ( n > IDX_SHA1 ) SetIdentOptLT(lt,xstring(buf,sizeof(buf),src[IDX_SHA1]), 0,1,ld->spar.opt );
@@ -2384,6 +2392,9 @@ void ScanStrSTLD
while (NextLineScanText(st))
{
+ if ( *st->line == '@' )
+ continue;
+
mem_t srcline = { .ptr = st->line, .len = st->eol - st->line };
mem_t src[IDX__N+2];
const uint n = SplitByCharMem(src,IDX__N+1,srcline,'|');
@@ -2409,7 +2420,7 @@ void ScanStrSTLD
StringCopySM(buf,sizeof(buf),src[IDX_STRING].ptr,src[IDX_STRING].len);
ScanEscapedStringPipe(buf,sizeof(buf),buf,0);
- PRINT1(">>>> %s = %s\n",GetNameLSP(&spar),buf);
+ PRINT0(">>>> %s = %s\n",GetNameLSP(&spar),buf);
const int dmode = str2l(src[IDX_D_MODE].ptr,0,10);
if ( dmode == 2 )
spar.use_d = true;
@@ -2463,7 +2474,7 @@ bool ScanSha1LineLD
bool ident_only // TRUE: SetIdent*LT() only
)
{
- if ( !ld || !src || !end )
+ if ( !ld || !src || *src == '@' || !end )
return false;
bool is_arena = false;
@@ -2718,15 +2729,18 @@ static enumError ScanLeDefTRACKS
if ( !ld || !si )
return ERR_MISSING_PARAM;
- enum { C_SLOT, C_TRACK, C_IDENT, C_FILE, C_NAME, C_XNAME,
+ enum { C_SLOT, C_TRACK, C_LAPS, C_SPEED, C_IDENT, C_FILE, C_NAME, C_XNAME,
C_LIST, C_STD_ARENAS, C_STD_VERSUS };
- enum { O_STRING = 0x100 };
+ enum { O_CURRENT = 0x100, O_STRING = 0x200 };
static const KeywordTab_t commands[] =
{
{ C_SLOT, "SLOT", 0, 0 },
{ C_TRACK, "TRACK", 0, 0 },
+ { C_LAPS, "LAPS", "LAP", O_CURRENT },
+ { C_SPEED, "SPEED", 0, O_CURRENT },
+
{ C_IDENT, "IDENT", 0, O_STRING },
{ C_FILE, "FILE", 0, O_STRING },
{ C_NAME, "NAME", 0, O_STRING },
@@ -2791,27 +2805,28 @@ static enumError ScanLeDefTRACKS
continue;
}
- const le_options_t opt = cmd ? cmd->opt : 0;
- if ( opt & O_STRING || define_set )
+ const le_options_t opt = cmd ? cmd->opt : O_CURRENT;
+ if ( !current_lt && opt & (O_CURRENT|O_STRING) )
{
- if (!current_lt)
+ if (!si->no_warn)
{
- if (!si->no_warn)
- {
- ccp eol = FindNextLineFeedSI(si,true);
- ScanFile_t *sf = si->cur_file;
- DASSERT(sf);
- ERROR0(ERR_WARNING,
- "File %s, section [TRACK-LIST], line #%u:\nNo current track: %.*s\n",
- sf->name, sf->line,
- (int)(eol - sf->prev_ptr), sf->prev_ptr );
- }
- if ( max_err < ERR_WARNING )
- max_err = ERR_WARNING;
- GotoEolSI(si);
- continue;
+ ccp eol = FindNextLineFeedSI(si,true);
+ ScanFile_t *sf = si->cur_file;
+ DASSERT(sf);
+ ERROR0(ERR_WARNING,
+ "File %s, section [TRACK-LIST], line #%u:\nNo current track: %.*s\n",
+ sf->name, sf->line,
+ (int)(eol - sf->prev_ptr), sf->prev_ptr );
}
+ if ( max_err < ERR_WARNING )
+ max_err = ERR_WARNING;
+ GotoEolSI(si);
+ continue;
+ }
+ if ( opt & O_STRING || define_set )
+ {
+ DASSERT(current_lt);
enumError err = ScanStringSI(si,&string_par);
if ( max_err < err )
max_err = err;
@@ -2875,6 +2890,24 @@ static enumError ScanLeDefTRACKS
}
break;
+ case C_LAPS:
+ ASSERT(current_lt);
+ {
+ uint uval;
+ if ( !ScanUIntValueSI(si,&uval) && uval > 0 && uval < 10 )
+ current_lt->lap_count = uval;
+ }
+ break;
+
+ case C_SPEED:
+ ASSERT(current_lt);
+ {
+ double dval;
+ if ( !ScanDValueSI(si,&dval) && dval > 0.0 )
+ current_lt->speed_factor = dval;
+ }
+ break;
+
case C_IDENT:
SetIdentOptLT(current_lt,string_par.str,false,true,ld->spar.opt);
break;
@@ -3705,7 +3738,9 @@ enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw )
ScanOptTrackSource(".",1,opt_szs_mode);
err = ERR_OK;
- le_track_arch_t *ta = GetNextArchLD(ld);
+ le_track_arch_t *ta= GetNextArchLD(ld);
+ ta->lt.lap_count = as.lap_count;
+ ta->lt.speed_factor = as.speed_factor;
if (szs.is_arena)
{
@@ -3751,11 +3786,7 @@ enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw )
StringCopySM(buf,sizeof(buf),spf.f_name.ptr,spf.f_name.len);
SetFileLT(&ta->lt,&spar,buf);
- #if SUPPORT_SPLIT_SIGN
- mem_t list[] = { spf.sign, spf.boost, spf.game, spf.name, spf.extra };
- #else
mem_t list[] = { spf.boost, spf.game, spf.name, spf.extra };
- #endif
mem_src_t msrc = { .src = list, .n_src = sizeof(list)/sizeof(*list) };
exmem_t exsum = ExMemCat(&exdest,space,&msrc);
SetNameLT(&ta->lt,&spar,exsum.data.ptr);
@@ -3809,7 +3840,7 @@ enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw )
ta->plus_order = spf.plus_order;
ta->game_order = spf.game_order;
-// ta->game_color = spf.game_color;
+// ta->game_color = spf.game1_color;
//-- clean
@@ -4404,10 +4435,15 @@ static enumError search_func
ASSERT(s);
ASSERT(s->ld);
- const enumError err = ImportFileLD(s->ld,path.ptr,false,false);
+ raw_data_t raw;
+ enumError err = LoadRawData(&raw,true,path.ptr,0,opt_ignore>0,0);
+ if (!err)
+ err = ImportRawDataLD(s->ld,&raw);
+ ResetRawData(&raw);
+
+ s->count++;
if ( s->max_err < err )
s->max_err = err;
- s->count++;
return err;
}
@@ -4421,6 +4457,7 @@ enumError ImportFileLD
bool support_options // support options (leading '+' and no slash )
)
{
+ PRINT0("ImportFileLD(,%s,%d,%d)\n",fname,use_wildcard,support_options);
enumError err = ERR_MISSING_PARAM;
if ( ld && fname )
{
@@ -4434,6 +4471,7 @@ enumError ImportFileLD
struct stat st;
if ( use_wildcard && HaveWildcards(MemByString(fname)) && stat(fname,&st) )
{
+ PRINT0(" > SEARCH %s\n",fname);
struct search_t param = { .ld = ld };
SearchPaths(fname,0,false,search_func,&param);
return param.count
@@ -4827,14 +4865,15 @@ enumError CreateRefLD ( FILE *f, le_distrib_t *ld, bool add_strings )
UpdateCupsLD(ld);
SetupReferenceList(ld,filter_options_td,ld->spar.opt);
- fprintf(f,"%s : LE-CODE track reference v1\r\n",LE_REFERENCE_MAGIC8);
+ fprintf(f,"%s : LE-CODE track reference v1.%u\r\n@VERSION=%u\r\n",
+ LE_REFERENCE_MAGIC8, LE_REFERENCE_VERSION, LE_REFERENCE_VERSION );
ccp filter = GetOutputFilterLEO(ld->spar.opt&LEO_M_OUTPUT);
if (filter)
fprintf(f,"# Active output filter: %s\r\n",filter);
fprintf(f,
- "#> track_slot|type|orig|cup_slot|cup_slot_name|property|music|flags|hidden|sha1|sha1_d|%s\r\n",
+ "#> track_slot|type|orig|cup_slot|cup_slot_name|property|music|flags|hidden|laps|speed|sha1|sha1_d|%s\r\n",
add_strings ? "ident|ident_d|file|file_d|name|name_d|xname|xname_d|" : "" );
const bool no_d = ( ld->spar.opt & LEO_NO_D_FILES ) != 0;
@@ -4845,12 +4884,13 @@ enumError CreateRefLD ( FILE *f, le_distrib_t *ld, bool add_strings )
count++;
const le_track_t *lt = *plt;
- fprintf(f,"%u|%s|%u|%u|%s|%u|%u|%u|%u|%s|%s|",
+ fprintf(f,"%u|%s|%u|%u|%s|%u|%u|%u|%u|%u|%5.3f|%s|%s|",
lt->track_slot, GetNameLTTY(lt->track_type),
lt->is_original,
lt->cup_slot, GetCupLT(lt,""),
lt->property, lt->music,
lt->flags, IsHiddenLETF(lt->flags),
+ lt->lap_count, lt->speed_factor,
GetSha1LT(lt,0,""),
no_d ? 0 : GetSha1LT(lt,1,"") );
@@ -4892,7 +4932,8 @@ enumError CreateStringsLD ( FILE *f, le_distrib_t *ld )
return ERR_MISSING_PARAM;
SetupReferenceList(ld,filter_options_td,ld->spar.opt);
- fprintf(f,"%s : LE-CODE track strings v1\r\n",LE_STRINGS_MAGIC8);
+ fprintf(f,"%s : LE-CODE track strings v1.%u\r\n@VERSION=%u\r\n",
+ LE_STRINGS_MAGIC8, LE_STRINGS_VERSION, LE_STRINGS_VERSION );
ccp filter = GetOutputFilterLEO(ld->spar.opt&LEO_M_OUTPUT);
if (filter)
@@ -5103,8 +5144,11 @@ enumError CreateSha1LD
{
fprintf(f,
"%s\r\n"
+ "@VERSION=%u\r\n"
"# A SHA1 list, that can be used for example @ Wiimmfi.de\r\n"
- ,LE_SHA1REF_MAGIC8 );
+ ,LE_SHA1REF_MAGIC8
+ ,LE_SHA1REF_VERSION
+ );
ccp filter = GetOutputFilterLEO(ld->spar.opt&LEO_M_OUTPUT);
if ( filter && *filter )
@@ -5287,11 +5331,18 @@ static void print_ledef_track
max_len = slen;
}
}
- max_len = ( max_len + 18 ) / 8 * 8 - 1;
#else
int max_len = 7;
#endif
+ max_len = ( max_len + 18 ) / 8 * 8 - 1;
+ const int n_tabs = ( max_len - 7 ) / 8;
+
+ if ( lt->lap_count > 0 && lt->track_type & LTTY_TRACK )
+ fprintf(f,"\tlaps%.*s%u\r\n",n_tabs,Tabs20,lt->lap_count);
+ if ( lt->speed_factor > 0.0 )
+ fprintf(f,"\tspeed%.*s%5.3f\r\n",n_tabs,Tabs20,lt->speed_factor);
+
print_ledef_text(f,ld,max_len,"ident",GetIdentLT(lt,false,true,0));
print_ledef_text(f,ld,max_len,"file",GetFileLT(lt,0));
print_ledef_text(f,ld,max_len,"name",GetNameLT(lt,0));
@@ -5642,7 +5693,7 @@ enumError CreateBmgLD ( FILE *f, le_distrib_t *ld, bool bmg_text )
le_options_t source = ld->spar.opt & LEO_M_BMG;
if (!source)
- source = LEO_M_BMG;
+ source = LEO_DEFAULT_BMG;
for ( int slot = 0; slot < ld->tlist_used; slot++ )
{
@@ -5668,7 +5719,7 @@ enumError CreateBmgLD ( FILE *f, le_distrib_t *ld, bool bmg_text )
{
bmg_item_t *bi = InsertItemBMG(&bmg,mid,0,0,0);
ASSERT(bi);
- AssignItemTextBMG(bi,text,-1);
+ AssignItemScanTextBMG(bi,text,-1);
}
}
@@ -5684,7 +5735,7 @@ enumError CreateBmgLD ( FILE *f, le_distrib_t *ld, bool bmg_text )
{
bmg_item_t *bi = InsertItemBMG(&bmg,mid,0,0,0);
ASSERT(bi);
- AssignItemTextBMG(bi,text,-1);
+ AssignItemScanTextBMG(bi,text,-1);
}
}
@@ -5692,14 +5743,14 @@ enumError CreateBmgLD ( FILE *f, le_distrib_t *ld, bool bmg_text )
{
bmg_item_t *bi = InsertItemBMG(&bmg,slot+MID_CT_TRACK_BEG,0,0,0);
ASSERT(bi);
- AssignItemTextBMG(bi,text,-1);
+ AssignItemScanTextBMG(bi,text,-1);
}
if ( source & LEO_LECODE )
{
bmg_item_t *bi = InsertItemBMG(&bmg,slot+MID_LE_TRACK_BEG,0,0,0);
ASSERT(bi);
- AssignItemTextBMG(bi,text,-1);
+ AssignItemScanTextBMG(bi,text,-1);
}
}
@@ -5899,6 +5950,112 @@ enumError CreateDebugLD ( FILE *f, const le_distrib_t *ld )
/////////////// le_distrib_t: text jobs ///////////////
///////////////////////////////////////////////////////////////////////////////
+enumError SeparatorLD ( le_distrib_t *ld, ccp arg )
+{
+ if (!ld)
+ return ERR_MISSING_PARAM;
+
+ FreeString(ld->separator);
+ ld->separator = !arg ? 0 : !*arg ? EmptyString : STRDUP(arg);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CopyLD ( le_distrib_t *ld, const le_strpar_t *dest,
+ const le_strpar_t *src, int n_src )
+{
+ if ( !ld || !dest || !src || n_src < 1 )
+ return ERR_MISSING_PARAM;
+
+ char buf[LE_TRACK_STRING_MAX+10];
+ ccp sep = ld->separator ? ld->separator : " ";
+
+ SetupReferenceList(ld,filter_options_td,dest->opt);
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ le_track_t *lt = *plt;
+ char *bufptr = buf;
+ for ( int idx = 0; idx < n_src; idx++ )
+ {
+ if ( bufptr > buf )
+ bufptr = StringCopyE(bufptr,buf+sizeof(buf),sep);
+ ccp text = GetTextLT(lt,src+idx,0);
+ if (IsInputNameValidLEO(text,src[idx].opt))
+ bufptr = StringCopyE(bufptr,buf+sizeof(buf),text);
+ if ( bufptr >= buf + LE_TRACK_STRING_MAX )
+ {
+ buf[LE_TRACK_STRING_MAX-1] = 0;
+ break;
+ }
+ }
+
+ ccp *ptr = GetPtrLT(lt,dest);
+ if (IsAssignmentAllowedLEO( ptr ? *ptr : 0,buf,dest->opt))
+ SetTextLT(lt,dest,buf);
+ }
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError SplitLD
+ ( le_distrib_t *ld, const le_strpar_t *dest, const le_strpar_t *src, ccp arg )
+{
+ if ( !ld || !dest || !src || !arg )
+ return ERR_MISSING_PARAM;
+
+ PRINT0("SPLIT: %s := %s / %s\n",GetNameLSP(dest),GetNameLSP(src),arg);
+
+ typedef struct { le_track_t *first; bool done; } storage_t;
+ char destbuf[LE_TRACK_STRING_MAX+10];
+ exmem_dest_t exdest = { .buf = destbuf, .buf_size = sizeof(destbuf), .try_circ = true };
+
+ print_split_par_t psp = { .format = arg, .plus_mode = opt_plus, .u_use_list = true };
+
+ SetupReferenceList(ld,filter_options_td,dest->opt);
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ le_track_t *lt = *plt;
+ ccp text = GetTextLT(lt,src,0);
+ exmem_t res = PrintNameSPF(&exdest,text,0,&psp);
+ SetTextLT(lt,dest,res.data.ptr);
+ if (psp.u_item)
+ {
+ exmem_key_t *ek = psp.u_item;
+ if (!ek->data.data.ptr)
+ {
+ ek->data.data.ptr = CALLOC(1,sizeof(storage_t));
+ ek->data.data.len = sizeof(storage_t);
+ ek->data.is_alloced = true;
+ storage_t *st = (storage_t*)ek->data.data.ptr;
+ st->first = lt;
+ }
+ else
+ {
+ storage_t *st = (storage_t*)ek->data.data.ptr;
+ ASSERT(st);
+ ASSERT(st->first);
+ ASSERT(st->first!=lt);
+ if (!st->done)
+ {
+ st->done = true;
+ ccp text2 = GetTextLT(st->first,src,0);
+ exmem_t res2 = PrintNameSPF(&exdest,text2,0,&psp);
+ SetTextLT(st->first,dest,res2.data.ptr);
+ FreeExMem(&res2);
+ }
+ }
+ }
+ FreeExMem(&res);
+ }
+
+ ResetPSP(&psp);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
enumError SubstLD ( le_distrib_t *ld, const le_strpar_t *dest, ccp arg )
{
if ( !ld || !dest || !arg || !*arg )
@@ -5943,42 +6100,6 @@ enumError SubstLD ( le_distrib_t *ld, const le_strpar_t *dest, ccp arg )
return ERR_OK;
}
-///////////////////////////////////////////////////////////////////////////////
-
-enumError CopyLD ( le_distrib_t *ld, const le_strpar_t *dest,
- const le_strpar_t *src, int n_src )
-{
- if ( !ld || !dest || !src || n_src < 1 )
- return ERR_MISSING_PARAM;
-
- char buf[LE_TRACK_STRING_MAX+10];
-
- SetupReferenceList(ld,filter_options_td,dest->opt);
- for ( le_track_t **plt = ld->reflist; *plt; plt++ )
- {
- le_track_t *lt = *plt;
- char *bufptr = buf;
- for ( int idx = 0; idx < n_src; idx++ )
- {
- if ( bufptr > buf )
- *bufptr++ = '\1';
- ccp text = GetTextLT(lt,src+idx,0);
- if (IsInputNameValidLEO(text,src[idx].opt))
- bufptr = StringCopyE(bufptr,buf+sizeof(buf),text);
- if ( bufptr >= buf + LE_TRACK_STRING_MAX )
- {
- buf[LE_TRACK_STRING_MAX-1] = 0;
- break;
- }
- }
-
- ccp *ptr = GetPtrLT(lt,dest);
- if (IsAssignmentAllowedLEO( ptr ? *ptr : 0,buf,dest->opt))
- SetTextLT(lt,dest,buf);
- }
- return ERR_OK;
-}
-
//
///////////////////////////////////////////////////////////////////////////////
/////////////// le_distrib_t: copy files ///////////////
diff --git a/project/src/lib-ledis.h b/project/src/lib-ledis.h
index b39d629..168cae8 100644
--- a/project/src/lib-ledis.h
+++ b/project/src/lib-ledis.h
@@ -83,12 +83,15 @@
#define LE_REFERENCE_MAGIC8 "#LE-REF1"
#define LE_REFERENCE_MAGIC8_NUM 0x234c452d52454631ull
+#define LE_REFERENCE_VERSION 1
#define LE_STRINGS_MAGIC8 "#LE-STR1"
#define LE_STRINGS_MAGIC8_NUM 0x234c452d53545231ull
+#define LE_STRINGS_VERSION 1
#define LE_SHA1REF_MAGIC8 "#SHA1REF"
#define LE_SHA1REF_MAGIC8_NUM 0x2353484131524546ull
+#define LE_SHA1REF_VERSION 1
#define LE_PREFIX_MAGIC8 "#PREFIX1"
#define LE_PREFIX_MAGIC8_NUM 0x2350524546495831ull
@@ -233,7 +236,8 @@ typedef enum le_options_t
LEO_CTCODE = 0x0000040, // import track names from CT-CODE (0x4000..)
LEO_LECODE = 0x0000080, // import track names from LE-CODE (0x7000..)
LEO_MKW = LEO_MKW1 | LEO_MKW2,
- LEO_M_BMG = LEO_MKW | LEO_CTCODE | LEO_LECODE,
+ LEO_DEFAULT_BMG = LEO_MKW | LEO_LECODE,
+ LEO_M_BMG = LEO_MKW | LEO_LECODE | LEO_CTCODE,
//-- BMG input options
@@ -455,6 +459,9 @@ typedef struct le_track_t
le_music_t music; // music slot
le_flags_t flags; // flags
+ u8 lap_count; // number of laps, valid if >0.0
+ float speed_factor; // speed factor, valid if >0.0
+
le_track_id_t lti[2]; // index 0: normal, index 1:_d
ccp file; // NULL or filename of track
ccp name; // NULL or name of track
@@ -674,7 +681,8 @@ typedef struct le_distrib_t
bool is_initialized; // true: data is InitializeLD()
le_auto_setup_t auto_setup; // bit files (LAS_*)
- le_strpar_t spar; // current string param, incl. default 'opt'
+ le_strpar_t spar; // current string param, incl. default 'opt'
+ ccp separator; // NULL or separator for string functions.
le_track_t *tlist; // list of tracks
uint tlist_used; // used elements in 'tlist'
@@ -923,11 +931,18 @@ enumError CreateDebugLD ( FILE *f, const le_distrib_t *ld );
enumError CreateLecode4LD ( ccp fname, le_distrib_t *ld );
//-----------------------------------------------------------------------------
-// special jobs
+// string functions
+
+enumError SeparatorLD ( le_distrib_t *ld, ccp arg );
-enumError SubstLD ( le_distrib_t *ld, const le_strpar_t *dest, ccp arg );
enumError CopyLD ( le_distrib_t *ld, const le_strpar_t *dest,
const le_strpar_t *src, int n_src );
+enumError SplitLD ( le_distrib_t *ld, const le_strpar_t *dest,
+ const le_strpar_t *src, ccp arg );
+enumError SubstLD ( le_distrib_t *ld, const le_strpar_t *dest, ccp arg );
+
+//-----------------------------------------------------------------------------
+// special jobs
enumError TransferFilesLD ( le_distrib_t *ld, bool logit, bool testmode );
diff --git a/project/src/lib-lex.c b/project/src/lib-lex.c
index eb992d9..104fe93 100644
--- a/project/src/lib-lex.c
+++ b/project/src/lib-lex.c
@@ -156,7 +156,7 @@ static const feature_var_t kmp_feature_list[] =
static const feature_var_t lex_section_list[] =
{
- DEF_VAR( 1,HAVELEXS_FEA0, lex_sect_fea0, "LEX section FEA0" ),
+ DEF_VAR( 1,HAVELEXS_FEAT, lex_sect_feat, "LEX section FEAT" ),
DEF_VAR( 0,HAVELEXS_TEST, lex_sect_test, "LEX section TEST" ),
DEF_VAR( 0,HAVELEXS_SET1, lex_sect_set1, "LEX section SET1" ),
DEF_VAR( 0,HAVELEXS_CANN, lex_sect_cann, "LEX section CANN" ),
@@ -376,7 +376,7 @@ void SetIsLexFeaturesSZS ( features_szs_t *fs )
#if 1
// short cut for code below
- fs->f_lex = fs->lex_sect_fea0 = 1;
+ fs->f_lex = fs->lex_sect_feat = 1;
#else
// non optimized code
const feature_list_t *list;
@@ -396,8 +396,8 @@ int GetFeaturesStatusSZS ( const features_szs_t *fs )
{
// returns
// 0: all features set to null
- // 1: all features except f_lex + lex_sect_fea0 are set to null
- // 2: any features except f_lex + lex_sect_fea0 is not NULL
+ // 1: all features except f_lex + lex_sect_feat are set to null
+ // 2: any features except f_lex + lex_sect_feat is not NULL
DASSERT(fs);
@@ -407,7 +407,7 @@ int GetFeaturesStatusSZS ( const features_szs_t *fs )
return 0;
temp.f_lex = fs->f_lex;
- temp.lex_sect_fea0 = fs->lex_sect_fea0;
+ temp.lex_sect_feat = fs->lex_sect_feat;
return memcmp(&temp,fs,sizeof(temp)) ? 2 : 1;
}
@@ -419,6 +419,7 @@ void PrintFeaturesSZS
const features_szs_t *fs, // valid source
bool is_lex, // TRUE: Create output for a LEX file
int comments, // >0: add extended comments
+ int print_options, // >0: print options as additional bits
int print_modes, // >0: append ",MODES"
u8 include, // print only if all bits match
u8 exclude // exclude if any bit match
@@ -436,7 +437,7 @@ void PrintFeaturesSZS
"# %u: feature found with impact to game play.\n",
FZV_UNDEF, FZV_NO_IMPACT, FZV_MAYBE_IMPACT, FZV_IMPACT );
- if ( comments >= 1 )
+ if ( print_options > 0 )
PrintScriptVars(ps,0,
"#\n"
"# If value is %u, then some additional bits may be set:\n"
@@ -472,9 +473,7 @@ void PrintFeaturesSZS
const u8 value = ((u8*)fs)[var->offset];
if ( value || comments >= -2 )
{
- if ( head_mode == 1 )
- fputc('\n',ps->f);
- else if ( head_mode == 2 )
+ if ( head_mode == 2 )
{
const int hlen1 = strlen(list->heading1);
const int hlen2 = list->heading2 ? strlen(list->heading2) : 0;
@@ -496,11 +495,11 @@ void PrintFeaturesSZS
PrintScriptVars(ps,0,"# %s\n",var->comment);
ccp effect = GetFeaturesEffects(mode);
if (effect)
- PrintScriptVars(ps,0,"# %s\n",effect);
+ PrintScriptVars(ps,0,"# > %s\n",effect);
}
char valbuf[30];
- if ( value & FZV_M_OPTIONS && !is_lex && comments )
+ if ( value & FZV_M_OPTIONS && print_options >0 )
snprintf(valbuf,sizeof(valbuf),"0x%02x",value);
else
snprintf(valbuf,sizeof(valbuf),"%u", value & FZV_M_VALUE );
@@ -562,7 +561,7 @@ const features_szs_t * GetFeaturesModes()
m.kmp_uncond_oob = FZM_M_TYPE | FZM_M_WHERE;
// existence of a section don't have impact to gameplay => see lex attributes
- m.lex_sect_fea0 = FZM_SECTION;
+ m.lex_sect_feat = FZM_SECTION;
m.lex_sect_test = FZM_VISUAL | FZM_GAMEPLAY | FZM_M_TYPE | no_timetrial | FZM_SECTION;
m.lex_sect_set1 = FZM_GAMEPLAY | FZM_M_TYPE | FZM_ONLINE | FZM_SECTION;
m.lex_sect_cann = FZM_GAMEPLAY | FZM_M_TYPE | FZM_M_WHERE | FZM_SECTION;
@@ -947,7 +946,7 @@ static uint GetLexSortOrder ( u32 magic )
{
switch(magic)
{
- case LEXS_FEA0: return 1;
+ case LEXS_FEAT: return 1;
case LEXS_SET1: return 2;
case LEXS_TEST: return 9;
default: return 5;
@@ -1038,7 +1037,7 @@ static lex_item_t * AppendElementLEX
switch(magic)
{
- case LEXS_FEA0:
+ case LEXS_FEAT:
if ( size4 < sizeof(features_szs_t) )
size4 = ALIGN32(sizeof(features_szs_t),4);
break;
@@ -1264,7 +1263,7 @@ const have_lex_info_t have_lex_sect_info[HAVELEXS__N] =
{ LEXS_CANN, "cannon", 0 }, // HAVELEXS_CANN
{ LEXS_TEST, "test", 1 }, // HAVELEXS_TEST
{ LEXS_HIPT, "hidepos", sizeof(lex_hipt_rule_t) }, // HAVELEXS_HIPT
- { LEXS_FEA0, "features", 2 }, // HAVELEXS_FEA0
+ { LEXS_FEAT, "features", 2 }, // HAVELEXS_FEAT
//--- add new sections here (order is important)
};
@@ -1334,8 +1333,8 @@ void UpdateLEX ( lex_t * lex, bool add_missing, bool add_test )
if ( add_missing && lex->develop )
{
- //--- FEA0
- AppendFea0LEX(lex,false,0);
+ //--- FEAT
+ AppendFeatLEX(lex,false,0);
}
if (add_missing)
@@ -1358,7 +1357,7 @@ void UpdateLEX ( lex_t * lex, bool add_missing, bool add_test )
//-----------------------------------------------------------------------------
-lex_item_t * AppendFea0LEX
+lex_item_t * AppendFeatLEX
( lex_t * lex, bool overwrite, const features_szs_t *src_fs )
{
features_szs_t fs;
@@ -1368,7 +1367,7 @@ lex_item_t * AppendFea0LEX
InitializeFeaturesSZS(&fs);
SetIsLexFeaturesSZS(&fs);
- return AppendElementLEX(lex,LEXS_FEA0,&fs,sizeof(fs),overwrite);
+ return AppendElementLEX(lex,LEXS_FEAT,&fs,sizeof(fs),overwrite);
}
//-----------------------------------------------------------------------------
@@ -1569,9 +1568,9 @@ enumError ScanRawLEX
if ( IsValidLEX(data,data_size,data_size,lex->fname) >= VALID_ERROR )
{
return ERROR0(ERR_INVALID_DATA,
- "Invalid LEX file: %s\n"
+ "Invalid LEX file (size %u): %s\n"
"Add option --lex=force or --force to ignore some validity checks.",
- lex->fname ? lex->fname : "?" );
+ data_size, lex->fname ? lex->fname : "?" );
}
lex->fform = FF_LEX;
@@ -2260,7 +2259,7 @@ enumError SaveRawLEX
/////////////// SaveTextLEX() ///////////////
///////////////////////////////////////////////////////////////////////////////
-static enumError SaveTextLEX_FEA0
+static enumError SaveTextLEX_FEAT
(
FILE * f, // file to write
const lex_t * lex, // pointer to valid LEX
@@ -2285,7 +2284,16 @@ static enumError SaveTextLEX_FEA0
ps.f = f;
ps.fform = PSFF_ASSIGN;
ps.force_case = LOUP_UPPER;
- PrintFeaturesSZS(&ps,fs,true,1,0,0,0);
+ int comments = -1;
+
+ if (!brief_count)
+ {
+ comments = 1;
+ ps.ena_empty = true;
+ ps.ena_comments = true;
+ ps.boc = "#";
+ }
+ PrintFeaturesSZS(&ps,fs,true,comments,0,0,0,0);
ResetPrintScript(&ps);
uint data_size = ntohs(fs->size_be);
@@ -2557,7 +2565,7 @@ enumError SaveTextLEX
enumError err = ERR_OK;
switch(magic)
{
- case LEXS_FEA0: err = SaveTextLEX_FEA0(F.f,lex,s); break;
+ case LEXS_FEAT: err = SaveTextLEX_FEAT(F.f,lex,s); break;
case LEXS_SET1: err = SaveTextLEX_SET1(F.f,lex,s); break;
case LEXS_CANN: err = SaveTextLEX_CANN(F.f,lex,s); break;
case LEXS_HIPT: err = SaveTextLEX_HIPT(F.f,lex,s); break;
@@ -2883,7 +2891,7 @@ bool PatchFeaturesLEX ( lex_t * lex, const szs_have_t *have, bool *empty )
SetupFeaturesSZS(&fs,have,true);
const bool need_features = GetFeaturesStatusSZS(&fs) > 1;
- lex_item_t *li = FindElementLEX(lex,LEXS_FEA0);
+ lex_item_t *li = FindElementLEX(lex,LEXS_FEAT);
const bool have_features = li != 0;
PRINT("--lex-features = %d, --lex-rm-features = %d : have=%d, need=%d\n",
@@ -2891,7 +2899,7 @@ bool PatchFeaturesLEX ( lex_t * lex, const szs_have_t *have, bool *empty )
bool modified = false;
if ( opt_lex_rm_features && RemoveElementByMagicLEX(lex,LEXS_FEAT) )
- modified = true; // FEA0
+ modified = true; // FEAT
if ( have_features && !need_features )
{
@@ -2902,7 +2910,7 @@ bool PatchFeaturesLEX ( lex_t * lex, const szs_have_t *have, bool *empty )
&& need_features
&& ( !have_features || memcmp(&fs,li->elem.data,sizeof(fs)) ))
{
- AppendFea0LEX(lex,true,&fs);
+ AppendFeatLEX(lex,true,&fs);
modified = true;
}
@@ -2957,7 +2965,7 @@ bool PatchLEX ( lex_t * lex, const szs_have_t *have )
}
- //--- section FEA0
+ //--- section FEAT
if ( HavePatchFeaturesLEX() && have && have->valid )
{
@@ -3002,7 +3010,7 @@ bool PurgeLEX ( lex_t * lex )
bool remove = false;
switch(ntohl((*ss)->elem.magic))
{
- case LEXS_FEA0:
+ case LEXS_FEAT:
remove = GetFeaturesStatusSZS((features_szs_t*)data) < 2;
break;
diff --git a/project/src/lib-lex.h b/project/src/lib-lex.h
index da54ab3..b1c4973 100644
--- a/project/src/lib-lex.h
+++ b/project/src/lib-lex.h
@@ -95,7 +95,7 @@ typedef struct features_szs_t
//--- LEX sections (initial list)
- u8 lex_sect_fea0; // HAVELEXS_FEA0
+ u8 lex_sect_feat; // HAVELEXS_FEAT
u8 lex_sect_test; // HAVELEXS_TEST
u8 lex_sect_set1; // HAVELEXS_SET1
u8 lex_sect_cann; // HAVELEXS_CANN
@@ -125,8 +125,8 @@ void SetIsLexFeaturesSZS ( features_szs_t *fs );
int GetFeaturesStatusSZS ( const features_szs_t *fs );
// returns
// 0: all features set to null
- // 1: all features except f_lex + lex_sect_fea0 are set to null
- // 2: any features except f_lex + lex_sect_fea0 is not NULL
+ // 1: all features except f_lex + lex_sect_feat are set to null
+ // 2: any features except f_lex + lex_sect_feat is not NULL
void PrintFeaturesSZS
(
@@ -134,6 +134,7 @@ void PrintFeaturesSZS
const features_szs_t *fs, // valid source
bool is_lex, // TRUE: Create output for a LEX file
int comments, // >0: add extended comments
+ int print_options, // >0: print options as additional bits
int print_modes, // >0: append ",MODES"
u8 include, // print only if all bits match
u8 exclude // exclude if any bit match
@@ -202,8 +203,8 @@ const features_szs_t * GetFeaturesModes();
typedef struct check_features_szs_t
{
- bool have_features; // true: szs has LEX/FEA0 section
- bool need_features; // true: szs needs a LEX/FEA0 section
+ bool have_features; // true: szs has LEX/FEAT section
+ bool need_features; // true: szs needs a LEX/FEAT section
bool wrong_features; // true: 'current' and 'correct' differ
features_szs_t current; // current features
@@ -239,7 +240,7 @@ typedef enum have_lex_sect_t
HAVELEXS_CANN,
HAVELEXS_TEST,
HAVELEXS_HIPT,
- HAVELEXS_FEA0,
+ HAVELEXS_FEAT,
//--- add new elements here (order is important)
HAVELEXS__N
}
@@ -269,7 +270,6 @@ typedef enum lex_stream_id
LEXS_TERMINATE = 0, // terminate stream
LEXS_IGNORE = 0x2d2d2d2d, // "----" ignore and remove
- LEXS_FEA0 = 0x46454130, // "FEA0" features
LEXS_FEAT = 0x46454154, // "FEAT" features
LEXS_SET1 = 0x53455431, // "SET1" primary settings
LEXS_CANN = 0x43414e4e, // "CANN" cannon settings
@@ -431,7 +431,7 @@ void InitializeLEX ( lex_t * lex );
void ResetLEX ( lex_t * lex );
void UpdateLEX ( lex_t * lex, bool add_missing, bool add_test );
-lex_item_t * AppendFea0LEX ( lex_t * lex, bool overwrite, const features_szs_t *src_fs );
+lex_item_t * AppendFeatLEX ( lex_t * lex, bool overwrite, const features_szs_t *src_fs );
lex_item_t * AppendSet1LEX ( lex_t * lex, bool overwrite );
lex_item_t * AppendCannLEX ( lex_t * lex, bool overwrite );
lex_item_t * AppendHiptLEX ( lex_t * lex, bool overwrite );
diff --git a/project/src/lib-std.c b/project/src/lib-std.c
index 1059810..62c70c2 100644
--- a/project/src/lib-std.c
+++ b/project/src/lib-std.c
@@ -81,6 +81,7 @@ ccp std_share_path = 0;
ccp share_path = 0;
volatile int verbose = 0;
volatile int logging = 0;
+volatile int ext_errors = 0;
volatile int log_timing = 0;
bool allow_all = false;
char escape_char = '%';
@@ -509,13 +510,21 @@ void SetupLib ( int argc, char ** argv, ccp tname, ccp tvers, ccp ttitle )
///////////////////////////////////////////////////////////////////////////////
+enumError CheckEnvOptions2 ( ccp varname, check_opt_func func )
+{
+ const enumError err = CheckEnvOptions("WIIMMS_SZS_TOOLS",func);
+ return err ? err : CheckEnvOptions(varname,func);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
void NormalizeOptions
(
uint log_level // >0: print PROGRAM_NAME and pathes
)
{
SetupColors();
- ProgInfo.error_level = logging > 0 ? ERRLEV_EXTENDED : ERRLEV_HEADING;
+ ProgInfo.error_level = logging > 0 || ext_errors ? ERRLEV_EXTENDED : ERRLEV_HEADING;
//--- load configuration
diff --git a/project/src/lib-std.h b/project/src/lib-std.h
index 599a25c..8a6ca3a 100644
--- a/project/src/lib-std.h
+++ b/project/src/lib-std.h
@@ -118,6 +118,9 @@ void LogSHA1 ( ccp func, ccp file, uint line, cvp data, uint size, ccp info );
void SetupColors();
void SetupLib ( int argc, char ** argv, ccp tname, ccp tvers, ccp ttitle );
+typedef enumError (*check_opt_func) ( int argc, char ** argv, bool mode );
+enumError CheckEnvOptions2 ( ccp varname, check_opt_func func );
+
void NormalizeOptions
(
uint log_level // >0: print PROGRAM_NAME and pathes
@@ -2149,66 +2152,136 @@ enumError SavePrefixTableFN ( ccp fname, const mkw_prefix_t * tab );
///////////////////////////////////////////////////////////////////////////////
// [[split_filename_t]]
-#define SUPPORT_SPLIT_SIGN 0
-
typedef struct split_filename_t
{
- mem_t source; // full source without leading directories
+ mem_t source; // full source without leading directories
//--- split source into 3 parts
- mem_t f_name; // name part
- mem_t f_d; // empty or "_d"
- mem_t f_ext; // file extention
+ mem_t f_name; // %F source name, stripped
+ mem_t f_d; // %D empty or "_d"
+ mem_t f_ext; // %E file extention
//--- split name into 3 parts
- mem_t norm; // normalized name, alloced
+ mem_t norm; // %O normalized name, alloced
+
+ mem_t plus; // %P Plus prefix
+ mem_t boost; // %b boost prefix
+ mem_t game1; // %g first game prefix
+ mem_t game2; // %G second game prefix
+ mem_t game; // %p combined game prefix
+ mem_t name; // %n name
+ mem_t extra; // %x extra info
+ mem_t version; // %v version nummber
+ mem_t authors; // %a list of authors
+ mem_t attribs; // %A list of attributes
- mem_t plus;
- #if SUPPORT_SPLIT_SIGN
- mem_t sign;
- #endif
- mem_t boost;
- mem_t game1;
- mem_t game2;
- mem_t game;
- mem_t name;
- mem_t extra;
- mem_t version;
- mem_t authors;
- mem_t attribs;
-
//--- misc
uint plus_order;
uint game_order;
- uint game_color;
+ uint game1_color;
+ uint game2_color;
+
+ u8 lap_count; // %l number of laps, valid if >0.0
+ float speed_factor; // %s speed factor, valid if >0.0
ccp input;
bool input_alloced;
}
split_filename_t;
-//-----------------------------------------------------------------------------
+///////////////////////////////////////////////////////////////////////////////
+// [[print_split_par_t]]
+
+typedef struct print_split_par_t
+{
+ ccp format; // format string
+ ccp plus_mode; // plus mode, only needed by PrintNameSPF()
+
+ u8 lap_count; // number of laps, valid if >0.0
+ float speed_factor; // speed factor, valid if >0.0
+
+ int u_skip_mode; // skip '+': <0:never, 0:if unique, >0: always
+ int u_skip_count; // number of skipped tags
+ bool u_use_list; // true: use 'u_list' to find multi-used names
+ exmem_list_t u_list; // list of keywords until first '%+'
+ exmem_key_t *u_item; // last inderted/used element of 'u_list'
+}
+print_split_par_t;
+
+///////////////////////////////////////////////////////////////////////////////
extern ccp opt_plus;
+extern ccp opt_printf;
static inline void InitializeSPF ( split_filename_t *spf )
{ DASSERT(spf); memset(spf,0,sizeof(*spf)); }
void ResetSPF ( split_filename_t *spf );
+
void AnalyseSPF
(
- split_filename_t *spf, // valid pointet
+ split_filename_t *spf, // valid pointer
bool init_spf, // true: InitializeSPF(), false: ResetSPF()
ccp source, // NULL or ponter to name
- ccp src_end, // end of source. if 0 then use strlen()
+ ccp src_end, // end of source. if 0 then use strlen().
CopyMode_t cpm, // copy mode for 'source'
- ccp plus_mode // NULL or string of format '[max][','][chars]'
+ ccp plus_mode // NULL or priority string
+);
+
+//-----------------------------------------------------------------------------
+
+void ResetPSP ( print_split_par_t *psp );
+
+exmem_t PrintSPF
+(
+ exmem_dest_t *dest, // Kind of destination, if NULL then MALLOC()
+ const split_filename_t
+ *spf, // Valid and initialized source
+ print_split_par_t *par // valid struct with parameters
+);
+
+exmem_t PrintNameSPF
+(
+ exmem_dest_t *dest, // Kind of destination, if NULL then MALLOC()
+ ccp source, // NULL or pointer to name to analyze
+ ccp src_end, // End of source. If 0 then use strlen().
+ print_split_par_t *par // valid struct with parameters
);
+// Convertion types in alphabertic order:
+//
+// %a authors, list of authors, format "(authors)", options=0, curly braces
+// %A attribs, list of attributes, format "(authors)", options=0
+// %b boost, boost prefix
+// %D f_d, empty or "_d"
+// %e extra, extra info, format "(extra)", options=0, curly braces
+// %E f_ext, file extention, format ".ext", options=0
+// %g game1, first game prefix
+// %G game2, second game prefix
+// %F f_name, file name, stripped
+// %l lap_count
+// %L LOTTERY ALIAS
+// %n name, name
+// %N NAME ALIAS for plus+boost+pre+name
+// %O norm, normalized file name, alloced
+// %p game, combined game prefix
+// %P plus, plus prefix
+// %R RACE ALIAS
+// %s speed_factor
+// %v version, version nummber
+
+// Format options:
+// '-' align left
+// ' ' add leading space if not empty
+// '0' leading space
+// '!' suppress braces
+// '({[<' force a kind of braces
+// 'c' insert color escape if known
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// output_mode_t ///////////////
@@ -2420,6 +2493,7 @@ extern ccp std_share_path;
extern ccp share_path;
extern volatile int verbose;
extern volatile int logging;
+extern volatile int ext_errors;
extern volatile int log_timing;
extern bool allow_all;
extern char escape_char;
diff --git a/project/src/lib-szs-create.c b/project/src/lib-szs-create.c
index 8d394b7..d268a44 100644
--- a/project/src/lib-szs-create.c
+++ b/project/src/lib-szs-create.c
@@ -1727,10 +1727,15 @@ static int add_missing_file
InitializeLEX(&lex);
if ( PatchLEX(&lex,&am->szs->have) && CreateRawLEX(&lex) == ERR_OK )
size = lex.raw_data_size;
+ PRINT0("LEX size=%lld\n",size);
}
szs_subfile_t *file = 0;
- if (am->sd)
+ if (!size)
+ {
+ // [[2do]] maybe remove "course.lex" from list
+ }
+ else if (am->sd)
{
file = AppendSubfileSZS(am->szs,0,0);
DASSERT(file);
@@ -1891,6 +1896,7 @@ void AddSectionsLEX ( szs_file_t *szs, szs_norm_t *norm, const szs_have_t * have
{
features_szs_t fs;
SetupFeaturesSZS(&fs,have,true);
+ //PRINT1("GetFeaturesStatusSZS()=%d\n",GetFeaturesStatusSZS(&fs));
if ( GetFeaturesStatusSZS(&fs) > 1 )
add_course_lex = true;
ResetFeaturesSZS(&fs);
@@ -2549,7 +2555,7 @@ static int transform_collect_func
break;
case FF_LEX:
- if ( !szs->allow_ext_data || !HavePatchTestLEX())
+ if ( !szs->allow_ext_data || !HavePatchLEX() )
{
PRINT("### Patch/NOT LEX: %s\n",it->name);
break;
@@ -2670,7 +2676,10 @@ bool PatchSZS ( szs_file_t * szs )
if ( szs->data && szs->size )
{
if (patch_lex)
+ {
+ CalcHaveSZS(szs);
dirty |= NormalizeExSZS(szs,0,0,0);
+ }
if ( have_patch_count > 0 || opt_lex_purge )
{
@@ -2704,7 +2713,10 @@ void CalcHaveSZS ( szs_file_t * szs )
{
szs_file_t temp;
CopySZS(&temp,true,szs);
+ analyse_szs_t as;
+ AnalyseSZS(&as,true,&temp,temp.fname);
szs->have = temp.have;
+ ResetAnalyseSZS(&as);
ResetSZS(&temp);
}
}
diff --git a/project/src/lib-szs.h b/project/src/lib-szs.h
index 834b4e0..3223e89 100644
--- a/project/src/lib-szs.h
+++ b/project/src/lib-szs.h
@@ -58,6 +58,7 @@
#include "lib-checksum.h"
#include "lib-kmp.h"
#include "db-mkw.h"
+#include "dclib-ui.h"
//
///////////////////////////////////////////////////////////////////////////////
@@ -484,7 +485,7 @@ typedef enum szs_norm_info_t
SZI_AI_PARAM, // A: have AI param
SZI_SPEED, // S: have speed KMP/STGI factoe
SZI_LAPS, // #: (1-9) KMP/STGI number of laps
- SZI_RM_LEX_FEA0, // F: have LEX section FEA0
+ SZI_RM_LEX_FEAT, // F: have LEX section FEAT
SZI_RM_LEX_TEST, // T: have LEX section TEST
SZI__N // number of flags
@@ -516,7 +517,7 @@ typedef struct szs_norm_t
u8 max_laps; // >0: limit number of laps (KMP/STGI)
u8 set_laps; // >0: set number of laps (KMP/STGI)
bool rm_lex_test; // remove LEX section TEST
- bool manage_lex_fea0; // manage LEX section FEA0: 0:off, 1:remove, 2:auto
+ bool manage_lex_feat; // manage LEX section FEAT: 0:off, 1:remove, 2:auto
bool purge_lex; // purge lex section and remove course.bin if empty
//--- for output via PrintNorm()
diff --git a/project/src/prefix.inc b/project/src/prefix.inc
index 00ea477..333e010 100644
--- a/project/src/prefix.inc
+++ b/project/src/prefix.inc
@@ -1,81 +1,83 @@
static const u8 prefix_inc_bz2[] =
{
- // decompressed size: 0x9c1 = 2497 bytes
- 0x00,0x00,0x09,0xc1,
+ // decompressed size: 0x9eb = 2539 bytes
+ 0x00,0x00,0x09,0xeb,
// bzipped data
- 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xb6,0xa4, 0x97,0xb5,0x00,0x00,
- 0xe9,0xdf,0x80,0x00, 0x12,0x61,0xef,0x7f, 0xf0,0x3f,0xef,0xdf, 0xf0,0x3f,0xef,0xff,
- 0xe4,0x50,0x04,0x3e, 0x64,0xe8,0x6b,0x76, 0xdd,0xbb,0x6d,0xb3, 0x93,0x98,0x68,0x85,
- 0x3d,0x34,0xd1,0x3d, 0x13,0x43,0x04,0xda, 0xa3,0x4f,0x28,0xda, 0x69,0x0c,0x80,0x00,
- 0x00,0xd0,0x34,0x25, 0x31,0xa6,0x4c,0x9a, 0x69,0xa9,0x18,0x01, 0x06,0x80,0x62,0x06,
- 0x80,0xd0,0x68,0x01, 0xa0,0x9a,0x14,0xf4, 0x29,0x93,0xf4,0xd5, 0x07,0xa4,0xd0,0x34,
- 0x68,0xd0,0x7a,0x80, 0x00,0x68,0x00,0x1c, 0xd3,0x13,0x26,0x4d, 0x18,0x4c,0x13,0x13,
- 0x4c,0x02,0x60,0x10, 0xc1,0x18,0x11,0x80, 0x48,0x90,0x99,0x05, 0x32,0x30,0x8d,0x35,
- 0x3d,0x02,0x81,0xb5, 0x06,0xd4,0x1b,0x21, 0x91,0xa9,0xed,0x0a, 0x1e,0xa3,0x04,0x83,
- 0xd8,0x12,0x0f,0x4f, 0x8f,0x1f,0xcf,0x62, 0xf3,0xa7,0x6b,0xfb, 0x7b,0x6f,0x95,0x62,
- 0x02,0x47,0x86,0x11, 0x59,0xfa,0xdf,0x33, 0x67,0x8d,0x76,0x56, 0xec,0x0f,0x49,0x5b,
- 0xa3,0xef,0xe0,0xac, 0x11,0x79,0xe9,0xbf, 0xca,0x78,0x97,0xe8, 0xad,0xaf,0xf3,0xe2,
- 0xc6,0xc9,0x43,0x41, 0x6c,0x19,0x85,0xa9, 0x64,0xa1,0x96,0x5c, 0x29,0xaa,0x08,0x49,
- 0x5d,0x5d,0xf5,0xbd, 0xcf,0xab,0x70,0xba, 0xf6,0x09,0xee,0xb5, 0x20,0x31,0xc4,0xda,
- 0xa9,0x4d,0x01,0xf3, 0x15,0xc8,0x3f,0x73, 0xc9,0x91,0xd5,0x34, 0x61,0x38,0xae,0x29,
- 0x4c,0x66,0xf2,0x7b, 0xb3,0xb6,0x39,0xc7, 0x8d,0x87,0x28,0xdc, 0x05,0xfd,0xea,0xc2,
- 0x3f,0x62,0xa6,0xbd, 0x2f,0xcb,0x8f,0x7b, 0x61,0x51,0xab,0x40, 0x07,0xac,0x81,0x28,
- 0xfb,0x69,0x5c,0xdd, 0xda,0x68,0x09,0xfd, 0x6c,0xa5,0x72,0x45, 0x55,0x7b,0xed,0x65,
- 0x72,0xfd,0xfb,0x0b, 0xc5,0xa0,0x73,0xee, 0x1b,0x6d,0x26,0x21, 0x2b,0xb0,0xc7,0x28,
- 0x72,0x93,0x3b,0xa8, 0x44,0x44,0x28,0x85, 0x3e,0x89,0xc9,0x09, 0x29,0xfb,0xe0,0xf9,
- 0x31,0x82,0x49,0x9b, 0x35,0x59,0xa8,0x2e, 0x34,0xc9,0x6d,0x89, 0x3c,0x00,0x56,0x6c,
- 0xe1,0x84,0x35,0x17, 0xc1,0x51,0xe0,0x42, 0xe3,0x41,0x16,0x65, 0x41,0x0f,0x4d,0x0c,
- 0xe2,0x85,0x58,0xdb, 0x4f,0xd7,0x6f,0x7d, 0xc6,0x8a,0x99,0x9e, 0xdf,0x73,0x8e,0x3c,
- 0xb1,0xd8,0xca,0x7d, 0x60,0x33,0x26,0x1c, 0xfa,0x8e,0x23,0x75, 0x16,0xac,0x9b,0x51,
- 0x55,0xe7,0x9e,0x65, 0xfe,0x25,0x24,0xc2, 0x7a,0x21,0x32,0xe3, 0xca,0x43,0xdf,0x3e,
- 0x37,0x75,0x65,0xb2, 0x45,0x40,0xe4,0x60, 0xb2,0x66,0x6c,0xd6, 0x9b,0x26,0x41,0xf1,
- 0xa0,0x96,0x01,0xc2, 0xcb,0xaf,0x64,0x34, 0x3e,0x5e,0x4e,0x4c, 0xb1,0x46,0x22,0x4c,
- 0x69,0x8d,0xa7,0x99, 0xa2,0xd6,0xd5,0x21, 0x27,0x41,0xe7,0x25, 0x22,0x96,0xc7,0x86,
- 0xe8,0x53,0xb5,0x6b, 0xb5,0x8a,0xeb,0xed, 0xa7,0xdf,0x6b,0xfd, 0x59,0x62,0x22,0x61,
- 0x91,0x9a,0xef,0x5e, 0x93,0x46,0x3b,0x0e, 0x6d,0x88,0xf5,0xbb, 0xe4,0xe8,0x0e,0x4a,
- 0xc1,0xa0,0x2b,0x4c, 0x81,0x5a,0xda,0x54, 0x14,0x75,0x88,0x3f, 0x84,0x40,0xc4,0xdb,
- 0x1b,0xd7,0x10,0xdb, 0x11,0xbd,0x64,0x2e, 0x6b,0x5f,0x23,0x5e, 0x06,0x9e,0x23,0x0c,
- 0x18,0xd3,0x26,0xd2, 0x4f,0x7e,0x7c,0xe5, 0x2b,0x61,0x13,0x89, 0xcd,0xfb,0x6b,0x3c,
- 0x54,0x88,0x08,0x64, 0xe8,0x81,0x94,0x94, 0x28,0x13,0x6a,0xf2, 0x58,0xd8,0xc1,0xc2,
- 0xa2,0x5e,0x8e,0x93, 0xd6,0x6c,0x71,0x02, 0x45,0xdb,0x53,0x4a, 0xa8,0x97,0x36,0x90,
- 0xcd,0x66,0xc3,0xdf, 0x70,0xb2,0x5e,0xe8, 0xe8,0x37,0x21,0x52, 0x85,0xbf,0x7c,0xcb,
- 0x00,0x15,0x59,0xf4, 0x80,0x56,0xca,0x16, 0x59,0x2b,0xae,0xe0, 0x95,0xee,0xff,0xe4,
- 0xaf,0xb5,0xa5,0xf3, 0x33,0x53,0x31,0x75, 0xb5,0x8b,0xb6,0x3a, 0xf9,0xe4,0x6d,0x7c,
- 0x29,0x84,0x24,0x70, 0x82,0x1b,0x56,0x60, 0xc3,0x9d,0xba,0xe5, 0x53,0xca,0x26,0xfc,
- 0x35,0xa0,0xed,0x53, 0x91,0x8d,0x8d,0xa5, 0xc6,0x1a,0x3a,0x35, 0x36,0x6d,0xbe,0xf1,
- 0xf8,0xc6,0xe6,0x9c, 0xc3,0x18,0x2e,0x18, 0x21,0xb7,0x0a,0x77, 0x6d,0x68,0xd6,0x79,
- 0x85,0x8b,0xb5,0x57, 0xb1,0x3b,0xae,0x70, 0x1a,0xea,0x29,0xb3, 0x10,0xbe,0xc0,0xd0,
- 0xa2,0xdc,0xcc,0x9b, 0x72,0x09,0x74,0xb9, 0x01,0x8a,0x30,0x5d, 0x1e,0xe5,0x2d,0x65,
- 0xb3,0xb5,0x0c,0x38, 0x2c,0x2e,0xad,0xda, 0x7e,0xea,0x2e,0x2d, 0xdc,0x37,0x5e,0x44,
- 0x2e,0x9d,0x72,0xb9, 0xe1,0xbe,0x46,0x19, 0xc5,0x06,0x70,0x41, 0x42,0xa3,0x04,0x43,
- 0x3d,0xd9,0x35,0x70, 0x49,0x29,0x3d,0xb9, 0x6f,0x9d,0x71,0xd4, 0x4b,0x40,0xbf,0x88,
- 0xc9,0x47,0x62,0xb2, 0x22,0x0e,0x49,0xf2, 0x85,0x65,0xce,0x8c, 0x8b,0x15,0x23,0x14,
- 0x60,0x4d,0x2e,0x5b, 0x84,0xa6,0x16,0xbd, 0x73,0xd1,0x32,0x1b, 0x98,0xa6,0xf5,0xc0,
- 0x50,0xb8,0x6e,0x08, 0x74,0xca,0x14,0xd3, 0x72,0x80,0x20,0x44, 0xfa,0xef,0xa4,0xf1,
- 0xa1,0x0c,0x91,0x29, 0x36,0x5c,0x22,0x30, 0x40,0x19,0x90,0x3c, 0x0d,0x91,0xe1,0x22,
- 0xb9,0x81,0xec,0x54, 0x34,0x36,0xc0,0x8c, 0x25,0x05,0x3d,0xe3, 0x56,0x94,0xc2,0x8e,
- 0x4d,0x0b,0xaf,0x8d, 0xa1,0x70,0x8b,0x74, 0x6a,0x32,0xc9,0x36, 0x08,0x60,0x00,0xa2,
- 0x84,0x66,0x11,0x40, 0xcc,0x10,0x96,0x14, 0x51,0x9d,0x89,0x4b, 0x59,0x86,0xe9,0x4b,
- 0x7d,0xb9,0x0e,0xaa, 0x9f,0x64,0x64,0x62, 0x5f,0x4e,0x96,0x02, 0x6f,0x94,0xa1,0x9f,
- 0xfa,0x82,0x32,0x82, 0x8d,0x80,0x37,0x41, 0x89,0xdf,0x26,0x7a, 0xea,0x66,0xa8,0xb4,
- 0x99,0x76,0x88,0x39, 0xf6,0x60,0x89,0x9c, 0xb7,0xe3,0xc0,0xe9, 0x73,0xc7,0xaa,0x7b,
- 0x5f,0x5e,0x5a,0xfc, 0x4a,0x8b,0x3b,0xfd, 0x1a,0x53,0x6b,0x76, 0x25,0x2d,0x39,0x35,
- 0x4e,0x65,0x38,0x1d, 0x8a,0x81,0xe8,0x4c, 0x66,0x6a,0xf4,0x0b, 0xfd,0x29,0x67,0xbf,
- 0x8a,0x8e,0xe5,0x64, 0x00,0x9f,0xc8,0x7b, 0x96,0x84,0x2a,0xb1, 0x50,0x97,0x2c,0x49,
- 0xcf,0x7a,0x00,0x77, 0xa8,0xe3,0xa0,0x4b, 0x64,0xa7,0x74,0x57, 0x3e,0x46,0x74,0x21,
- 0x82,0x0e,0xef,0xf3, 0x20,0x5f,0xa6,0x07, 0xd6,0x88,0x47,0x8d, 0x20,0x5f,0xe4,0x43,
- 0x60,0x8f,0x26,0xa9, 0x28,0x6e,0x90,0xe1, 0x43,0x6e,0x23,0xca, 0x37,0xd6,0xca,0xa9,
- 0x4f,0x6d,0xe4,0x49, 0xb4,0x09,0x31,0x1e, 0x22,0x12,0xc0,0x3f, 0x2b,0x97,0xc3,0xb6,
- 0x03,0x2e,0xce,0xef, 0x09,0xae,0x57,0x4e, 0x6c,0xf8,0x1f,0xc4, 0xbd,0xba,0x7f,0x3e,
- 0xae,0xff,0x0e,0xd6, 0xcf,0x0a,0x4e,0xc7, 0xdc,0xd9,0x0f,0xf8, 0xed,0x49,0xfd,0xb1,
- 0xc1,0x60,0x49,0x96, 0x7d,0x94,0xa4,0x66, 0xaf,0x43,0xd7,0x4f, 0xa5,0x4f,0x92,0x68,
- 0x3c,0x52,0xb3,0x4c, 0x3e,0x0a,0xa5,0xde, 0x71,0xcd,0xb5,0x0a, 0x6d,0x45,0x45,0x7d,
- 0xf5,0xee,0x29,0x8c, 0x6e,0xe5,0x46,0x26, 0x40,0xcc,0x5d,0x8b, 0xb6,0xd8,0xf8,0x6d,
- 0x89,0xc2,0x23,0x7e, 0x3a,0x4e,0xac,0x63, 0x22,0x6a,0xbe,0x4f, 0x07,0x28,0x61,0x65,
- 0x10,0x6a,0x87,0xf8, 0xbb,0x92,0x29,0xc2, 0x84,0x85,0xb5,0x24, 0xbd,0xa8,
- // 0x45e = 1118 data bytes (45%)
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x1a,0x48, 0x97,0x32,0x00,0x00,
+ 0xee,0xdf,0x80,0x00, 0x12,0x61,0xef,0x7f, 0xf0,0x3f,0xef,0xdf, 0xf0,0x3f,0xef,0xff,
+ 0xe4,0x50,0x04,0x3e, 0xee,0x66,0xa8,0x3a, 0xdb,0x49,0x4c,0x59, 0x86,0x88,0x4d,0x13,
+ 0xd1,0x34,0xf5,0x34, 0xd1,0xa6,0x04,0x69, 0xa4,0xc4,0x68,0xf4, 0x21,0x91,0x91,0xa0,
+ 0x06,0x84,0x42,0x8c, 0x9e,0x81,0xea,0x66, 0xa9,0xa6,0x80,0xd0, 0xd0,0x00,0x34,0x00,
+ 0x1a,0x06,0x80,0x1a, 0x68,0x21,0x4f,0x22, 0xa7,0x83,0x52,0x36, 0x8d,0x27,0xa8,0xfd,
+ 0x51,0xa3,0xd4,0xd1, 0xea,0x00,0xc8,0x36, 0xa7,0xa3,0x50,0x07, 0x34,0xc4,0xc9,0x93,
+ 0x46,0x13,0x04,0xc4, 0xd3,0x00,0x98,0x04, 0x30,0x46,0x04,0x60, 0x12,0x24,0x8d,0x32,
+ 0x69,0x04,0xda,0x26, 0x22,0x9f,0xa5,0x3d, 0x20,0x78,0xa0,0xc8, 0x69,0xe4,0x9a,0x6c,
+ 0xa3,0xd2,0x7a,0x87, 0xa8,0xd0,0x90,0x7a, 0xa1,0x20,0xfe,0xfd, 0xfc,0xff,0x0f,0x0e,
+ 0x2b,0xe7,0x3e,0xf7, 0xe3,0xeb,0xe7,0x2a, 0x44,0x22,0x45,0x31, 0x8c,0x2e,0xf4,0xad,
+ 0xc7,0x0f,0x2c,0x38, 0x61,0x2a,0x8e,0x2d, 0x4d,0x9e,0x6b,0xe6, 0xb9,0x8b,0x54,0x71,
+ 0xee,0xe0,0xf7,0x0a, 0xe9,0x9d,0x2b,0xdf, 0xa2,0xd4,0x00,0x29, 0x40,0x29,0x52,0x2b,
+ 0x48,0xa2,0x22,0x9c, 0x12,0x95,0xb4,0xea, 0xd0,0x64,0x29,0xdd, 0xcf,0x8b,0xc2,0xec,
+ 0xc1,0x08,0xb6,0x0c, 0xc2,0xe2,0x14,0x11, 0x11,0xdc,0x9d,0x49, 0x85,0x07,0x92,0x4c,
+ 0x00,0x33,0x09,0x9b, 0x29,0x18,0x25,0x32, 0x0f,0x92,0x1a,0x26, 0x39,0x0b,0xd1,0xb8,
+ 0x51,0x87,0x15,0x9e, 0x02,0x9e,0x63,0x7e, 0x95,0xb0,0x03,0xf6, 0x33,0x4f,0xe8,0x1b,
+ 0x51,0x43,0xbc,0xd4, 0x24,0xc0,0x03,0xfc, 0xd0,0x25,0x1e,0x39, 0xae,0x5d,0xf9,0xde,
+ 0x84,0xfe,0x54,0x09, 0x4d,0x23,0x05,0x87, 0xc6,0x94,0x53,0x5e, 0xef,0x69,0x51,0x6c,
+ 0x1d,0xdd,0xe3,0x6d, 0xa4,0xc4,0x25,0x3c, 0x6d,0x94,0x39,0x49, 0x9d,0xf7,0x91,0x11,
+ 0x01,0x10,0x17,0x7d, 0x37,0x49,0x09,0x2b, 0xbb,0x20,0xf0,0x60, 0x80,0x88,0x91,0x1d,
+ 0x36,0xe9,0xc0,0x6a, 0x2b,0xaf,0x4d,0xeb, 0xa3,0x20,0x17,0x18, 0x71,0x94,0x46,0x0d,
+ 0xf5,0x65,0x90,0x13, 0xd4,0x54,0x52,0x21, 0xa0,0xc3,0xc7,0xca, 0xfb,0x8b,0xcc,0x18,
+ 0xdb,0x4f,0xd3,0xa3, 0xe3,0x33,0x66,0x06, 0x97,0xd1,0xd2,0xe3, 0x9f,0x2b,0x70,0x65,
+ 0xff,0x28,0x46,0x94, 0xc3,0xab,0x68,0xce, 0x35,0xc2,0x61,0x71, 0x28,0xb3,0x4e,0xfc,
+ 0xae,0x32,0x6f,0x10, 0xc4,0x07,0xd0,0xa8, 0x44,0x87,0x06,0x07, 0xb9,0xfc,0x26,0x53,
+ 0x6e,0x56,0x13,0x40, 0xde,0xc1,0x64,0xcd, 0x3a,0x69,0x73,0x2e, 0x20,0xf7,0xde,0x25,
+ 0x88,0x6b,0x64,0xea, 0xc8,0x68,0x7c,0x77, 0xef,0xca,0xc8,0xb2, 0x49,0x8d,0x31,0xb4,
+ 0xf1,0xd3,0x08,0xad, 0x76,0xc9,0x24,0xe6, 0x3d,0x44,0xa4,0x5f, 0x5c,0xb5,0xce,0x15,
+ 0xd4,0xc3,0x0e,0x86, 0x29,0xd6,0x99,0xf6, 0x52,0xbe,0x8c,0xa2, 0x4b,0x16,0x9b,0xa7,
+ 0x0e,0x1a,0xec,0x72, 0xe6,0x77,0xf8,0x46, 0x9a,0x68,0xf9,0xbc, 0x0d,0x11,0xa8,0x70,
+ 0x2c,0xda,0x16,0x76, 0xac,0x89,0x33,0x51, 0xad,0xfe,0x51,0x03, 0x13,0x6c,0x6f,0x74,
+ 0x43,0x6c,0x47,0x9a, 0xeb,0xd0,0x2e,0xaa, 0xe3,0x23,0x9e,0xc6, 0xdd,0x85,0xac,0xc6,
+ 0x99,0x73,0x51,0x9f, 0xd9,0x9f,0xb9,0x63, 0xb7,0x0a,0x3a,0x3c, 0xe7,0xd7,0x2c,0xf5,
+ 0xee,0xa0,0x43,0x57, 0x50,0x33,0x52,0x24, 0x18,0xec,0x9c,0x14, 0x29,0xc9,0x81,0xba,
+ 0xf9,0x27,0x6e,0xe3, 0xd4,0x6f,0x42,0x40, 0x91,0x65,0xa9,0xc6, 0xa9,0x1b,0x1e,0x50,
+ 0xf6,0xa3,0x78,0xff, 0xac,0x14,0x37,0x84, 0x12,0x1c,0x28,0x53, 0x49,0xf2,0xff,0xb6,
+ 0x4d,0x02,0xe3,0xab, 0x34,0x06,0x14,0x50, 0xb2,0xc9,0x4e,0x7a, 0x25,0x57,0x5f,0xd0,
+ 0xc3,0xd6,0x92,0xf8, 0x1a,0x6f,0xd2,0x4e, 0x9b,0x85,0xfb,0x2e, 0xdf,0x1b,0x0e,0x63,
+ 0x98,0x02,0x10,0x54, 0xce,0x6a,0x62,0xe2, 0x08,0x77,0xf2,0xbb, 0x31,0xc4,0x68,0x96,
+ 0x5b,0xba,0xd8,0x75, 0xb9,0xb1,0x1a,0xf6, 0x26,0x70,0xe5,0xcf, 0x6c,0x55,0x47,0x6d,
+ 0xa3,0xf5,0xc6,0x3f, 0x5b,0xa6,0x18,0xc0, 0xa3,0x04,0x39,0xd0, 0x8d,0xfc,0xe0,0x1b,
+ 0x8e,0xb1,0x7d,0xec, 0x09,0x96,0x9b,0xbd, 0xeb,0x02,0xda,0x30, 0xaf,0x37,0x23,0x8e,
+ 0x25,0x89,0x2e,0x4c, 0xc9,0xb7,0x20,0x97, 0xb1,0xc8,0x0b,0x23, 0x10,0xeb,0xe9,0x52,
+ 0xdc,0x53,0x53,0x50, 0xc1,0x75,0xe0,0x59, 0xa5,0xc1,0x63,0x85, 0x7e,0x86,0xaf,0x51,
+ 0x10,0xcf,0x89,0x6d, 0x86,0x90,0xca,0xcc, 0x3d,0x5b,0xb8,0x41, 0x05,0x09,0x4c,0x88,
+ 0x86,0x1b,0x2f,0xe8, 0xaa,0xf3,0x40,0xa5, 0x98,0x34,0xe2,0x5c, 0x12,0x92,0xd0,0x25,
+ 0xa0,0xc9,0x27,0x7d, 0x35,0x21,0x03,0x4a, 0xf2,0x04,0xe4,0xad, 0x0c,0x89,0x89,0x8c,
+ 0xc3,0xb3,0x22,0xdb, 0xaa,0x7b,0x41,0xb6, 0x66,0x7a,0x6b,0x3a, 0x5f,0x0f,0x45,0x65,
+ 0x6e,0xd8,0x0b,0xc9, 0x8d,0xc1,0x0e,0xfc, 0xa1,0x5c,0x9b,0x94, 0x01,0x02,0x2e,0xed,
+ 0xad,0xf7,0x5a,0xf2, 0x19,0x22,0x52,0x6c, 0x99,0x66,0x90,0x36, 0x87,0xdc,0xe9,0x97,
+ 0x76,0xab,0xbf,0x11, 0xfd,0xf7,0x57,0x7e, 0x3f,0x41,0x1d,0xda, 0xc2,0xc5,0xa4,0x68,
+ 0xca,0x9b,0x88,0xea, 0x9d,0x73,0x67,0x60, 0x5b,0x62,0x7f,0x46, 0xc3,0x2a,0x9c,0x99,
+ 0xb3,0x00,0x51,0x20, 0x8c,0xc2,0x12,0x0c, 0xc1,0x08,0xe7,0x42, 0x5b,0xe6,0x8a,0xdb,
+ 0x1e,0x9d,0xcb,0x6e, 0xfb,0x75,0x3c,0xb2, 0x7e,0xd8,0xc8,0xb1, 0x5b,0xfa,0xda,0x04,
+ 0xdf,0x12,0xf3,0x57, 0xeb,0x04,0x65,0x05, 0xed,0xa0,0x1b,0xbc, 0x62,0x75,0x93,0x3d,
+ 0x36,0xb3,0x6c,0x52, 0x4c,0x9e,0xc8,0x3a, 0xb8,0x62,0x8b,0x8e, 0x35,0xb6,0x87,0x7c,
+ 0xdd,0xbd,0x97,0x74, 0x3e,0xdb,0xb9,0x37, 0x89,0xa2,0x65,0x3d, 0x45,0x11,0xca,0x6b,
+ 0xcc,0xc0,0x67,0xac, 0x59,0xe1,0x8c,0xcd, 0xec,0xa2,0x4a,0x90, 0x49,0x69,0x28,0x6f,
+ 0xf5,0x6b,0xb7,0x77, 0xab,0x07,0xf6,0x42, 0x80,0x92,0xf5,0x9f, 0x26,0x90,0xa9,0x7d,
+ 0xd9,0xb0,0x47,0xc7, 0x20,0x0f,0x39,0x73, 0xb0,0x0b,0xb9,0xc7, 0x57,0x20,0x5b,0x59,
+ 0x8f,0x35,0x1b,0x6f, 0x44,0x3c,0xe7,0x92, 0x6f,0xd9,0xf8,0x40, 0x9f,0xd2,0x07,0x1d,
+ 0xea,0x83,0x7c,0x28, 0x4f,0xda,0xa9,0x20, 0x20,0xe0,0x51,0xe1, 0xd8,0x96,0x53,0x0a,
+ 0x1b,0x71,0x1f,0xd4, 0x79,0xe1,0x40,0xc1, 0x2b,0xba,0x6a,0x44, 0x9b,0x40,0x93,0x46,
+ 0xc6,0x8f,0x21,0x09, 0x58,0x3b,0x30,0x5d, 0xde,0x28,0x02,0xed, 0xbb,0xf9,0x28,0x9f,
+ 0x37,0x2a,0xbc,0xc1, 0xbf,0x72,0xba,0x66, 0xd7,0x9b,0x8f,0x2e, 0x0f,0xc9,0x71,0x27,
+ 0x4d,0x59,0xd8,0xd3, 0xe8,0x76,0x24,0xfe, 0xde,0x84,0x2c,0x85, 0xe8,0xe4,0xed,0x95,
+ 0x22,0x39,0xe8,0xa9, 0x78,0xfd,0x65,0xaa, 0xf4,0x4e,0xf2,0x4a, 0xcd,0x37,0x38,0xab,
+ 0x1c,0x34,0xc1,0x16, 0xc4,0x29,0x92,0x94, 0x93,0x79,0xcd,0xb4, 0xa2,0x31,0xb7,0x5a,
+ 0xc5,0x27,0x48,0xfa, 0x4b,0x1c,0x6e,0xd9, 0x8d,0xbc,0x02,0xc7, 0xa2,0xfe,0x53,0xaa,
+ 0xf1,0x9d,0xad,0xba, 0xb2,0x06,0xb3,0xcb, 0x0c,0x27,0x16,0x1f, 0xf1,0x77,0x24,0x53,
+ 0x85,0x09,0x01,0xa4, 0x89,0x73,0x20,
+ // 0x477 = 1143 data bytes (45%)
};
static BZ2Manager_t prefix_inc_mgr
diff --git a/project/src/ui/tab-wbmgt.inc b/project/src/ui/tab-wbmgt.inc
index 8e38144..717e869 100644
--- a/project/src/ui/tab-wbmgt.inc
+++ b/project/src/ui/tab-wbmgt.inc
@@ -229,6 +229,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wctct.inc b/project/src/ui/tab-wctct.inc
index 312a34a..95d3698 100644
--- a/project/src/ui/tab-wctct.inc
+++ b/project/src/ui/tab-wctct.inc
@@ -216,6 +216,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wimgt.inc b/project/src/ui/tab-wimgt.inc
index bc5e27e..62844b8 100644
--- a/project/src/ui/tab-wimgt.inc
+++ b/project/src/ui/tab-wimgt.inc
@@ -186,6 +186,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wkclt.inc b/project/src/ui/tab-wkclt.inc
index ebeda48..dc00429 100644
--- a/project/src/ui/tab-wkclt.inc
+++ b/project/src/ui/tab-wkclt.inc
@@ -299,6 +299,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wkmpt.inc b/project/src/ui/tab-wkmpt.inc
index b647c4d..dc4887c 100644
--- a/project/src/ui/tab-wkmpt.inc
+++ b/project/src/ui/tab-wkmpt.inc
@@ -283,6 +283,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wlect.inc b/project/src/ui/tab-wlect.inc
index 3581bef..eb3e181 100644
--- a/project/src/ui/tab-wlect.inc
+++ b/project/src/ui/tab-wlect.inc
@@ -245,6 +245,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
@@ -413,9 +416,9 @@
"Delete LEX sections without any impact."
" This option is executed after all --lt-* options." },
- { H_OPT_G, "LEX_RM_FEAT", "rm-features|rmfeatures|lex-rm-features|lexrmfeatures",
+ { T_OPT_G, "LEX_RM_FEAT", "rm-features|rmfeatures|lex-rm-features|lexrmfeatures",
0,
- "Remove LEX setion FEA0 (features) if exists."
+ "Remove LEX setion FEAT (features) if exists."
" It is executed after --lex-purge."
" {--lex-rm-features} is an alternative name." },
@@ -699,7 +702,7 @@
// { T_COPT, "LT_ENGINE", 0,0,0 },
// { T_COPT, "LT_RANDOM", 0,0,0 },
// { T_COPT, "LEX_PURGE", 0,0,0 },
-// { H_COPT, "LEX_RM_FEAT", 0,0,0 },
+// { T_COPT, "LEX_RM_FEAT", 0,0,0 },
//---------- wlect GROUP TRACK_COPY ----------
@@ -918,7 +921,7 @@
{ T_COPT, "LT_ENGINE", 0,0,0 },
{ T_COPT, "LT_RANDOM", 0,0,0 },
{ T_COPT, "LEX_PURGE", 0,0,0 },
- { H_COPT, "LEX_RM_FEAT", 0,0,0 },
+ { T_COPT, "LEX_RM_FEAT", 0,0,0 },
{ T_SEP_OPT, 0,0,0,0 },
{ T_COPT, "LE_DEFINE", 0,0,0 },
{ T_COPT, "LOAD_BMG", 0,0,0 },
diff --git a/project/src/ui/tab-wmdlt.inc b/project/src/ui/tab-wmdlt.inc
index bb03e3b..5be888e 100644
--- a/project/src/ui/tab-wmdlt.inc
+++ b/project/src/ui/tab-wmdlt.inc
@@ -209,6 +209,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wpatt.inc b/project/src/ui/tab-wpatt.inc
index aa7b71d..66301b5 100644
--- a/project/src/ui/tab-wpatt.inc
+++ b/project/src/ui/tab-wpatt.inc
@@ -177,6 +177,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
diff --git a/project/src/ui/tab-wstrt.inc b/project/src/ui/tab-wstrt.inc
index d540bcd..223d29c 100644
--- a/project/src/ui/tab-wstrt.inc
+++ b/project/src/ui/tab-wstrt.inc
@@ -240,6 +240,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "TIMING", "timing",
0, 0 /* copy of wszst */ },
@@ -1011,6 +1014,7 @@
{ T_COPT, "FADDR", 0,0,0 },
{ T_COPT, "SNAME", 0,0,0 },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "EXT_ERRORS", 0,0,0 },
{ T_COPT, "TIMING", 0,0,0 },
{ T_SEP_OPT, 0,0,0,0 },
{ T_COPY_GRP, "HEXDUMP", 0,0,0 },
diff --git a/project/src/ui/tab-wszst.inc b/project/src/ui/tab-wszst.inc
index 3fbde8d..b9614b3 100644
--- a/project/src/ui/tab-wszst.inc
+++ b/project/src/ui/tab-wszst.inc
@@ -386,9 +386,12 @@
" Section ENPT is only checked if KCL contains a least one face"
" of type force-recalculation." },
- { H_DEF_CMD, "FEATURES", "FEATURES",
+ { T_DEF_CMD, "FEATURES", "FEATURES",
"wszst FEATURES [source]...",
- "Analyse track files and create a feature list in machine readable format." },
+ "Analyse track files and create a feature list for each source"
+ " in machine readable format."
+ " CTGP uses the feature lists to manage ghosts."
+ " See option {--lex-features} for details." },
{ T_DEF_CMD, "DISTRIBUTION", "DISTRIBUTION|DIS|DISTRIB",
"wszst DISTRIBUTION result source...\n"
@@ -740,12 +743,18 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0,
"This debug option enables the logging of internal lists and maps."
- " Set it up to three times to be more verbose.\n" },
+ " Set it up to three times to be more verbose." },
+
+ { T_OPT_GM, "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr",
+ 0,
+ "Enable extended error messages. This includes a source file and line reference."
+ " Logging level 1 activates it too."
+ " @--xerr@ is a short cut." },
{ T_OPT_GM, "TIMING", "timing",
0,
"Activate the timing of some operations."
- " Logging level 3 activates them too.\n" },
+ " Logging level 3 activates them too." },
{ T_OPT_GP, "WARN", "W|warn",
"list",
@@ -819,6 +828,11 @@
" If it is in parameter CHARS then the position determines the value,"
" otherwise the ASCII value to which 500 is added." },
+ { T_OPT_CP, "PRINTF", "printf",
+ "format",
+ "Add an output line with a formatted string."
+ "\1 See https://szs.wiimm.de/opt/printf for details." },
+
{ T_OPT_GMP, "CHDIR", "chdir",
"dir",
"Set a new working directory for all following options,"
@@ -1499,17 +1513,19 @@
" Delete sub-file course.lex if it no longer contains a section."
" This option is executed after all --lt-* and --lex-* options." },
- { H_OPT_G, "LEX_FEATURES", "lex-features|lexfeatures",
+ { T_OPT_G, "LEX_FEATURES", "lex-features|lexfeatures",
0,
- "Calculate LEX setion FEA0 (features) by analysing the track file."
+ "Calculate LEX setion FEAT (features) by analysing the track file."
" If no features found, delete the section and the possibly empty sub-file"
" course.lex. If features found, then insert the section or update"
" an existing section. If necessary, the sub-file course.lex is created."
- " This option is executed after all --lt-* options and after --lex-purge." },
+ " This option is executed after all --lt-* options and after --lex-purge."
+ "\n "
+ " CTGP uses the FEAT section to manage ghosts." },
- { H_OPT_G, "LEX_RM_FEAT", "lex-rm-features|lexrmfeatures",
+ { T_OPT_G, "LEX_RM_FEAT", "lex-rm-features|lexrmfeatures",
0,
- "Remove LEX setion FEA0 (features) if exists"
+ "Remove LEX setion FEAT (features) if exists"
" and the possibly empty sub-file course.lex."
" This option is ignored if --lex-features is set."
" It is executed after all --lt-* options and after --lex-purge." },
@@ -2488,8 +2504,8 @@
{ T_COPT, "LT_ENGINE", 0,0,0 },
{ T_COPT, "LT_RANDOM", 0,0,0 },
{ T_COPT, "LEX_PURGE", 0,0,0 },
- { H_COPT, "LEX_FEATURES", 0,0,0 },
- { H_COPT, "LEX_RM_FEAT", 0,0,0 },
+ { T_COPT, "LEX_FEATURES", 0,0,0 },
+ { T_COPT, "LEX_RM_FEAT", 0,0,0 },
{ T_COPT, "PATCH_BMG", 0,0,0 },
{ T_COPT, "MACRO_BMG", 0,0,0 },
{ T_COPT, "FILTER_BMG", 0,0,0 },
@@ -2632,6 +2648,7 @@
{ T_COPT, "RM_AIPARAM", 0,0,0 },
{ T_COPY_GRP, "ALIGN", 0,0,0 },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "EXT_ERRORS", 0,0,0 },
{ T_COPT, "TIMING", 0,0,0 },
{ T_COPY_GRP, "ENCODE", 0,0,0 },
{ T_COPT, "AUTO_ADD", 0,0,0 },
@@ -2899,6 +2916,7 @@
{ T_COPT, "BRIEF", 0,0,
"Limit output to SZS specific data." },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "EXT_ERRORS", 0,0,0 },
{ T_COPT, "TIMING", 0,0,0 },
//---------- COMMAND wszst _CODE ----------
@@ -3095,6 +3113,7 @@
{ T_CMD_BEG, "SPLIT", 0,0,0 },
{ T_COPT, "LOAD_PREFIX", 0,0,0 },
{ T_COPT, "PLUS", 0,0,0 },
+ { T_COPT, "PRINTF", 0,0,0 },
{ T_SEP_OPT, 0,0,0,0 },
{ T_COPT, "IGNORE", 0,0,0 },
{ T_SEP_OPT, 0,0,0,0 },
@@ -3320,6 +3339,7 @@
{ T_COPT, "IGNORE_SETUP", 0,0,0 },
{ T_COPY_GRP, "ALIGN", 0,0,0 },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "EXT_ERRORS", 0,0,0 },
{ T_COPT, "TIMING", 0,0,0 },
{ T_COPY_GRP, "ENCODE", 0,0,0 },
{ T_COPT, "MIPMAPS", 0,0,0 },
diff --git a/project/src/ui/ui-wbmgt.c b/project/src/ui/ui-wbmgt.c
index 0741af3..96371f8 100644
--- a/project/src/ui/ui-wbmgt.c
+++ b/project/src/ui/ui-wbmgt.c
@@ -374,13 +374,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -553,7 +559,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 == 66
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 67
};
@@ -683,7 +689,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHBM:T:A:td:D:E:orupiP:1X";
+static const char OptionShort[] = "VhqvLYW:c:lHBM:T:A:td:D:E:orupiP:1X";
static const struct option OptionLong[] =
{
@@ -702,6 +708,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -832,7 +841,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
/* 0x058 X */ OPT_EXPORT,
- /* 0x059 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -1065,6 +1075,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -1454,7 +1465,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,
- 28,
+ 29,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wbmgt.h b/project/src/ui/ui-wbmgt.h
index 31f238f..ab88947 100644
--- a/project/src/ui/ui-wbmgt.h
+++ b/project/src/ui/ui-wbmgt.h
@@ -104,6 +104,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -127,7 +128,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 66
+ OPT__N_TOTAL // == 67
} enumOptions;
@@ -358,6 +359,7 @@ typedef enum enumGetOpt
GO_VERSION = 'V',
GO_WARN = 'W',
GO_EXPORT = 'X',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wctct.c b/project/src/ui/ui-wctct.c
index 2d15c1f..8941129 100644
--- a/project/src/ui/ui-wctct.c
+++ b/project/src/ui/ui-wctct.c
@@ -474,13 +474,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -690,7 +696,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" 0x3b:0x41 and 0x44:0xfe."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 86
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 87
};
@@ -880,7 +886,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHB1XPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhqvLYW:c:lHB1XPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -899,6 +905,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -1058,7 +1067,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
/* 0x058 X */ OPT_EXPORT,
- /* 0x059 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -1309,6 +1319,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -1696,7 +1707,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,
- 31,
+ 32,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wctct.h b/project/src/ui/ui-wctct.h
index f55d4ad..2732a9d 100644
--- a/project/src/ui/ui-wctct.h
+++ b/project/src/ui/ui-wctct.h
@@ -119,6 +119,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -147,7 +148,7 @@ typedef enum enumOptions
OPT_CT_LOG,
OPT_ALLOW_SLOTS,
- OPT__N_TOTAL // == 86
+ OPT__N_TOTAL // == 87
} enumOptions;
@@ -429,6 +430,7 @@ typedef enum enumGetOpt
GO_VERSION = 'V',
GO_WARN = 'W',
GO_EXPORT = 'X',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wimgt.c b/project/src/ui/ui-wimgt.c
index c6eca37..3b86509 100644
--- a/project/src/ui/ui-wimgt.c
+++ b/project/src/ui/ui-wimgt.c
@@ -337,13 +337,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -504,7 +510,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 == 59
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 60
};
@@ -624,7 +630,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHBM:T:A:td:D:E:orupiaP:x:";
+static const char OptionShort[] = "VhqvLYW:c:lHBM:T:A:td:D:E:orupiaP:x:";
static const struct option OptionLong[] =
{
@@ -643,6 +649,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -754,7 +763,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x055 */ 0,
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
- /* 0x058 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x058 */ 0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,
/* 0x061 a */ OPT_ALL,
/* 0x062 */ 0,
/* 0x063 c */ OPT_CONST,
@@ -931,6 +942,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -1218,7 +1230,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,
- 25,
+ 26,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wimgt.h b/project/src/ui/ui-wimgt.h
index 1373c02..25a6329 100644
--- a/project/src/ui/ui-wimgt.h
+++ b/project/src/ui/ui-wimgt.h
@@ -98,6 +98,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -120,7 +121,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 59
+ OPT__N_TOTAL // == 60
} enumOptions;
@@ -289,6 +290,7 @@ typedef enum enumGetOpt
GO_TRACKS = 'T',
GO_VERSION = 'V',
GO_WARN = 'W',
+ GO_EXT_ERRORS = 'Y',
GO_ALL = 'a',
GO_CONST = 'c',
diff --git a/project/src/ui/ui-wkclt.c b/project/src/ui/ui-wkclt.c
index df62da4..b355d73 100644
--- a/project/src/ui/ui-wkclt.c
+++ b/project/src/ui/ui-wkclt.c
@@ -474,13 +474,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -692,7 +698,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 == 79
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 80
};
@@ -964,7 +970,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHBPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -983,6 +989,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -1114,7 +1123,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x055 */ 0,
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
- /* 0x058 */ 0,0,0,0, 0,0,0,0, 0,0,0,
+ /* 0x058 */ 0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -1420,6 +1431,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -2163,7 +2175,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms KCL Tool : Analyze, modify, export and create KCL and OBJ"
" files.",
0,
- 29,
+ 30,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wkclt.h b/project/src/ui/ui-wkclt.h
index 352a4b8..9695e87 100644
--- a/project/src/ui/ui-wkclt.h
+++ b/project/src/ui/ui-wkclt.h
@@ -113,6 +113,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -140,7 +141,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 79
+ OPT__N_TOTAL // == 80
} enumOptions;
@@ -428,6 +429,7 @@ typedef enum enumGetOpt
GO_TRACKS = 'T',
GO_VERSION = 'V',
GO_WARN = 'W',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wkmpt.c b/project/src/ui/ui-wkmpt.c
index 6cce3b2..64a033c 100644
--- a/project/src/ui/ui-wkmpt.c
+++ b/project/src/ui/ui-wkmpt.c
@@ -566,13 +566,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -889,7 +895,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 == 96
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 97
};
@@ -1174,7 +1180,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:w:lHBXPGNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhqvLYW:c:w:lHBXPGNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -1193,6 +1199,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -1357,7 +1366,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
/* 0x058 X */ OPT_EXPORT,
- /* 0x059 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -1665,6 +1675,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -2228,7 +2239,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms KMP Tool : Analyze, modify, export and create (compile) KMP"
" files.",
0,
- 38,
+ 39,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wkmpt.h b/project/src/ui/ui-wkmpt.h
index 9bef264..a86288f 100644
--- a/project/src/ui/ui-wkmpt.h
+++ b/project/src/ui/ui-wkmpt.h
@@ -121,6 +121,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -157,7 +158,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 96
+ OPT__N_TOTAL // == 97
} enumOptions;
@@ -443,6 +444,7 @@ typedef enum enumGetOpt
GO_VERSION = 'V',
GO_WARN = 'W',
GO_EXPORT = 'X',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wlect.c b/project/src/ui/ui-wlect.c
index 720e084..d2370c8 100644
--- a/project/src/ui/ui-wlect.c
+++ b/project/src/ui/ui-wlect.c
@@ -468,13 +468,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -602,9 +608,9 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" all --lt-* options."
},
- { OPT_LEX_RM_FEAT, false, true, false, false, false, 0, "rm-features",
+ { OPT_LEX_RM_FEAT, false, false, false, false, false, 0, "rm-features",
0,
- "Remove LEX setion FEA0 (features) if exists. It is executed after"
+ "Remove LEX setion FEAT (features) if exists. It is executed after"
" --lex-purge. --lex-rm-features is an alternative name."
},
@@ -660,7 +666,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 == 85
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 86
};
@@ -824,7 +830,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHBXPM:tCd:D:E:orupi";
+static const char OptionShort[] = "VhqvLYW:c:lHBXPM:tCd:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -843,6 +849,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -999,7 +1008,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
/* 0x058 X */ OPT_EXPORT,
- /* 0x059 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -1276,6 +1286,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -1295,6 +1306,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_NONE, // separator
@@ -1601,6 +1613,7 @@ static const InfoOption_t * option_tab_cmd_CREATE[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_NONE, // separator
@@ -1724,7 +1737,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,
- 31,
+ 33,
option_tab_tool,
0
},
@@ -2102,7 +2115,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" listing.\n"
" Use the command without keyword to get an extended description.",
0,
- 31,
+ 32,
option_tab_cmd_CREATE,
option_allowed_cmd_CREATE
},
diff --git a/project/src/ui/ui-wlect.h b/project/src/ui/ui-wlect.h
index 854d96a..6138373 100644
--- a/project/src/ui/ui-wlect.h
+++ b/project/src/ui/ui-wlect.h
@@ -119,6 +119,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -146,7 +147,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 85
+ OPT__N_TOTAL // == 86
} enumOptions;
@@ -408,6 +409,7 @@ typedef enum enumGetOpt
GO_VERSION = 'V',
GO_WARN = 'W',
GO_EXPORT = 'X',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wmdlt.c b/project/src/ui/ui-wmdlt.c
index 0be480c..7cce00d 100644
--- a/project/src/ui/ui-wmdlt.c
+++ b/project/src/ui/ui-wmdlt.c
@@ -396,13 +396,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -584,7 +590,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 == 68
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 69
};
@@ -742,7 +748,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHBPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -761,6 +767,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -871,7 +880,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x055 */ 0,
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
- /* 0x058 */ 0,0,0,0, 0,0,0,0, 0,0,0,
+ /* 0x058 */ 0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -1101,6 +1112,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -1484,7 +1496,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,
- 27,
+ 28,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wmdlt.h b/project/src/ui/ui-wmdlt.h
index 242795b..91502d8 100644
--- a/project/src/ui/ui-wmdlt.h
+++ b/project/src/ui/ui-wmdlt.h
@@ -105,6 +105,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -129,7 +130,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 68
+ OPT__N_TOTAL // == 69
} enumOptions;
@@ -350,6 +351,7 @@ typedef enum enumGetOpt
GO_TRACKS = 'T',
GO_VERSION = 'V',
GO_WARN = 'W',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wpatt.c b/project/src/ui/ui-wpatt.c
index d2b9b3a..864622d 100644
--- a/project/src/ui/ui-wpatt.c
+++ b/project/src/ui/ui-wpatt.c
@@ -238,13 +238,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -415,7 +421,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 == 52
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 53
};
@@ -539,7 +545,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHBPNM:T:A:td:D:E:orupi";
+static const char OptionShort[] = "VhqvLYW:c:lHBPNM:T:A:td:D:E:orupi";
static const struct option OptionLong[] =
{
@@ -558,6 +564,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -650,7 +659,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x055 */ 0,
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
- /* 0x058 */ 0,0,0,0, 0,0,0,0, 0,0,0,
+ /* 0x058 */ 0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -823,6 +834,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -1031,7 +1043,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,
- 26,
+ 27,
option_tab_tool,
0
},
diff --git a/project/src/ui/ui-wpatt.h b/project/src/ui/ui-wpatt.h
index 81e9549..f7bd275 100644
--- a/project/src/ui/ui-wpatt.h
+++ b/project/src/ui/ui-wpatt.h
@@ -90,6 +90,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -113,7 +114,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 52
+ OPT__N_TOTAL // == 53
} enumOptions;
@@ -273,6 +274,7 @@ typedef enum enumGetOpt
GO_TRACKS = 'T',
GO_VERSION = 'V',
GO_WARN = 'W',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wstrt.c b/project/src/ui/ui-wstrt.c
index f3900b7..b32e648 100644
--- a/project/src/ui/ui-wstrt.c
+++ b/project/src/ui/ui-wstrt.c
@@ -572,13 +572,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -898,7 +904,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" directory."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 120
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 121
};
@@ -1109,7 +1115,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "Vh@qvLW:c:lBHT:A:R:td:D:E:orupi0U";
+static const char OptionShort[] = "Vh@qvLYW:c:lBHT:A:R:td:D:E:orupi0U";
static const struct option OptionLong[] =
{
@@ -1129,6 +1135,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -1319,7 +1328,9 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x055 U */ OPT_UPPER,
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
- /* 0x058 */ 0,0,0,0, 0,0,0,0, 0,0,0,
+ /* 0x058 */ 0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,0, 0,
/* 0x063 c */ OPT_CONST,
/* 0x064 d */ OPT_DEST,
/* 0x065 */ 0,0,0,
@@ -1640,6 +1651,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -1786,6 +1798,7 @@ static const InfoOption_t * option_tab_cmd_HEXDUMP[] =
OptionInfo + OPT_FADDR,
OptionInfo + OPT_SNAME,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_NONE, // separator
@@ -2054,7 +2067,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,
- 42,
+ 43,
option_tab_tool,
0
},
@@ -2281,7 +2294,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Select parts by --vaddr, --faddr and --sname. Without selectors, the"
" whole file is dumped.",
0,
- 33,
+ 34,
option_tab_cmd_HEXDUMP,
option_allowed_cmd_HEXDUMP
},
diff --git a/project/src/ui/ui-wstrt.h b/project/src/ui/ui-wstrt.h
index 23742b8..3a4914f 100644
--- a/project/src/ui/ui-wstrt.h
+++ b/project/src/ui/ui-wstrt.h
@@ -139,6 +139,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -181,7 +182,7 @@ typedef enum enumOptions
OPT_CLEAN_DOL,
OPT_CT_DIR,
- OPT__N_TOTAL // == 120
+ OPT__N_TOTAL // == 121
} enumOptions;
@@ -472,6 +473,7 @@ typedef enum enumGetOpt
GO_UPPER = 'U',
GO_VERSION = 'V',
GO_WARN = 'W',
+ GO_EXT_ERRORS = 'Y',
GO_CONST = 'c',
GO_DEST = 'd',
diff --git a/project/src/ui/ui-wszst.c b/project/src/ui/ui-wszst.c
index 7c4445c..f9f1161 100644
--- a/project/src/ui/ui-wszst.c
+++ b/project/src/ui/ui-wszst.c
@@ -67,6 +67,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" otherwise the ASCII value to which 500 is added."
},
+ { OPT_PRINTF, false, false, false, false, false, 0, "printf",
+ "format",
+ "Add an output line with a formatted string. See"
+ " https://szs.wiimm.de/opt/printf for details."
+ },
+
{ OPT_TOUCH, false, false, false, false, false, 0, "touch",
0,
"Mark the minimap as modified to force a new calculation of the"
@@ -1146,7 +1152,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
"Print in machine readable sections and parameter lines."
},
- {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 136
+ {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 137
//----- global options -----
@@ -1227,13 +1233,19 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
"This debug option enables the logging of internal lists and maps. Set"
- " it up to three times to be more verbose.\n"
+ " it up to three times to be more verbose."
+ },
+
+ { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors",
+ 0,
+ "Enable extended error messages. This includes a source file and line"
+ " reference. Logging level 1 activates it too. --xerr is a short cut."
},
{ OPT_TIMING, false, false, false, false, false, 0, "timing",
0,
"Activate the timing of some operations. Logging level 3 activates"
- " them too.\n"
+ " them too."
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -1579,19 +1591,20 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --lt-* and --lex-* options."
},
- { OPT_LEX_FEATURES, false, true, false, false, false, 0, "lex-features",
+ { OPT_LEX_FEATURES, false, false, false, false, false, 0, "lex-features",
0,
- "Calculate LEX setion FEA0 (features) by analysing the track file. If"
+ "Calculate LEX setion FEAT (features) by analysing the track file. If"
" no features found, delete the section and the possibly empty"
" sub-file course.lex. If features found, then insert the section or"
" update an existing section. If necessary, the sub-file course.lex is"
" created. This option is executed after all --lt-* options and after"
- " --lex-purge."
+ " --lex-purge.\n"
+ " CTGP uses the FEAT section to manage ghosts."
},
- { OPT_LEX_RM_FEAT, false, true, false, false, false, 0, "lex-rm-features",
+ { OPT_LEX_RM_FEAT, false, false, false, false, false, 0, "lex-rm-features",
0,
- "Remove LEX setion FEA0 (features) if exists and the possibly empty"
+ "Remove LEX setion FEAT (features) if exists and the possibly empty"
" sub-file course.lex. This option is ignored if --lex-features is"
" set. It is executed after all --lt-* options and after --lex-purge."
},
@@ -1801,7 +1814,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 == 215
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 217
};
@@ -2401,7 +2414,7 @@ static const KeywordTab_t CommandTab[] =
/////////////// OptionShort & OptionLong ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const char OptionShort[] = "VhqvLW:c:lHB1XPS:M:T:A:x:ts:d:D:E:orupiNC:nRea";
+static const char OptionShort[] = "VhqvLYW:c:lHB1XPS:M:T:A:x:ts:d:D:E:orupiNC:nRea";
static const struct option OptionLong[] =
{
@@ -2420,6 +2433,9 @@ static const struct option OptionLong[] =
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "extended-errors", 0, 0, 'Y' },
+ { "extendederrors", 0, 0, 'Y' },
+ { "xerr", 0, 0, 'Y' },
{ "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
@@ -2433,6 +2449,7 @@ static const struct option OptionLong[] =
{ "load-prefix", 1, 0, GO_LOAD_PREFIX },
{ "loadprefix", 1, 0, GO_LOAD_PREFIX },
{ "plus", 1, 0, GO_PLUS },
+ { "printf", 1, 0, GO_PRINTF },
{ "chdir", 1, 0, GO_CHDIR },
{ "const", 1, 0, 'c' },
{ "touch", 0, 0, GO_TOUCH },
@@ -2803,7 +2820,8 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x056 V */ OPT_VERSION,
/* 0x057 W */ OPT_WARN,
/* 0x058 X */ OPT_EXPORT,
- /* 0x059 */ 0,0,0,0, 0,0,0,0,
+ /* 0x059 Y */ OPT_EXT_ERRORS,
+ /* 0x05a */ 0,0,0,0, 0,0,0,
/* 0x061 a */ OPT_ALL,
/* 0x062 */ 0,
/* 0x063 c */ OPT_CONST,
@@ -2842,172 +2860,173 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x08c */ OPT_LE_CODE,
/* 0x08d */ OPT_LOAD_PREFIX,
/* 0x08e */ OPT_PLUS,
- /* 0x08f */ OPT_CHDIR,
- /* 0x090 */ OPT_TOUCH,
- /* 0x091 */ OPT_AUTO,
- /* 0x092 */ OPT_SET_FLAGS,
- /* 0x093 */ OPT_SET_SCALE,
- /* 0x094 */ OPT_SET_ROT,
- /* 0x095 */ OPT_SET_X,
- /* 0x096 */ OPT_SET_Y,
- /* 0x097 */ OPT_SET_Z,
- /* 0x098 */ OPT_XCENTER,
- /* 0x099 */ OPT_YCENTER,
- /* 0x09a */ OPT_ZCENTER,
- /* 0x09b */ OPT_CENTER,
- /* 0x09c */ OPT_SCALE,
- /* 0x09d */ OPT_SHIFT,
- /* 0x09e */ OPT_XSS,
- /* 0x09f */ OPT_YSS,
- /* 0x0a0 */ OPT_ZSS,
- /* 0x0a1 */ OPT_ROT,
- /* 0x0a2 */ OPT_XROT,
- /* 0x0a3 */ OPT_YROT,
- /* 0x0a4 */ OPT_ZROT,
- /* 0x0a5 */ OPT_YPOS,
- /* 0x0a6 */ OPT_TRANSLATE,
- /* 0x0a7 */ OPT_NULL,
- /* 0x0a8 */ OPT_NEXT,
- /* 0x0a9 */ OPT_ASCALE,
- /* 0x0aa */ OPT_AROT,
- /* 0x0ab */ OPT_TFORM_SCRIPT,
- /* 0x0ac */ OPT_MINIMAP,
- /* 0x0ad */ OPT_RM_GOBJ,
- /* 0x0ae */ OPT_BATTLE,
- /* 0x0af */ OPT_EXPORT_FLAGS,
- /* 0x0b0 */ OPT_ROUTE_OPTIONS,
- /* 0x0b1 */ OPT_WIM0,
- /* 0x0b2 */ OPT_SLOT,
- /* 0x0b3 */ OPT_LOAD_KCL,
- /* 0x0b4 */ OPT_KCL,
- /* 0x0b5 */ OPT_KCL_FLAG,
- /* 0x0b6 */ OPT_KCL_SCRIPT,
- /* 0x0b7 */ OPT_TRI_AREA,
- /* 0x0b8 */ OPT_TRI_HEIGHT,
- /* 0x0b9 */ OPT_FLAG_FILE,
- /* 0x0ba */ OPT_XTRIDATA,
- /* 0x0bb */ OPT_KMP,
- /* 0x0bc */ OPT_SPEED_MOD,
- /* 0x0bd */ OPT_KTPT2,
- /* 0x0be */ OPT_TFORM_KMP,
- /* 0x0bf */ OPT_REPAIR_XPF,
- /* 0x0c0 */ OPT_GAMEMODES,
- /* 0x0c1 */ OPT_MDL,
- /* 0x0c2 */ OPT_PAT,
- /* 0x0c3 */ OPT_PATCH_FILE,
- /* 0x0c4 */ OPT_KMG_LIMIT,
- /* 0x0c5 */ OPT_KMG_COPY,
- /* 0x0c6 */ OPT_LT_CLEAR,
- /* 0x0c7 */ OPT_LT_ONLINE,
- /* 0x0c8 */ OPT_LT_N_PLAYERS,
- /* 0x0c9 */ OPT_LT_COND_BIT,
- /* 0x0ca */ OPT_LT_GAME_MODE,
- /* 0x0cb */ OPT_LT_ENGINE,
- /* 0x0cc */ OPT_LT_RANDOM,
- /* 0x0cd */ OPT_LEX_PURGE,
- /* 0x0ce */ OPT_LEX_FEATURES,
- /* 0x0cf */ OPT_LEX_RM_FEAT,
- /* 0x0d0 */ OPT_LOAD_BMG,
- /* 0x0d1 */ OPT_PATCH_BMG,
- /* 0x0d2 */ OPT_MACRO_BMG,
- /* 0x0d3 */ OPT_FILTER_BMG,
- /* 0x0d4 */ OPT_CACHE,
- /* 0x0d5 */ OPT_CNAME,
- /* 0x0d6 */ OPT_ID,
- /* 0x0d7 */ OPT_BASE64,
- /* 0x0d8 */ OPT_DB64,
- /* 0x0d9 */ OPT_CODING,
- /* 0x0da */ OPT_VERIFY,
- /* 0x0db */ OPT_ROUND,
- /* 0x0dc */ OPT_PIPE,
- /* 0x0dd */ OPT_DELTA,
- /* 0x0de */ OPT_DIFF,
- /* 0x0df */ OPT_EPSILON,
- /* 0x0e0 */ OPT_BMG_ENDIAN,
- /* 0x0e1 */ OPT_BMG_ENCODING,
- /* 0x0e2 */ OPT_BMG_INF_SIZE,
- /* 0x0e3 */ OPT_BMG_MID,
- /* 0x0e4 */ OPT_FORCE_ATTRIB,
- /* 0x0e5 */ OPT_DEF_ATTRIB,
- /* 0x0e6 */ OPT_NO_ATTRIB,
- /* 0x0e7 */ OPT_X_ESCAPES,
- /* 0x0e8 */ OPT_OLD_ESCAPES,
- /* 0x0e9 */ OPT_NO_BMG_COLORS,
- /* 0x0ea */ OPT_BMG_COLORS,
- /* 0x0eb */ OPT_NO_BMG_INLINE,
- /* 0x0ec */ OPT_AUTOADD_PATH,
- /* 0x0ed */ OPT_STRIP,
- /* 0x0ee */ OPT_UTF_8,
- /* 0x0ef */ OPT_NO_UTF_8,
- /* 0x0f0 */ OPT_FORCE,
- /* 0x0f1 */ OPT_REPAIR_MAGICS,
- /* 0x0f2 */ OPT_TINY,
- /* 0x0f3 */ OPT_YAZ0,
- /* 0x0f4 */ OPT_YAZ1,
- /* 0x0f5 */ OPT_XYZ,
- /* 0x0f6 */ OPT_BZ,
- /* 0x0f7 */ OPT_SH,
- /* 0x0f8 */ OPT_BASH,
- /* 0x0f9 */ OPT_JSON,
- /* 0x0fa */ OPT_PHP,
- /* 0x0fb */ OPT_MAKEDOC,
- /* 0x0fc */ OPT_VAR,
- /* 0x0fd */ OPT_ARRAY,
- /* 0x0fe */ OPT_AVAR,
- /* 0x0ff */ OPT_CASE,
- /* 0x100 */ OPT_PMODES,
- /* 0x101 */ OPT_FMODES,
- /* 0x102 */ OPT_INSTALL,
- /* 0x103 */ OPT_ANALYZE,
- /* 0x104 */ OPT_ANALYZE_MODE,
- /* 0x105 */ OPT_OLD,
- /* 0x106 */ OPT_STD,
- /* 0x107 */ OPT_NEW,
- /* 0x108 */ OPT_EXTRACT,
- /* 0x109 */ OPT_REFERENCE,
- /* 0x10a */ OPT_NUMBER,
- /* 0x10b */ OPT_REMOVE_SRC,
- /* 0x10c */ OPT_IGNORE_SETUP,
- /* 0x10d */ OPT_PURGE,
- /* 0x10e */ OPT_ALIGN_U8,
- /* 0x10f */ OPT_ALIGN_PACK,
- /* 0x110 */ OPT_ALIGN_BRRES,
- /* 0x111 */ OPT_ALIGN_BREFF,
- /* 0x112 */ OPT_ALIGN_BREFT,
- /* 0x113 */ OPT_ALIGN,
- /* 0x114 */ OPT_ENCODE_ALL,
- /* 0x115 */ OPT_ENCODE_IMG,
- /* 0x116 */ OPT_NO_ENCODE,
- /* 0x117 */ OPT_NO_RECURSE,
- /* 0x118 */ OPT_AUTO_ADD,
- /* 0x119 */ OPT_NO_ECHO,
- /* 0x11a */ OPT_PT_DIR,
- /* 0x11b */ OPT_RM_AIPARAM,
- /* 0x11c */ OPT_U8,
- /* 0x11d */ OPT_SZS,
- /* 0x11e */ OPT_WU8,
- /* 0x11f */ OPT_XWU8,
- /* 0x120 */ OPT_WBZ,
- /* 0x121 */ OPT_PACK,
- /* 0x122 */ OPT_BRRES,
- /* 0x123 */ OPT_BREFF,
- /* 0x124 */ OPT_BREFT,
- /* 0x125 */ OPT_NO_COMPRESS,
- /* 0x126 */ OPT_FAST,
- /* 0x127 */ OPT_LINKS,
- /* 0x128 */ OPT_BASEDIR,
- /* 0x129 */ OPT_DECODE,
- /* 0x12a */ OPT_MIPMAPS,
- /* 0x12b */ OPT_NO_MIPMAPS,
- /* 0x12c */ OPT_N_MIPMAPS,
- /* 0x12d */ OPT_MAX_MIPMAPS,
- /* 0x12e */ OPT_MIPMAP_SIZE,
- /* 0x12f */ OPT_FAST_MIPMAPS,
- /* 0x130 */ OPT_CMPR_DEFAULT,
- /* 0x131 */ OPT_CUT,
- /* 0x132 */ OPT_RAW,
- /* 0x133 */ OPT_SECTIONS,
- /* 0x134 */ 0,0,
+ /* 0x08f */ OPT_PRINTF,
+ /* 0x090 */ OPT_CHDIR,
+ /* 0x091 */ OPT_TOUCH,
+ /* 0x092 */ OPT_AUTO,
+ /* 0x093 */ OPT_SET_FLAGS,
+ /* 0x094 */ OPT_SET_SCALE,
+ /* 0x095 */ OPT_SET_ROT,
+ /* 0x096 */ OPT_SET_X,
+ /* 0x097 */ OPT_SET_Y,
+ /* 0x098 */ OPT_SET_Z,
+ /* 0x099 */ OPT_XCENTER,
+ /* 0x09a */ OPT_YCENTER,
+ /* 0x09b */ OPT_ZCENTER,
+ /* 0x09c */ OPT_CENTER,
+ /* 0x09d */ OPT_SCALE,
+ /* 0x09e */ OPT_SHIFT,
+ /* 0x09f */ OPT_XSS,
+ /* 0x0a0 */ OPT_YSS,
+ /* 0x0a1 */ OPT_ZSS,
+ /* 0x0a2 */ OPT_ROT,
+ /* 0x0a3 */ OPT_XROT,
+ /* 0x0a4 */ OPT_YROT,
+ /* 0x0a5 */ OPT_ZROT,
+ /* 0x0a6 */ OPT_YPOS,
+ /* 0x0a7 */ OPT_TRANSLATE,
+ /* 0x0a8 */ OPT_NULL,
+ /* 0x0a9 */ OPT_NEXT,
+ /* 0x0aa */ OPT_ASCALE,
+ /* 0x0ab */ OPT_AROT,
+ /* 0x0ac */ OPT_TFORM_SCRIPT,
+ /* 0x0ad */ OPT_MINIMAP,
+ /* 0x0ae */ OPT_RM_GOBJ,
+ /* 0x0af */ OPT_BATTLE,
+ /* 0x0b0 */ OPT_EXPORT_FLAGS,
+ /* 0x0b1 */ OPT_ROUTE_OPTIONS,
+ /* 0x0b2 */ OPT_WIM0,
+ /* 0x0b3 */ OPT_SLOT,
+ /* 0x0b4 */ OPT_LOAD_KCL,
+ /* 0x0b5 */ OPT_KCL,
+ /* 0x0b6 */ OPT_KCL_FLAG,
+ /* 0x0b7 */ OPT_KCL_SCRIPT,
+ /* 0x0b8 */ OPT_TRI_AREA,
+ /* 0x0b9 */ OPT_TRI_HEIGHT,
+ /* 0x0ba */ OPT_FLAG_FILE,
+ /* 0x0bb */ OPT_XTRIDATA,
+ /* 0x0bc */ OPT_KMP,
+ /* 0x0bd */ OPT_SPEED_MOD,
+ /* 0x0be */ OPT_KTPT2,
+ /* 0x0bf */ OPT_TFORM_KMP,
+ /* 0x0c0 */ OPT_REPAIR_XPF,
+ /* 0x0c1 */ OPT_GAMEMODES,
+ /* 0x0c2 */ OPT_MDL,
+ /* 0x0c3 */ OPT_PAT,
+ /* 0x0c4 */ OPT_PATCH_FILE,
+ /* 0x0c5 */ OPT_KMG_LIMIT,
+ /* 0x0c6 */ OPT_KMG_COPY,
+ /* 0x0c7 */ OPT_LT_CLEAR,
+ /* 0x0c8 */ OPT_LT_ONLINE,
+ /* 0x0c9 */ OPT_LT_N_PLAYERS,
+ /* 0x0ca */ OPT_LT_COND_BIT,
+ /* 0x0cb */ OPT_LT_GAME_MODE,
+ /* 0x0cc */ OPT_LT_ENGINE,
+ /* 0x0cd */ OPT_LT_RANDOM,
+ /* 0x0ce */ OPT_LEX_PURGE,
+ /* 0x0cf */ OPT_LEX_FEATURES,
+ /* 0x0d0 */ OPT_LEX_RM_FEAT,
+ /* 0x0d1 */ OPT_LOAD_BMG,
+ /* 0x0d2 */ OPT_PATCH_BMG,
+ /* 0x0d3 */ OPT_MACRO_BMG,
+ /* 0x0d4 */ OPT_FILTER_BMG,
+ /* 0x0d5 */ OPT_CACHE,
+ /* 0x0d6 */ OPT_CNAME,
+ /* 0x0d7 */ OPT_ID,
+ /* 0x0d8 */ OPT_BASE64,
+ /* 0x0d9 */ OPT_DB64,
+ /* 0x0da */ OPT_CODING,
+ /* 0x0db */ OPT_VERIFY,
+ /* 0x0dc */ OPT_ROUND,
+ /* 0x0dd */ OPT_PIPE,
+ /* 0x0de */ OPT_DELTA,
+ /* 0x0df */ OPT_DIFF,
+ /* 0x0e0 */ OPT_EPSILON,
+ /* 0x0e1 */ OPT_BMG_ENDIAN,
+ /* 0x0e2 */ OPT_BMG_ENCODING,
+ /* 0x0e3 */ OPT_BMG_INF_SIZE,
+ /* 0x0e4 */ OPT_BMG_MID,
+ /* 0x0e5 */ OPT_FORCE_ATTRIB,
+ /* 0x0e6 */ OPT_DEF_ATTRIB,
+ /* 0x0e7 */ OPT_NO_ATTRIB,
+ /* 0x0e8 */ OPT_X_ESCAPES,
+ /* 0x0e9 */ OPT_OLD_ESCAPES,
+ /* 0x0ea */ OPT_NO_BMG_COLORS,
+ /* 0x0eb */ OPT_BMG_COLORS,
+ /* 0x0ec */ OPT_NO_BMG_INLINE,
+ /* 0x0ed */ OPT_AUTOADD_PATH,
+ /* 0x0ee */ OPT_STRIP,
+ /* 0x0ef */ OPT_UTF_8,
+ /* 0x0f0 */ OPT_NO_UTF_8,
+ /* 0x0f1 */ OPT_FORCE,
+ /* 0x0f2 */ OPT_REPAIR_MAGICS,
+ /* 0x0f3 */ OPT_TINY,
+ /* 0x0f4 */ OPT_YAZ0,
+ /* 0x0f5 */ OPT_YAZ1,
+ /* 0x0f6 */ OPT_XYZ,
+ /* 0x0f7 */ OPT_BZ,
+ /* 0x0f8 */ OPT_SH,
+ /* 0x0f9 */ OPT_BASH,
+ /* 0x0fa */ OPT_JSON,
+ /* 0x0fb */ OPT_PHP,
+ /* 0x0fc */ OPT_MAKEDOC,
+ /* 0x0fd */ OPT_VAR,
+ /* 0x0fe */ OPT_ARRAY,
+ /* 0x0ff */ OPT_AVAR,
+ /* 0x100 */ OPT_CASE,
+ /* 0x101 */ OPT_PMODES,
+ /* 0x102 */ OPT_FMODES,
+ /* 0x103 */ OPT_INSTALL,
+ /* 0x104 */ OPT_ANALYZE,
+ /* 0x105 */ OPT_ANALYZE_MODE,
+ /* 0x106 */ OPT_OLD,
+ /* 0x107 */ OPT_STD,
+ /* 0x108 */ OPT_NEW,
+ /* 0x109 */ OPT_EXTRACT,
+ /* 0x10a */ OPT_REFERENCE,
+ /* 0x10b */ OPT_NUMBER,
+ /* 0x10c */ OPT_REMOVE_SRC,
+ /* 0x10d */ OPT_IGNORE_SETUP,
+ /* 0x10e */ OPT_PURGE,
+ /* 0x10f */ OPT_ALIGN_U8,
+ /* 0x110 */ OPT_ALIGN_PACK,
+ /* 0x111 */ OPT_ALIGN_BRRES,
+ /* 0x112 */ OPT_ALIGN_BREFF,
+ /* 0x113 */ OPT_ALIGN_BREFT,
+ /* 0x114 */ OPT_ALIGN,
+ /* 0x115 */ OPT_ENCODE_ALL,
+ /* 0x116 */ OPT_ENCODE_IMG,
+ /* 0x117 */ OPT_NO_ENCODE,
+ /* 0x118 */ OPT_NO_RECURSE,
+ /* 0x119 */ OPT_AUTO_ADD,
+ /* 0x11a */ OPT_NO_ECHO,
+ /* 0x11b */ OPT_PT_DIR,
+ /* 0x11c */ OPT_RM_AIPARAM,
+ /* 0x11d */ OPT_U8,
+ /* 0x11e */ OPT_SZS,
+ /* 0x11f */ OPT_WU8,
+ /* 0x120 */ OPT_XWU8,
+ /* 0x121 */ OPT_WBZ,
+ /* 0x122 */ OPT_PACK,
+ /* 0x123 */ OPT_BRRES,
+ /* 0x124 */ OPT_BREFF,
+ /* 0x125 */ OPT_BREFT,
+ /* 0x126 */ OPT_NO_COMPRESS,
+ /* 0x127 */ OPT_FAST,
+ /* 0x128 */ OPT_LINKS,
+ /* 0x129 */ OPT_BASEDIR,
+ /* 0x12a */ OPT_DECODE,
+ /* 0x12b */ OPT_MIPMAPS,
+ /* 0x12c */ OPT_NO_MIPMAPS,
+ /* 0x12d */ OPT_N_MIPMAPS,
+ /* 0x12e */ OPT_MAX_MIPMAPS,
+ /* 0x12f */ OPT_MIPMAP_SIZE,
+ /* 0x130 */ OPT_FAST_MIPMAPS,
+ /* 0x131 */ OPT_CMPR_DEFAULT,
+ /* 0x132 */ OPT_CUT,
+ /* 0x133 */ OPT_RAW,
+ /* 0x134 */ OPT_SECTIONS,
+ /* 0x135 */ 0,
};
//
@@ -3015,724 +3034,724 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/////////////// opt_allowed_cmd_* ///////////////
///////////////////////////////////////////////////////////////////////////////
-static u8 option_allowed_cmd_VERSION[136] = // cmd #1
+static u8 option_allowed_cmd_VERSION[137] = // cmd #1
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1
};
-static u8 option_allowed_cmd_HELP[136] = // cmd #2
+static u8 option_allowed_cmd_HELP[137] = // cmd #2
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1
};
-static u8 option_allowed_cmd_CONFIG[136] = // cmd #3
+static u8 option_allowed_cmd_CONFIG[137] = // cmd #3
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1
};
-static u8 option_allowed_cmd_INSTALL[136] = // cmd #4
+static u8 option_allowed_cmd_INSTALL[137] = // cmd #4
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_ARGTEST[136] = // cmd #5
+static u8 option_allowed_cmd_ARGTEST[137] = // cmd #5
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1
};
-static u8 option_allowed_cmd_EXPAND[136] = // cmd #6
+static u8 option_allowed_cmd_EXPAND[137] = // cmd #6
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1
};
-static u8 option_allowed_cmd_TEST[136] = // cmd #7
+static u8 option_allowed_cmd_TEST[137] = // cmd #7
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1
};
-static u8 option_allowed_cmd_COLORS[136] = // cmd #8
+static u8 option_allowed_cmd_COLORS[137] = // cmd #8
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_ERROR[136] = // cmd #9
+static u8 option_allowed_cmd_ERROR[137] = // cmd #9
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1
};
-static u8 option_allowed_cmd_FILETYPE[136] = // cmd #10
+static u8 option_allowed_cmd_FILETYPE[137] = // cmd #10
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_FILEATTRIB[136] = // cmd #11
+static u8 option_allowed_cmd_FILEATTRIB[137] = // cmd #11
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_BRSUB[136] = // cmd #12
+static u8 option_allowed_cmd_BRSUB[137] = // cmd #12
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_SYMBOLS[136] = // cmd #13
+static u8 option_allowed_cmd_SYMBOLS[137] = // cmd #13
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_FUNCTIONS[136] = // cmd #14
+static u8 option_allowed_cmd_FUNCTIONS[137] = // cmd #14
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_CALCULATE[136] = // cmd #15
+static u8 option_allowed_cmd_CALCULATE[137] = // cmd #15
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_MATRIX[136] = // cmd #16
+static u8 option_allowed_cmd_MATRIX[137] = // cmd #16
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_FLOAT[136] = // cmd #17
+static u8 option_allowed_cmd_FLOAT[137] = // cmd #17
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_VR_CALC[136] = // cmd #18
+static u8 option_allowed_cmd_VR_CALC[137] = // cmd #18
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_VR_RACE[136] = // cmd #19
+static u8 option_allowed_cmd_VR_RACE[137] = // cmd #19
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_AUTOADD[136] = // cmd #20
+static u8 option_allowed_cmd_AUTOADD[137] = // cmd #20
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,0,1,0, 0,1,0,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 0,0,1,0,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_TRACKS[136] = // cmd #21
+static u8 option_allowed_cmd_TRACKS[137] = // cmd #21
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,1,0, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,1, 0,0,1,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0
};
-static u8 option_allowed_cmd_SCANCACHE[136] = // cmd #22
+static u8 option_allowed_cmd_SCANCACHE[137] = // cmd #22
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_EXPORT[136] = // cmd #23
+static u8 option_allowed_cmd_EXPORT[137] = // cmd #23
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_SIZEOF[136] = // cmd #24
+static u8 option_allowed_cmd_SIZEOF[137] = // cmd #24
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_CODE[136] = // cmd #25
+static u8 option_allowed_cmd_CODE[137] = // cmd #25
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_RECODE[136] = // cmd #26
+static u8 option_allowed_cmd_RECODE[137] = // cmd #26
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_SUBFILE[136] = // cmd #27
+static u8 option_allowed_cmd_SUBFILE[137] = // cmd #27
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,1,1,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,1,1,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_TESTNORM[136] = // cmd #28
+static u8 option_allowed_cmd_TESTNORM[137] = // cmd #28
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_LIST[136] = // cmd #29
+static u8 option_allowed_cmd_LIST[137] = // cmd #29
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_LIST_L[136] = // cmd #30
+static u8 option_allowed_cmd_LIST_L[137] = // cmd #30
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_LIST_LL[136] = // cmd #31
+static u8 option_allowed_cmd_LIST_LL[137] = // cmd #31
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_LIST_LLL[136] = // cmd #32
+static u8 option_allowed_cmd_LIST_LLL[137] = // cmd #32
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_LIST_A[136] = // cmd #33
+static u8 option_allowed_cmd_LIST_A[137] = // cmd #33
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_LIST_LA[136] = // cmd #34
+static u8 option_allowed_cmd_LIST_LA[137] = // cmd #34
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_NAME_REF[136] = // cmd #35
+static u8 option_allowed_cmd_NAME_REF[137] = // cmd #35
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_ILIST[136] = // cmd #36
+static u8 option_allowed_cmd_ILIST[137] = // cmd #36
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_ILIST_L[136] = // cmd #37
+static u8 option_allowed_cmd_ILIST_L[137] = // cmd #37
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_ILIST_LL[136] = // cmd #38
+static u8 option_allowed_cmd_ILIST_LL[137] = // cmd #38
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_ILIST_A[136] = // cmd #39
+static u8 option_allowed_cmd_ILIST_A[137] = // cmd #39
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_ILIST_LA[136] = // cmd #40
+static u8 option_allowed_cmd_ILIST_LA[137] = // cmd #40
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_MEMORY[136] = // cmd #41
+static u8 option_allowed_cmd_MEMORY[137] = // cmd #41
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_MEMORY_A[136] = // cmd #42
+static u8 option_allowed_cmd_MEMORY_A[137] = // cmd #42
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0
};
-static u8 option_allowed_cmd_DUMP[136] = // cmd #43
+static u8 option_allowed_cmd_DUMP[137] = // cmd #43
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,0,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_SHA1[136] = // cmd #44
+static u8 option_allowed_cmd_SHA1[137] = // cmd #44
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,1,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,0,1, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,0,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_ANALYZE[136] = // cmd #45
+static u8 option_allowed_cmd_ANALYZE[137] = // cmd #45
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1
};
-static u8 option_allowed_cmd_SPLIT[136] = // cmd #46
+static u8 option_allowed_cmd_SPLIT[137] = // cmd #46
{
- 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1
};
-static u8 option_allowed_cmd_IS_TEXTURE[136] = // cmd #47
+static u8 option_allowed_cmd_IS_TEXTURE[137] = // cmd #47
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_FEATURES[136] = // cmd #48
+static u8 option_allowed_cmd_FEATURES[137] = // cmd #48
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1
};
-static u8 option_allowed_cmd_DISTRIBUTION[136] = // cmd #49
+static u8 option_allowed_cmd_DISTRIBUTION[137] = // cmd #49
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,1,
- 1,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 1,1,0,0,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_DIFF[136] = // cmd #50
+static u8 option_allowed_cmd_DIFF[137] = // cmd #50
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,1,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,1,1,0, 0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,1,1, 0,0
};
-static u8 option_allowed_cmd_CHECK[136] = // cmd #51
+static u8 option_allowed_cmd_CHECK[137] = // cmd #51
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0,
- 1,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,1, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 0,1,0,0,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_SLOTS[136] = // cmd #52
+static u8 option_allowed_cmd_SLOTS[137] = // cmd #52
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0,
- 1,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0,
+ 0,1,0,0,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_STGI[136] = // cmd #53
+static u8 option_allowed_cmd_STGI[137] = // cmd #53
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_ISARENA[136] = // cmd #54
+static u8 option_allowed_cmd_ISARENA[137] = // cmd #54
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_NORMALIZE[136] = // cmd #55
+static u8 option_allowed_cmd_NORMALIZE[137] = // cmd #55
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, 1,1,0,0,0, 0,0,0,1,1,
- 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,0,0,1,
+ 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_PATCH[136] = // cmd #56
+static u8 option_allowed_cmd_PATCH[137] = // cmd #56
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, 1,1,0,0,0, 0,0,1,1,1,
- 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,0,1,1,
+ 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_COPY[136] = // cmd #57
+static u8 option_allowed_cmd_COPY[137] = // cmd #57
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, 1,1,0,0,0, 0,0,1,1,1,
- 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,0,1,1,
+ 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_DUPLICATE[136] = // cmd #58
+static u8 option_allowed_cmd_DUPLICATE[137] = // cmd #58
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,1,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, 1,1,0,0,0, 0,0,1,1,1,
- 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,1,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,0,1,1,
+ 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_MINIMAP[136] = // cmd #59
+static u8 option_allowed_cmd_MINIMAP[137] = // cmd #59
{
- 0,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,1,
- 0,0,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,0,0,0, 0,0,0,0,0, 0,0,1,1,1,
- 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,1,
+ 1,0,0,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,1,1,
+ 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_COMPRESS[136] = // cmd #60
+static u8 option_allowed_cmd_COMPRESS[137] = // cmd #60
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, 1,1,0,0,0, 0,0,1,1,1,
- 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,0,1,1,
+ 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_DECOMPRESS[136] = // cmd #61
+static u8 option_allowed_cmd_DECOMPRESS[137] = // cmd #61
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1,
- 0,0,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,0,1, 0,0,0,0,0, 0,0,0,0,1,
- 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1,
+ 1,0,0,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0, 1,0,0,0,0, 0,0,0,0,0,
+ 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_ENCODE[136] = // cmd #62
+static u8 option_allowed_cmd_ENCODE[137] = // cmd #62
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,1,0,1,1, 1,1,1,1,1, 1,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_CREATE[136] = // cmd #63
+static u8 option_allowed_cmd_CREATE[137] = // cmd #63
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,1,1,0,
- 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,0,
- 1,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,1,1,
+ 0,1,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 0,1,0,0,0, 0,1,1,1,1, 1,1,1,0,1, 0,0
};
-static u8 option_allowed_cmd_UPDATE[136] = // cmd #64
+static u8 option_allowed_cmd_UPDATE[137] = // cmd #64
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,1,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,1,1, 1,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,1,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,1, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,1, 1,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1,
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,1, 0,0
};
-static u8 option_allowed_cmd_EXTRACT[136] = // cmd #65
+static u8 option_allowed_cmd_EXTRACT[137] = // cmd #65
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,1, 1,0,1,1,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,1,1,0,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 1,1,1,1,1, 1,1,0,0,0, 1,1,1,1,1, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 1,1,0,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,1,1,0, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,1,1,1,1, 1,1,1,0,0, 0,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_XDECODE[136] = // cmd #66
+static u8 option_allowed_cmd_XDECODE[137] = // cmd #66
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,1, 1,0,1,1,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,1,1,0,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 1,1,1,1,1, 1,1,0,0,0, 1,1,1,1,1, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 1,1,0,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,1,1,0, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,1,1,1,1, 1,1,1,0,0, 0,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_XEXPORT[136] = // cmd #67
+static u8 option_allowed_cmd_XEXPORT[137] = // cmd #67
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,1, 1,0,1,1,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,1,1,0,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 1,1,1,1,1, 1,1,0,0,0, 1,1,1,1,1, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 1,1,0,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,1,1,0, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,1,1,1,1, 1,1,1,0,0, 0,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_XALL[136] = // cmd #68
+static u8 option_allowed_cmd_XALL[137] = // cmd #68
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,1, 1,0,1,1,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,1,1,0,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 1,1,1,1,1, 1,1,0,0,0, 1,1,1,1,1, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 1,1,0,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,1,1,0, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,1,1,1,1, 1,1,1,0,0, 0,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_XCOMMON[136] = // cmd #69
+static u8 option_allowed_cmd_XCOMMON[137] = // cmd #69
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_BINARY[136] = // cmd #70
+static u8 option_allowed_cmd_BINARY[137] = // cmd #70
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_TEXT[136] = // cmd #71
+static u8 option_allowed_cmd_TEXT[137] = // cmd #71
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,0,1,1,0, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,1,1,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,1,1,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_CAT[136] = // cmd #72
+static u8 option_allowed_cmd_CAT[137] = // cmd #72
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,0,1,1,0, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_BMG[136] = // cmd #73
+static u8 option_allowed_cmd_BMG[137] = // cmd #73
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,0,0,0, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_KCL[136] = // cmd #74
+static u8 option_allowed_cmd_KCL[137] = // cmd #74
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_KMP[136] = // cmd #75
+static u8 option_allowed_cmd_KMP[137] = // cmd #75
{
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,0,0, 1,1,1,0,0, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_LEX[136] = // cmd #76
+static u8 option_allowed_cmd_LEX[137] = // cmd #76
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_INFO[136] = // cmd #77
+static u8 option_allowed_cmd_INFO[137] = // cmd #77
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_GHOST[136] = // cmd #78
+static u8 option_allowed_cmd_GHOST[137] = // cmd #78
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,0,0,0, 0,0,0,0,1,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1
};
-static u8 option_allowed_cmd_YAZDUMP[136] = // cmd #79
+static u8 option_allowed_cmd_YAZDUMP[137] = // cmd #79
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,1,1,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,1,1,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_VEHICLE[136] = // cmd #80
+static u8 option_allowed_cmd_VEHICLE[137] = // cmd #80
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,1,0,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,1,0,1, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
@@ -3755,6 +3774,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
@@ -3790,6 +3810,8 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_CACHE,
OptionInfo + OPT_CNAME,
OptionInfo + OPT_MAX_FILE_SIZE,
@@ -4052,6 +4074,7 @@ static const InfoOption_t * option_tab_cmd_SIZEOF[] =
&option_cmd_SIZEOF_SORT,
&option_cmd_SIZEOF_BRIEF,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
0
@@ -4126,6 +4149,7 @@ static const InfoOption_t * option_tab_cmd_LIST[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4190,6 +4214,7 @@ static const InfoOption_t * option_tab_cmd_LIST_L[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4254,6 +4279,7 @@ static const InfoOption_t * option_tab_cmd_LIST_LL[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4318,6 +4344,7 @@ static const InfoOption_t * option_tab_cmd_LIST_LLL[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4382,6 +4409,7 @@ static const InfoOption_t * option_tab_cmd_LIST_A[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4446,6 +4474,7 @@ static const InfoOption_t * option_tab_cmd_LIST_LA[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4517,6 +4546,7 @@ static const InfoOption_t * option_tab_cmd_ILIST[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4578,6 +4608,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_L[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4639,6 +4670,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_LL[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4700,6 +4732,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_A[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4761,6 +4794,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_LA[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4827,6 +4861,7 @@ static const InfoOption_t * option_tab_cmd_MEMORY[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4893,6 +4928,7 @@ static const InfoOption_t * option_tab_cmd_MEMORY_A[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -4949,6 +4985,7 @@ static const InfoOption_t * option_tab_cmd_DUMP[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -5008,6 +5045,7 @@ static const InfoOption_t * option_tab_cmd_SHA1[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -5075,6 +5113,7 @@ static const InfoOption_t * option_tab_cmd_SPLIT[] =
{
OptionInfo + OPT_LOAD_PREFIX,
OptionInfo + OPT_PLUS,
+ OptionInfo + OPT_PRINTF,
OptionInfo + OPT_NONE, // separator
@@ -5170,6 +5209,7 @@ static const InfoOption_t * option_tab_cmd_DISTRIBUTION[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -5248,6 +5288,7 @@ static const InfoOption_t * option_tab_cmd_CHECK[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -5316,6 +5357,8 @@ static const InfoOption_t * option_tab_cmd_CHECK[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -5352,6 +5395,7 @@ static const InfoOption_t * option_tab_cmd_SLOTS[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -5421,6 +5465,8 @@ static const InfoOption_t * option_tab_cmd_SLOTS[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -5535,6 +5581,8 @@ static const InfoOption_t * option_tab_cmd_NORMALIZE[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -5628,6 +5676,8 @@ static const InfoOption_t * option_tab_cmd_PATCH[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -5721,6 +5771,8 @@ static const InfoOption_t * option_tab_cmd_COPY[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -5815,6 +5867,8 @@ static const InfoOption_t * option_tab_cmd_DUPLICATE[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -5963,6 +6017,8 @@ static const InfoOption_t * option_tab_cmd_COMPRESS[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6046,6 +6102,8 @@ static const InfoOption_t * option_tab_cmd_DECOMPRESS[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6063,6 +6121,7 @@ static const InfoOption_t * option_tab_cmd_ENCODE[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -6131,6 +6190,8 @@ static const InfoOption_t * option_tab_cmd_ENCODE[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6176,6 +6237,7 @@ static const InfoOption_t * option_tab_cmd_CREATE[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_EXT_ERRORS,
OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
@@ -6248,6 +6310,8 @@ static const InfoOption_t * option_tab_cmd_CREATE[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6334,6 +6398,8 @@ static const InfoOption_t * option_tab_cmd_UPDATE[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6419,6 +6485,8 @@ static const InfoOption_t * option_tab_cmd_EXTRACT[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6504,6 +6572,8 @@ static const InfoOption_t * option_tab_cmd_XDECODE[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6589,6 +6659,8 @@ static const InfoOption_t * option_tab_cmd_XEXPORT[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6674,6 +6746,8 @@ static const InfoOption_t * option_tab_cmd_XALL[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6867,6 +6941,8 @@ static const InfoOption_t * option_tab_cmd_KCL[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -6927,6 +7003,8 @@ static const InfoOption_t * option_tab_cmd_KMP[] =
OptionInfo + OPT_LT_ENGINE,
OptionInfo + OPT_LT_RANDOM,
OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_LEX_FEATURES,
+ OptionInfo + OPT_LEX_RM_FEAT,
OptionInfo + OPT_PATCH_BMG,
OptionInfo + OPT_MACRO_BMG,
OptionInfo + OPT_FILTER_BMG,
@@ -7027,7 +7105,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,
- 70,
+ 73,
option_tab_tool,
0
},
@@ -7440,7 +7518,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"This hidden command prints a list with the size of data structures"
" and variables.",
0,
- 4,
+ 5,
option_tab_cmd_SIZEOF,
option_allowed_cmd_SIZEOF
},
@@ -7515,7 +7593,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" archives. If listing a directory, then a virtual SZS file is created"
" (like CREATE does it) and listed.",
0,
- 49,
+ 50,
option_tab_cmd_LIST,
option_allowed_cmd_LIST
},
@@ -7530,7 +7608,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with size. 'LIST-L' and 'LL' are short cuts for"
" 'LIST --long'.",
0,
- 49,
+ 50,
option_tab_cmd_LIST_L,
option_allowed_cmd_LIST_L
},
@@ -7545,7 +7623,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with offset and size. 'LIST-LL' and 'LLL' are"
" short cuts for 'LIST --long --long'.",
0,
- 49,
+ 50,
option_tab_cmd_LIST_LL,
option_allowed_cmd_LIST_LL
},
@@ -7560,7 +7638,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with offset and size in debugging mode. 'LIST-LLL'"
" and 'LLLL' are short cuts for 'LIST --long --long --long'.",
0,
- 49,
+ 50,
option_tab_cmd_LIST_LLL,
option_allowed_cmd_LIST_LLL
},
@@ -7575,7 +7653,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all sub files with size. 'LIST-A' and 'LA' are short"
" cuts for 'LIST --long --all --all'.",
0,
- 49,
+ 50,
option_tab_cmd_LIST_A,
option_allowed_cmd_LIST_A
},
@@ -7590,7 +7668,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all sub files with offset and size. 'LIST-LA' and"
" 'LLA' are short cuts for 'LIST --long --long --all --all'.",
0,
- 49,
+ 50,
option_tab_cmd_LIST_LA,
option_allowed_cmd_LIST_LA
},
@@ -7624,7 +7702,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" listing a directory, then a virtual SZS file is created (like CREATE"
" does it) and listed.",
0,
- 46,
+ 47,
option_tab_cmd_ILIST,
option_allowed_cmd_ILIST
},
@@ -7639,7 +7717,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,
- 46,
+ 47,
option_tab_cmd_ILIST_L,
option_allowed_cmd_ILIST_L
},
@@ -7654,7 +7732,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,
- 46,
+ 47,
option_tab_cmd_ILIST_LL,
option_allowed_cmd_ILIST_LL
},
@@ -7669,7 +7747,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,
- 46,
+ 47,
option_tab_cmd_ILIST_A,
option_allowed_cmd_ILIST_A
},
@@ -7684,7 +7762,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,
- 46,
+ 47,
option_tab_cmd_ILIST_LA,
option_allowed_cmd_ILIST_LA
},
@@ -7699,7 +7777,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Dump a memory map of each source file. Virtual images (extracted"
" directories) are also supported.",
0,
- 48,
+ 49,
option_tab_cmd_MEMORY,
option_allowed_cmd_MEMORY
},
@@ -7714,7 +7792,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,
- 48,
+ 49,
option_tab_cmd_MEMORY_A,
option_allowed_cmd_MEMORY_A
},
@@ -7731,7 +7809,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" relocation. Virtual images (extracted directories) are also"
" supported.",
0,
- 42,
+ 43,
option_tab_cmd_DUMP,
option_allowed_cmd_DUMP
},
@@ -7746,7 +7824,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a SHA1 checksum for each source. The checksum is calculated by"
" using the uncompressed data and after patching.",
0,
- 49,
+ 50,
option_tab_cmd_SHA1,
option_allowed_cmd_SHA1
},
@@ -7775,7 +7853,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Analyse (file) names and split them into the different parts. Print"
" the results in machine readable format.",
0,
- 15,
+ 16,
option_tab_cmd_SPLIT,
option_allowed_cmd_SPLIT
},
@@ -7801,14 +7879,15 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
},
{ CMD_FEATURES,
- true,
+ false,
false,
false,
"FEATURES",
0,
"wszst FEATURES [source]...",
- "Analyse track files and create a feature list in machine readable"
- " format.",
+ "Analyse track files and create a feature list for each source in"
+ " machine readable format. CTGP uses the feature lists to manage"
+ " ghosts. See option --lex-features for details.",
0,
18,
option_tab_cmd_FEATURES,
@@ -7837,7 +7916,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" See »welect DISTRIBUTION« for a new and alternative implementation"
" of this.",
0,
- 46,
+ 47,
option_tab_cmd_DISTRIBUTION,
option_allowed_cmd_DISTRIBUTION
},
@@ -7873,7 +7952,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" internal object and file database. The source can be a SZS, U8, WU8"
" or WBZ file, or an U8 like directory.",
0,
- 91,
+ 94,
option_tab_cmd_CHECK,
option_allowed_cmd_CHECK
},
@@ -7891,7 +7970,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" positive or a negative slot list, whatever is shorter. For battle"
" arenas, the keyword ARENA is printed.",
0,
- 87,
+ 90,
option_tab_cmd_SLOTS,
option_allowed_cmd_SLOTS
},
@@ -7949,7 +8028,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" changed.\n"
" 'wszst NORMALIZE' is the same as 'wszst PATCH --norm'.",
0,
- 74,
+ 76,
option_tab_cmd_NORMALIZE,
option_allowed_cmd_NORMALIZE
},
@@ -7966,7 +8045,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Compressed sources are compressed again. The destination is only"
" written if any data changed.",
0,
- 75,
+ 77,
option_tab_cmd_PATCH,
option_allowed_cmd_PATCH
},
@@ -7987,7 +8066,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" destination filename with escapes. Patching is also possible and"
" option --overwrite is set implicitly.",
0,
- 75,
+ 77,
option_tab_cmd_COPY,
option_allowed_cmd_COPY
},
@@ -8012,7 +8091,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Use command 'wkmpt GAMEMODES' to list all variants and to check them"
" beforehand.",
0,
- 76,
+ 78,
option_tab_cmd_DUPLICATE,
option_allowed_cmd_DUPLICATE
},
@@ -8046,7 +8125,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" compressed, then decompress and compress it again. The default"
" destination is '%P/%N.szs'.",
0,
- 75,
+ 77,
option_tab_cmd_COMPRESS,
option_allowed_cmd_COMPRESS
},
@@ -8060,7 +8139,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"wszst DECOMPRESS [szs]...",
"Decompress SZS files. The default destination is '%P/%N.u8'.",
0,
- 68,
+ 70,
option_tab_cmd_DECOMPRESS,
option_allowed_cmd_DECOMPRESS
},
@@ -8075,7 +8154,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Create and/or encode sub files if necessary. It works like command"
" CREATE, but without creating a new first level archive file.",
0,
- 70,
+ 73,
option_tab_cmd_ENCODE,
option_allowed_cmd_ENCODE
},
@@ -8091,7 +8170,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" not hidden files of the directory structure. Create and/or encode"
" sub files if necessary. The default destination is '%P/%N%T'.",
0,
- 96,
+ 99,
option_tab_cmd_CREATE,
option_allowed_cmd_CREATE
},
@@ -8110,7 +8189,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" secondary source is used to find the source sub files. The default"
" secondary source is '%P/%N.d/'.",
0,
- 68,
+ 70,
option_tab_cmd_UPDATE,
option_allowed_cmd_UPDATE
},
@@ -8125,7 +8204,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Extract all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC"
" archives. The default destination is '%P/%N.d/'.",
0,
- 73,
+ 75,
option_tab_cmd_EXTRACT,
option_allowed_cmd_EXTRACT
},
@@ -8142,7 +8221,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" and decodes all supported files. The default destination is"
" '%P/%N.d/'.",
0,
- 73,
+ 75,
option_tab_cmd_XDECODE,
option_allowed_cmd_XDECODE
},
@@ -8159,7 +8238,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" archives and decodes all supported files with enabled export mode."
" The default destination is '%P/%N.d/'.",
0,
- 73,
+ 75,
option_tab_cmd_XEXPORT,
option_allowed_cmd_XEXPORT
},
@@ -8176,7 +8255,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" recursively and decodes all supported files. The default destination"
" is '%P/%N.d/'.",
0,
- 73,
+ 75,
option_tab_cmd_XALL,
option_allowed_cmd_XALL
},
@@ -8277,7 +8356,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Automated dropping of bad KCL triangles is enabled if no other drop"
" option is specified by option --kcl.",
0,
- 50,
+ 52,
option_tab_cmd_KCL,
option_allowed_cmd_KCL
},
@@ -8292,7 +8371,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"For each archive the KMP sub file course.kmp is searched and, if"
" found, decoded and printed (copied to stdout).",
0,
- 51,
+ 53,
option_tab_cmd_KMP,
option_allowed_cmd_KMP
},
diff --git a/project/src/ui/ui-wszst.h b/project/src/ui/ui-wszst.h
index cdd1c7a..ef30a33 100644
--- a/project/src/ui/ui-wszst.h
+++ b/project/src/ui/ui-wszst.h
@@ -57,6 +57,7 @@ typedef enum enumOptions
//----- command specific options -----
OPT_PLUS,
+ OPT_PRINTF,
OPT_TOUCH,
OPT_AUTO,
OPT_SET_FLAGS,
@@ -192,7 +193,7 @@ typedef enum enumOptions
OPT_RAW,
OPT_SECTIONS,
- OPT__N_SPECIFIC, // == 136
+ OPT__N_SPECIFIC, // == 137
//----- global options -----
@@ -208,6 +209,7 @@ typedef enum enumOptions
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_EXT_ERRORS,
OPT_TIMING,
OPT_WARN,
OPT_DE,
@@ -276,7 +278,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 215
+ OPT__N_TOTAL // == 217
} enumOptions;
@@ -292,6 +294,7 @@ typedef enum enumOptions
// //----- command specific options -----
//
// OB_PLUS = 1llu << OPT_PLUS,
+// OB_PRINTF = 1llu << OPT_PRINTF,
// OB_TOUCH = 1llu << OPT_TOUCH,
// OB_AUTO = 1llu << OPT_AUTO,
// OB_SET_FLAGS = 1llu << OPT_SET_FLAGS,
@@ -731,6 +734,7 @@ typedef enum enumOptions
// | OB_DEST2,
//
// OB_CMD_SPLIT = OB_PLUS
+// | OB_PRINTF
// | OB_IGNORE
// | OB_GRP_SCRIPT
// | OB_DEST
@@ -1077,6 +1081,7 @@ typedef enum enumGetOpt
GO_VERSION = 'V',
GO_WARN = 'W',
GO_EXPORT = 'X',
+ GO_EXT_ERRORS = 'Y',
GO_ALL = 'a',
GO_CONST = 'c',
@@ -1111,6 +1116,7 @@ typedef enum enumGetOpt
GO_LE_CODE,
GO_LOAD_PREFIX,
GO_PLUS,
+ GO_PRINTF,
GO_CHDIR,
GO_TOUCH,
GO_AUTO,
diff --git a/project/src/ui/ui.def b/project/src/ui/ui.def
index ed569a1..986824b 100644
--- a/project/src/ui/ui.def
+++ b/project/src/ui/ui.def
@@ -281,6 +281,12 @@
" CAME has been intentionally left out. Section ENPT is only checked" \
" if KCL contains a least one face of type force-recalculation." )
+#:def_cmd( "FEATURES", "FEATURES", \
+ "wszst FEATURES [source]...", \
+ "Analyse track files and create a feature list for each source in" \
+ " machine readable format. CTGP uses the feature lists to manage" \
+ " ghosts. See option {--lex-features} for details." )
+
#:def_cmd( "DISTRIBUTION", "DISTRIBUTION|DIS|DISTRIB", \
"wszst DISTRIBUTION result source...\n" \
"wszst DISTRIBUTION directory [source]...", \
@@ -576,12 +582,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -642,6 +654,10 @@
" If it is in parameter CHARS then the position determines the value," \
" otherwise the ASCII value to which 500 is added." )
+#:def_opt( "PRINTF", "printf", "CP", \
+ "format", \
+ "Add an output line with a formatted string." )
+
#:def_opt( "CHDIR", "chdir", "GMP", \
"dir", \
"Set a new working directory for all following options, for all" \
@@ -1202,6 +1218,22 @@
" it no longer contains a section. This option is executed after all" \
" --lt-* and --lex-* options." )
+#:def_opt( "LEX_FEATURES", "lex-features|lexfeatures", "G", \
+ "", \
+ "Calculate LEX setion FEAT (features) by analysing the track file. If" \
+ " no features found, delete the section and the possibly empty" \
+ " sub-file course.lex. If features found, then insert the section or" \
+ " update an existing section. If necessary, the sub-file course.lex is" \
+ " created. This option is executed after all --lt-* options and after" \
+ " --lex-purge.\n" \
+ " CTGP uses the FEAT section to manage ghosts." )
+
+#:def_opt( "LEX_RM_FEAT", "lex-rm-features|lexrmfeatures", "G", \
+ "", \
+ "Remove LEX setion FEAT (features) if exists and the possibly empty" \
+ " sub-file course.lex. This option is ignored if --lex-features is" \
+ " set. It is executed after all --lt-* options and after --lex-purge." )
+
#:def_opt( "LOAD_BMG", "load-bmg|loadbmg", "CMP", \
"file", \
"Load immediately the file to fill an internal message pool. The" \
@@ -2314,6 +2346,10 @@
"", \
"" )
+#:def_cmd_opt( "SIZEOF", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SIZEOF", "TIMING", \
"", \
"" )
@@ -2467,6 +2503,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST", "TIMING", \
"", \
"" )
@@ -2664,6 +2704,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_L", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_L", "TIMING", \
"", \
"" )
@@ -2861,6 +2905,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LL", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LL", "TIMING", \
"", \
"" )
@@ -3058,6 +3106,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LLL", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LLL", "TIMING", \
"", \
"" )
@@ -3255,6 +3307,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_A", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_A", "TIMING", \
"", \
"" )
@@ -3452,6 +3508,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LA", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LA", "TIMING", \
"", \
"" )
@@ -3660,6 +3720,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST", "TIMING", \
"", \
"" )
@@ -3845,6 +3909,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_L", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_L", "TIMING", \
"", \
"" )
@@ -4030,6 +4098,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LL", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LL", "TIMING", \
"", \
"" )
@@ -4215,6 +4287,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_A", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_A", "TIMING", \
"", \
"" )
@@ -4400,6 +4476,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LA", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LA", "TIMING", \
"", \
"" )
@@ -4593,6 +4673,10 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY", "TIMING", \
"", \
"" )
@@ -4786,6 +4870,10 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY_A", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY_A", "TIMING", \
"", \
"" )
@@ -4950,6 +5038,10 @@
"", \
"" )
+#:def_cmd_opt( "DUMP", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DUMP", "TIMING", \
"", \
"" )
@@ -5127,6 +5219,10 @@
"", \
"" )
+#:def_cmd_opt( "SHA1", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SHA1", "TIMING", \
"", \
"" )
@@ -5307,6 +5403,10 @@
"", \
"" )
+#:def_cmd_opt( "SPLIT", "PRINTF", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SPLIT", "IGNORE", \
"", \
"" )
@@ -5546,6 +5646,10 @@
"", \
"" )
+#:def_cmd_opt( "DISTRIBUTION", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DISTRIBUTION", "TIMING", \
"", \
"" )
@@ -5782,6 +5886,10 @@
"", \
"" )
+#:def_cmd_opt( "CHECK", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CHECK", "TIMING", \
"", \
"" )
@@ -6019,6 +6127,14 @@
"", \
"" )
+#:def_cmd_opt( "CHECK", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "CHECK", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CHECK", "PATCH_BMG", \
"", \
"" )
@@ -6127,6 +6243,10 @@
"", \
"" )
+#:def_cmd_opt( "SLOTS", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SLOTS", "TIMING", \
"", \
"" )
@@ -6368,6 +6488,14 @@
"", \
"" )
+#:def_cmd_opt( "SLOTS", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SLOTS", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SLOTS", "PATCH_BMG", \
"", \
"" )
@@ -6707,6 +6835,14 @@
"", \
"" )
+#:def_cmd_opt( "NORMALIZE", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "NORMALIZE", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "NORMALIZE", "PATCH_BMG", \
"", \
"" )
@@ -7007,6 +7143,14 @@
"", \
"" )
+#:def_cmd_opt( "PATCH", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "PATCH", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "PATCH", "PATCH_BMG", \
"", \
"" )
@@ -7307,6 +7451,14 @@
"", \
"" )
+#:def_cmd_opt( "COPY", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "COPY", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "COPY", "PATCH_BMG", \
"", \
"" )
@@ -7611,6 +7763,14 @@
"", \
"" )
+#:def_cmd_opt( "DUPLICATE", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DUPLICATE", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DUPLICATE", "PATCH_BMG", \
"", \
"" )
@@ -8096,6 +8256,14 @@
"", \
"" )
+#:def_cmd_opt( "COMPRESS", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "COMPRESS", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "COMPRESS", "PATCH_BMG", \
"", \
"" )
@@ -8368,6 +8536,14 @@
"", \
"" )
+#:def_cmd_opt( "DECOMPRESS", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DECOMPRESS", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DECOMPRESS", "PATCH_BMG", \
"", \
"" )
@@ -8412,6 +8588,10 @@
"", \
"" )
+#:def_cmd_opt( "ENCODE", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ENCODE", "TIMING", \
"", \
"" )
@@ -8649,6 +8829,14 @@
"", \
"" )
+#:def_cmd_opt( "ENCODE", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "ENCODE", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ENCODE", "PATCH_BMG", \
"", \
"" )
@@ -8781,6 +8969,10 @@
"", \
"" )
+#:def_cmd_opt( "CREATE", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CREATE", "TIMING", \
"", \
"" )
@@ -9034,6 +9226,14 @@
"", \
"" )
+#:def_cmd_opt( "CREATE", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "CREATE", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CREATE", "PATCH_BMG", \
"", \
"" )
@@ -9306,6 +9506,14 @@
"", \
"" )
+#:def_cmd_opt( "UPDATE", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "UPDATE", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "UPDATE", "PATCH_BMG", \
"", \
"" )
@@ -9598,6 +9806,14 @@
"", \
"" )
+#:def_cmd_opt( "EXTRACT", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "EXTRACT", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "EXTRACT", "PATCH_BMG", \
"", \
"" )
@@ -9890,6 +10106,14 @@
"", \
"" )
+#:def_cmd_opt( "XDECODE", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "XDECODE", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "XDECODE", "PATCH_BMG", \
"", \
"" )
@@ -10182,6 +10406,14 @@
"", \
"" )
+#:def_cmd_opt( "XEXPORT", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "XEXPORT", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "XEXPORT", "PATCH_BMG", \
"", \
"" )
@@ -10474,6 +10706,14 @@
"", \
"" )
+#:def_cmd_opt( "XALL", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "XALL", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "XALL", "PATCH_BMG", \
"", \
"" )
@@ -11045,6 +11285,14 @@
"", \
"" )
+#:def_cmd_opt( "KCL", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "KCL", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "KCL", "PATCH_BMG", \
"", \
"" )
@@ -11249,6 +11497,14 @@
"", \
"" )
+#:def_cmd_opt( "KMP", "LEX_FEATURES", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "KMP", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "KMP", "PATCH_BMG", \
"", \
"" )
@@ -11631,12 +11887,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -12914,12 +13176,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -14302,12 +14570,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -15329,12 +15603,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -17858,12 +18138,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -19955,12 +20241,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -20123,6 +20415,11 @@
"Delete LEX sections without any impact. This option is executed after" \
" all --lt-* options." )
+#:def_opt( "LEX_RM_FEAT", "rm-features|rmfeatures|lex-rm-features|lexrmfeatures", "G", \
+ "", \
+ "Remove LEX setion FEAT (features) if exists. It is executed after" \
+ " --lex-purge. {--lex-rm-features} is an alternative name." )
+
#:def_opt( "TEST", "t|test", "GM", \
"", \
"Run in test mode, modify nothing.\n" \
@@ -20933,6 +21230,10 @@
"", \
"" )
+#:def_cmd_opt( "CREATE", "LEX_RM_FEAT", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CREATE", "LE_DEFINE", \
"", \
"" )
@@ -21385,12 +21686,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -22672,12 +22979,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -23318,12 +23631,18 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
"This debug option enables the logging of internal lists and maps. Set" \
- " it up to three times to be more verbose.\n" )
+ " it up to three times to be more verbose." )
+
+#:def_opt( "EXT_ERRORS", "Y|extended-errors|extendederrors|xerr", "GM", \
+ "", \
+ "Enable extended error messages. This includes a source file and line" \
+ " reference. Logging level 1 activates it too. @--xerr@ is a short" \
+ " cut." )
#:def_opt( "TIMING", "timing", "GM", \
"", \
"Activate the timing of some operations. Logging level 3 activates" \
- " them too.\n" )
+ " them too." )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -23952,6 +24271,10 @@
"", \
"" )
+#:def_cmd_opt( "HEXDUMP", "EXT_ERRORS", \
+ "", \
+ "" )
+
#:def_cmd_opt( "HEXDUMP", "TIMING", \
"", \
"" )
diff --git a/project/src/wbmgt.c b/project/src/wbmgt.c
index 530c28f..06e51de 100644
--- a/project/src/wbmgt.c
+++ b/project/src/wbmgt.c
@@ -775,6 +775,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -960,7 +961,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WBMGT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WBMGT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wctct.c b/project/src/wctct.c
index 73652d9..92ed705 100644
--- a/project/src/wctct.c
+++ b/project/src/wctct.c
@@ -753,6 +753,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -969,7 +970,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WCTCT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WCTCT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wimgt.c b/project/src/wimgt.c
index ce84ef3..a6359dc 100644
--- a/project/src/wimgt.c
+++ b/project/src/wimgt.c
@@ -588,6 +588,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -759,7 +760,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WIMGT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WIMGT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wkclt.c b/project/src/wkclt.c
index 0592df1..e294fcd 100644
--- a/project/src/wkclt.c
+++ b/project/src/wkclt.c
@@ -1286,6 +1286,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -1495,7 +1496,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WKCLT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WKCLT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wkmpt.c b/project/src/wkmpt.c
index 11eb940..701db6e 100644
--- a/project/src/wkmpt.c
+++ b/project/src/wkmpt.c
@@ -1584,6 +1584,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -1809,7 +1810,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WKMPT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WKMPT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wlect.c b/project/src/wlect.c
index cf0a9f0..c5c4e39 100644
--- a/project/src/wlect.c
+++ b/project/src/wlect.c
@@ -820,11 +820,8 @@ static void help_create ( enumError exit_code )
" but includes all devoloper sections.\n"
#endif
"\n"
- #if HAVE_WIIMM_EXTxx
"\t{info|FEATURES}:\t|"
- "This {warn|hidden sub-command} create a LEX text file with section »FEA0« only."
- " {warn|This section is under development.}\n"
- #endif
+ "Create a LEX text file with section »FEAT« only.\n"
"\t{name|SET1}:\t|"
"Create a LEX text file with section »SET1« only.\n"
"\t{name|CANNONS}:\t|"
@@ -956,7 +953,7 @@ static enumError cmd_create()
InitializeLEX(&lex);
switch (cmd->id)
{
- case C_FEATURES: AppendFea0LEX(&lex,false,0); break;
+ case C_FEATURES: AppendFeatLEX(&lex,false,0); break;
case C_SET1: AppendSet1LEX(&lex,false); break;
case C_CANNON: AppendCannLEX(&lex,false); break;
case C_HIDE_PT: AppendHiptLEX(&lex,false); break;
@@ -1218,7 +1215,7 @@ static void help_distrib ( enumError exit_code )
"\t{name|INFO}:\t|"
"Create a human readable reference file with cup info slots and track names."
" Only tracks with known name (not empty) are printed."
- " The tracks are ordered by cups.\n"
+ " The tracks are ordered by cups.\n"
"\t{name|XINFO}:\t|"
"Same as {name|INFO}, but use extended names if available.\n"
"\n"
@@ -1279,9 +1276,11 @@ static void help_distrib ( enumError exit_code )
"\n"
"\t{name|BMG}:\t|"
"Create a BMG binary file. BMG options are recognized."
- " But if the output goes to a terminal, then use {name|BMGTXT} insted.\n"
+ " But if the output goes to a terminal, then use {name|BMGTXT} insted."
+ " If no {heading|BMG selector} is defined,"
+ " then {name|MKW,LE-CODE} (all except {name|CT-CODE}) is used.\n"
"\t{name|BMGTXT}:\t|"
- "Create a BMG text file. BMG options are recognized.\n"
+ "Create a BMG text file. Global BMG options are recognized.\n"
"\n"
"\t{name|REF}:\t|"
"Create a machine readable track reference (type {name|LEREF}),"
@@ -1322,8 +1321,35 @@ static void help_distrib ( enumError exit_code )
" {heading|String functions:}\n"
"\n"
+ "\t{name|SEPARATOR}:| "
+ "Define a separator string that is used by other commands."
+ " The default is a space.\r"
+ " {heading|Syntax:} {syntax|SEPARATOR '=' STRING} or {syntax|SEP '=' STRING}\n"
+ "\n"
+
+ "\t{name|COPY}:\t|"
+ "This instruction copies the texts of 1 or more sources to a destination.\r"
+ " {heading|Syntax of PARAMETER:} {syntax|DEST '=' SRC [ '+' SRC ]...}\r"
+ "\r"
+ "{syntax|DEST} and {syntax|SRC} are storage indicators"
+ " explained in section »{name|Processing Options: Storage}«."
+ " The sources are joined textually, with a separator"
+ " (defined by instruction {name|SEPARATOR}, see above)"
+ " inserted between the sources.\r"
+ "\r"
+ "Example: |{syntax|copy=[result]=sha1+[size]}\n"
+ "\n"
+
+ "\t{name|SPLIT}:\t|"
+ "This instruction analyses the {syntax|SOURCE} like command {cmd|wszst split} does it."
+ " Then the directives of {syntax|FORMAT} create a string that is copied"
+ " to {syntax|DESTINATION}.\r"
+ " {heading|Syntax of PARAMETER:} {syntax|DESTINATION ',' SOURCE ',' FORMAT}\r"
+ "Visit {file|https://szs.wiimm.de/opt/printf} for more details.\n"
+ "\n"
+
"\t{name|SUBST}:\t|"
- "This command searches for text passages using a regular expression"
+ "This instruction searches for text passages using a regular expression"
" and replaces the found passages with another text.\r"
" {heading|Syntax of PARAMETER:} |{syntax|STORAGE ',' SEP REGEXP SEP REPLACEMENT SEP OPTIONS}\n"
"\n\t\t|"
@@ -1344,19 +1370,6 @@ static void help_distrib ( enumError exit_code )
"{syntax|subst=[key],/search ([0-9])/replace $1/gi}\n"
"\n"
- "\t{name|COPY}:\t|"
- "This command copies the texts of 1 or more sources to a destination.\r"
- " {heading|Syntax of PARAMETER:} {syntax|DEST '=' SRC [ '+' SRC ]...}\r"
- "\r"
- "{syntax|DEST} and {syntax|SRC} are storage indicators"
- " explained in section »{name|Processing Options: Storage}«."
- " The sources are joined textually, with CTRL-A (ASCII 1, '\\1')"
- " inserted as a separator between the sources."
- " Use instruction {name|SUBST} to change the separators.\r"
- "\r"
- "Example: |{syntax|copy=[result]=sha1+[size]}\n"
- "\n"
-
//-------------------------
" {heading|Copy, move or link track files:}\n"
"\n|[4,12,14,22]"
@@ -1413,7 +1426,7 @@ static void help_distrib ( enumError exit_code )
//-------------------------
- " |{heading|BMG source:}\n"
+ " |{heading|BMG selector:}\n"
"\n"
"\t|Define which BMG strings are used as input."
" Multiple source can be selected. If none is selected, then all are used."
@@ -1495,6 +1508,13 @@ static void help_distrib ( enumError exit_code )
"Define a new standard and a new extended name."
" If reading, then get the extended name, if valid, or the standard name as fallback.\n"
"\n"
+ "\t{name|TEMP1}:\t|"
+ "A temporary variable with no specific purpose."
+ " Access is much faster than for dynamic strings by {name|[key]}."
+ " They are therefore intended for multi-level string manipulations.\n"
+ "\t{name|TEMP2}:\t|"
+ "A second temporary variable.\n"
+ "\n"
"\t{name|[key]}:\t|"
"For each track there is a set of character strings at the user's disposal."
" The character strings are addressed via KEY."
@@ -1644,15 +1664,16 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
u_nsec_t start_nsec = GetTimerNSec();
enum { C_NAMES, C_INFO, C_LEINFO, C_SHA1, C_DISTRIB,
- C_CTDEF, C_LEDEF, C_REF, C_STRINGS, C_DUMP,
+ C_CTDEF, C_LEDEF, C_LEREF, C_STRINGS, C_DUMP,
C_LECODE, C_LECODE4, C_LPAR,
- C_BMG, C_SUBST, C_COPY,
+ C_BMG, C_SEPARATOR, C_COPY, C_SPLIT, C_SUBST,
C_TRACKS, C_PREFIX, C_RESERVE, C_DEBUG };
enum
{
O_PARAM_D = 0x100, // scan storage DEST
O_PARAM_S = 0x200, // scan storage SRC
+ O_PARAM_S2 = 0x400, // scan second storage SRC
O_PARAM_SS = 0x600, // scan storage SRC [ + SRC ]...
O_PARAM_A = 0x800, // allow additonal arguments
};
@@ -1673,7 +1694,8 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
{ C_CTDEF, "CT-DEF", "CTDEF", 0 },
{ C_LEDEF, "LE-DEF", "LEDEF", 0 },
{ C_LEDEF, "DEFINITION", "DEF", 0 },
- { C_REF, "REFERENCE", "REF", 0 },
+ { C_LEREF, "LE-REF", "LEREF", 0 },
+ { C_LEREF, "REFERENCE", "REF", 0 },
{ C_STRINGS, "STRINGS", "STR", 0 },
{ C_DUMP, "DUMP", 0, 0 },
@@ -1689,8 +1711,10 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
{ C_BMG, "BMG-TXT", "BMGTXT", 1 },
- { C_SUBST, "SUBST", 0, O_PARAM_D|O_PARAM_A },
+ { C_SEPARATOR, "SEPARATOR", "SEP", 0 },
{ C_COPY, "COPY", 0, O_PARAM_D|O_PARAM_SS },
+ { C_SPLIT, "SPLIT", 0, O_PARAM_D|O_PARAM_S|O_PARAM_A },
+ { C_SUBST, "SUBST", 0, O_PARAM_D|O_PARAM_A },
{ C_TRACKS, "TRACKS", 0, 0 },
@@ -1778,7 +1802,7 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
if ( opt & O_PARAM_S )
{
- const int max = opt & O_PARAM_SS ? MAX_PAR_SRC : 1;
+ const int max = opt & O_PARAM_S2 ? MAX_PAR_SRC : 1;
le_strpar_t *src = par_src;
while ( n_par_src < max )
{
@@ -1797,6 +1821,7 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
arg++;
}
}
+
if ( *arg && !(opt&O_PARAM_A) )
return ERROR0( ERR_SEMANTIC,"%s: Missing end-of-line: %s\n",cmd->name1,arg);
}
@@ -1807,9 +1832,11 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
err = ~0;
switch (cmd->id)
{
- case C_LECODE4: err = CreateLecode4LD(arg,ld); break;
- case C_SUBST: err = SubstLD(ld,&par_dest,arg); break;
- case C_COPY: err = CopyLD(ld,&par_dest,par_src,n_par_src); break;
+ case C_LECODE4: err = CreateLecode4LD(arg,ld); break;
+ case C_SEPARATOR: err = SeparatorLD(ld,arg); break;
+ case C_COPY: err = CopyLD(ld,&par_dest,par_src,n_par_src); break;
+ case C_SPLIT: err = SplitLD(ld,&par_dest,par_src,arg); break;
+ case C_SUBST: err = SubstLD(ld,&par_dest,arg); break;
case C_TRACKS:
cmd = ScanKeyword(&cmd_stat,arg,tracks_tab);
@@ -1842,7 +1869,7 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
if ( *end == ',' || *end == 'x' )
n2 = str2ul(end+1,0,10);
ccp ltty_name = ltty==LTTY_TRACK ? "versus track" : "battle arena";
- PRINT1("RESERVE %s %dx%d\n", ltty_name, n1, n2 );
+ PRINT0("RESERVE %s %dx%d\n", ltty_name, n1, n2 );
if ( n2 > 0 )
{
if ( verbose >= 1 )
@@ -1875,6 +1902,14 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
if ( err == ~0 )
{
+ #ifdef __CYGWIN__
+ char norm[PATH_MAX];
+ NormalizeFilenameCygwin(norm,sizeof(norm),arg);
+ if ( verbose >= 2 && strcmp(arg,norm) )
+ fprintf(stdlog," > Normalized filename: %s\n",norm);
+ arg = norm;
+ #endif
+
File_t F;
err = CreateFileOpt(&F,true,arg,false,0);
if (!err)
@@ -1890,7 +1925,7 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar
case C_CTDEF: err = CreateCtDefLD(F.f,ld); break;
case C_LEDEF: err = CreateLeDefLD(F.f,ld); break;
- case C_REF: err = CreateRefLD(F.f,ld,true); break;
+ case C_LEREF: err = CreateRefLD(F.f,ld,true); break;
case C_STRINGS: err = CreateStringsLD(F.f,ld); break;
case C_DUMP: err = CreateDumpLD(F.f,ld); break;
@@ -1980,7 +2015,6 @@ static enumError cmd_distrib()
if ( verbose >= 1 )
PrintHead("Read file(s): %s",arg);
const u_nsec_t start_nsec = GetTimerNSec();
- NORMALIZE_FILENAME_PARAM(param);
ImportFileLD(&ld,arg,true,false);
if ( verbose >= 2 )
{
@@ -2220,6 +2254,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -2457,7 +2492,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WLECT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WLECT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wmdlt.c b/project/src/wmdlt.c
index 133e53e..edf4c8b 100644
--- a/project/src/wmdlt.c
+++ b/project/src/wmdlt.c
@@ -545,6 +545,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -731,7 +732,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WMDLT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WMDLT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wpatt.c b/project/src/wpatt.c
index e383ab0..6a37868 100644
--- a/project/src/wpatt.c
+++ b/project/src/wpatt.c
@@ -354,6 +354,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -521,7 +522,7 @@ static enumError CheckCommand ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WPATT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WPATT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wstrt.c b/project/src/wstrt.c
index 81ee94d..f02cd6a 100644
--- a/project/src/wstrt.c
+++ b/project/src/wstrt.c
@@ -1587,6 +1587,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -1867,7 +1868,7 @@ static enumError CheckCommand ( int argc, char ** argv )
xparam.print_format = false;
xparam.print_summary= false;
- enumError err = CheckEnvOptions("WSTRT_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WSTRT_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/src/wszst.c b/project/src/wszst.c
index 7d8d475..bc8e864 100644
--- a/project/src/wszst.c
+++ b/project/src/wszst.c
@@ -601,6 +601,7 @@ static const sizeof_info_t sizeof_info_szs_list[] =
SIZEOF_INFO_ENTRY(file_type_t)
SIZEOF_INFO_ENTRY(mkw_prefix_t)
SIZEOF_INFO_ENTRY(split_filename_t)
+ SIZEOF_INFO_ENTRY(print_split_par_t)
SIZEOF_INFO_TERM()
};
@@ -2598,6 +2599,8 @@ static enumError cmd_split()
split_filename_t spf;
InitializeSPF(&spf);
+ print_split_par_t psp = { .format = opt_printf, .u_use_list = true };
+
File_t fo;
InitializeFile(&fo);
@@ -2640,26 +2643,36 @@ static enumError cmd_split()
print_split_val(&ps,"normed",spf.norm);
print_split_val(&ps,"plus",spf.plus);
PrintScriptVars(&ps,0,"plus_order=%d\n",spf.plus_order);
-
- #if SUPPORT_SPLIT_SIGN
- print_split_val(&ps,"sign",spf.sign);
- #endif
print_split_val(&ps,"boost",spf.boost);
print_split_val(&ps,"game1",spf.game1);
print_split_val(&ps,"game2",spf.game2);
print_split_val(&ps,"game",spf.game);
- PrintScriptVars(&ps,0,"game_order=%d\ngame_color=%d\n",
- spf.game_order, spf.game_color );
+ PrintScriptVars(&ps,0,"game_order=%d\ngame1_color=%d\ngame2_color=%d\n",
+ spf.game_order, spf.game1_color, spf.game2_color );
print_split_val(&ps,"name",spf.name);
print_split_val(&ps,"extra",spf.extra);
print_split_val(&ps,"version",spf.version);
print_split_val(&ps,"authors",spf.authors);
print_split_val(&ps,"attribs",spf.attribs);
+
+ PrintScriptVars(&ps,0,"lap_count=%u\n",spf.lap_count);
+ if ( spf.speed_factor > 0.0 )
+ PrintScriptVars(&ps,0,"speed_factor=%5.3f\n",spf.speed_factor);
+ else
+ PutScriptVars(&ps,0,"speed_factor=0\n");
+
+ if (opt_printf)
+ {
+ exmem_t res = PrintSPF(0,&spf,&psp);
+ print_split_val(&ps,"printf",res.data);
+ FreeExMem(&res);
+ }
PrintScriptVars(&ps,2,"duration_nsec=%llu\n",duration_nsec);
+ fflush(ps.f);
if (!script_array)
{
PrintScriptFooter(&ps);
@@ -2671,6 +2684,7 @@ static enumError cmd_split()
PrintScriptFooter(&ps);
ResetPrintScript(&ps);
ResetFile(&fo,0);
+ ResetPSP(&psp);
ResetSPF(&spf);
return max_err;
}
@@ -2842,7 +2856,7 @@ static enumError cmd_features()
//--- print result
PrintScriptVars(&ps,1,"file=\"%s\"\n",dest);
- PrintFeaturesSZS( &ps, &fs, false, comments,
+ PrintFeaturesSZS( &ps, &fs, false, comments, long_count,
opt_pmodes, opt_fmodes_include, opt_fmodes_exclude );
PutScriptVars(&ps,2,0);
@@ -5596,6 +5610,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
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;
+ case GO_EXT_ERRORS: ext_errors++; break;
case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
@@ -5610,6 +5625,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_AUTO: break;
case GO_LOAD_PREFIX: err += ScanOptLoadPrefix(optarg); break;
case GO_PLUS: opt_plus = optarg; break;
+ case GO_PRINTF: opt_printf = optarg; break;
case GO_SET_FLAGS: err += ScanOptSetFlags(optarg); break;
case GO_SET_SCALE: err += ScanOptSetScale(optarg); break;
case GO_SET_ROT: err += ScanOptSetRot(optarg); break;
@@ -6017,7 +6033,7 @@ int main_wszst ( int argc, char ** argv )
hint_exit(ERR_OK);
}
- enumError err = CheckEnvOptions("WSZST_OPT",CheckOptions);
+ enumError err = CheckEnvOptions2("WSZST_OPT",CheckOptions);
if (err)
hint_exit(err);
diff --git a/project/templates/HISTORY.txt b/project/templates/HISTORY.txt
index d88e245..ff45f6c 100644
--- a/project/templates/HISTORY.txt
+++ b/project/templates/HISTORY.txt
@@ -555,6 +555,26 @@ szs v2.27b r8534 - 2022-05-22
KCL-TYPE were not recognized.
+szs v2.28a.beta r8612 - 2022-07-09
+
+ - There is a new property for parsing the command line. In a preliminary
+ step, the options "-@FILENAME" (1 argument) and "-@ FILENAME" (2 arguments)
+ are searched. Each occurrence is replaced by the contents of file FILENAME,
+ which again may contain "-@...". The maximum recursion depth is 10.
+ Wildcard patterns are not resolved.
+ - New command for all tools: EXPAND: All parameters are treated as a filename
+ with wildcards and all matching files are searched.
+ - New command: wszst SPLIT: Analyse (file) names and split them into the
+ different parts. Print the results in machine readable format.
+ - Command wlect CREATE re-implemented. Type 'wlect create help' for details.
+ - New command: wlect DISTRIBUTION: The command manages data for LE-CODE track
+ distributions. It reads any number of source files with different file
+ types, collects the data and creates any number of files with different
+ file types. Type 'wlect distribution' without arguments to get details.
+ - New file formats to support wlect DISTRIBUTION: LE-DEF, LE-DIS, LE-REF,
+ LE-STR, SHA1REF and PREFIX.
+
+
@@MODULE(last-history.txt)@@
diff --git a/project/templates/module/last-history.txt b/project/templates/module/last-history.txt
index 5c5c501..79be000 100644
--- a/project/templates/module/last-history.txt
+++ b/project/templates/module/last-history.txt
@@ -1,21 +1,25 @@
szs v@@VERSION@@ r@@REV-NEXT@@ - @@@@-@@-@@
- - There is a new property for parsing the command line. In a preliminary
- step, the options "-@FILENAME" (1 argument) and "-@ FILENAME" (2 arguments)
- are searched. Each occurrence is replaced by the contents of file FILENAME,
- which again may contain "-@...". The maximum recursion depth is 10.
- Wildcard patterns are not resolved.
- - New command for all tools: EXPAND: All parameters are treated as a filename
- with wildcards and all matching files are searched.
- - New command: wszst SPLIT: Analyse (file) names and split them into the
- different parts. Print the results in machine readable format.
- - Command wlect CREATE re-implemented. Type 'wlect create help' for details.
- - New command: wlect DISTRIBUTION: The command manages data for LE-CODE track
- distributions. It reads any number of source files with different file
- types, collects the data and creates any number of files with different
- file types. Type 'wlect distribution' without arguments to get details.
- - New file formats to support wlect DISTRIBUTION: LE-DEF, LE-DIS, LE-REF,
- LE-STR, SHA1REF and PREFIX.
+ - There is a new LEX section called "FEAT". It declares the special features
+ of a track file. CTGP-R uses this declaration to manage ghost.
+ - Command "wszst FEATURES" prints the feature list to standard output.
+ - Command "wlect CREATE FEAT" creates a LEX template with section FEAT.
+ - Patching option --lex-features adds or updates LEX section FEAT if any
+ relevant feature is set.
+ - Patching option --lex-rm-features removes LEX section FEAT.
+ - Continuing the implementation of wlect DISTRIBUTION:
+ - Fixed a use after free bug (Cygwin only, fixed with r8614).
+ - Export of prefix list supports color_index now.
+ - Improved filename normalisation (Cygwin only).
+ - The file formats LE-REF and LE-DIS changed. They are *NOT* compatible
+ to v2.28a.beta.
+ - Support of lap count and speed factor for file formats LE-DEF and LE-REF.
+ - New instruction: SEPARATOR=string. Define a separator that is used by
+ other instructions (e.g. COPY=).
+ - New instruction: SPLIT=DEST,SRC,FORMAT.
+ Visit https://szs.wiimm.de/opt/printf for details.
+ - New option: wszst SPLIT --printf=format: Use the split filename to create
+ a formatted string. See https://szs.wiimm.de/opt/printf for details.
~ - MDL support: Scanning a MDL file and transferring the data into an internal
~ format was already implemented, but only used for analysis purposes. Now it
diff --git a/project/text-files/lex.inc/lex-elem-feat-cr.inc b/project/text-files/lex.inc/lex-elem-feat-cr.inc
index 7ed1586..4a603f9 100644
--- a/project/text-files/lex.inc/lex-elem-feat-cr.inc
+++ b/project/text-files/lex.inc/lex-elem-feat-cr.inc
@@ -2,9 +2,8 @@
#FF#
###############################################################################
-[FEA0]
+[FEAT]
# Sort order: %u
-# This experimental section reflects the special features of a track file.
-# ???
+# This section reflects the special features of a track file.