Subversion Repositories SvarDOS

Compare Revisions

Ignore whitespace Rev 981 → Rev 982

/svarcom/trunk/cmd/for.c
0,0 → 1,78
/* This file is part of the SvarCOM project and is published under the terms
* of the MIT license.
*
* Copyright (C) 2021-2022 Mateusz Viste
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
 
/*
* FOR %variable IN (set) DO command [command-parameters]
*
* %variable a replaceable parameter name
* (set) a set of one of more files. Wildcards allowed.
* command the command to carry out for each matched file
* command-parameters parameters or switches for the specified command
*
* To use FOR in a batch program, use %%variable instead of %variable
*
* the set of files must be surrounded by parenthesis, and may contain one
* or more space-delimited wildcards. Examples:
* (file.txt other.txt)
* (*.exe *.com *.bat)
* (jan*.txt 199201??.txt)
*/
 
/* Implementation notes:
*
* For cannot be nested (no "FOR ... do FOR ..." allowed)
*
* When executed, FOR allocates a "FOR context" to RMOD's memory, this context
* holds the memory state of a FindNext iteration, as well as the command
* to run on each matched file.
*
* This FOR context is looked at by command.c and used to provide a command
* instead of getting the command from interactive cli or BAT file. Repeats
* until the FindNext buffer stops matching files.
*
* This file only provides the help screen of FOR, as well as the FOR-context
* initialization. Actual execution happens within command.c.
*/
 
static enum cmd_result cmd_for(struct cmd_funcparam *p) {
 
/* help screen ONLY if /? is the only argument */
if ((p->argc == 1) && (imatch(p->argv[0], "/?"))) {
nls_outputnl(18,0); /* "Runs a specified command for each file in a set of files" */
outputnl("");
nls_outputnl(18,1); /* "FOR %variable IN (set) DO command [parameters]" */
outputnl("");
nls_outputnl(18,2); /* "%variable a replaceable parameter name" */
nls_outputnl(18,3); /* "(set) a set of one of more files. Wildcards allowed." */
nls_outputnl(18,4); /* "command the command to carry out for each matched file" */
nls_outputnl(18,5); /* "parameters parameters or switches for the specified command" */
outputnl("");
nls_outputnl(18,6); /* "To use FOR in a batch program, use %%variable instead of %variable" */
return(CMD_OK);
}
 
outputnl("FOR IS NOT IMPLEMENTED YET");
 
return(CMD_OK);
}