diff options
| author | Wiimm <wiimm@wiimm.de> | 2023-07-22 22:40:04 +0200 |
|---|---|---|
| committer | Wiimm <wiimm@wiimm.de> | 2023-07-22 22:40:04 +0200 |
| commit | 7a4ee26983b941ce0a8f72bcc02bf5566e9a7886 (patch) | |
| tree | 202755942a4d5b67bedcd9f3c21eb2ababf8dd79 /project/src/wlect.c | |
| parent | b5b1fe7fc0cf460d6204c18ba7bb4c40f7597efa (diff) | |
SZS v2.36a
Diffstat (limited to 'project/src/wlect.c')
| -rw-r--r-- | project/src/wlect.c | 101 |
1 files changed, 66 insertions, 35 deletions
diff --git a/project/src/wlect.c b/project/src/wlect.c index 2441970..a8fe7fd 100644 --- a/project/src/wlect.c +++ b/project/src/wlect.c @@ -344,11 +344,13 @@ static enumError cmd_dump ( int long_level ) raw_data_t raw; InitializeRawData(&raw); - ParamList_t *param; - for ( param = first_param; param; param = param->next ) + StringField_t plist = {0}; + CollectExpandParam(&plist,first_param,-1,WM__DEFAULT); + + for ( int argi = 0; argi < plist.used; argi++ ) { - NORMALIZE_FILENAME_PARAM(param); - enumError err = LoadRawData(&raw,false,param->arg,0,opt_ignore>0,0); + ccp arg = plist.field[argi]; + enumError err = LoadRawData(&raw,false,arg,0,opt_ignore>0,0); if ( err == ERR_NOT_EXISTS || err > ERR_WARNING && opt_ignore ) continue; if ( err > ERR_WARNING ) @@ -393,6 +395,7 @@ static enumError cmd_dump ( int long_level ) CloseLDUMP(); } + ResetStringField(&plist); ResetRawData(&raw); return ERR_OK; } @@ -755,20 +758,22 @@ static enumError cmd_patch() raw_data_t raw; InitializeRawData(&raw); - ParamList_t *param; - for ( param = first_param; param; param = param->next ) + StringField_t plist = {0}; + CollectExpandParam(&plist,first_param,-1,WM__DEFAULT); + + for ( int argi = 0; argi < plist.used; argi++ ) { - NORMALIZE_FILENAME_PARAM(param); - enumError err = LoadRawData(&raw,false,param->arg,0,opt_ignore>0,0); + ccp arg = plist.field[argi]; + enumError err = LoadRawData(&raw,false,arg,0,opt_ignore>0,0); if ( err == ERR_NOT_EXISTS || err > ERR_WARNING && opt_ignore ) continue; if ( err > ERR_WARNING ) return err; char dest[PATH_MAX]; - SubstDest(dest,sizeof(dest),param->arg,opt_dest,def_path, + SubstDest(dest,sizeof(dest),arg,opt_dest,def_path, GetExtFF(raw.fform_file,raw.fform),false); - const bool dest_is_source = IsSameFilename(dest,param->arg); + const bool dest_is_source = IsSameFilename(dest,arg); if ( verbose >= 0 || testmode ) { @@ -802,6 +807,7 @@ static enumError cmd_patch() CloseLDUMP(); } + ResetStringField(&plist); ResetRawData(&raw); return ERR_OK; } @@ -821,20 +827,22 @@ static enumError cmd_timestamp() raw_data_t raw; InitializeRawData(&raw); - ParamList_t *param; - for ( param = first_param; param; param = param->next ) + StringField_t plist = {0}; + CollectExpandParam(&plist,first_param,-1,WM__DEFAULT); + + for ( int argi = 0; argi < plist.used; argi++ ) { - NORMALIZE_FILENAME_PARAM(param); - enumError err = LoadRawData(&raw,false,param->arg,0,opt_ignore>0,0); + ccp arg = plist.field[argi]; + enumError err = LoadRawData(&raw,false,arg,0,opt_ignore>0,0); if ( err == ERR_NOT_EXISTS || err > ERR_WARNING && opt_ignore ) continue; if ( err > ERR_WARNING ) return err; char dest[PATH_MAX]; - SubstDest(dest,sizeof(dest),param->arg,opt_dest,def_path, + SubstDest(dest,sizeof(dest),arg,opt_dest,def_path, GetExtFF(raw.fform_file,raw.fform),false); - const bool dest_is_source = IsSameFilename(dest,param->arg); + const bool dest_is_source = IsSameFilename(dest,arg); if ( verbose >= 0 || testmode ) { @@ -877,6 +885,7 @@ static enumError cmd_timestamp() ResetLEAnalyze(&ana); } + ResetStringField(&plist); ResetRawData(&raw); return ERR_OK; } @@ -1004,11 +1013,13 @@ static enumError cmd_create() //--- data enum { C_HELP, - C_LEX, C_FEATURES, C_SET1, C_CANNON, C_HIDE_PT, C_RND_ITPH, C_TEST, + C_LEX, C_FEATURES, C_DEV1, C_SET1, C_CANNON, C_HIDE_PT, C_RND_ITPH, C_TEST, C_LPAR, C_LEDEF, C_PREFIX, C_CATEGORY, C_LEINFO, }; + // [[lex-new-sect]] + static const KeywordTab_t tab[] = { { C_HELP, "HELP", "H", 0 }, @@ -1017,6 +1028,7 @@ static enumError cmd_create() { C_LEX, "LEX+", 0, 1 }, { C_LEX, "DEVELOP", 0, 2 }, { C_FEATURES, "FEATURES", 0, 0 }, + { C_DEV1, "DEV1", 0, 0 }, { C_SET1, "SET1", 0, 0 }, { C_CANNON, "CANNONS", 0, 0 }, { C_HIDE_PT, "HIPT", 0, 0 }, @@ -1069,6 +1081,7 @@ static enumError cmd_create() break; case C_FEATURES: + case C_DEV1: case C_SET1: case C_CANNON: case C_HIDE_PT: @@ -1079,6 +1092,7 @@ static enumError cmd_create() switch (cmd->id) { case C_FEATURES: AppendFeatLEX(&lex,false,0); break; + case C_DEV1: AppendDev1LEX(&lex,false); break; case C_SET1: AppendSet1LEX(&lex,false); break; case C_CANNON: AppendCannLEX(&lex,false); break; case C_HIDE_PT: AppendHiptLEX(&lex,false); break; @@ -1089,6 +1103,8 @@ static enumError cmd_create() } break; + // [[lex-new-sect]] + case C_TEST: { lex_t lex; @@ -1225,16 +1241,19 @@ static void help_distrib ( enumError exit_code ) " which is helpful for the automatic completion of filenames.\n" "\n" " |Otherwise it is a {name|filename of an input file}." - " The file is read and generally overwrites existing content." + " Wildcards and pipe characters are parsed," + " see https://szs.wiimm.de/doc/wildcards for details." + " The file (or files in case of wildcards) is read" + " and generally overwrites existing content." " This means that the file last read in has the highest priority." " However, this can be influenced by the processing options." - " Arguments beginning with »{file|/}« or »{file|./}«" + " Arguments beginning with »{file|/}«, »{file|./}« or »{file|||}«" " are always recognized as filenames.\n" "\n" " |All arguments are executed in the order in which they were entered without any logging." " Only error messages are displayed." " With option {opt|--verbose} (short: {opt|-v})," - " at least one log line for each argument is printed.\n" + " at least one log line for each argument is printed.\n" "\n" " |It is possible to store arguments into a file (e.g. into file »{file|param.txt}«)" " and to include those file by option {opt|-@FILENAME}" @@ -1759,7 +1778,7 @@ static void help_distrib ( enumError exit_code ) "\t{name|[key]}:\t|" "For each track there is a set of character strings at the user's disposal." " The character strings are addressed via KEY." - " The KEY itself can consist of any character and are case-sensitive." + " The KEY itself can consist of any character and is case-sensitive." " This type of square bracket option can only be used" " directly after the leading plus sign. More processing options may follow.\n" "\n" @@ -2236,7 +2255,7 @@ static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * ar { StringField_t filelist; InitializeStringField(&filelist); - InsertStringFieldExpand(&filelist,arg,0,true); + InsertStringFieldExpand(&filelist,arg,WM__DEFAULT,true); switch (cmd->id) { @@ -2328,6 +2347,7 @@ static enumError cmd_distrib() le_distrib_t ld; InitializeLD(&ld); + // no wildcard expansion here (step by step) for ( ParamList_t *param = first_param; param; param = param->next ) { NORMALIZE_FILENAME_PARAM(param); @@ -2401,11 +2421,13 @@ static enumError cmd_cat() InitializeRawData(&raw); enumError cmd_err = ERR_OK; - ParamList_t *param; - for ( param = first_param; param; param = param->next ) + StringField_t plist = {0}; + CollectExpandParam(&plist,first_param,-1,WM__DEFAULT); + + for ( int argi = 0; argi < plist.used; argi++ ) { - NORMALIZE_FILENAME_PARAM(param); - enumError err = LoadRawData(&raw,false,param->arg,autoname,opt_ignore>0,0); + ccp arg = plist.field[argi]; + enumError err = LoadRawData(&raw,false,arg,autoname,opt_ignore>0,0); if ( err == ERR_NOT_EXISTS || err > ERR_WARNING && opt_ignore ) continue; if ( err > ERR_WARNING ) @@ -2465,6 +2487,7 @@ static enumError cmd_cat() } } + ResetStringField(&plist); ResetRawData(&raw); return cmd_err; } @@ -2481,11 +2504,13 @@ static enumError cmd_lpar() InitializeRawData(&raw); enumError cmd_err = ERR_OK; - ParamList_t *param; - for ( param = first_param; param; param = param->next ) + StringField_t plist = {0}; + CollectExpandParam(&plist,first_param,-1,WM__DEFAULT); + + for ( int argi = 0; argi < plist.used; argi++ ) { - NORMALIZE_FILENAME_PARAM(param); - enumError err = LoadRawData(&raw,false,param->arg,autoname,opt_ignore>0,0); + ccp arg = plist.field[argi]; + enumError err = LoadRawData(&raw,false,arg,autoname,opt_ignore>0,0); if ( err == ERR_NOT_EXISTS || err > ERR_WARNING && opt_ignore ) continue; if ( err > ERR_WARNING ) @@ -2510,6 +2535,7 @@ static enumError cmd_lpar() ResetLEAnalyze(&ana); } + ResetStringField(&plist); ResetRawData(&raw); return cmd_err; } @@ -2527,11 +2553,13 @@ static enumError cmd_convert ( int cmd_id, ccp cmd_name, ccp def_path ) raw_data_t raw; InitializeRawData(&raw); - ParamList_t *param; - for ( param = first_param; param; param = param->next ) + StringField_t plist = {0}; + CollectExpandParam(&plist,first_param,-1,WM__DEFAULT); + + for ( int argi = 0; argi < plist.used; argi++ ) { - NORMALIZE_FILENAME_PARAM(param); - enumError err = LoadRawData(&raw,false,param->arg,autoname,opt_ignore>0,0); + ccp arg = plist.field[argi]; + enumError err = LoadRawData(&raw,false,arg,autoname,opt_ignore>0,0); if ( err == ERR_NOT_EXISTS || err > ERR_WARNING && opt_ignore ) continue; if ( err > ERR_WARNING ) @@ -2540,7 +2568,7 @@ static enumError cmd_convert ( int cmd_id, ccp cmd_name, ccp def_path ) char dest[PATH_MAX]; const file_format_t dest_ff = cmd_id == CMD_ENCODE ? FF_LEX : FF_LEX_TXT; - SubstDest(dest,sizeof(dest),param->arg,opt_dest,def_path, + SubstDest(dest,sizeof(dest),arg,opt_dest,def_path, GetExtFF(dest_ff,0),false); if ( verbose >= 0 || testmode ) @@ -2575,6 +2603,7 @@ static enumError cmd_convert ( int cmd_id, ccp cmd_name, ccp def_path ) ResetLEX(&lex); } + ResetStringField(&plist); ResetRawData(&raw); return ERR_OK; } @@ -2691,6 +2720,8 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_LONG: long_count++; break; case GO_NO_HEADER: print_header = false; break; case GO_BRIEF: brief_count++; break; + case GO_NO_WILDCARDS: no_wildcards_count++; break; + case GO_IN_ORDER: inorder_count++; break; case GO_EXPORT: export_count++; print_header = false; break; case GO_LT_CLEAR: opt_lt_clear = true; break; |
