From 74ac39c1af5c8e85bf10711aed2ffc9dfee2e277 Mon Sep 17 00:00:00 2001 From: Wiimm Date: Sun, 28 May 2023 05:52:52 +0200 Subject: SZS v2.34a --- project/Makefile | 11 +- project/dclib/Makefile.inc | 43 +++- project/dclib/dclib-basics.c | 44 +++- project/dclib/dclib-basics.h | 42 ++- project/dclib/dclib-color.c | 4 + project/dclib/dclib-file.c | 54 +++- project/dclib/dclib-file.h | 16 +- project/dclib/dclib-numeric.c | 6 +- project/dclib/dclib-types.h | 28 ++ project/dclib/lib-dol.h | 2 +- project/revision.sh | 2 +- project/src/addr_port.inc | 15 +- project/src/lib-checksum.c | 71 ++++- project/src/lib-checksum.h | 5 +- project/src/lib-file.c | 4 +- project/src/lib-kcl-image.c | 9 +- project/src/lib-kcl.c | 35 ++- project/src/lib-kcl.h | 2 +- project/src/lib-kmp-text.c | 2 +- project/src/lib-ledis.c | 8 +- project/src/lib-ledis.h | 10 + project/src/lib-lex.h | 2 +- project/src/lib-std.c | 41 ++- project/src/lib-std.h | 12 +- project/src/lib-szs-create.c | 22 +- project/src/lib-szs.c | 7 +- project/src/prefix.inc | 171 ++++++------ project/src/ui/tab-wlect.inc | 2 +- project/src/ui/tab-wstrt.inc | 5 +- project/src/ui/tab-wszst.inc | 33 ++- project/src/ui/ui-wbmgt.c | 5 +- project/src/ui/ui-wctct.c | 5 +- project/src/ui/ui-wimgt.c | 5 +- project/src/ui/ui-wkclt.c | 5 +- project/src/ui/ui-wkmpt.c | 5 +- project/src/ui/ui-wlect.c | 5 +- project/src/ui/ui-wmdlt.c | 5 +- project/src/ui/ui-wpatt.c | 5 +- project/src/ui/ui-wstrt.c | 12 +- project/src/ui/ui-wszst.c | 415 +++++++++++++++++------------- project/src/ui/ui-wszst.h | 13 +- project/src/ui/ui.def | 100 +++++-- project/src/wszst.c | 37 ++- project/src/wtest.c | 8 +- project/templates/HISTORY.txt | 50 +++- project/templates/module/last-history.txt | 50 +--- 46 files changed, 958 insertions(+), 475 deletions(-) diff --git a/project/Makefile b/project/Makefile index e76492a..289fd8e 100644 --- a/project/Makefile +++ b/project/Makefile @@ -57,7 +57,7 @@ WPATT_LONG = Wiimms PAT Tool WSTRT_SHORT = wstrt WSTRT_LONG = Wiimms StaticR Tool -VERSION_NUM = 2.33a +VERSION_NUM = 2.34a BETA_VERSION = 0 # 0:off -1:"beta" >0:"beta#" @@ -144,6 +144,7 @@ DEFINES1 += -DDEBUG_ASSERT # enable ASSERTions in release version too DEFINES1 += -DEXTENDED_ERRORS=1 # enable extended error messages (function,line,file) DEFINES1 += -DUIOPT_INDEX_SIZE=320 # define max number of options (default 0x100) +CFLAGS += $(DCLIB_CFLAGS) CFLAGS += -std=gnu99 -fomit-frame-pointer -fno-strict-aliasing -funroll-loops CFLAGS += -Wall -Wno-parentheses -Wno-unused-function CFLAGS += -Wno-deprecated-declarations -Wno-gnu-variable-sized-type-not-at-end @@ -162,7 +163,7 @@ ifeq ($(SYSTEM_LINUX),1) LDFLAGS += -Xlinker --gc-sections #LDFLAGS += -Xlinker --print-gc-sections LIBS += -ltinfo - LDFLAGS += -static-libgcc + LDFLAGS += -static-libgcc -z noexecstack endif ifeq ($(SYSTEM),cygwin) @@ -357,7 +358,7 @@ DIR_LIST += src src/crypto $(UI) #--- external flags & clean -DEFINES = $(strip $(DEFINES1) $(MODE) $(XDEF)) +DEFINES = $(strip $(DCLIB_DEFINES) $(DEFINES1) $(MODE) $(XDEF)) CFLAGS += $(XFLAGS) CFLAGS := $(strip $(CFLAGS)) LDFLAGS := $(strip $(LDFLAGS)) @@ -739,6 +740,10 @@ flags: @echo "SYSTEM: |$(SYSTEM)|$(SYSTEM2)|" @echo "GCC: |$(GCC_VERSION)|" @echo "" + @echo "DCLIB_GCC + DCLIB_GCC_VERSION: $(DCLIB_GCC) $(DCLIB_GCC_VERSION)" + @echo "DCLIB_DEFINES: $(DCLIB_DEFINES)" + @echo "DCLIB_CFLAGS: $(DCLIB_CFLAGS)" + @echo "" @echo "DEFINES: $(DEFINES)" @echo "" @echo "CFLAGS: $(CFLAGS)" diff --git a/project/dclib/Makefile.inc b/project/dclib/Makefile.inc index b505f2e..feaf15d 100644 --- a/project/dclib/Makefile.inc +++ b/project/dclib/Makefile.inc @@ -13,6 +13,12 @@ # Wiimms source code library # # # ########################################################################### + # # + # Copyright (c) 2012-2023 by Dirk Clemens # + # # + ########################################################################### + +# make manual: https://www.gnu.org/software/make/manual/make.html #------------------------------------------------------------------------------ # standard object files @@ -69,32 +75,57 @@ ifeq ($(origin DCLIB_HAVE_USABLE_SIZE), undefined) endif #------------------------------------------------------------------------------ -# add libraries and guardian macros +# gcc version dependent cflags + +DCLIB_GCC = $(GCC) +ifeq ($(DCLIB_GCC),) + DCLIB_GCC := gcc +endif + +DCLIB_GCC_VERSION = $(shell $(DCLIB_GCC) -dumpversion) + +ifeq ($(shell expr $(DCLIB_GCC_VERSION) '>=' 7 ),1) + DCLIB_CFLAGS += -Wno-format-truncation +else + DCLIB_CFLAGS += -Wno-pragmas -Wno-unknown-pragmas +endif + +ifeq ($(shell expr $(DCLIB_GCC_VERSION) '>=' 9 ),1) + DCLIB_CFLAGS += -Wno-address-of-packed-member +endif + +#------------------------------------------------------------------------------ +# add object files and guardian macros ifeq ($(DCLIB_THREAD),1) DCLIB_O += dclib-thread.o - DCLIB_FLAGS += -DDCLIB_THREAD=1 + DCLIB_DEFINES += -DDCLIB_THREAD=1 endif ifeq ($(DCLIB_NETWORK),1) DCLIB_O += dclib-network.o dclib-punycode.o - DCLIB_FLAGS += -DDCLIB_NETWORK=1 + DCLIB_DEFINES += -DDCLIB_NETWORK=1 else DCLIB_MYSQL := 0 endif ifeq ($(DCLIB_MYSQL),1) DCLIB_O += dclib-mysql.o - DCLIB_FLAGS += -DDCLIB_MYSQL=1 + DCLIB_DEFINES += -DDCLIB_MYSQL=1 endif ifeq ($(DCLIB_TERMINAL),1) DCLIB_O += dclib-terminal.o dclib-command.o - DCLIB_FLAGS += -DDCLIB_TERMINAL=1 + DCLIB_DEFINES += -DDCLIB_TERMINAL=1 endif ifeq ($(DCLIB_HAVE_USABLE_SIZE),1) - DCLIB_FLAGS += -DDCLIB_HAVE_USABLE_SIZE=1 + DCLIB_DEFINES += -DDCLIB_HAVE_USABLE_SIZE=1 endif #------------------------------------------------------------------------------ + +# support for deprecated DCLIB_FLAGS (2023-04-14) +DCLIB_FLAGS := $(DCLIB_DEFINES) $(DCLIB_CFLAGS) + +#------------------------------------------------------------------------------ diff --git a/project/dclib/dclib-basics.c b/project/dclib/dclib-basics.c index 5aede90..8da7c5b 100644 --- a/project/dclib/dclib-basics.c +++ b/project/dclib/dclib-basics.c @@ -2186,6 +2186,21 @@ char * CopyCircBuf return dest; } +/////////////////////////////////////////////////////////////////////////////// +// variant to supress warning "return-local-addr" + +char * CopyCircBufIf +( + // Never returns NULL, but always ALIGN(4) + + bool condition, // use CopyCircBuf() if true + cvp data, // source to copy + u32 data_size // see GetCircBuf() +) +{ + return condition ? CopyCircBuf(data,strlen(data)) : (char*)data; +} + /////////////////////////////////////////////////////////////////////////////// char * CopyCircBuf0 @@ -2203,6 +2218,22 @@ char * CopyCircBuf0 return dest; } +/////////////////////////////////////////////////////////////////////////////// +// variant to supress warning "return-local-addr" + +char * CopyCircBuf0If +( + // Like CopyCircBuf(), but an additional char is alloced and set to NULL + // Never returns NULL, but always ALIGN(4). + + bool condition, // use CopyCircBuf0() if true + cvp data, // source to copy + u32 data_size // see GetCircBuf() +) +{ + return condition ? CopyCircBuf0(data,strlen(data)) : (char*)data; +} + /////////////////////////////////////////////////////////////////////////////// char * PrintCircBuf @@ -2381,7 +2412,7 @@ ccp GetLineByListHelper ( const int *list, ccp beg, ccp mid, ccp end, ccp line ) /////////////// struct FastBuf_t /////////////// /////////////////////////////////////////////////////////////////////////////// -FastBuf_t * InitializeFastBuf ( cvp mem, uint size ) +FastBuf_t * InitializeFastBuf ( void * mem, uint size ) { DASSERT(mem); DASSERT( size >= sizeof(FastBuf_t) ); @@ -6334,7 +6365,7 @@ const KeywordTab_t * ScanKeywordEx void InitializeKeyListParam ( KeyListParam_t *par ) { - DASSERT(klist); + DASSERT(par); memset(par,0,sizeof(*par)); par->force_case = LOUP_UPPER; par->allow_prefix = true; @@ -6423,7 +6454,7 @@ s64 ScanKeywordListP continue; } } - else if ( par->min_number < par->max_number ) + else if ( par->min_number < par->max_number ) { // scan signed number char *end; @@ -6919,7 +6950,12 @@ char * PrintKeywordList if (ret_length) *ret_length = len; + #pragma GCC diagnostic push + #if __GNUC__ >= 9 + #pragma GCC diagnostic ignored "-Wreturn-local-addr" + #endif return buf == temp ? CopyCircBuf(temp,len+1) : buf; + #pragma GCC diagnostic pop } /////////////////////////////////////////////////////////////////////////////// @@ -8798,7 +8834,7 @@ void DumpEML ( FILE *f, int indent, const exmem_list_t * eml, ccp info ) fw_key = 30; uint idx = 0; - for ( ptr = eml->list; ptr < end; ptr++, idx++ ) + for ( ptr = eml->list; ptr < end; ptr++, idx++ ) fprintf(f,"%*d [%c%c%c%c] %-*s = [%x] %s\n", fw_idx, idx, ptr->data.is_key_alloced? 'a' : '-', // flags: same as in PrintExMem() diff --git a/project/dclib/dclib-basics.h b/project/dclib/dclib-basics.h index 3993f48..3110e57 100644 --- a/project/dclib/dclib-basics.h +++ b/project/dclib/dclib-basics.h @@ -1751,6 +1751,16 @@ char * CopyCircBuf u32 data_size // see GetCircBuf() ); +// variant to supress warning "return-local-addr" +char * CopyCircBufIf +( + // Never returns NULL, but always ALIGN(4) + + bool condition, // use CopyCircBuf() if true + cvp data, // source to copy + u32 data_size // see GetCircBuf() +); + char * CopyCircBuf0 ( // Like CopyCircBuf(), but an additional char is alloced and set to NULL @@ -1760,6 +1770,17 @@ char * CopyCircBuf0 u32 data_size // see GetCircBuf() ); +// variant to supress warning "return-local-addr" +char * CopyCircBuf0If +( + // Like CopyCircBuf(), but an additional char is alloced and set to NULL + // Never returns NULL, but always ALIGN(4). + + bool condition, // use CopyCircBuf0() if true + cvp data, // source to copy + u32 data_size // see GetCircBuf() +); + char * PrintCircBuf ( // returns CopyCircBuf0() or EmptyString. @@ -1995,7 +2016,7 @@ FastBuf_t; // //------------------------------------------------------------------ -FastBuf_t * InitializeFastBuf ( cvp mem, uint size ); +FastBuf_t * InitializeFastBuf ( void * mem, uint size ); FastBuf_t * InitializeFastBufAlloc ( FastBuf_t *fb, uint size ); void ResetFastBuf ( FastBuf_t *fb ); @@ -4093,7 +4114,8 @@ typedef enum size_mode_t DC_SIZE_T, // force output in TB or TiB (tera,tebi) DC_SIZE_P, // force output in PB or PiB (peta,pebi) DC_SIZE_E, // force output in EB or EiB (exa, exbi) - // zetta/zebi & yotta/yobi not supported because >2^64 + // zetta/zebi, yotta/yobi, ronna and quetta + // are not supported because >2^64 DC_SIZE_N_MODES, // number of modes @@ -4673,7 +4695,7 @@ ccp PrintNTimeByFormat ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_nsec_t ntime + u_nsec_t ntime // time in nsec, e.g. get by GetTimeNSec(false) ); ccp PrintNTimeByFormatUTC @@ -4682,7 +4704,7 @@ ccp PrintNTimeByFormatUTC ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_nsec_t ntime + u_nsec_t ntime // time in nsec, e.g. get by GetTimeNSec(false) ); //----------------------------------------------------------------------------- @@ -4719,7 +4741,7 @@ ccp PrintUTimeByFormat ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_usec_t utime + u_usec_t utime // time in usec, e.g. get by GetTimeUSec(false) ); ccp PrintUTimeByFormatUTC @@ -4728,7 +4750,7 @@ ccp PrintUTimeByFormatUTC ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_usec_t utime + u_nsec_t utime // time in usec, e.g. get by GetTimeUSec(false) ); //----------------------------------------------------------------------------- @@ -4738,7 +4760,7 @@ static inline ccp PrintMSecByFormat // returns temporary buffer by GetCircBuf(); ccp format, // format string for strftime() - // 1-9 '@' in row replaced by digits of 'usec' + // 1-9 '@' in row replaced by digits of 'msec' time_t tim, // seconds since epoch uint msec // millisecond of second ) @@ -4751,7 +4773,7 @@ static inline ccp PrintMSecByFormatUTC // returns temporary buffer by GetCircBuf(); ccp format, // format string for strftime() - // 1-9 '@' in row replaced by digits of 'usec' + // 1-9 '@' in row replaced by digits of 'msec' time_t tim, // seconds since epoch uint msec // millisecond of second ) @@ -4765,7 +4787,7 @@ ccp PrintMTimeByFormat ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_msec_t mtime + u_msec_t mtime // time in msec, e.g. get by GetTimeMSec(false) ); ccp PrintMTimeByFormatUTC @@ -4774,7 +4796,7 @@ ccp PrintMTimeByFormatUTC ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_msec_t mtime + u_msec_t mtime // time in msec, e.g. get by GetTimeMSec(false) ); //----------------------------------------------------------------------------- diff --git a/project/dclib/dclib-color.c b/project/dclib/dclib-color.c index 43e4020..4bedef4 100644 --- a/project/dclib/dclib-color.c +++ b/project/dclib/dclib-color.c @@ -4967,11 +4967,15 @@ void ViewColorsPredef ( ColorView_t *cv, ColorSelect_t colsel ) colsel = COLSEL_M_MODE; cv->print_alt = ( colsel & COLSEL_F_ALT ) != 0; + // use #pragma to fix a gcc error + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wformat-overflow" fprintf(cv->f, "%s\n%*sPredefined%s color names for mode %s:\n\n", cv->colset->reset, cv->indent, "", colsel & COLSEL_NAME ? " semantic" : "", GetColorModeName(cv->col_mode,0) ); + #pragma GCC diagnostic pop if ( (colsel & COLSEL_NAME) == COLSEL_NAME ) ViewColorsPredef_helper(cv,ch_tab_name); diff --git a/project/dclib/dclib-file.c b/project/dclib/dclib-file.c index f075847..ed53eb7 100644 --- a/project/dclib/dclib-file.c +++ b/project/dclib/dclib-file.c @@ -7487,7 +7487,7 @@ CpuStatus_t GetCpuStatus ( CpuStatus_t * prev_cpuinfo ) static int n_cpu = -1; static int clock_ticks = 100; - char buf[1000]; + char buf[5000]; if ( n_cpu < 0 ) { @@ -7541,20 +7541,46 @@ CpuStatus_t GetCpuStatus ( CpuStatus_t * prev_cpuinfo ) if (f_stat) { while (fgets(buf,sizeof(buf),f_stat)) - if ( !memcmp(buf,"cpu ",4) ) + if (!memcmp(buf,"cpu ",4)) // only cpu summary is relevant { - char *ptr = buf; - current.user = strtol(ptr+4,&ptr,10) * 10000 / clock_ticks; - current.nice = strtol(ptr,&ptr,10) * 10000 / clock_ticks; - current.system = strtol(ptr,&ptr,10) * 10000 / clock_ticks; - current.idle = strtol(ptr,&ptr,10) * 10000 / clock_ticks; + char *ptr = buf+4; + for ( int i = 1; i < 100; i++ ) + { + char *begin = ptr; + u64 val = strtol(ptr,&ptr,10) * 10000 / clock_ticks; + if ( begin == ptr ) + break; + + switch (i) + { + case 1: current.user = val; break; + case 2: current.nice = val; break; + case 3: current.system = val; break; + case 4: current.idle = val; break; + case 5: current.iowait = val; break; + + case 6: + case 7: current.irq += val; break; + + case 8: + case 9: + case 10: current.virtual += val; break; + + default: current.unknown += val; break; + } + } break; } fclose(f_stat); } if (!prev_cpuinfo) + { + current.have_irq = current.irq > 0; + current.have_virtual = current.virtual > 0; + current.have_unknown = current.unknown > 0; return current; + } //--- get delta for result @@ -7562,12 +7588,20 @@ CpuStatus_t GetCpuStatus ( CpuStatus_t * prev_cpuinfo ) if (!prev_cpuinfo->valid) *prev_cpuinfo = current; + current.have_irq = prev_cpuinfo->have_irq || current.irq > 0; + current.have_virtual = prev_cpuinfo->have_virtual || current.virtual > 0; + current.have_unknown = prev_cpuinfo->have_unknown || current.unknown > 0; + CpuStatus_t res = current; res.nsec -= prev_cpuinfo->nsec; res.user -= prev_cpuinfo->user; res.nice -= prev_cpuinfo->nice; res.system -= prev_cpuinfo->system; res.idle -= prev_cpuinfo->idle; + res.iowait -= prev_cpuinfo->iowait; + res.irq -= prev_cpuinfo->irq; + res.virtual -= prev_cpuinfo->virtual; + res.unknown -= prev_cpuinfo->unknown; *prev_cpuinfo = current; return res; @@ -7581,11 +7615,13 @@ ccp PrintCpuStatus ( const CpuStatus_t * cpuinfo ) return "INVALID"; return PrintCircBuf( - "ticks=%d, cpus=%d, times=%lld+%lld+%lld+%lld=%lld, avg=%4.2f,%4.2f,%4.2f %u/%u, nsec=%llu", + "ticks=%d, cpus=%d, times=%lld+%lld+%lld+%lld+%lld+%lld+%lld+%lld=%lld, avg=%4.2f,%4.2f,%4.2f %u/%u, nsec=%llu", cpuinfo->clock_ticks, cpuinfo->n_cpu, cpuinfo->user, cpuinfo->nice, cpuinfo->system, cpuinfo->idle, - cpuinfo->user + cpuinfo->nice + cpuinfo->system + cpuinfo->idle, + cpuinfo->iowait, cpuinfo->irq, cpuinfo->virtual, cpuinfo->unknown, + cpuinfo->user + cpuinfo->nice + cpuinfo->system + cpuinfo->idle + + cpuinfo->iowait + cpuinfo->irq + cpuinfo->virtual + cpuinfo->unknown, cpuinfo->loadavg[0], cpuinfo->loadavg[1], cpuinfo->loadavg[2], cpuinfo->running_proc, cpuinfo->total_proc, cpuinfo->nsec ); diff --git a/project/dclib/dclib-file.h b/project/dclib/dclib-file.h index 8215583..bfc85e6 100644 --- a/project/dclib/dclib-file.h +++ b/project/dclib/dclib-file.h @@ -1679,15 +1679,23 @@ __attribute__ ((__format__(__printf__,3,4))); typedef struct CpuStatus_t { bool valid; // TRUE: data valid (setup done) + bool have_irq; // TRUE if 'irq' ever >0 + bool have_virtual; // TRUE if 'virtual' ever >0 + bool have_unknown; // TRUE if 'unknown' ever >0 + u_nsec_t nsec; // GetTimerNSec() int clock_ticks; // number of clock ticks per second int n_cpu; // total number of cpus // all times in 1e4 ticks per second (in 0.01%) - u64 user; // time spent in user mode. - u64 nice; // time spent in user mode with low priority. - u64 system; // time spent in system mode. - u64 idle; // time spent in the idle task. + u64 user; // 1: time spent in user mode. + u64 nice; // 2: time spent in user mode with low priority. + u64 system; // 3: time spent in system mode. + u64 idle; // 4: time spent in the idle task. + u64 iowait; // 5: time waiting for I/O to complete (not reliable). + u64 irq; // 6..7: Time servicing (soft-)interrupts. + u64 virtual; // 8..10: time for virtual os. + u64 unknown; // 11...: time for future extentions int running_proc; // currently runnable processes int total_proc; // currently total processes diff --git a/project/dclib/dclib-numeric.c b/project/dclib/dclib-numeric.c index 51a8bce..6896b53 100644 --- a/project/dclib/dclib-numeric.c +++ b/project/dclib/dclib-numeric.c @@ -3281,7 +3281,7 @@ ccp PrintNTimeByFormatUTC ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_nsec_t ntime + u_nsec_t ntime // time in nsec, e.g. get by GetTimeNSec(false) ) { return PrintNSecByFormatUTC(format,ntime/NSEC_PER_SEC,ntime%NSEC_PER_SEC); @@ -3295,7 +3295,7 @@ ccp PrintUTimeByFormat ccp format, // format string for strftime() // 1-9 '@' in row replaced by digits of 'usec' - u_usec_t utime + u_usec_t utime // time in nsec, e.g. get by GetTimeNSec(false) ) { return PrintNSecByFormat(format,utime/USEC_PER_SEC,utime%USEC_PER_SEC*NSEC_PER_USEC); @@ -3936,7 +3936,7 @@ ccp PrintTimer6N } } - return buf == temp ? CopyCircBuf0(buf,strlen(buf)) : buf; + return CopyCircBuf0If(buf==temp,buf,strlen(buf)); } /////////////////////////////////////////////////////////////////////////////// diff --git a/project/dclib/dclib-types.h b/project/dclib/dclib-types.h index d8fde33..3d17081 100644 --- a/project/dclib/dclib-types.h +++ b/project/dclib/dclib-types.h @@ -48,6 +48,34 @@ #include #endif +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// versions /////////////// +/////////////////////////////////////////////////////////////////////////////// +// Predefined Macros: https://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html + +#if defined(__GNUC__) + #if defined(__GNUC_MINOR__) + #define DCLIB_GNUC_VERSION ( 1000 * __GNUC__ + __GNUC_MINOR__ ) + #else + #define DCLIB_GNUC_VERSION ( 1000 * __GNUC__ ) + #endif +#else + #define DCLIB_GNUC_VERSION 0 +#endif + +//----------------------------------------------------------------------------- + +#if defined(__GLIBC__) + #if defined(__GLIBC_MINOR__) + #define DCLIB_GLIBC_VERSION ( 1000 * __GLIBC__ + __GLIBC_MINOR__ ) + #else + #define DCLIB_GLIBC_VERSION ( 1000 * __GLIBC__ ) + #endif +#else + #define DCLIB_GLIBC_VERSION 0 +#endif + // /////////////////////////////////////////////////////////////////////////////// /////////////// endian /////////////// diff --git a/project/dclib/lib-dol.h b/project/dclib/lib-dol.h index 6637a2e..9f41a5e 100644 --- a/project/dclib/lib-dol.h +++ b/project/dclib/lib-dol.h @@ -457,7 +457,7 @@ typedef struct wch_header_t { // big endian! - u32 magic; // magic: 'W\x{05}CH' (Gecko Code Handler) + u32 magic; // magic: 'W\x{05}CH' (Wiimm's Code Handler) u32 version; // 0: raw, 1: bzip2 u32 size; // total size of (uncompressed) segment data diff --git a/project/revision.sh b/project/revision.sh index 86e5611..b3f9416 100644 --- a/project/revision.sh +++ b/project/revision.sh @@ -1 +1 @@ -revision=8773 +revision=8786 diff --git a/project/src/addr_port.inc b/project/src/addr_port.inc index 49ad206..9d90de3 100644 --- a/project/src/addr_port.inc +++ b/project/src/addr_port.inc @@ -3,12 +3,12 @@ static addr_port_version_t addr_port_version = { .magic = "PORT-DB", .db_version = 1, - .revision = 8641, - .timestamp = 1661635449, - .n_records = 1685 + .revision = 8780, + .timestamp = 1679746178, + .n_records = 1684 }; -static const addr_port_t addr_port_0[1685] = +static const addr_port_t addr_port_0[1684] = { {{ 0x80000000, 0x80000000, 0x80000000, 0x80000000 }, 0x8040|0, 0x8040|0 }, // HEAD {{ 0x80008114, 0x800080d4, 0x80008070, 0x80008188 }, 0xbc|2, 0xbc|2 }, // T1 @@ -589,7 +589,6 @@ static const addr_port_t addr_port_0[1685] = {{ 0x8071b86c, 0x8071743c, 0x8071aed8, 0x80709c14 }, 0xad04|0, 0xad04|0 }, // REL1 {{ 0x80726570, 0x8073c5d8, 0x80725bdc, 0x80714918 }, 0x1c8c|2, 0x1c8c|2 }, // REL1 {{ 0x80728218, 0x8073e270, 0x80727884, 0x807165c0 }, 0x398|2, 0x398|2 }, // REL1 - {{ 0x807285b4, 0x80745450, 0x80727c20, 0x8071695c }, 0x4|3, 0x4|3 }, // REL1 {{ 0x807285c8, 0x8073e61c, 0x80727c34, 0x80716970 }, 0xd54|2, 0xd54|2 }, // REL1 {{ 0x8072931c, 0x808227a8, 0x80728988, 0x807176c4 }, 0x4|3, 0x4|3 }, // REL1 {{ 0x8072932c, 0x80724754, 0x80728998, 0x807176d4 }, 0x8|3, 0x8|3 }, // REL1 @@ -607,7 +606,7 @@ static const addr_port_t addr_port_0[1685] = {{ 0x80730184, 0x80726dd4, 0x8072f7f0, 0x8071e52c }, 0x8e0|2, 0x8e0|2 }, // REL1 {{ 0x80730b34, 0x80741538, 0x807301a0, 0x8071eedc }, 0xe08|2, 0xe08|2 }, // REL1 {{ 0x8073194c, 0x80727794, 0x80730fb8, 0x8071fcf4 }, 0x3fe0|2, 0x3fe0|2 }, // REL1 - {{ 0x80735934, 0x80742350, 0x80734fa0, 0x80723cdc }, 0x33b8|2, 0x33b8|2 }, // REL1 + {{ 0x80735934, 0x80742350, 0x80734fa0, 0x80723cdc }, 0x33b8|0, 0x33b8|0 }, // REL1 {{ 0x80738cec, 0x80741328, 0x80738358, 0x80727094 }, 0x8|3, 0x8|3 }, // REL1 {{ 0x80738da4, 0x8072b77c, 0x80738410, 0x8072714c }, 0x37a4|2, 0x37a4|2 }, // REL1 {{ 0x8073c548, 0x807457d0, 0x8073bbb4, 0x8072a8f0 }, 0x2898|2, 0x2898|2 }, // REL1 @@ -690,7 +689,7 @@ static const addr_port_t addr_port_0[1685] = {{ 0x807dbcc8, 0x807cba20, 0x807db334, 0x807ca088 }, 0x4|3, 0x4|3 }, // REL1 {{ 0x807dbccc, 0x807cb734, 0x807db338, 0x807ca08c }, 0xbf0|2, 0xbf0|2 }, // REL1 {{ 0x807dc8c8, 0x807dc484, 0x807dbf34, 0x807cac88 }, 0x68|2, 0x68|2 }, // REL1 - {{ 0x807dc94c, 0x807cc32c, 0x807dbfb8, 0x807cad0c }, 0x3fe8|2, 0x3fe8|2 }, // REL1 + {{ 0x807dc94c, 0x807cc32c, 0x807dbfb8, 0x807cad0c }, 0x3fe8|0, 0x3fe8|0 }, // REL1 {{ 0x807e0938, 0x8083c6ec, 0x807dffa4, 0x807cecf8 }, 0x1bc4|2, 0x1bc4|2 }, // REL1 {{ 0x807e24fc, 0x807df55c, 0x807e1b68, 0x807d08bc }, 0x70|2, 0x70|2 }, // REL1 {{ 0x807e259c, 0x807dc50c, 0x807e1c08, 0x807d095c }, 0x3028|0, 0x3028|0 }, // REL1 @@ -1695,5 +1694,5 @@ static const addr_port_t addr_port_0[1685] = {{ 0x809c38bc, 0x809bf0b4, 0x809c291c, 0x809b1efc }, 0x8|0, 0x8|0 }, // MEM1 {{ 0x80ae9544, 0x80ae4d84, 0x80ae85a4, 0x80ad7b84 }, 0x4|0, 0x4|0 }, // MEM1 {{ 0xcd000000, 0xcd000000, 0xcd000000, 0xcd000000 }, 0x8000|0, 0x8000|0 }, // GPU -}; // 1685 records +}; // 1684 records diff --git a/project/src/lib-checksum.c b/project/src/lib-checksum.c index 6d89653..a04b07a 100644 --- a/project/src/lib-checksum.c +++ b/project/src/lib-checksum.c @@ -245,6 +245,48 @@ static u64 szs_cache_last_scan = 0; /////////////////////////////////////////////////////////////////////////////// +void LogCacheActivity ( ccp keyword, ccp format, ... ) +{ + static FILE *f = 0; + static char myid[12]; + + if (!f) + { + if (!opt_log_cache) + return; + f = fopen(opt_log_cache,"a"); + if (!f) + { + ERROR1(ERR_CANT_CREATE,"Can't create log file: %s\n",opt_log_cache); + opt_log_cache = 0; + return; + } + + char buf[4]; + write_le32(buf,getpid()); + buf[3] = GetTimeUSec(false); + EncodeBase64(myid,sizeof(myid),buf,4,0,true,0,0); + PRINT0("%5u %.4s -> %s\n",getpid(),buf,myid); + myid[5] = 0; + } + + char buf[PATH_MAX+100]; + *buf = 0; + if (format) + { + va_list arg; + va_start(arg,format); + vsnprintf(buf,sizeof(buf),format,arg); + va_end(arg); + } + + fprintf(f,"%s %s %-4s %s\n", + PrintMTimeByFormat("%F %T.@@@",GetTimeMSec(false)), myid, keyword, buf ); + fflush(f); +} + +/////////////////////////////////////////////////////////////////////////////// + void SetupSZSCache ( ccp dir_name, bool use_dirname ) { PRINT("SetupSZSCache(%s,%d)\n",dir_name,use_dirname); @@ -308,14 +350,19 @@ enumError LoadSZSCache(void) szs_cache_loaded = true; szs_cache_last_scan = 0; - char buf[PATH_MAX]; - ccp path = PathCatPP(buf,sizeof(buf),szs_cache_dir,SZS_CACHE_FNAME); + const u_nsec_t start_time = GetTimerNSec(); + + char fbuf[PATH_MAX], buf[PATH_MAX]; + ccp path = PathCatPP(fbuf,sizeof(fbuf),szs_cache_dir,SZS_CACHE_FNAME); PRINT("LoadSZSCache() %s\n",path); File_t F; enumError err = OpenFile(&F,true,path,FM_SILENT,0,0); if (err) + { + LogCacheActivity("!LOAD","Loading cache failed: %s",path); return err; + } const typeof(parallel_count) saved_parallel_count = parallel_count; parallel_count = 0; @@ -380,6 +427,12 @@ enumError LoadSZSCache(void) } CloseFile(&F,0); + if (opt_log_cache) + LogCacheActivity("LOAD","%u entries in %s: %s", + szs_cache.used, + PrintTimerNSec6(0,0,GetTimerNSec()-start_time,0), + path ); + parallel_count = saved_parallel_count; return ERR_OK; @@ -400,18 +453,18 @@ static int cmp_szs_cache ( const void * va, const void * vb ) //----------------------------------------------------------------------------- -enumError SaveSZSCache() +enumError SaveSZSCache ( bool force ) { if ( parallel_count > 0 ) return AppendSZSCache(); - if ( !szs_cache_dir || !szs_cache_dirty ) + if ( !szs_cache_dir || !szs_cache_dirty && !force ) return ERR_NOTHING_TO_DO; szs_cache_dirty = false; char path_buf[PATH_MAX]; ccp path = PathCatPP(path_buf,sizeof(path_buf),szs_cache_dir,SZS_CACHE_FNAME); - PRINT("SaveSZSCache() N=%u, %s\n",szs_cache.used,path); + PRINT1("SaveSZSCache() N=%u, %s\n",szs_cache.used,path); File_t F; enumError err = CreateFile(&F,true,path,FM_REMOVE); @@ -560,8 +613,10 @@ ParamFieldItem_t * StoreSZSCache } bool found; - ParamField_t *the_cache = parallel_count > 0 ? &szs_cache_append : &szs_cache; - ParamFieldItem_t *it = FindInsertParamField(the_cache,checksum,false,0,&found); + ParamFieldItem_t *it = FindInsertParamField(&szs_cache,checksum,false,0,&found); + if ( !found && parallel_count > 0 ) + it = FindInsertParamField(&szs_cache_append,checksum,false,0,&found); + if (found) { DASSERT(it); @@ -584,7 +639,7 @@ ParamFieldItem_t * StoreSZSCache return it; FreeString(it->data); - it->data = NULL; + it->data = fname ? STRDUP(fname) : 0; } if (it) diff --git a/project/src/lib-checksum.h b/project/src/lib-checksum.h index 0fc7650..30cffd4 100644 --- a/project/src/lib-checksum.h +++ b/project/src/lib-checksum.h @@ -93,6 +93,9 @@ extern ParamField_t szs_cache; /////////////////////////////////////////////////////////////////////////////// +void LogCacheActivity ( ccp keyword, ccp format, ... ) + __attribute__ ((__format__(__printf__,2,3))); + static inline bool IsSZSCacheEnabled() { return szs_cache_dir != 0; } @@ -100,7 +103,7 @@ void SetupSZSCache ( ccp dir_name, bool use_dirname ); void ScanSZSCache ( ccp dir_name, bool purge ); enumError LoadSZSCache(void); -enumError SaveSZSCache(void); +enumError SaveSZSCache ( bool force ); enumError AppendSZSCache(void); ParamFieldItem_t * StoreSZSCache diff --git a/project/src/lib-file.c b/project/src/lib-file.c index 5189f85..0bd1daa 100644 --- a/project/src/lib-file.c +++ b/project/src/lib-file.c @@ -4221,7 +4221,7 @@ enumError SavePrefixTable ( FILE *f, const mkw_prefix_t * tab ) fprintf(f, "#PREFIX1\r\n" - "#> prefix|info|flags|order|color_index|\r\n" + "@CONTENT=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" @@ -4546,7 +4546,7 @@ enumError SaveCategoryList ( FILE *f, const mkw_category_list_t * clist ) fprintf(f, "#MTCAT03\r\n" - "#> category|mode|ban|char1|char2|abbrev|name|info|fg_color|bg_color|color_name|attribs|\r\n" + "@CONTENT=category|mode|ban|char1|char2|abbrev|name|info|fg_color|bg_color|color_name|attribs|\r\n" "# Category: Unique category identifier\r\n" "# Mode is a bit field: 1: Unknown, 2: Default, 4: Custom,\r\n" "# 0x10: Nintendo, 0x20: Hack of Nintendo, 0x40: Created to cheat\r\n" diff --git a/project/src/lib-kcl-image.c b/project/src/lib-kcl-image.c index c385fc7..973c574 100644 --- a/project/src/lib-kcl-image.c +++ b/project/src/lib-kcl-image.c @@ -205,6 +205,7 @@ int ScanOptPng ( ccp arg ) /////////////////////////////////////////////////////////////////////////////// /////////////// SaveImageKCL() /////////////// /////////////////////////////////////////////////////////////////////////////// +// [[png_param_t]] typedef struct png_param_t { @@ -523,10 +524,7 @@ enumError SaveImageKCL //--- setup parameters - png_param_t param; - memset(¶m,0,sizeof(param)); - param.kcl = kcl; - param.type_mask = opt_png_type_mask; + png_param_t param = { .kcl = kcl, .type_mask = opt_png_type_mask }; InitializeIMG(¶m.img); SETCOLOR(param.col_bg,0,0,0x80,0xff); @@ -559,8 +557,11 @@ enumError SaveImageKCL //--- calc colors + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Warray-bounds" Color_t *kclcol2 = (Color_t*)kcl_color; param.kclcol2 = kclcol2 - N_KCL_FLAG; + #pragma GCC diagnostic pop memset(param.kclcol1,0x00,sizeof(param.kclcol1)); uint *flag_count = AllocFlagCount(); diff --git a/project/src/lib-kcl.c b/project/src/lib-kcl.c index 86f4b9f..3eb3812 100644 --- a/project/src/lib-kcl.c +++ b/project/src/lib-kcl.c @@ -2175,6 +2175,19 @@ static u32 calc_stat_oct kcl->max_o_offset = val; } } + + const uint max = kcl->octree_size; + if ( kcl->max_l_offset > max ) + { + kcl->max_l_offset = max; + kcl->octree_valid = false; + } + if ( kcl->max_o_offset > max ) + { + kcl->max_o_offset = max; + kcl->octree_valid = false; + } + return offset; } @@ -2427,18 +2440,24 @@ void CalcStatisticsKCL //--- calc triangle usage - noPRINT("OFF: %x .. %x\n",kcl->min_l_offset,kcl->max_l_offset); + PRINT("OFF: %x .. %x, max=%x\n",kcl->min_l_offset,kcl->max_l_offset,kcl->raw_data_size); + + const u8 *max_vptr = kcl->raw_data + kcl->raw_data_size; for ( offset = kcl->min_l_offset; offset < kcl->max_l_offset; offset += 2 ) { - uint val = be16( kcl->octree + offset ); - if (val) + const u8 *vptr = kcl->octree + offset; + if ( vptr < max_vptr ) { - if ( --val >= n_tri ) - kcl->n_invalid_tri_ref++; - else if (!tri_used[val]) + uint val = be16( kcl->octree + offset ); + if (val) { - tri_used[val] = 1; - kcl->n_tri_used++; + if ( --val >= n_tri ) + kcl->n_invalid_tri_ref++; + else if (!tri_used[val]) + { + tri_used[val] = 1; + kcl->n_tri_used++; + } } } } diff --git a/project/src/lib-kcl.h b/project/src/lib-kcl.h index 027b32b..3d8e1d3 100644 --- a/project/src/lib-kcl.h +++ b/project/src/lib-kcl.h @@ -477,7 +477,7 @@ typedef struct kcl_t u8 *octree; // NULL or pointer to octree uint octree_size; // size of 'octree' bool octree_valid; // octree & header data are valid - bool octree_alloced; // true: FREE(octree) + bool octree_alloced; // true: FREE(octree) on reset bool recreate_octree; // true: recreate octree before storing diff --git a/project/src/lib-kmp-text.c b/project/src/lib-kmp-text.c index 366069e..161765e 100644 --- a/project/src/lib-kmp-text.c +++ b/project/src/lib-kmp-text.c @@ -6995,7 +6995,7 @@ enumError SaveTextKMP case GOBJ_ELINE_CONTROL: { const int idx = IS_M1(gobj->setting[7]) ? -1 : gobj->setting[7]; - if ( (uint)idx < KMP_MAX_GROUP && kmp->enph.gname[idx] ) + if ( (uint)idx < KMP_MAX_GROUP ) snprintf(temp_buf,sizeof(temp_buf),"E.%s",kmp->enph.gname[idx]); else snprintf(temp_buf,sizeof(temp_buf),"%6d",idx); diff --git a/project/src/lib-ledis.c b/project/src/lib-ledis.c index 7d7433a..d815042 100644 --- a/project/src/lib-ledis.c +++ b/project/src/lib-ledis.c @@ -5181,7 +5181,7 @@ enumError CreateRefLD ( FILE *f, le_distrib_t *ld, bool add_strings ) lt->flags, IsHiddenLEFL(lt->flags), lt->lap_count, lt->speed_factor, GetSha1LT(lt,0,""), - no_d ? 0 : GetSha1LT(lt,1,"") ); + no_d ? "" : GetSha1LT(lt,1,"") ); if (add_strings) { @@ -6144,7 +6144,7 @@ enumError CreateCupIconsLD ( ld_out_param_t *lop, mem_t mem_opt, bool print_info {0,0,0,0} }; - le_strpar_t lepar = { .opt = LTT_NAME }; + le_strpar_t lepar = { .opt = LEO_NAME }; KeyListParam_t keypar; InitializeKeyListParam(&keypar); keypar.func_arg = scan_source_opt; @@ -6646,7 +6646,7 @@ enumError CreateReportLD ( ld_out_param_t *lop, mem_t mem_opt ) {0,0,0,0} }; - le_strpar_t lepar = { .opt = LTT_NAME }; + le_strpar_t lepar = { .opt = LEO_NAME }; KeyListParam_t keypar; InitializeKeyListParam(&keypar); keypar.func_arg = scan_source_opt; @@ -6979,7 +6979,7 @@ enumError PatchLD ( le_distrib_t *ld, mem_t mem_opt, StringField_t *filelist ) {0,0,0,0} }; - le_strpar_t lepar = { .opt = LTT_NAME }; + le_strpar_t lepar = { .opt = LEO_NAME }; KeyListParam_t keypar; InitializeKeyListParam(&keypar); keypar.func_arg = scan_source_opt; diff --git a/project/src/lib-ledis.h b/project/src/lib-ledis.h index c00ecab..0a244b9 100644 --- a/project/src/lib-ledis.h +++ b/project/src/lib-ledis.h @@ -253,6 +253,16 @@ typedef enum le_options_t LEO_LTT_SELECTOR = 0x0000000f, // mask to store le_track_text_t selector + LEO_UNDEFINED = LTT_UNDEFINED, // always NULL to support GetTextLEO() + LEO_SHA1 = LTT_SHA1, // access SHA1 checksum (standard) + LEO_SHA1_D = LTT_SHA1_D, // access SHA1 checksum (_d file) + LEO_IDENT = LTT_IDENT, // access identification (standard) + LEO_IDENT_D = LTT_IDENT_D, // access identification (_d file) + LEO_FILE = LTT_FILE, // access file name + LEO_NAME = LTT_NAME, // access name + LEO_XNAME = LTT_XNAME, // access xname + LEO_XNAME2 = LTT_XNAME2, // access xname with fallback to name + //-- BMG input source selector. If none is set then use all diff --git a/project/src/lib-lex.h b/project/src/lib-lex.h index 7081fbc..bd25b1e 100644 --- a/project/src/lib-lex.h +++ b/project/src/lib-lex.h @@ -174,7 +174,7 @@ typedef enum features_szs_value_t { // values for struct features_szs_t - FZV_UNDEF, // feature not defined + FZV_UNDEF, // feature not used/defined FZV_NO_IMPACT, // feature defined but without gameplay impact FZV_MAYBE_IMPACT, // feature defined, gameplay impact is possible FZV_IMPACT, // feature defined, with gameplay impact diff --git a/project/src/lib-std.c b/project/src/lib-std.c index 86ffde5..6886b86 100644 --- a/project/src/lib-std.c +++ b/project/src/lib-std.c @@ -148,6 +148,7 @@ EncodeMode_t opt_coding64 = ENCODE_OFF; bool opt_verify = false; ccp opt_cache = 0; ccp opt_cname = 0; +ccp opt_log_cache = 0; int parallel_count = 0; bool opt_round = false; int brief_count = 0; @@ -2513,20 +2514,38 @@ void CollectExpandParam ( StringField_t *plist, // insert or append (inorder_count>0) to this list ParamList_t *param, // first param to add - int max // max num of param to add; -1: add all param + int max, // max num of param to add; -1: add all param + uint hidden // bit field: + // 1 : allow hidden files + // 2 : '+h' and '/h' enables or disables hidden files ) { if ( plist && param && max ) { + bool allow_hidden = hidden & 1; for ( ; param; param = param->next ) { if (*param->arg) { + if ( hidden & 2 ) + { + if (!strcmp(param->arg,"+h")) + { + allow_hidden = true; + continue; + } + if (!strcmp(param->arg,"_h")) + { + allow_hidden = false; + continue; + } + } + NORMALIZE_FILENAME_PARAM(param); if ( inorder_count > 0 ) - AppendStringFieldExpand(plist,param->arg,0,false); + AppendStringFieldExpand(plist,param->arg,0,allow_hidden); else - InsertStringFieldExpand(plist,param->arg,0,false); + InsertStringFieldExpand(plist,param->arg,0,allow_hidden); } if (!--max) break; @@ -2534,6 +2553,20 @@ void CollectExpandParam } } +/////////////////////////////////////////////////////////////////////////////// + +enumError cmd_wildcards ( int argc, char ** argv ) +{ + SetupPager(); + StringField_t plist = {0}; + CollectExpandParam(&plist,first_param,-1,2); + + for ( int argi = 0; argi < plist.used; argi++ ) + printf("%s\n",plist.field[argi]); + ResetStringField(&plist); + return ERR_OK; +} + // /////////////////////////////////////////////////////////////////////////////// /////////////// tiny support /////////////// @@ -3932,7 +3965,7 @@ enumError cmd_expand ( int argc, char ** argv ) bool allow_hidden = false; for ( ParamList_t *param = first_param; param; param = param->next ) { - if (!strcmp(param->arg,"/h")) + if (!strcmp(param->arg,"_h")) { allow_hidden = false; printf("%sIgnore hidden files.%s\n", colout->info, colout->reset ); diff --git a/project/src/lib-std.h b/project/src/lib-std.h index 112f1ca..66eddad 100644 --- a/project/src/lib-std.h +++ b/project/src/lib-std.h @@ -1189,7 +1189,7 @@ typedef enum image_format_t //----------------------------------------------------------------------------- extern const KeywordTab_t cmdtab_image_format[]; -int ScanImageFormat ( ccp arg ); +image_format_t ScanImageFormat ( ccp arg ); ccp GetImageFormatName ( image_format_t iform, ccp unknown_value ); #define MAX_MIPMAPS 20 @@ -1218,7 +1218,7 @@ typedef enum palette_format_t //----------------------------------------------------------------------------- extern const KeywordTab_t cmdtab_palette_format[]; -int ScanPaletteFormat ( ccp arg ); +palette_format_t ScanPaletteFormat ( ccp arg ); ccp GetPaletteFormatName ( palette_format_t pform, ccp unknown_value ); // @@ -1622,9 +1622,14 @@ void CollectExpandParam ( StringField_t *plist, // insert or append (inorder_count>0) to this list ParamList_t *param, // first param to add - int max // max num of param to add; -1: add all param + int max, // max num of param to add; -1: add all param + uint hidden // bit field: + // 1 : allow hidden files + // 2 : '+h' and '/h' enables or disables hidden files ); +enumError cmd_wildcards ( int argc, char ** argv ); + // /////////////////////////////////////////////////////////////////////////////// /////////////// general list support /////////////// @@ -2748,6 +2753,7 @@ extern EncodeMode_t opt_coding64; extern bool opt_verify; extern ccp opt_cache; extern ccp opt_cname; +extern ccp opt_log_cache; extern int parallel_count; extern bool opt_round; extern int brief_count; diff --git a/project/src/lib-szs-create.c b/project/src/lib-szs-create.c index 94262b2..651e02f 100644 --- a/project/src/lib-szs-create.c +++ b/project/src/lib-szs-create.c @@ -1205,21 +1205,7 @@ enumError LoadObjFileListSZS if ( path[0] == '.' && path[1] == '/' ) path += 2; int fidx = FindDbFile(path); - if ( fidx < 0 ) - { - bool found = false; - int i; - for ( i = 0; i < HAVESZS__N; i++ ) - if (strcasecmp(path,have_szs_file[i])) - { - found = true; - break; - } - - if (!found) - szs->used_file->d[fidx] |= F_NOT_FOUND; - } - else + if ( fidx >= 0 ) { u8 *flags = szs->used_file->d + fidx; *flags |= F_FOUND; @@ -1992,7 +1978,7 @@ static int add_missing_file am->norm->u8.namepool_size += strlen(fname ? fname+1 : path) + 1; am->norm->u8.total_size += ALIGN32(file->size,opt_align_u8); - PRINT1("ADD-FILE[%d,%zd]: %s, %u bytes\n", + PRINT0("ADD-FILE[%d,%zd]: %s, %u bytes\n", dir_id+1, file-szs->subfile.list, path, file->size ); } am->last_subfile = file; @@ -2128,7 +2114,7 @@ void AddSectionsLEX ( szs_file_t *szs, szs_norm_t *norm, const szs_have_t * have } if (add_course_lex) - AddMissingFileSZS(szs,"course.lex", FF_LEX, norm, verbose >= 1 ? 0 : -1 ); + AddMissingFileSZS(szs,"course.lex", FF_LEX, norm, verbose >= 2 ? 0 : -1 ); } // @@ -2629,7 +2615,7 @@ static void patch_file ) { DASSERT(it); - DASSERT(data||!size); + DASSERT(new_data||!new_size); szs_file_t *szs = it->szs; DASSERT(szs); diff --git a/project/src/lib-szs.c b/project/src/lib-szs.c index 7daa0cc..571a36e 100644 --- a/project/src/lib-szs.c +++ b/project/src/lib-szs.c @@ -1442,6 +1442,7 @@ enumError ClassicCompressYAZ ( yaz_compr_t *yaz ) && !memcmp(yaz->src,cache.data,cache.size)) { PRINT("CACHE USED\n"); + LogCacheActivity("USE","%s %s",it->key,(ccp)it->data); cache.csize -= sizeof(yaz0_header_t); memmove(cache.cdata,cache.cdata+sizeof(yaz0_header_t),cache.csize); @@ -1458,8 +1459,12 @@ enumError ClassicCompressYAZ ( yaz_compr_t *yaz ) return ERR_OK; } } + else + LogCacheActivity("!USE","%s %s",it->key,(ccp)it->data); ResetSZS(&cache); } + else + LogCacheActivity("MISS","%s",iobuf); if (it) { @@ -3113,7 +3118,7 @@ static int ui_check_func void UiCheck ( ui_check_t *uc, szs_file_t *szs ) { - DASSERT(ui); + DASSERT(uc); DASSERT(szs); memset(uc,0,sizeof(*uc)); uc->type = UIT_UNKNOWN; diff --git a/project/src/prefix.inc b/project/src/prefix.inc index 77023ec..96926a9 100644 --- a/project/src/prefix.inc +++ b/project/src/prefix.inc @@ -1,89 +1,98 @@ static const u8 prefix_inc_bz2[] = { - // decompressed size: 0xb23 = 2851 bytes - 0x00,0x00,0x0b,0x23, + // decompressed size: 0xcb7 = 3255 bytes + 0x00,0x00,0x0c,0xb7, // bzipped data - 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x03,0x2c, 0x6d,0xb1,0x00,0x01, - 0x09,0x5f,0x80,0x00, 0x12,0x61,0xef,0x7f, 0xf0,0x3f,0xef,0xdf, 0xf0,0x3f,0xff,0xff, - 0xf4,0x50,0x04,0xbe, 0xee,0x63,0x42,0xb5, 0xd7,0x6c,0xb6,0xd1, 0x93,0x18,0x6a,0x69, - 0xa5,0x3c,0x49,0x84, 0xda,0x8d,0x26,0x62, 0x62,0x69,0x3d,0x4c, 0x4c,0x8c,0x9a,0x34, - 0xc8,0x00,0x1a,0x69, 0xa0,0xd1,0x21,0xa9, 0xe9,0xb5,0x53,0x7a, 0x6a,0x9f,0x92,0x9b, - 0x49,0x93,0x23,0xd1, 0x18,0x41,0x84,0xd0, 0xd3,0x4d,0x00,0x64, 0x01,0xa6,0x84,0xd1, - 0x32,0x6a,0x08,0xf5, 0x23,0xd4,0xf2,0x9f, 0xaa,0x1a,0x68,0x34, 0x68,0xc8,0x0c,0x40, - 0x68,0x7a,0x80,0x1c, 0xc0,0x98,0x9a,0x0c, 0x26,0x4c,0x99,0x32, 0x30,0x98,0x26,0x9a, - 0x64,0x62,0x60,0x08, 0x60,0x12,0x24,0x46, 0x9a,0x9a,0x64,0x99, 0xa9,0x93,0x4c,0x9a, - 0xa7,0x93,0x28,0xf5, 0x3d,0x21,0xb4,0xd2, 0x36,0x51,0xea,0x69, 0xea,0x7a,0x9e,0x89, - 0xa3,0xd4,0x34,0x90, 0x8f,0xf9,0x24,0x23, 0xe9,0xfa,0x6c,0xfd, 0x7c,0x39,0x57,0xce, - 0xde,0xf7,0xe5,0xeb, 0xe9,0x2b,0xa2,0x24, 0xc1,0x97,0x66,0x8a, 0x4c,0xfe,0xeb,0x33, - 0x6f,0x90,0x9e,0xc9, 0xc5,0x46,0xf6,0xa7, 0x7f,0xd9,0xe2,0xd1, 0x45,0xd6,0x58,0x58, - 0x6f,0xfb,0x76,0x38, 0xb8,0xb6,0x53,0xa5, 0x7f,0x1c,0x36,0xa2, 0x00,0xa5,0x05,0x88, - 0x18,0x21,0x85,0x04, 0x9d,0x73,0x91,0x28, 0xc4,0x4c,0x35,0xb1, 0x62,0x45,0x40,0x2a, - 0x16,0x7c,0x1f,0x43, 0xa8,0xe0,0xfa,0x15, 0x39,0xa1,0x75,0x22, 0x9e,0x2f,0xc4,0xd2, - 0x41,0x54,0xcf,0x1f, 0x12,0xc1,0x94,0x87, 0x7c,0xb8,0x97,0x0d, 0x13,0x41,0xeb,0x2a, - 0x20,0xa9,0xe1,0x35, 0xc7,0x0b,0x35,0xa4, 0x2b,0x1e,0x3c,0x27, 0x4c,0x25,0x22,0xfd, - 0xf3,0xcc,0x0f,0xf9, 0x55,0xd1,0xdb,0x89, 0xd1,0xc3,0x67,0x80, 0x50,0xf7,0xf5,0x83, - 0xee,0x10,0x04,0x7f, 0x19,0x2e,0x17,0xf5, 0x77,0xf1,0xd0,0x49, 0xfc,0xb3,0x04,0xae, - 0x48,0xaa,0xaf,0x8d, 0xd7,0x2b,0x57,0xbf, 0xb4,0xaa,0x59,0x0e, 0x7d,0xe3,0x6d,0xa4, - 0xd2,0x00,0xb7,0x35, 0xf9,0xe1,0xca,0x4c, 0xef,0xb0,0x88,0x8e, 0x89,0x22,0x52,0x0b, - 0x27,0x39,0x09,0x01, 0x3e,0xc8,0x5e,0x0c, 0x68,0x40,0x59,0x67, 0x5d,0xfd,0x7b,0x0d, - 0x6e,0x38,0x65,0x84, 0x70,0x69,0xa8,0x17, 0x22,0x24,0x1c,0x4b, 0x26,0xeb,0x60,0xa2, - 0x00,0x98,0xda,0x55, 0x1a,0x92,0x56,0x51, 0x3f,0x9f,0xd2,0x4e, 0x92,0x13,0x20,0x96, - 0x0f,0xe9,0xbb,0xc6, 0xd3,0x55,0x0c,0x5e, 0xed,0xee,0x36,0x67, 0xbf,0x6b,0x2c,0xb2, - 0x3e,0x4d,0x18,0xa6, 0x8e,0x7e,0x33,0x49, 0xcd,0x61,0x47,0xc7, 0x0d,0x91,0x45,0xe9, - 0xa2,0x65,0x7c,0x8b, 0x09,0x30,0x9e,0xa8, 0x4c,0xb4,0xf3,0x90, 0xff,0xa9,0xec,0x76, - 0xd0,0x96,0xd9,0x1b, 0xae,0x11,0xb5,0x82, 0x6f,0x01,0x86,0x3a, 0x1f,0x0e,0x9b,0xed, - 0x65,0xa4,0x1f,0x1a, 0x09,0x60,0x8c,0x99, 0x6e,0x76,0x43,0x13, 0xe6,0xdd,0xbb,0x1b, - 0xd1,0x78,0x03,0x18, 0x30,0xb5,0xc3,0x4f, 0x31,0xa7,0x44,0x91, 0x9a,0xde,0x49,0x00, - 0x3a,0x0f,0x56,0x61, 0xce,0x65,0xb8,0x65, 0x61,0x00,0xd4,0x88, 0xcc,0xa2,0x46,0x14, - 0xed,0x72,0xd3,0x0d, 0xe0,0x8a,0x22,0x25, 0x4a,0x13,0x4d,0xdb, 0xb5,0xd8,0x77,0x38, - 0x0c,0xb6,0x2e,0x8a, 0x5f,0xee,0x66,0x2e, 0xba,0x47,0x0d,0x8b, 0x26,0x92,0xca,0xfa, - 0xc9,0x49,0x9c,0x5c, 0x43,0x7e,0xe8,0x84, 0xc4,0xdb,0x19,0x28, 0xd8,0xe4,0xdb,0x68, - 0x5e,0xe5,0x5d,0x0e, 0x05,0xca,0xd4,0x90, 0x5a,0x41,0x4d,0x80, 0x88,0x60,0xc8,0xc4, - 0xa6,0x4a,0x8d,0xf8, 0xe7,0x26,0xd3,0x61, 0x86,0xc3,0x8a,0xf9, 0xa4,0x8b,0xf8,0x98, - 0x10,0xd4,0xee,0x0c, 0x94,0x89,0x23,0x1b, 0xf5,0x61,0x73,0x38, 0x63,0x65,0x37,0x0e, - 0xb8,0x07,0x77,0xc1, 0xf6,0x3a,0xf1,0x21, 0x47,0x47,0x69,0x2d, 0xaa,0x0e,0x75,0xfc, - 0x61,0xb9,0xc9,0xbb, 0xd3,0xc6,0xc1,0x44, 0x9b,0xe1,0x94,0xb0, 0x36,0x35,0x2e,0xe8, - 0x6d,0x3c,0x64,0x5a, 0x10,0x11,0x3b,0xaf, 0xa1,0x00,0x31,0xa0, 0x25,0x62,0x62,0xad, - 0xb7,0x44,0x95,0x5d, 0x7f,0x32,0x9e,0xb2, 0x57,0x4e,0xbf,0xb1, 0x8d,0x6e,0xc4,0xae, - 0x6e,0x41,0x77,0xc1, 0xed,0xd7,0x39,0x9b, 0xde,0x90,0x62,0x16, 0x2f,0x35,0x32,0xd0, - 0x41,0x0e,0xe3,0x91, 0xd9,0x8f,0x18,0xe1, 0x8d,0x58,0xf5,0x30, 0xea,0x0e,0x0d,0x88, - 0xcf,0xc0,0xdb,0x84, 0xb0,0xec,0xd9,0x9d, 0x72,0xd7,0xac,0x62, 0xe0,0xc8,0x21,0xad, - 0xa4,0x20,0x80,0x28, 0x90,0x11,0x2f,0xad, 0x07,0xba,0xc8,0x86, 0xc2,0x15,0x89,0x1b, - 0xcc,0x73,0xd5,0x17, 0x6a,0xc0,0x7e,0x16, 0x31,0x4f,0x6a,0xe7, 0xab,0xdb,0x79,0x42, - 0x4b,0x9d,0x96,0x36, 0xe4,0x12,0x3a,0x5c, 0x80,0xce,0x2b,0xc3, 0x23,0x99,0x4b,0x59, - 0x77,0x4e,0x88,0x52, 0x61,0x8d,0x52,0xdf, 0xbb,0x8f,0xaa,0xcd, 0x2c,0xd5,0xc3,0x55, - 0x3b,0x01,0x59,0x8e, 0xca,0x69,0xd1,0xc0, 0xb7,0xd8,0xcb,0xbd, 0x94,0xd8,0x22,0x67, - 0x2b,0x40,0xb6,0x75, 0x5d,0xcb,0x4d,0xc8, 0xc0,0xa2,0xdd,0xec, 0xd8,0x1e,0x64,0x13, - 0x01,0x33,0x4c,0x26, 0x82,0x41,0xa9,0x2e, 0x54,0xc9,0x48,0xcc, 0xca,0x81,0xd5,0x59, - 0x9b,0xd7,0xad,0x9c, 0x84,0x92,0xda,0xbc, 0xf7,0x7a,0x5d,0x38, 0xa0,0x65,0xa3,0x01, - 0x14,0x92,0x9b,0xe0, 0xd6,0xe5,0x50,0x24, 0x20,0x12,0xa1,0x4c, 0xb1,0x54,0x74,0x25, - 0x94,0x08,0x14,0xc6, 0x0f,0xb2,0xb6,0x4e, 0xfb,0x07,0x10,0x48, 0x94,0x9b,0x56,0x97, - 0xb0,0x43,0x4c,0x4c, 0xf6,0xff,0xb0,0xab, 0x0e,0x88,0xd5,0xd6, 0x1e,0x4e,0x9b,0x47, - 0x85,0xf9,0x42,0x74, 0x38,0x23,0x06,0x71, 0x9a,0xb3,0x79,0x39, 0x47,0x2a,0x19,0x8b, - 0x2b,0xe1,0x8e,0x17, 0xa0,0x83,0x3e,0xc2, 0x46,0x35,0x8e,0x6d, 0x3c,0xc9,0x2c,0xa1, - 0x36,0x11,0x21,0xb0, 0x5a,0xf8,0x42,0x93, 0x7a,0xa2,0xb9,0xcc, 0xdc,0x30,0x5a,0xf9, - 0x0d,0xb9,0xfa,0x07, 0x86,0x0f,0xba,0x30, 0x33,0x98,0xdf,0x6f, 0x4b,0x48,0x4d,0xef, - 0x2d,0x2c,0xf8,0xa2, 0x1b,0x8c,0xe4,0x2b, 0x1b,0x48,0x1b,0xb0, 0x69,0x3a,0xc9,0x9f, - 0x5d,0x6c,0xd7,0x17, 0x49,0x96,0x99,0x41, 0xcf,0xcb,0x98,0x53, 0x37,0x56,0xfc,0x1d, - 0x96,0xbb,0xfa,0xa7, 0xbd,0xfe,0x19,0xf5, 0xf9,0x94,0x03,0x43, 0xfc,0x98,0x07,0x29, - 0x9e,0xa6,0x00,0xeb, 0x15,0x95,0xa2,0x21, 0xcc,0xcd,0xd8,0x85, 0x13,0x60,0x24,0x49, - 0x69,0xad,0x81,0x7f, 0xf5,0xab,0xe7,0xe8, 0xe6,0xc9,0xe5,0xcf, 0x0c,0x88,0x8d,0xe9, - 0x3c,0x78,0x85,0x4b, 0xe3,0xab,0x24,0x76, 0xe4,0xc0,0x09,0x4d, 0xf7,0x30,0x0b,0xd0, - 0xe9,0xcd,0xc4,0x16, 0xd6,0x63,0xb6,0x8d, 0xe6,0x83,0x82,0x76, 0x3a,0x52,0xb4,0x99, - 0xe3,0xe4,0x92,0xf5, 0x88,0x0f,0xaf,0x9c, 0x0b,0xce,0x70,0x97, 0xf9,0x10,0xda,0x48, - 0xf4,0x61,0x37,0x64, 0xe1,0xb9,0x43,0x85, 0x0d,0xb8,0x8f,0x48, 0xf9,0xd2,0xe0,0xa0, - 0x13,0xdf,0x52,0x24, 0xd8,0x80,0x1a,0x35, 0x34,0x79,0xa4,0x00, 0x1f,0x32,0x46,0x6e, - 0xc6,0xa3,0x54,0xe6, 0x60,0x45,0xab,0x75, 0x4a,0x1b,0x49,0xf2, 0x5b,0x63,0x7c,0x2f, - 0x96,0xcb,0x49,0xc9, 0xa3,0x27,0x97,0x9f, 0x7c,0xb0,0x61,0xb6, 0xa2,0xa2,0x9b,0x1f, - 0x71,0x72,0x2e,0x73, 0x2e,0x0d,0xb8,0x16, 0x80,0xe7,0x5f,0xc3, 0xa7,0x74,0xea,0x0b, - 0xa2,0x9c,0x6c,0x98, 0xc4,0xd5,0x5c,0xba, 0xcf,0x03,0xf4,0x2b, 0x41,0x4c,0x8b,0x1a, - 0xe5,0xb9,0x54,0x37, 0xb5,0x25,0x50,0x4c, 0x8c,0x33,0x8d,0xf3, 0xeb,0x32,0x12,0x10, - 0xb0,0xb4,0x2d,0xab, 0xa5,0xeb,0x5b,0x59, 0x65,0x96,0x45,0x92, 0xc8,0x63,0x1d,0x51, - 0x26,0xb8,0xf1,0x16, 0x7a,0x46,0x4d,0x8c, 0xf0,0xac,0xc1,0x6a, 0xd3,0x54,0x33,0x11, - 0x48,0x81,0xff,0x17, 0x72,0x45,0x38,0x50, 0x90,0x03,0x2c,0x6d, 0xb1, - // 0x4dd = 1245 data bytes (44%) + 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x9e,0x05, 0xfa,0xfd,0x00,0x01, + 0xcc,0xdf,0x80,0x00, 0x12,0x61,0xef,0x7f, 0xf2,0x7f,0xef,0xdf, 0xf0,0xbf,0xff,0xff, + 0xf4,0x50,0x05,0x5e, 0xc6,0xf7,0x8d,0x6b, 0xb2,0x75,0xdb,0x6c, 0xdb,0xdd,0xe7,0x07, + 0x71,0xe1,0xa2,0x4d, 0x30,0x93,0x4c,0x98, 0x98,0x8c,0x9a,0x60, 0x49,0xea,0x69,0x93, + 0x50,0xf4,0xd1,0xa8, 0x7a,0x9a,0x68,0x00, 0xd3,0xd4,0x1a,0x26, 0x89,0xb4,0xd2,0x1a, + 0x4d,0xa9,0x3c,0x9a, 0x90,0xf4,0xd4,0xf5, 0x1a,0x0c,0x80,0x32, 0x34,0x00,0x69,0xb5, + 0x00,0x12,0x9a,0x11, 0x02,0x69,0x3d,0x21, 0x91,0x19,0xa8,0x1e, 0x90,0xd0,0x64,0x03, + 0x41,0x90,0xd3,0x4d, 0x0d,0x00,0x48,0x92, 0x8a,0x7e,0x99,0x4d, 0xe4,0x4a,0x3d,0x1e, + 0xa0,0xd3,0x28,0xf5, 0x34,0xc2,0x30,0x04, 0x34,0xc1,0x19,0x00, 0x69,0x84,0x8a,0x69, + 0x51,0xb6,0xa9,0x93, 0x40,0x03,0x6a,0x68, 0x00,0x03,0x20,0x03, 0x40,0x34,0x00,0x18, + 0x20,0x5f,0xc6,0x73, 0x40,0x0b,0xe3,0xab, 0x0e,0x8f,0x76,0x0b, 0x0b,0xdf,0xd6,0xac, + 0x12,0x96,0x1f,0xd8, 0x78,0xd3,0xa4,0xa2, 0x1b,0x06,0x52,0xcc, 0x95,0xe3,0xf2,0xcf, + 0x1a,0x7d,0x84,0x74, 0x8d,0x8c,0x38,0x22, 0xee,0xe9,0xe5,0xbd, 0x5d,0x89,0xa0,0x98, + 0xd5,0xd7,0x87,0xde, 0x02,0xf1,0x2b,0x75, 0xc9,0x9f,0xd9,0x29, 0xa9,0x00,0xe3,0x21, + 0x33,0x14,0x30,0xd6, 0x98,0x70,0xb5,0xa2, 0xc4,0x4e,0x31,0x53, 0x13,0x9d,0x55,0x6d, + 0xaa,0x02,0x75,0xd7, 0x75,0x61,0x4a,0x4a, 0xde,0x03,0x3b,0xd8, 0x59,0x9c,0xdd,0x80, + 0xdb,0x53,0x74,0xcc, 0xb3,0x48,0x60,0x3f, 0x10,0xc5,0x4f,0x58, 0xbf,0xb2,0xf2,0xb3, + 0x1f,0x52,0xd9,0x8e, 0x11,0x2c,0x36,0x55, 0x26,0x95,0x55,0x10, 0x85,0x43,0x6b,0xf2, + 0x5a,0x5f,0x11,0x21, 0xcb,0x9d,0x24,0x5f, 0xef,0x9b,0xc0,0x1f, 0xd0,0x9b,0x9b,0x84, + 0x22,0x3a,0xb9,0xce, 0x07,0xbc,0x06,0x0f, 0x6e,0x20,0x1f,0xb9, 0x09,0x04,0x77,0xe5, + 0x5a,0x2e,0x9e,0xe7, 0x56,0xa9,0x88,0x49, 0xf7,0x6a,0x04,0xab, 0x48,0xb1,0x59,0x67, + 0x65,0x75,0x85,0x4b, 0x97,0x90,0xb1,0x2d, 0x51,0x4d,0xb5,0xe6, 0x21,0x24,0xcc,0x86, + 0x66,0x0e,0xfc,0x19, 0xb1,0xce,0xea,0x21, 0x1c,0xd5,0x2b,0x04, 0x44,0x47,0xbd,0x04, + 0xc8,0x56,0x93,0xf0, 0x96,0x01,0x8a,0x79, 0xdd,0xac,0x42,0x00, 0x62,0xb5,0xe3,0xc7, + 0xc5,0xbe,0x6f,0x27, 0x59,0x74,0xee,0x0f, 0xa7,0x27,0x8d,0x18, 0x06,0x74,0x56,0x84, + 0x94,0xd5,0x1d,0x10, 0x39,0xf5,0xb0,0x2d, 0x35,0x89,0xda,0x6e, 0xab,0xc3,0x96,0xf4, + 0x77,0x6e,0xe9,0xb2, 0xad,0x61,0x72,0x12, 0x40,0x7f,0x9d,0x7e, 0x6a,0x12,0xac,0x66, + 0x3d,0x75,0xe4,0x43, 0x9a,0x5c,0xc9,0x49, 0x87,0x5d,0x47,0xa1, 0x90,0x80,0x8c,0x85, + 0xf3,0x06,0x08,0x86, 0x8b,0x16,0x1a,0x73, 0xa0,0xfe,0xee,0x45, 0xe1,0x19,0x49,0x86, + 0xa2,0x84,0x26,0x29, 0x4d,0xc8,0x64,0x41, 0xd5,0x02,0xc2,0x75, 0x2a,0xd8,0x47,0x6a, + 0x0e,0x0b,0x46,0x37, 0xda,0x13,0x73,0x18, 0x52,0xdd,0x68,0xcf, 0xb9,0x8c,0xa9,0x91, + 0x51,0x25,0x2f,0x96, 0x21,0x2a,0x23,0x2b, 0x30,0x4d,0x90,0xd0, 0x3c,0xd9,0xb5,0x67, + 0xc3,0x04,0x08,0x01, 0x08,0x64,0x93,0x55, 0x3a,0x65,0x79,0xa3, 0x6a,0x18,0xbe,0xbb, + 0xd0,0x00,0xb5,0x65, 0xae,0xf2,0x75,0xdc, 0x3a,0xd0,0x24,0xa5, 0x61,0x36,0xac,0xac, + 0x0e,0x05,0x73,0xe3, 0x18,0xf2,0x18,0x2f, 0x49,0x92,0xb3,0x71, 0xf9,0x30,0x69,0xf0, + 0x3e,0x00,0xc3,0x11, 0x11,0xcd,0x42,0x6e, 0xcd,0x1a,0x2f,0x99, 0x9f,0x5d,0xe1,0x9c, + 0x5b,0x8a,0x9f,0x97, 0x51,0x34,0xdc,0x5c, 0x38,0x6c,0x57,0xb1, 0x2c,0xee,0xfc,0x76, + 0x49,0x48,0x66,0x4c, 0x83,0x67,0x3c,0x40, 0x31,0x31,0x83,0x19, 0x28,0xcc,0xe4,0xdb, + 0x69,0x0d,0x9f,0x85, 0xee,0xba,0xd5,0x46, 0x5b,0x67,0x6e,0x0f, 0x1c,0x43,0x3b,0xc6, + 0x4c,0x2f,0xbc,0xc1, 0x91,0x87,0x99,0x3b, 0x8b,0x7e,0xf9,0xf4, 0x15,0xb8,0x2f,0x1b, + 0x38,0x31,0xe5,0x1e, 0xfe,0x4f,0x30,0x2b, 0xa2,0x8e,0xd1,0x92, 0x19,0x42,0x40,0x66, + 0x48,0x10,0x12,0x6a, 0xbb,0x2a,0x29,0x8e, 0xf5,0x20,0xb8,0x03, 0x6b,0xc0,0xcf,0xa4, + 0x6e,0x3e,0x73,0x6c, 0x48,0x12,0x2f,0xe2, 0x1c,0xa5,0x23,0x8c, 0x92,0x68,0xc0,0x37, + 0xbc,0xdb,0xd1,0x1e, 0xbd,0xa2,0xd5,0xcd, 0xd2,0x0a,0x4e,0x1d, 0x2f,0x44,0xea,0xe4, + 0x0f,0x5d,0xeb,0x2a, 0x88,0x88,0xaa,0xae, 0x40,0x10,0x8a,0x82, 0x71,0x50,0x50,0xac, + 0xb3,0x57,0x6f,0x51, 0x40,0xa6,0x73,0x40, 0xbf,0xd4,0x29,0x3d, 0xbe,0x22,0x92,0x5a, + 0x09,0x36,0xc0,0x07, 0xb9,0xcd,0x9a,0xa6, 0x4e,0x15,0xb6,0x08, 0x63,0x05,0x3e,0x0b, + 0x61,0x57,0x69,0x08, 0xa4,0x9c,0x52,0x51, 0x4c,0xad,0x86,0x9b, 0x34,0x63,0xcf,0x07, + 0x38,0x48,0x30,0xf1, 0x8b,0x00,0x4d,0xc9, 0xa8,0x29,0xbf,0x7d, 0x35,0xb1,0x72,0xed, + 0xcd,0xe0,0x2a,0xe2, 0xd5,0xc1,0x83,0x4c, 0x65,0xca,0x28,0x75, 0x04,0x42,0x13,0x27, + 0x3e,0xbb,0x53,0xab, 0xc3,0x41,0xeb,0x31, 0xbc,0x33,0x48,0xf3, 0x7d,0x67,0xbb,0x6d, + 0x39,0x96,0x40,0x5f, 0x19,0x49,0xf0,0xac, 0xa4,0x7b,0x2e,0xb4, 0x3f,0xbb,0x09,0x03, + 0x2d,0xc8,0x79,0x74, 0xaa,0xfb,0x24,0x28, 0x3a,0x28,0xc1,0x9c, 0x6c,0x43,0x49,0xad, + 0x22,0x2e,0x2d,0xd9, 0x93,0xb4,0x20,0xda, 0xb8,0x69,0xcc,0x6a, 0xa6,0x6c,0x35,0x2f, + 0x39,0x8a,0xe6,0xae, 0x56,0xf7,0x00,0x4a, 0x8a,0x85,0xe7,0x8d, 0xf0,0xab,0x8c,0x33, + 0x95,0xec,0xd5,0x40, 0x02,0x83,0x0a,0x59, 0x54,0x60,0x11,0x53, 0xb2,0x6d,0xb7,0x47, + 0x20,0x16,0xce,0xfc, 0xfd,0xd4,0xbc,0xcf, 0x48,0x2c,0x02,0xb6, 0xb8,0x11,0x71,0x93, + 0x89,0x44,0xc9,0xad, 0x0b,0xdd,0x71,0x3a, 0x10,0xdc,0x02,0x69, 0xe0,0x34,0x49,0xe5, + 0x6a,0x66,0x65,0x0b, 0xb9,0x13,0xd0,0x80, 0x23,0xd7,0x9b,0x02, 0xd1,0x46,0x74,0x51, + 0x19,0x40,0x38,0xe8, 0xc9,0x6f,0x3f,0x42, 0x48,0xda,0xd6,0xb4, 0x42,0x4e,0x3a,0xb3, + 0x38,0xf0,0x82,0x59, 0x29,0x76,0x07,0x66, 0x81,0x02,0xcf,0x85, 0x27,0x35,0x0a,0xbc, + 0x41,0x32,0x21,0xb5, 0x35,0x53,0x04,0x34, 0xd0,0x32,0xf7,0xe4, 0x95,0x2d,0xef,0xe5, + 0x4e,0xf9,0x49,0x69, 0x5f,0x0c,0x59,0x85, 0x76,0xb4,0xc9,0x53, 0x19,0x16,0x9d,0xe3, + 0x7e,0x0e,0x35,0x1b, 0x87,0x5a,0xc0,0x5c, 0x7b,0x6b,0xda,0x32, 0xec,0x37,0xa5,0x0b, + 0x82,0x0e,0xfe,0x46, 0x58,0x2b,0xb0,0xec, 0xcf,0x60,0x00,0x4c, 0x20,0x5d,0xf1,0x01, + 0x2c,0x03,0x68,0x5b, 0x1a,0x61,0x12,0x7b, 0x11,0x7c,0xb1,0xda, 0x4f,0x4d,0xcb,0x67, + 0x68,0xcd,0x3d,0xd1, 0xd2,0x94,0x8b,0xfe, 0x32,0xb4,0xa1,0x74, 0xea,0xdf,0x69,0x24, + 0xdd,0x67,0xa1,0xbc, 0x3b,0xc8,0x86,0xe2, 0x64,0x2c,0x2c,0x69, 0x03,0x66,0x14,0xd0, + 0x3a,0xe1,0x0b,0xb3, 0x4e,0xf3,0x8e,0xf6, 0xc2,0x2a,0x6e,0xbb, 0x71,0x70,0xde,0x34, + 0x9a,0x2e,0xbf,0x15, 0x4a,0xe9,0x7c,0xdc, 0x74,0x1f,0x5b,0xf2, 0xe3,0xab,0x59,0x50, + 0x32,0x55,0xf4,0x38, 0x14,0xbd,0xdb,0x5e, 0x89,0x04,0x6d,0xb4, 0xd9,0x7d,0x8d,0x19, + 0xad,0xb6,0xd9,0x57, 0x2a,0xc1,0x2e,0x41, 0x6c,0x8d,0x29,0x58, 0xea,0x50,0xf6,0x92, + 0xff,0xec,0x2f,0xaf, 0x27,0x2f,0x97,0x4d, 0x2b,0xe9,0xac,0x00, 0x47,0x85,0x69,0xc4, + 0x76,0xbf,0x1c,0xb7, 0x5a,0x63,0x65,0xc1, 0x4b,0x27,0x82,0x1b, 0x72,0x1d,0x7a,0xe8, + 0xc7,0x25,0x07,0xc3, 0x08,0x5d,0xbb,0x63, 0xcd,0x48,0x35,0xb2, 0xaa,0xb2,0x6e,0xb2, + 0x47,0xe9,0xf9,0xa1, 0x9b,0xfa,0xee,0x1d, 0x9d,0x4e,0x07,0x54, 0xb8,0xc7,0xed,0xdc, + 0x49,0x98,0x6e,0xb4, 0x12,0xa9,0x2e,0x91, 0x0e,0x9d,0x9d,0x24, 0xef,0xd6,0xff,0x8b, + 0x2a,0x0b,0x00,0x4e, 0xba,0x12,0x86,0xd0, 0x90,0x34,0x65,0xb4, 0x74,0x89,0x20,0xb3, + 0x0d,0x6e,0xf2,0x54, 0xaf,0x57,0x10,0x16, 0xf8,0x73,0xad,0x23, 0xc4,0xd5,0x91,0x1e, + 0x0c,0x6c,0x4f,0x86, 0x75,0xe2,0xea,0x2f, 0xdd,0x7f,0x4f,0x97, 0x95,0x34,0x53,0x05, + 0x2f,0x85,0x1d,0x76, 0x6c,0xcb,0x21,0xf5, 0x3c,0x1c,0x3f,0xe3, 0x22,0x0a,0x21,0x24, + 0x9a,0x16,0x8d,0x5b, 0xf9,0xd6,0xa0,0xbb, 0x2d,0xbd,0x68,0x46, 0x15,0x38,0x2a,0xba, + 0x29,0x17,0x6b,0x9e, 0x66,0xe8,0x4a,0xe1, 0xbd,0x54,0x66,0xbb, 0x2e,0x7e,0x08,0x4b, + 0xe2,0x8d,0x9d,0xb5, 0x01,0x56,0xb1,0xce, 0xaf,0x63,0x86,0x27, 0x30,0xc3,0x62,0x98, + 0xab,0x1d,0x6a,0xb9, 0x29,0x38,0xe3,0x8e, 0x38,0xc5,0xd8,0xcc, 0x61,0x8c,0x0a,0xb5, + 0xdd,0xbf,0x5c,0x39, 0x65,0x13,0x8e,0x23, 0x34,0xba,0x32,0x9c, 0x41,0xa3,0x2d,0x6c, + 0x44,0x37,0x9a,0xd8, 0x89,0xff,0x17,0x72, 0x45,0x38,0x50,0x90, 0x9e,0x05,0xfa,0xfd, + // 0x570 = 1392 data bytes (43%) }; static BZ2Manager_t prefix_inc_mgr diff --git a/project/src/ui/tab-wlect.inc b/project/src/ui/tab-wlect.inc index b00f880..90cdd5d 100644 --- a/project/src/ui/tab-wlect.inc +++ b/project/src/ui/tab-wlect.inc @@ -191,7 +191,7 @@ "This 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." - " Wildcards are accepted, see https://szs.wiimm.de/doc/wildcards for details." + " " WILDCARDS "\n " " Use the command without keyword to get an extended description." }, diff --git a/project/src/ui/tab-wstrt.inc b/project/src/ui/tab-wstrt.inc index a227ca9..f78c073 100644 --- a/project/src/ui/tab-wstrt.inc +++ b/project/src/ui/tab-wstrt.inc @@ -120,8 +120,11 @@ " Keywords are @PAL@ (default), @USA@, @JAPAN@, @KOREA@, or any abbreviation of them." " They select the region for the following addresses." " The hex numbers (with or without @0x@ prefix) are interpreted as addresses." - " If an address begins with @m@ or @s@," + " If an address begins with @m@, @M@, @s@ or @S@," " then it is interpreted as a file offset for @main.dol@ or @staticr.rel@." + " If the number begins with a point (@.@), then it is interpreted as a cheat code." + " In this case, the lowest 25 bits are interpreted as address" + " and the highest 7 bits are saved and used for the address output." " All addresses are ported to all other regions." " The result is printed as colorized table." "\1 See https://szs.wiimm.de/cmd/wstrt/port for more details." }, diff --git a/project/src/ui/tab-wszst.inc b/project/src/ui/tab-wszst.inc index 9984290..aa60a17 100644 --- a/project/src/ui/tab-wszst.inc +++ b/project/src/ui/tab-wszst.inc @@ -98,10 +98,20 @@ " and prints one line for each parameter." " After that, the parameter is treated as a filename with wildcards" " and all matching files are searched." - " The special parameters '+h' and '/h' enable or disable the search" - " for hidden directories and files (files beginning with a point)." + " The special parameters '+h' and '_h' enable or disable the search" + " for hidden directories and files (files beginning with a point)" + " for the following parameters." " All tools know the EXPAND command." }, + { T_DEF_CMD, "WILDCARDS", "WILDCARDS", + "wszst WILDCARDS pattern...", + " Each parameter is treated as a filename. " + WILDCARDS_SORT + " The special parameters '+h' and '_h' enable or disable the search" + " for hidden directories and files (files beginning with a point)" + " for the following parameters." + " Finally, one line is printed for each file name of the list." }, + { T_DEF_CMD, "TEST", "TEST", "wszst TEST [options]... [ignored]...", "This debugging command accepts all options and parameters" @@ -754,7 +764,7 @@ " Multiple usage is possible." " The impact is command dependent." }, - { T_OPT_GM, "LOGGING", "L|logging", + { T_OPT_GM, "LOGGING", "L|logging|log", 0, "This debug option enables the logging of internal lists and maps." " Set it up to three times to be more verbose." }, @@ -1649,6 +1659,11 @@ " This parameter overrides the generated cache name." " The name is used only once for the very first cache candidate." }, + { T_OPT_GP, "LOG_CACHE", "log-cache|logcache", + "file", + "Define a file to log chache activities." + " The file is openend in append-mode." }, + { T_OPT_G, "PARALLEL", "parallel", 0, "Tell the tool that it will be called multiple times in parallel." @@ -2800,6 +2815,12 @@ { T_CMD_BEG, "EXPAND", 0,0,0 }, { T_ALL_OPT, 0, 0,0,0 }, + //---------- COMMAND wszst WILDCARDS ---------- + + { T_CMD_BEG, "WILDCARDS", 0,0,0 }, + { T_COPT, "IGNORE", 0,0,0 }, + { T_COPT, "IN_ORDER", 0,0,0 }, + //---------- COMMAND wszst TEST ---------- { T_CMD_BEG, "TEST", 0,0,0 }, @@ -2969,7 +2990,11 @@ { T_CMD_BEG, "SCANCACHE", 0,0,0 }, { T_COPT, "CACHE", 0,0,0 }, + { T_COPT, "LOG_CACHE", 0,0,0 }, { T_COPT, "PURGE", 0,0,0 }, + { T_COPT, "FAST", 0,0, + "Scan 'cache-content.txt' and remove duplicates." + " Ignore option {--purge}." }, //---------- COMMAND wszst _EXPORT ---------- @@ -3206,7 +3231,7 @@ { T_CMD_BEG, "FEATURES", 0,0,0 }, { T_COPT, "BRIEF", 0,0, - "Suppres any comments at all." + "Suppres comments at all." " If set twice, suppress empty lines (for grouping) too." " If set three times, omit inactive features (value 0) too." }, { T_COPT, "LONG", 0,0, diff --git a/project/src/ui/ui-wbmgt.c b/project/src/ui/ui-wbmgt.c index 3f24b35..03d997b 100644 --- a/project/src/ui/ui-wbmgt.c +++ b/project/src/ui/ui-wbmgt.c @@ -1548,9 +1548,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wctct.c b/project/src/ui/ui-wctct.c index 4422f73..580e0db 100644 --- a/project/src/ui/ui-wctct.c +++ b/project/src/ui/ui-wctct.c @@ -1790,9 +1790,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wimgt.c b/project/src/ui/ui-wimgt.c index 4ebf300..2893524 100644 --- a/project/src/ui/ui-wimgt.c +++ b/project/src/ui/ui-wimgt.c @@ -1316,9 +1316,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wkclt.c b/project/src/ui/ui-wkclt.c index 88708d8..52faa2a 100644 --- a/project/src/ui/ui-wkclt.c +++ b/project/src/ui/ui-wkclt.c @@ -2258,9 +2258,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wkmpt.c b/project/src/ui/ui-wkmpt.c index 4862f38..0e908e5 100644 --- a/project/src/ui/ui-wkmpt.c +++ b/project/src/ui/ui-wkmpt.c @@ -2322,9 +2322,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wlect.c b/project/src/ui/ui-wlect.c index 69dd141..a751fdd 100644 --- a/project/src/ui/ui-wlect.c +++ b/project/src/ui/ui-wlect.c @@ -1927,9 +1927,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wmdlt.c b/project/src/ui/ui-wmdlt.c index 99a2d21..3908322 100644 --- a/project/src/ui/ui-wmdlt.c +++ b/project/src/ui/ui-wmdlt.c @@ -1579,9 +1579,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wpatt.c b/project/src/ui/ui-wpatt.c index c5d8e3b..7181a33 100644 --- a/project/src/ui/ui-wpatt.c +++ b/project/src/ui/ui-wpatt.c @@ -1126,9 +1126,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, diff --git a/project/src/ui/ui-wstrt.c b/project/src/ui/ui-wstrt.c index d59f2c0..2c606ed 100644 --- a/project/src/ui/ui-wstrt.c +++ b/project/src/ui/ui-wstrt.c @@ -2165,9 +2165,10 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, @@ -2325,8 +2326,11 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = " PAL (default), USA, JAPAN, KOREA, or any abbreviation of them. They" " select the region for the following addresses. The hex numbers (with" " or without 0x prefix) are interpreted as addresses. If an address" - " begins with m or s, then it is interpreted as a file offset for" - " main.dol or staticr.rel. All addresses are ported to all other" + " begins with m, M, s or S, then it is interpreted as a file offset" + " for main.dol or staticr.rel. If the number begins with a point (.)," + " then it is interpreted as a cheat code. In this case, the lowest 25" + " bits are interpreted as address and the highest 7 bits are saved and" + " used for the address output. All addresses are ported to all other" " regions. The result is printed as colorized table. See" " https://szs.wiimm.de/cmd/wstrt/port for more details.", 0, diff --git a/project/src/ui/ui-wszst.c b/project/src/ui/ui-wszst.c index d397063..8a813a4 100644 --- a/project/src/ui/ui-wszst.c +++ b/project/src/ui/ui-wszst.c @@ -1676,6 +1676,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " candidate." }, + { OPT_LOG_CACHE, false, false, false, false, false, 0, "log-cache", + "file", + "Define a file to log chache activities. The file is openend in" + " append-mode." + }, + { OPT_PARALLEL, false, false, false, false, false, 0, "parallel", 0, "Tell the tool that it will be called multiple times in parallel." @@ -1865,7 +1871,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 == 224 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 225 }; @@ -2082,6 +2088,13 @@ static const InfoOption_t option_cmd_TRACKS_LONG = " old BRRES sub file formats too." }; +static const InfoOption_t option_cmd_SCANCACHE_FAST = + { OPT_FAST, false, false, false, false, false, 0, "fast", + 0, + "Scan 'cache-content.txt' and remove duplicates. Ignore option" + " --purge." + }; + static const InfoOption_t option_cmd_SIZEOF_SORT = { OPT_SORT, false, false, false, false, false, 'S', "sort", "mode", @@ -2197,7 +2210,7 @@ static const InfoOption_t option_cmd_IS_TEXTURE_LONG = static const InfoOption_t option_cmd_FEATURES_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, - "Suppres any comments at all. If set twice, suppress empty lines (for" + "Suppres comments at all. If set twice, suppress empty lines (for" " grouping) too. If set three times, omit inactive features (value 0)" " too." }; @@ -2383,6 +2396,7 @@ static const KeywordTab_t CommandTab[] = { CMD_INSTALL, "INSTALL", 0, 0 }, { CMD_ARGTEST, "ARGTEST", 0, 0 }, { CMD_EXPAND, "EXPAND", 0, 0 }, + { CMD_WILDCARDS, "WILDCARDS", 0, 0 }, { CMD_TEST, "TEST", 0, 0 }, { CMD_COLORS, "COLORS", 0, 0 }, { CMD_ERROR, "ERROR", "ERR", 0 }, @@ -2497,6 +2511,7 @@ static const struct option OptionLong[] = { "quiet", 0, 0, 'q' }, { "verbose", 0, 0, 'v' }, { "logging", 0, 0, 'L' }, + { "log", 0, 0, 'L' }, { "extended-errors", 0, 0, 'Y' }, { "extendederrors", 0, 0, 'Y' }, { "xerr", 0, 0, 'Y' }, @@ -2651,6 +2666,8 @@ static const struct option OptionLong[] = { "nocopy", 0, 0, GO_NO_COPY }, { "cache", 1, 0, GO_CACHE }, { "cname", 1, 0, GO_CNAME }, + { "log-cache", 1, 0, GO_LOG_CACHE }, + { "logcache", 1, 0, GO_LOG_CACHE }, { "parallel", 0, 0, GO_PARALLEL }, { "id", 0, 0, GO_ID }, { "base64", 2, 0, GO_BASE64 }, @@ -3013,102 +3030,103 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x0da */ OPT_NO_COPY, /* 0x0db */ OPT_CACHE, /* 0x0dc */ OPT_CNAME, - /* 0x0dd */ OPT_PARALLEL, - /* 0x0de */ OPT_ID, - /* 0x0df */ OPT_BASE64, - /* 0x0e0 */ OPT_DB64, - /* 0x0e1 */ OPT_CODING, - /* 0x0e2 */ OPT_VERIFY, - /* 0x0e3 */ OPT_ROUND, - /* 0x0e4 */ OPT_IN_ORDER, - /* 0x0e5 */ OPT_PIPE, - /* 0x0e6 */ OPT_DELTA, - /* 0x0e7 */ OPT_DIFF, - /* 0x0e8 */ OPT_EPSILON, - /* 0x0e9 */ OPT_BMG_ENDIAN, - /* 0x0ea */ OPT_BMG_ENCODING, - /* 0x0eb */ OPT_BMG_INF_SIZE, - /* 0x0ec */ OPT_BMG_MID, - /* 0x0ed */ OPT_FORCE_ATTRIB, - /* 0x0ee */ OPT_DEF_ATTRIB, - /* 0x0ef */ OPT_NO_ATTRIB, - /* 0x0f0 */ OPT_X_ESCAPES, - /* 0x0f1 */ OPT_OLD_ESCAPES, - /* 0x0f2 */ OPT_NO_BMG_COLORS, - /* 0x0f3 */ OPT_BMG_COLORS, - /* 0x0f4 */ OPT_NO_BMG_INLINE, - /* 0x0f5 */ OPT_AUTOADD_PATH, - /* 0x0f6 */ OPT_STRIP, - /* 0x0f7 */ OPT_UTF_8, - /* 0x0f8 */ OPT_NO_UTF_8, - /* 0x0f9 */ OPT_FORCE, - /* 0x0fa */ OPT_REPAIR_MAGICS, - /* 0x0fb */ OPT_TINY, - /* 0x0fc */ OPT_YAZ0, - /* 0x0fd */ OPT_YAZ1, - /* 0x0fe */ OPT_XYZ, - /* 0x0ff */ OPT_BZ, - /* 0x100 */ OPT_SH, - /* 0x101 */ OPT_BASH, - /* 0x102 */ OPT_JSON, - /* 0x103 */ OPT_PHP, - /* 0x104 */ OPT_MAKEDOC, - /* 0x105 */ OPT_VAR, - /* 0x106 */ OPT_ARRAY, - /* 0x107 */ OPT_AVAR, - /* 0x108 */ OPT_CASE, - /* 0x109 */ OPT_FMODES, - /* 0x10a */ OPT_INSTALL, - /* 0x10b */ OPT_ANALYZE, - /* 0x10c */ OPT_ANALYZE_MODE, - /* 0x10d */ OPT_OLD, - /* 0x10e */ OPT_STD, - /* 0x10f */ OPT_NEW, - /* 0x110 */ OPT_EXTRACT, - /* 0x111 */ OPT_REFERENCE, - /* 0x112 */ OPT_NUMBER, - /* 0x113 */ OPT_REMOVE_SRC, - /* 0x114 */ OPT_IGNORE_SETUP, - /* 0x115 */ OPT_PURGE, - /* 0x116 */ OPT_ALIGN_U8, - /* 0x117 */ OPT_ALIGN_PACK, - /* 0x118 */ OPT_ALIGN_BRRES, - /* 0x119 */ OPT_ALIGN_BREFF, - /* 0x11a */ OPT_ALIGN_BREFT, - /* 0x11b */ OPT_ALIGN, - /* 0x11c */ OPT_ENCODE_ALL, - /* 0x11d */ OPT_ENCODE_IMG, - /* 0x11e */ OPT_NO_ENCODE, - /* 0x11f */ OPT_NO_RECURSE, - /* 0x120 */ OPT_AUTO_ADD, - /* 0x121 */ OPT_NO_ECHO, - /* 0x122 */ OPT_PT_DIR, - /* 0x123 */ OPT_RM_AIPARAM, - /* 0x124 */ OPT_U8, - /* 0x125 */ OPT_SZS, - /* 0x126 */ OPT_WU8, - /* 0x127 */ OPT_XWU8, - /* 0x128 */ OPT_WBZ, - /* 0x129 */ OPT_PACK, - /* 0x12a */ OPT_BRRES, - /* 0x12b */ OPT_BREFF, - /* 0x12c */ OPT_BREFT, - /* 0x12d */ OPT_NO_COMPRESS, - /* 0x12e */ OPT_FAST, - /* 0x12f */ OPT_LINKS, - /* 0x130 */ OPT_BASEDIR, - /* 0x131 */ OPT_DECODE, - /* 0x132 */ OPT_MIPMAPS, - /* 0x133 */ OPT_NO_MIPMAPS, - /* 0x134 */ OPT_N_MIPMAPS, - /* 0x135 */ OPT_MAX_MIPMAPS, - /* 0x136 */ OPT_MIPMAP_SIZE, - /* 0x137 */ OPT_FAST_MIPMAPS, - /* 0x138 */ OPT_CMPR_DEFAULT, - /* 0x139 */ OPT_CUT, - /* 0x13a */ OPT_RAW, - /* 0x13b */ OPT_SECTIONS, - /* 0x13c */ 0,0,0,0, + /* 0x0dd */ OPT_LOG_CACHE, + /* 0x0de */ OPT_PARALLEL, + /* 0x0df */ OPT_ID, + /* 0x0e0 */ OPT_BASE64, + /* 0x0e1 */ OPT_DB64, + /* 0x0e2 */ OPT_CODING, + /* 0x0e3 */ OPT_VERIFY, + /* 0x0e4 */ OPT_ROUND, + /* 0x0e5 */ OPT_IN_ORDER, + /* 0x0e6 */ OPT_PIPE, + /* 0x0e7 */ OPT_DELTA, + /* 0x0e8 */ OPT_DIFF, + /* 0x0e9 */ OPT_EPSILON, + /* 0x0ea */ OPT_BMG_ENDIAN, + /* 0x0eb */ OPT_BMG_ENCODING, + /* 0x0ec */ OPT_BMG_INF_SIZE, + /* 0x0ed */ OPT_BMG_MID, + /* 0x0ee */ OPT_FORCE_ATTRIB, + /* 0x0ef */ OPT_DEF_ATTRIB, + /* 0x0f0 */ OPT_NO_ATTRIB, + /* 0x0f1 */ OPT_X_ESCAPES, + /* 0x0f2 */ OPT_OLD_ESCAPES, + /* 0x0f3 */ OPT_NO_BMG_COLORS, + /* 0x0f4 */ OPT_BMG_COLORS, + /* 0x0f5 */ OPT_NO_BMG_INLINE, + /* 0x0f6 */ OPT_AUTOADD_PATH, + /* 0x0f7 */ OPT_STRIP, + /* 0x0f8 */ OPT_UTF_8, + /* 0x0f9 */ OPT_NO_UTF_8, + /* 0x0fa */ OPT_FORCE, + /* 0x0fb */ OPT_REPAIR_MAGICS, + /* 0x0fc */ OPT_TINY, + /* 0x0fd */ OPT_YAZ0, + /* 0x0fe */ OPT_YAZ1, + /* 0x0ff */ OPT_XYZ, + /* 0x100 */ OPT_BZ, + /* 0x101 */ OPT_SH, + /* 0x102 */ OPT_BASH, + /* 0x103 */ OPT_JSON, + /* 0x104 */ OPT_PHP, + /* 0x105 */ OPT_MAKEDOC, + /* 0x106 */ OPT_VAR, + /* 0x107 */ OPT_ARRAY, + /* 0x108 */ OPT_AVAR, + /* 0x109 */ OPT_CASE, + /* 0x10a */ OPT_FMODES, + /* 0x10b */ OPT_INSTALL, + /* 0x10c */ OPT_ANALYZE, + /* 0x10d */ OPT_ANALYZE_MODE, + /* 0x10e */ OPT_OLD, + /* 0x10f */ OPT_STD, + /* 0x110 */ OPT_NEW, + /* 0x111 */ OPT_EXTRACT, + /* 0x112 */ OPT_REFERENCE, + /* 0x113 */ OPT_NUMBER, + /* 0x114 */ OPT_REMOVE_SRC, + /* 0x115 */ OPT_IGNORE_SETUP, + /* 0x116 */ OPT_PURGE, + /* 0x117 */ OPT_ALIGN_U8, + /* 0x118 */ OPT_ALIGN_PACK, + /* 0x119 */ OPT_ALIGN_BRRES, + /* 0x11a */ OPT_ALIGN_BREFF, + /* 0x11b */ OPT_ALIGN_BREFT, + /* 0x11c */ OPT_ALIGN, + /* 0x11d */ OPT_ENCODE_ALL, + /* 0x11e */ OPT_ENCODE_IMG, + /* 0x11f */ OPT_NO_ENCODE, + /* 0x120 */ OPT_NO_RECURSE, + /* 0x121 */ OPT_AUTO_ADD, + /* 0x122 */ OPT_NO_ECHO, + /* 0x123 */ OPT_PT_DIR, + /* 0x124 */ OPT_RM_AIPARAM, + /* 0x125 */ OPT_U8, + /* 0x126 */ OPT_SZS, + /* 0x127 */ OPT_WU8, + /* 0x128 */ OPT_XWU8, + /* 0x129 */ OPT_WBZ, + /* 0x12a */ OPT_PACK, + /* 0x12b */ OPT_BRRES, + /* 0x12c */ OPT_BREFF, + /* 0x12d */ OPT_BREFT, + /* 0x12e */ OPT_NO_COMPRESS, + /* 0x12f */ OPT_FAST, + /* 0x130 */ OPT_LINKS, + /* 0x131 */ OPT_BASEDIR, + /* 0x132 */ OPT_DECODE, + /* 0x133 */ OPT_MIPMAPS, + /* 0x134 */ OPT_NO_MIPMAPS, + /* 0x135 */ OPT_N_MIPMAPS, + /* 0x136 */ OPT_MAX_MIPMAPS, + /* 0x137 */ OPT_MIPMAP_SIZE, + /* 0x138 */ OPT_FAST_MIPMAPS, + /* 0x139 */ OPT_CMPR_DEFAULT, + /* 0x13a */ OPT_CUT, + /* 0x13b */ OPT_RAW, + /* 0x13c */ OPT_SECTIONS, + /* 0x13d */ 0,0,0, }; // @@ -3170,7 +3188,16 @@ static u8 option_allowed_cmd_EXPAND[142] = // cmd #6 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[142] = // cmd #7 +static u8 option_allowed_cmd_WILDCARDS[142] = // cmd #7 +{ + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,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, 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_TEST[142] = // cmd #8 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, @@ -3179,7 +3206,7 @@ static u8 option_allowed_cmd_TEST[142] = // cmd #7 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[142] = // cmd #8 +static u8 option_allowed_cmd_COLORS[142] = // 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,0,0, 0,0,0,0,1, 0,1,0,0,0, @@ -3188,7 +3215,7 @@ static u8 option_allowed_cmd_COLORS[142] = // cmd #8 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[142] = // cmd #9 +static u8 option_allowed_cmd_ERROR[142] = // 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,0,0, 0,0,0,0,1, 1,1,0,0,0, @@ -3197,7 +3224,7 @@ static u8 option_allowed_cmd_ERROR[142] = // cmd #9 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_FILETYPE[142] = // cmd #10 +static u8 option_allowed_cmd_FILETYPE[142] = // 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,0, 0,0,0,0,1, 1,0,0,0,0, @@ -3206,7 +3233,7 @@ static u8 option_allowed_cmd_FILETYPE[142] = // cmd #10 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_UI_CHECK[142] = // cmd #11 +static u8 option_allowed_cmd_UI_CHECK[142] = // 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,0,0, 0,0,0,0,1, 1,0,1,0,0, @@ -3215,7 +3242,7 @@ static u8 option_allowed_cmd_UI_CHECK[142] = // cmd #11 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[142] = // cmd #12 +static u8 option_allowed_cmd_FILEATTRIB[142] = // 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,0, 0,0,0,0,0, 1,0,0,0,0, @@ -3224,7 +3251,7 @@ static u8 option_allowed_cmd_FILEATTRIB[142] = // cmd #12 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[142] = // cmd #13 +static u8 option_allowed_cmd_BRSUB[142] = // 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,0,0, 0,0,0,0,1, 1,0,0,0,0, @@ -3233,7 +3260,7 @@ static u8 option_allowed_cmd_BRSUB[142] = // cmd #13 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[142] = // cmd #14 +static u8 option_allowed_cmd_SYMBOLS[142] = // 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, 1,0,0,0,0, @@ -3242,7 +3269,7 @@ static u8 option_allowed_cmd_SYMBOLS[142] = // cmd #14 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[142] = // cmd #15 +static u8 option_allowed_cmd_FUNCTIONS[142] = // cmd #16 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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, @@ -3251,7 +3278,7 @@ static u8 option_allowed_cmd_FUNCTIONS[142] = // cmd #15 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[142] = // cmd #16 +static u8 option_allowed_cmd_CALCULATE[142] = // 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3260,7 +3287,7 @@ static u8 option_allowed_cmd_CALCULATE[142] = // cmd #16 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[142] = // cmd #17 +static u8 option_allowed_cmd_MATRIX[142] = // cmd #18 { 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, 0,0,0,0,1, 0,1,0,0,0, @@ -3269,7 +3296,7 @@ static u8 option_allowed_cmd_MATRIX[142] = // cmd #17 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[142] = // cmd #18 +static u8 option_allowed_cmd_FLOAT[142] = // 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,0,0, 0,0,0,1,0, 0,0,0,0,0, @@ -3278,7 +3305,7 @@ static u8 option_allowed_cmd_FLOAT[142] = // cmd #18 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[142] = // cmd #19 +static u8 option_allowed_cmd_VR_CALC[142] = // 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, 1,1,0,0,0, @@ -3287,7 +3314,7 @@ static u8 option_allowed_cmd_VR_CALC[142] = // cmd #19 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[142] = // cmd #20 +static u8 option_allowed_cmd_VR_RACE[142] = // 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,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, @@ -3296,7 +3323,7 @@ static u8 option_allowed_cmd_VR_RACE[142] = // cmd #20 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[142] = // cmd #21 +static u8 option_allowed_cmd_AUTOADD[142] = // 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, @@ -3305,7 +3332,7 @@ static u8 option_allowed_cmd_AUTOADD[142] = // cmd #21 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[142] = // cmd #22 +static u8 option_allowed_cmd_TRACKS[142] = // 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, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,1,0, @@ -3314,16 +3341,16 @@ static u8 option_allowed_cmd_TRACKS[142] = // cmd #22 0,0,0,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[142] = // cmd #23 +static u8 option_allowed_cmd_SCANCACHE[142] = // 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, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0 }; -static u8 option_allowed_cmd_EXPORT[142] = // cmd #24 +static u8 option_allowed_cmd_EXPORT[142] = // 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, @@ -3332,7 +3359,7 @@ static u8 option_allowed_cmd_EXPORT[142] = // cmd #24 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[142] = // cmd #25 +static u8 option_allowed_cmd_SIZEOF[142] = // 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,1,0,0,0, @@ -3341,7 +3368,7 @@ static u8 option_allowed_cmd_SIZEOF[142] = // cmd #25 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[142] = // cmd #26 +static u8 option_allowed_cmd_CODE[142] = // 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, @@ -3350,7 +3377,7 @@ static u8 option_allowed_cmd_CODE[142] = // cmd #26 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[142] = // cmd #27 +static u8 option_allowed_cmd_RECODE[142] = // 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, @@ -3359,7 +3386,7 @@ static u8 option_allowed_cmd_RECODE[142] = // cmd #27 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[142] = // cmd #28 +static u8 option_allowed_cmd_SUBFILE[142] = // 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3368,7 +3395,7 @@ static u8 option_allowed_cmd_SUBFILE[142] = // cmd #28 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[142] = // cmd #29 +static u8 option_allowed_cmd_TESTNORM[142] = // 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3377,7 +3404,7 @@ static u8 option_allowed_cmd_TESTNORM[142] = // cmd #29 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[142] = // cmd #30 +static u8 option_allowed_cmd_LIST[142] = // 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,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,1,0,0, @@ -3386,7 +3413,7 @@ static u8 option_allowed_cmd_LIST[142] = // cmd #30 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[142] = // cmd #31 +static u8 option_allowed_cmd_LIST_L[142] = // 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,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,1,0,0, @@ -3395,7 +3422,7 @@ static u8 option_allowed_cmd_LIST_L[142] = // cmd #31 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[142] = // cmd #32 +static u8 option_allowed_cmd_LIST_LL[142] = // 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,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,1,0,0, @@ -3404,7 +3431,7 @@ static u8 option_allowed_cmd_LIST_LL[142] = // cmd #32 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[142] = // cmd #33 +static u8 option_allowed_cmd_LIST_LLL[142] = // 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,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,1,0,0, @@ -3413,7 +3440,7 @@ static u8 option_allowed_cmd_LIST_LLL[142] = // cmd #33 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[142] = // cmd #34 +static u8 option_allowed_cmd_LIST_A[142] = // 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,1, 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, @@ -3422,7 +3449,7 @@ static u8 option_allowed_cmd_LIST_A[142] = // cmd #34 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[142] = // cmd #35 +static u8 option_allowed_cmd_LIST_LA[142] = // 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,1, 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, @@ -3431,7 +3458,7 @@ static u8 option_allowed_cmd_LIST_LA[142] = // cmd #35 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[142] = // cmd #36 +static u8 option_allowed_cmd_NAME_REF[142] = // 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,0,0, 0,0,0,0,1, 0,1,0,0,0, @@ -3440,7 +3467,7 @@ static u8 option_allowed_cmd_NAME_REF[142] = // cmd #36 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[142] = // cmd #37 +static u8 option_allowed_cmd_ILIST[142] = // 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,0,0, 0,0,0,0,1, 1,0,0,0,0, @@ -3449,7 +3476,7 @@ static u8 option_allowed_cmd_ILIST[142] = // cmd #37 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[142] = // cmd #38 +static u8 option_allowed_cmd_ILIST_L[142] = // 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,0,0, 0,0,0,0,1, 1,0,0,0,0, @@ -3458,7 +3485,7 @@ static u8 option_allowed_cmd_ILIST_L[142] = // cmd #38 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[142] = // cmd #39 +static u8 option_allowed_cmd_ILIST_LL[142] = // 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,0,0, 0,0,0,0,1, 1,0,0,0,0, @@ -3467,7 +3494,7 @@ static u8 option_allowed_cmd_ILIST_LL[142] = // cmd #39 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[142] = // cmd #40 +static u8 option_allowed_cmd_ILIST_A[142] = // 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,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, @@ -3476,7 +3503,7 @@ static u8 option_allowed_cmd_ILIST_A[142] = // cmd #40 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[142] = // cmd #41 +static u8 option_allowed_cmd_ILIST_LA[142] = // 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,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, @@ -3485,7 +3512,7 @@ static u8 option_allowed_cmd_ILIST_LA[142] = // cmd #41 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[142] = // cmd #42 +static u8 option_allowed_cmd_MEMORY[142] = // 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,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, @@ -3494,7 +3521,7 @@ static u8 option_allowed_cmd_MEMORY[142] = // cmd #42 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[142] = // cmd #43 +static u8 option_allowed_cmd_MEMORY_A[142] = // 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,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, @@ -3503,7 +3530,7 @@ static u8 option_allowed_cmd_MEMORY_A[142] = // cmd #43 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[142] = // cmd #44 +static u8 option_allowed_cmd_DUMP[142] = // 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,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3512,7 +3539,7 @@ static u8 option_allowed_cmd_DUMP[142] = // cmd #44 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[142] = // cmd #45 +static u8 option_allowed_cmd_SHA1[142] = // cmd #46 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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, @@ -3521,7 +3548,7 @@ static u8 option_allowed_cmd_SHA1[142] = // cmd #45 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[142] = // cmd #46 +static u8 option_allowed_cmd_ANALYZE[142] = // 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,0,0, 0,0,0,0,1, 0,0,0,0,0, @@ -3530,7 +3557,7 @@ static u8 option_allowed_cmd_ANALYZE[142] = // cmd #46 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[142] = // cmd #47 +static u8 option_allowed_cmd_SPLIT[142] = // cmd #48 { 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, @@ -3539,7 +3566,7 @@ static u8 option_allowed_cmd_SPLIT[142] = // cmd #47 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[142] = // cmd #48 +static u8 option_allowed_cmd_IS_TEXTURE[142] = // 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,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, @@ -3548,7 +3575,7 @@ static u8 option_allowed_cmd_IS_TEXTURE[142] = // cmd #48 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[142] = // cmd #49 +static u8 option_allowed_cmd_FEATURES[142] = // 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,1, 0,1,0,0,0, @@ -3557,7 +3584,7 @@ static u8 option_allowed_cmd_FEATURES[142] = // cmd #49 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[142] = // cmd #50 +static u8 option_allowed_cmd_DISTRIBUTION[142] = // cmd #51 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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, @@ -3566,7 +3593,7 @@ static u8 option_allowed_cmd_DISTRIBUTION[142] = // cmd #50 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[142] = // cmd #51 +static u8 option_allowed_cmd_DIFF[142] = // cmd #52 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3575,7 +3602,7 @@ static u8 option_allowed_cmd_DIFF[142] = // cmd #51 0,0,0,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[142] = // cmd #52 +static u8 option_allowed_cmd_CHECK[142] = // cmd #53 { 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,1, 1,1,0,0,0, 0,0,0,0,1, 0,1,0,0,0, @@ -3584,7 +3611,7 @@ static u8 option_allowed_cmd_CHECK[142] = // cmd #52 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[142] = // cmd #53 +static u8 option_allowed_cmd_SLOTS[142] = // cmd #54 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 0,1,0,0,0, @@ -3593,7 +3620,7 @@ static u8 option_allowed_cmd_SLOTS[142] = // cmd #53 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[142] = // cmd #54 +static u8 option_allowed_cmd_STGI[142] = // cmd #55 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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, @@ -3602,7 +3629,7 @@ static u8 option_allowed_cmd_STGI[142] = // cmd #54 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[142] = // cmd #55 +static u8 option_allowed_cmd_ISARENA[142] = // cmd #56 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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, @@ -3611,7 +3638,7 @@ static u8 option_allowed_cmd_ISARENA[142] = // cmd #55 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[142] = // cmd #56 +static u8 option_allowed_cmd_NORMALIZE[142] = // cmd #57 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3620,7 +3647,7 @@ static u8 option_allowed_cmd_NORMALIZE[142] = // cmd #56 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[142] = // cmd #57 +static u8 option_allowed_cmd_PATCH[142] = // cmd #58 { 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,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3629,7 +3656,7 @@ static u8 option_allowed_cmd_PATCH[142] = // cmd #57 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[142] = // cmd #58 +static u8 option_allowed_cmd_COPY[142] = // cmd #59 { 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,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3638,7 +3665,7 @@ static u8 option_allowed_cmd_COPY[142] = // cmd #58 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[142] = // cmd #59 +static u8 option_allowed_cmd_DUPLICATE[142] = // cmd #60 { 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,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3647,7 +3674,7 @@ static u8 option_allowed_cmd_DUPLICATE[142] = // cmd #59 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[142] = // cmd #60 +static u8 option_allowed_cmd_MINIMAP[142] = // cmd #61 { 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, 0,0,0,0,1, 0,0,0,0,0, @@ -3656,7 +3683,7 @@ static u8 option_allowed_cmd_MINIMAP[142] = // cmd #60 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[142] = // cmd #61 +static u8 option_allowed_cmd_COMPRESS[142] = // cmd #62 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3665,7 +3692,7 @@ static u8 option_allowed_cmd_COMPRESS[142] = // cmd #61 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[142] = // cmd #62 +static u8 option_allowed_cmd_DECOMPRESS[142] = // cmd #63 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3674,7 +3701,7 @@ static u8 option_allowed_cmd_DECOMPRESS[142] = // cmd #62 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[142] = // cmd #63 +static u8 option_allowed_cmd_ENCODE[142] = // cmd #64 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3683,7 +3710,7 @@ static u8 option_allowed_cmd_ENCODE[142] = // cmd #63 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[142] = // cmd #64 +static u8 option_allowed_cmd_CREATE[142] = // cmd #65 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3692,7 +3719,7 @@ static u8 option_allowed_cmd_CREATE[142] = // cmd #64 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[142] = // cmd #65 +static u8 option_allowed_cmd_UPDATE[142] = // cmd #66 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3701,7 +3728,7 @@ static u8 option_allowed_cmd_UPDATE[142] = // cmd #65 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[142] = // cmd #66 +static u8 option_allowed_cmd_EXTRACT[142] = // cmd #67 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 1,1,0,0,1, @@ -3710,7 +3737,7 @@ static u8 option_allowed_cmd_EXTRACT[142] = // cmd #66 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[142] = // cmd #67 +static u8 option_allowed_cmd_XDECODE[142] = // cmd #68 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 1,1,0,0,1, @@ -3719,7 +3746,7 @@ static u8 option_allowed_cmd_XDECODE[142] = // cmd #67 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[142] = // cmd #68 +static u8 option_allowed_cmd_XEXPORT[142] = // cmd #69 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 1,1,0,0,1, @@ -3728,7 +3755,7 @@ static u8 option_allowed_cmd_XEXPORT[142] = // cmd #68 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[142] = // cmd #69 +static u8 option_allowed_cmd_XALL[142] = // cmd #70 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 1,1,0,0,1, @@ -3737,7 +3764,7 @@ static u8 option_allowed_cmd_XALL[142] = // cmd #69 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[142] = // cmd #70 +static u8 option_allowed_cmd_XCOMMON[142] = // 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,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3746,7 +3773,7 @@ static u8 option_allowed_cmd_XCOMMON[142] = // cmd #70 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[142] = // cmd #71 +static u8 option_allowed_cmd_BINARY[142] = // 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,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3755,7 +3782,7 @@ static u8 option_allowed_cmd_BINARY[142] = // cmd #71 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[142] = // cmd #72 +static u8 option_allowed_cmd_TEXT[142] = // 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,0,0, 0,0,0,0,1, 1,1,0,0,1, @@ -3764,7 +3791,7 @@ static u8 option_allowed_cmd_TEXT[142] = // cmd #72 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[142] = // cmd #73 +static u8 option_allowed_cmd_CAT[142] = // cmd #74 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,1, @@ -3773,7 +3800,7 @@ static u8 option_allowed_cmd_CAT[142] = // cmd #73 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[142] = // cmd #74 +static u8 option_allowed_cmd_BMG[142] = // cmd #75 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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, @@ -3782,7 +3809,7 @@ static u8 option_allowed_cmd_BMG[142] = // cmd #74 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[142] = // cmd #75 +static u8 option_allowed_cmd_KCL[142] = // cmd #76 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 1,1,0,0,0, @@ -3791,7 +3818,7 @@ static u8 option_allowed_cmd_KCL[142] = // cmd #75 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[142] = // cmd #76 +static u8 option_allowed_cmd_KMP[142] = // cmd #77 { 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,1, 1,1,0,0,0, 0,0,0,0,0, 1,1,0,0,0, @@ -3800,7 +3827,7 @@ static u8 option_allowed_cmd_KMP[142] = // cmd #76 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[142] = // cmd #77 +static u8 option_allowed_cmd_LEX[142] = // 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,0, 0,0,0,0,0, 1,1,0,0,0, @@ -3809,7 +3836,7 @@ static u8 option_allowed_cmd_LEX[142] = // cmd #77 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[142] = // cmd #78 +static u8 option_allowed_cmd_INFO[142] = // 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, 1,0,0,0,0, @@ -3818,7 +3845,7 @@ static u8 option_allowed_cmd_INFO[142] = // cmd #78 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[142] = // cmd #79 +static u8 option_allowed_cmd_GHOST[142] = // 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, 0,0,0,0,0, 1,0,0,0,0, @@ -3827,7 +3854,7 @@ static u8 option_allowed_cmd_GHOST[142] = // cmd #79 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[142] = // cmd #80 +static u8 option_allowed_cmd_YAZDUMP[142] = // cmd #81 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, @@ -3836,7 +3863,7 @@ static u8 option_allowed_cmd_YAZDUMP[142] = // cmd #80 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[142] = // cmd #81 +static u8 option_allowed_cmd_VEHICLE[142] = // cmd #82 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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, @@ -3906,6 +3933,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_CACHE, OptionInfo + OPT_CNAME, + OptionInfo + OPT_LOG_CACHE, OptionInfo + OPT_PARALLEL, OptionInfo + OPT_MAX_FILE_SIZE, OptionInfo + OPT_TRACKS, @@ -3997,6 +4025,14 @@ static const InfoOption_t * option_tab_cmd_EXPAND[] = 0 }; +static const InfoOption_t * option_tab_cmd_WILDCARDS[] = +{ + OptionInfo + OPT_IGNORE, + OptionInfo + OPT_IN_ORDER, + + 0 +}; + static const InfoOption_t * option_tab_cmd_TEST[] = { &option_cmd_TEST_VERBOSE, @@ -4161,7 +4197,9 @@ static const InfoOption_t * option_tab_cmd_TRACKS[] = static const InfoOption_t * option_tab_cmd_SCANCACHE[] = { OptionInfo + OPT_CACHE, + OptionInfo + OPT_LOG_CACHE, OptionInfo + OPT_PURGE, + &option_cmd_SCANCACHE_FAST, 0 }; @@ -7270,7 +7308,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, - 75, + 76, option_tab_tool, 0 }, @@ -7369,15 +7407,36 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" - " searched. The special parameters '+h' and '/h' enable or disable the" + " searched. The special parameters '+h' and '_h' enable or disable the" " search for hidden directories and files (files beginning with a" - " point). All tools know the EXPAND command.", + " point) for the following parameters. All tools know the EXPAND" + " command.", 0, 0, option_tab_cmd_EXPAND, option_allowed_cmd_EXPAND }, + { CMD_WILDCARDS, + false, + false, + false, + "WILDCARDS", + 0, + "wszst WILDCARDS pattern...", + " Each parameter is treated as a filename. Wildcards are accepted, see" + " https://szs.wiimm.de/doc/wildcards for details. After evaluating the" + " wildcards, all input files are sorted according to their path and" + " duplicates are deleted. The special parameters '+h' and '_h' enable" + " or disable the search for hidden directories and files (files" + " beginning with a point) for the following parameters. Finally, one" + " line is printed for each file name of the list.", + 0, + 2, + option_tab_cmd_WILDCARDS, + option_allowed_cmd_WILDCARDS + }, + { CMD_TEST, false, false, @@ -7671,7 +7730,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = " directory. The file is used by option --cache to optimize file" " access.", 0, - 2, + 4, option_tab_cmd_SCANCACHE, option_allowed_cmd_SCANCACHE }, diff --git a/project/src/ui/ui-wszst.h b/project/src/ui/ui-wszst.h index d0fa879..2db44e8 100644 --- a/project/src/ui/ui-wszst.h +++ b/project/src/ui/ui-wszst.h @@ -256,6 +256,7 @@ typedef enum enumOptions OPT_LEX_RM_FEAT, OPT_CACHE, OPT_CNAME, + OPT_LOG_CACHE, OPT_PARALLEL, OPT_MAX_FILE_SIZE, OPT_TRACKS, @@ -285,7 +286,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 224 + OPT__N_TOTAL // == 225 } enumOptions; @@ -598,6 +599,9 @@ typedef enum enumOptions // // OB_CMD_EXPAND = ~(u64)0, // +// OB_CMD_WILDCARDS = OB_IGNORE +// | OB_IN_ORDER, +// // OB_CMD_TEST = ~(u64)0, // // OB_CMD_COLORS = OB_LONG @@ -654,7 +658,8 @@ typedef enum enumOptions // | OB_PIPE // | OB_LOAD_BMG, // -// OB_CMD_SCANCACHE = OB_PURGE, +// OB_CMD_SCANCACHE = OB_PURGE +// | OB_FAST, // // OB_CMD_EXPORT = 0, // @@ -989,6 +994,7 @@ typedef enum enumCommands CMD_INSTALL, CMD_ARGTEST, CMD_EXPAND, + CMD_WILDCARDS, CMD_TEST, CMD_COLORS, CMD_ERROR, @@ -1073,7 +1079,7 @@ typedef enum enumCommands CMD_VEHICLE, - CMD__N // == 82 + CMD__N // == 83 } enumCommands; @@ -1217,6 +1223,7 @@ typedef enum enumGetOpt GO_NO_COPY, GO_CACHE, GO_CNAME, + GO_LOG_CACHE, GO_PARALLEL, GO_ID, GO_BASE64, diff --git a/project/src/ui/ui.def b/project/src/ui/ui.def index bbe5c8a..51bcbd5 100644 --- a/project/src/ui/ui.def +++ b/project/src/ui/ui.def @@ -50,9 +50,20 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) + +#:def_cmd( "WILDCARDS", "WILDCARDS", \ + "wszst WILDCARDS pattern...", \ + " Each parameter is treated as a filename. $Wildcards$ are accepted." \ + " After evaluating the wildcards, all input files are sorted according" \ + " to their path and duplicates are deleted. The special parameters" \ + " '+h' and '_h' enable or disable the search for hidden directories" \ + " and files (files beginning with a point) for the following" \ + " parameters. Finally, one line is printed for each file name of the" \ + " list." ) #:def_cmd( "TEST", "TEST", \ "wszst TEST [options]... [ignored]...", \ @@ -600,7 +611,7 @@ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) -#:def_opt( "LOGGING", "L|logging", "GM", \ +#:def_opt( "LOGGING", "L|logging|log", "GM", \ "", \ "This debug option enables the logging of internal lists and maps. Set" \ " it up to three times to be more verbose." ) @@ -1363,6 +1374,11 @@ " cache name. The name is used only once for the very first cache" \ " candidate." ) +#:def_opt( "LOG_CACHE", "log-cache|logcache", "GP", \ + "file", \ + "Define a file to log chache activities. The file is openend in" \ + " append-mode." ) + #:def_opt( "PARALLEL", "parallel", "G", \ "", \ "Tell the tool that it will be called multiple times in parallel." \ @@ -2144,6 +2160,14 @@ "", \ "" ) +#:def_cmd_opt( "WILDCARDS", "IGNORE", \ + "", \ + "" ) + +#:def_cmd_opt( "WILDCARDS", "IN_ORDER", \ + "", \ + "" ) + #:def_cmd_opt( "TEST", "VERBOSE", \ "", \ "Print the matrices of transformations." ) @@ -2416,10 +2440,19 @@ "", \ "" ) +#:def_cmd_opt( "SCANCACHE", "LOG_CACHE", \ + "", \ + "" ) + #:def_cmd_opt( "SCANCACHE", "PURGE", \ "", \ "" ) +#:def_cmd_opt( "SCANCACHE", "FAST", \ + "", \ + "Scan 'cache-content.txt' and remove duplicates. Ignore option" \ + " {--purge}." ) + #:def_cmd_opt( "SIZEOF", "SORT", \ "", \ "Define a sort mode. Keywords are: @NONE@ (default), @NAME@ end" \ @@ -5597,7 +5630,7 @@ #:def_cmd_opt( "FEATURES", "BRIEF", \ "", \ - "Suppres any comments at all. If set twice, suppress empty lines (for" \ + "Suppres comments at all. If set twice, suppress empty lines (for" \ " grouping) too. If set three times, omit inactive features (value 0)" \ " too." ) @@ -12043,9 +12076,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wbmgt TEST [options]... [ignored]...", \ @@ -13341,9 +13375,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wctct TEST [options]... [ignored]...", \ @@ -14767,9 +14802,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wimgt TEST [options]... [ignored]...", \ @@ -15702,9 +15738,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wkclt TEST [options]... [ignored]...", \ @@ -18242,9 +18279,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wkmpt TEST [options]... [ignored]...", \ @@ -20390,9 +20428,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wlect TEST [options]... [ignored]...", \ @@ -20509,8 +20548,7 @@ "This 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." \ - " Wildcards are accepted, see https://szs.wiimm.de/doc/wildcards for" \ - " details.\n" \ + " $Wildcards$ are accepted.\n" \ " Use the command without keyword to get an extended description." ) #:def_cmd( "CAT", "CAT", \ @@ -22058,9 +22096,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wmdlt TEST [options]... [ignored]...", \ @@ -23374,9 +23413,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wpatt TEST [options]... [ignored]...", \ @@ -23993,9 +24033,10 @@ "This debug command accepts (like ARGTEST) all kinds of parameters and" \ " prints one line for each parameter. After that, the parameter is" \ " treated as a filename with wildcards and all matching files are" \ - " searched. The special parameters '+h' and '/h' enable or disable the" \ + " searched. The special parameters '+h' and '_h' enable or disable the" \ " search for hidden directories and files (files beginning with a" \ - " point). All tools know the EXPAND command." ) + " point) for the following parameters. All tools know the EXPAND" \ + " command." ) #:def_cmd( "TEST", "TEST", \ "wstrt TEST [options]... [ignored]...", \ @@ -24044,10 +24085,13 @@ " @PAL@ (default), @USA@, @JAPAN@, @KOREA@, or any abbreviation of" \ " them. They select the region for the following addresses. The hex" \ " numbers (with or without @0x@ prefix) are interpreted as addresses." \ - " If an address begins with @m@ or @s@, then it is interpreted as a" \ - " file offset for @main.dol@ or @staticr.rel@. All addresses are" \ - " ported to all other regions. The result is printed as colorized" \ - " table." ) + " If an address begins with @m@, @M@, @s@ or @S@, then it is" \ + " interpreted as a file offset for @main.dol@ or @staticr.rel@. If the" \ + " number begins with a point (@.@), then it is interpreted as a cheat" \ + " code. In this case, the lowest 25 bits are interpreted as address" \ + " and the highest 7 bits are saved and used for the address output." \ + " All addresses are ported to all other regions. The result is printed" \ + " as colorized table." ) #:def_cmd( "WHERE", "WHERE", \ "wstrt WHERE address...", \ diff --git a/project/src/wszst.c b/project/src/wszst.c index cd5969b..767583d 100644 --- a/project/src/wszst.c +++ b/project/src/wszst.c @@ -806,7 +806,7 @@ enumError cmd_ui_check() SetupPager(); StringField_t plist = {0}; - CollectExpandParam(&plist,first_param,-1); + CollectExpandParam(&plist,first_param,-1,0); const bool have_dump = long_count >= 1; const bool have_header = !have_dump && !brief_count && print_header; @@ -1294,14 +1294,25 @@ static enumError cmd_scancache() { if (opt_cache) AddParam(opt_cache); + if ( n_param != 1 ) return ERROR0(ERR_SYNTAX,"Exact one parameter (directory) expected.\n"); - if (!IsDirectory(first_param->arg,false)) - return ERROR0(ERR_SEMANTIC,"Directory expected: %s\n",first_param->arg); + szs_cache_dir = first_param->arg; + if (!IsDirectory(szs_cache_dir,false)) + return ERROR0(ERR_SEMANTIC,"Directory expected: %s\n",szs_cache_dir); + + bool force = false; + parallel_count = 0; + if (opt_fast) + { + LoadSZSCache(); + force = true; + } + else + ScanSZSCache(first_param->arg,opt_purge); - ScanSZSCache(first_param->arg,opt_purge); - return SaveSZSCache(); + return SaveSZSCache(force); } // @@ -1854,7 +1865,7 @@ static enumError cmd_list ( int long_level ) } StringField_t plist = {0}; - CollectExpandParam(&plist,first_param,-1); + CollectExpandParam(&plist,first_param,-1,0); for ( int argi = 0; argi < plist.used; argi++ ) { @@ -3739,6 +3750,8 @@ static enumError patch_file_helper SearchPaths(fname,0,false,patch_file_search,¶m); return param.count ? param.max_err + : opt_ignore > 0 + ? ERR_NOTHING_TO_DO : ERROR0(ERR_CANT_OPEN,"File not found: %s\n",fname); } @@ -3898,7 +3911,7 @@ static enumError patch_file_helper FreeExMem(&orig); FreeExMem(&data); ResetSZS(&szs); - return err; + return parallel_count > 0 && err == ERR_NOTHING_TO_DO ? ERR_OK : err; } //----------------------------------------------------------------------------- @@ -4475,7 +4488,7 @@ static enumError cmd_compress() CompressSZS(&szs,true); szs.dest_fname = 0; - if ( szs.cache_used && (int)max_err < ERR_CACHE_USED ) + if ( szs.cache_used && (int)max_err < ERR_CACHE_USED && parallel_count <= 0 ) max_err = ERR_CACHE_USED; File_t F; @@ -5876,6 +5889,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_NO_BMG_INLINE: opt_bmg_inline_attrib = false; break; case GO_CACHE: opt_cache = optarg; break; case GO_CNAME: opt_cname = optarg; break; + case GO_LOG_CACHE: opt_log_cache = optarg; break; case GO_PARALLEL: parallel_count++; break; case GO_ID: opt_id = true; break; case GO_BASE64: opt_base64 = true; err += ScanOptCoding64(optarg); break; @@ -5965,6 +5979,7 @@ static enumError CheckCommand ( int argc, char ** argv ) case CMD_INSTALL: err = cmd_install(); break; case CMD_ARGTEST: err = cmd_argtest(argc,argv); break; case CMD_EXPAND: err = cmd_expand(argc,argv); break; + case CMD_WILDCARDS: err = cmd_wildcards(argc,argv); break; case CMD_TEST: err = cmd_test(); break; case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break; case CMD_ERROR: err = cmd_error(); break; @@ -6058,7 +6073,7 @@ static enumError CheckCommand ( int argc, char ** argv ) help_exit(false); } - SaveSZSCache(); + SaveSZSCache(false); return PrintErrorStat(err,verbose,cmd_ct->name1); } @@ -6227,7 +6242,7 @@ int main_wrapper ( int argc, char ** argv ) const uint bash = param & C_BASH; const uint desttype = param & C_M_DEST; - char mypath[PATH_MAX], dest[PATH_MAX+20]; + char mypath[PATH_MAX], dest[sizeof(mypath)+20]; GetProgramPath(mypath,sizeof(mypath),true,argv[0]); if (verbose) printf("My Path: %s\n",mypath); @@ -6236,7 +6251,7 @@ int main_wrapper ( int argc, char ** argv ) && Count1Bits(&desttype,sizeof(desttype)) == 1 && *mypath ) { - memcpy(dest,mypath,sizeof(dest)); + memcpy(dest,mypath,sizeof(mypath)); char *fname = strrchr(dest,'/'); fname = fname ? fname+1 : dest; if (!*fname) diff --git a/project/src/wtest.c b/project/src/wtest.c index 02b3cb9..e66c89e 100644 --- a/project/src/wtest.c +++ b/project/src/wtest.c @@ -1890,7 +1890,7 @@ int test ( int argc, char ** argv ) c.g = 0x02; c.b = 0x03; c.a = 0x04; - printf("col=%x\n",c.val); + printf("col:%x\n",c.val); return 0; } @@ -4545,6 +4545,7 @@ static enumError develop ( int argc, char ** argv ) enum { CMD_HELP, // help_exit() + CMD_RELAX, // -- CMD_TEST, // test() CMD_DEVELOP, // develop(argc,argv) @@ -4623,6 +4624,7 @@ enum static const KeywordTab_t CommandTab[] = { { CMD_HELP, "HELP", "?", 0 }, + { CMD_RELAX, "RELAX", 0, 0 }, { CMD_TEST, "TEST", "T", 0 }, { CMD_DEVELOP, "DEVELOP", "D", 0 }, @@ -4788,8 +4790,11 @@ int main ( int argc, char ** argv ) if (!cmd_ct->opt&1) { printf("***** %s *****\n",TITLE); + fprintf(stdout,"DCLIB_GNUC_VERSION = %d, DCLIB_GLIBC_VERSION = %d\n", + DCLIB_GNUC_VERSION, DCLIB_GLIBC_VERSION ); printf("term width = %d\n",GetTermWidth(80,0)); } + fflush(stdout); argv[1] = argv[0]; @@ -4798,6 +4803,7 @@ int main ( int argc, char ** argv ) switch(cmd_ct->id) { + case CMD_RELAX: break; case CMD_TEST: test(argc,argv); break; case CMD_DEVELOP: develop(argc,argv); break; diff --git a/project/templates/HISTORY.txt b/project/templates/HISTORY.txt index 59182b4..92a6048 100644 --- a/project/templates/HISTORY.txt +++ b/project/templates/HISTORY.txt @@ -628,9 +628,10 @@ szs v2.29a r8691 - 2022-10-27 - Bug fix: The wildcard ** did not work correctly. The recursion depth was always 1 level higher than specified. So level 0 was never possible. See https://szs.wiimm.de/doc/wildcards#2stars for details. - - wszst ANALYZE: Added support for LE-CODE binaries. - - wszst ANALYZE: A track can be valid, even if vrcorn_model.brres is missed. - - wszst ANALYZE: Support of edit-slot ('e12' or 'ea12'). + - wszst ANALYZE: + - Added support for LE-CODE binaries. + - A track can be valid, even if vrcorn_model.brres is missed. + - Support of edit-slot ('e12' or 'ea12'). - wszst SPLIT: Added support for "(author1,author2,,editor1,editor2)", LE-CODE flags + group, order by attribute, and for track category. - New file type: MTCAT: Import and export 'MKW Track Category' files. @@ -695,6 +696,49 @@ szs v2.32a r8742 - 2022-12-25 - Fixed some pager and color issues. +szs v2.33a r8773 - 2023-01-14 + + - Fixed a bug that probably exists since v2.29a: Using option --auto-add with + SZS files with unusal or empty sub-files could cause a crash in certain + circumstances. + - Updated prefix database (added MP7). + - Optimized spacing of fonts for cup icons. + - wszst LIST including all short cuts like 'wszst LLL': + - Wildcards are accepted as source. See https://szs.wiimm.de/doc/wildcards + for details. After evaluating the wildcards, all input files are sorted + according to their path and duplicates are deleted. + - Option --in-order: Display the input files in order of the command line + and don't delete duplicates. + - Tuned table output. + - wszst PATCH: + - Wildcards are accepted as source. See https://szs.wiimm.de/doc/wildcards + for details. + - New option --no-copy: Don't copy a file if it was not modified. + - New option --le-menu: Patch SZS files from directory .../Scene/UI/ to + change the menu as required by LE-CODE to be able to select tracks from + more than 8 cups. + - New option --title-screen=dir: Specify a directory from which to search + and replace title screens. Title screens only appear in the file + 'Title.szs' and there in the sub-directory './title/timg/'. + - New option --cup-icons=file: Load given image, convert it to TPL.CMPR + and add the result as sub-files 'button/timg/ct_icons.tpl' and as + 'control/timg/ct_icons.tpl' to files 'Channel.szs', 'MenuMulti.szs' and + 'MenuSingle.szs'. + - wlect DISTRIB: + - If a filename beginns with a plus sign, the plus sign is removed and the + output file is opened in append mode. + - If an output file is opened for the second time, then it is + automatically opened in append mode. + - Instruction report=: Added methods of analysis: CLASSES, XCLASSES. + - New command: wszst UI-CHECK: Classify SZS files from directory ./Scene/UI/. + For the analysis, the filename is ignored and only the content is examined. + Wildcards and option --in-order are supported. + - New option: wszst --parallel: Tell the tool that it will be called multiple + times in parallel. Currently it only has an effect if --cache is enabled. + - New LPAR setting: STATICR-POINTS. + - All tools: Command V is a well defined short cut for command VERSION. + + @@MODULE(last-history.txt)@@ diff --git a/project/templates/module/last-history.txt b/project/templates/module/last-history.txt index 0ec0654..81da6a7 100644 --- a/project/templates/module/last-history.txt +++ b/project/templates/module/last-history.txt @@ -1,44 +1,16 @@ szs v@@VERSION@@ r@@REV-NEXT@@ - @@@@-@@-@@ - - Fixed a bug that probably exists since v2.29a: Using option --auto-add with - SZS files with unusal or empty sub-files could cause a crash in certain - circumstances. - - Updated prefix database (added MP7). - - Optimized spacing of fonts for cup icons. - - wszst LIST including all short cuts like 'wszst LLL': - - Wildcards are accepted as source. See https://szs.wiimm.de/doc/wildcards - for details. After evaluating the wildcards, all input files are sorted - according to their path and duplicates are deleted. - - Option --in-order: Display the input files in order of the command line - and don't delete duplicates. - - Tuned table output. - - wszst PATCH: - - Wildcards are accepted as source. See https://szs.wiimm.de/doc/wildcards - for details. - - New option --no-copy: Don't copy a file if it was not modified. - - New option --le-menu: Patch SZS files from directory .../Scene/UI/ to - change the menu as required by LE-CODE to be able to select tracks from - more than 8 cups. - - New option --title-screen=dir: Specify a directory from which to search - and replace title screens. Title screens only appear in the file - 'Title.szs' and there in the sub-directory './title/timg/'. - - New option --cup-icons=file: Load given image, convert it to TPL.CMPR - and add the result as sub-files 'button/timg/ct_icons.tpl' and as - 'control/timg/ct_icons.tpl' to files 'Channel.szs', 'MenuMulti.szs' and - 'MenuSingle.szs'. - - wlect DISTRIB: - - If a filename beginns with a plus sign, the plus sign is removed and the - output file is opened in append mode. - - If an output file is opened for the second time, then it is - automatically opened in append mode. - - Instruction report=: Added methods of analysis: CLASSES, XCLASSES. - - New command: wszst UI-CHECK: Classify SZS files from directory ./Scene/UI/. - For the analysis, the filename is ignored and only the content is examined. - Wildcards and option --in-order are supported. - - New option: wszst --parallel: Tell the tool that it will be called multiple - times in parallel. Currently it only has an effect if --cache is enabled. - - New LPAR parameter: STATICR-POINTS. - - All tools: Command V is a well defined short cut for command VERSION. + - Windows only: Updated 64 bit version of Cygwin to DLL 3.4.3 / 2022-12-16. + - GNU Compiler (GNUC) upto version 13 supported. + - wstrt PORT: Updated porting database. + - Updated prefix database: + - Added LBPK, M&SOWG, MP5, MP6, MSS, S1, S2, S3 and WFUS. + - Renamed RV to Re-Volt + - wszst PATCH --ignore: Keep silent if a wildcard pattern matches no file. + - New command: wszst WILDCARDS: Each parameter is treated as a file name and + wildcards are expanded. Finally, one line is printed for each matched name. + - Tool wszst: New otpion --log-cache=file: Log some cache activities to FILE. + - Improved detection of invalid references in KCL octree (avoid crash). ~ - 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 -- cgit v1.3.1