diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /indexing/glo+idxtex/idxcmd.c |
Initial commit
Diffstat (limited to 'indexing/glo+idxtex/idxcmd.c')
-rw-r--r-- | indexing/glo+idxtex/idxcmd.c | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/indexing/glo+idxtex/idxcmd.c b/indexing/glo+idxtex/idxcmd.c new file mode 100644 index 0000000000..402c248d90 --- /dev/null +++ b/indexing/glo+idxtex/idxcmd.c @@ -0,0 +1,189 @@ +/* #module IdxCmd "3-001" + *********************************************************************** + * * + * The software was developed at the Monsanto Company and is provided * + * "as-is". Monsanto Company and the auther disclaim all warranties * + * on the software, including without limitation, all implied warran- * + * ties of merchantabilitiy and fitness. * + * * + * This software does not contain any technical data or information * + * that is proprietary in nature. It may be copied, modified, and * + * distributed on a non-profit basis and with the inclusion of this * + * notice. * + * * + *********************************************************************** + */ +/* + * Module Name: IdxCmd + * + * Author: R L Aurbach CR&DS MIS Group 13-Jun-1986 + * + * Function: + * + * This routine parses the IdxTeX Command Line, and returns the name of + * the input file and a flag which indicates whether to add an entry to + * the table of contents for the Index. + * + * Modification History: + * + * Version Initials Date Description + * ------------------------------------------------------------------------ + * 1-001 RLA 13-Jun-1986 Original Code, based on the CRDVLIB + * Library routine LIB_PARSE_FOREIGN + * 2-002 RLA 09-Apr-1987 Add support for the /MASTER qualifier + * 3-001 F.H. 17-May-1991 converted to portable C + */ +/* + * Module IdxCmd - Module-Wide Data Description Section + * + * Include Files: + */ +#ifdef MSDOS +#include <stdlib.h> +#include <stdio.h> +#include <io.h> +#define F_OK 0 /* access(): File exists */ +#else +#include <sys/file.h> +extern char *sprintf(); +#endif +#include <string.h> +#include "IdxDef.h" +/* + * Module Definitions: + */ + +#define TRUE 1 /* Success value */ +#define FALSE 0 /* Failure value */ +/* + * Global Declarations: + */ +/* + * Static Declarations: + */ +#ifdef MSDOS +void idx_command(int argc, char *argv[], char *file, + int *toc_flag, int *mst_flag); +#else +void idx_command(); +#endif +/* + * External References: + */ +/* + * Functions Called: + */ +/* + * Function Idx_Commmand - Documentation Section + * + * Discussion: + * This routine uses lib$get_foreign to read the command line. It + * prefixes the command line with "IdxTeX ", so that the CLI routines + * will have the appropriate information on which to operate. It then + * parses the command line and returns the appropriate information to the + * program. + * + * Since this routine establishes LIB$SIG_TO_STOP as a condition handler, + * syntax errors detected during processing result in program exit. + * + * Calling Synopsis: + * Call Idx_Command (file, toc_flag, mst_flag) + * + * Inputs: + * none + * + * Outputs: + * file -> is the input file specified in the command line. This + * is a required parameter. This variable is an ASCIZ + * string passed by reference. The calling program is + * responsible for allocating a sufficiently large + * string (i.e., char file[256]). + * + * toc_flag -> indicates whether the /TOC qualifier was specified. + * Values returned are: + * IDX_K_NONE - /TOC not specified. + * IDX_K_ARTICLE - /TOC:ARTICLE specified. + * IDX_K_REPORT - /TOC:REPORT specified. + * + * mst_flag -> indicates whether the /MASTER qualifier was specified. + * Returns a boolean result. + * + * Return Value: + * none + * + * Global Data: + * none + * + * Files Used: + * none + * + * Assumed Entry State: + * IdxTeX is invokes as a Foreign DCL command. + * + * Normal Exit State: + * Routine returns to caller. The "file", "toc_flag", and "mst_flag" + * variables are set up correctly. + * + * Error Conditions: + * Since the routine establishes LIB$SIG_TO_STOP as its exception handler, + * syntax and parsing errors detected by the CLI$ routines (which signal + * errors) cause the program to exit. That is, all syntax errors are + * fatal. + * + * Algorithm: + * A. Call Lib$Get_Foreign to retrieve the command line. + * B. Prefix the command line with the command verb. + * C. Call Cli$DCL_Parse to parse the command line. + * D. Process the file name. + * 1. Get the file name. + * 2. Convert it to an ASCIZ string. + * E. Process the /TOC qualifier. + * 1. If /TOC is not specified, + * a. toc_flag = IDX_K_NONE. + * 2. If /TOC:ARTICLE specified, + * a. toc_flag = IDX_K_ARTICLE. + * 3. If /TOC:REPORT specified. + * a. toc_flag = IDX_K_REPORT. + * F. Process the /MASTER qualifier. + * + * Special Notes: + * This routine is based on the LIB_PARSE_FOREIGN routine, suitably + * modified. + */ +/* + * Function Idx_Command - Code Section + */ +void idx_command (argc, argv, file, toc_flag, mst_flag) + int argc; + char *argv[]; + char *file; /* File name parameter */ + int *toc_flag; /* /TOC flag */ + int *mst_flag; /* /MASTER flag */ +{ +/* + * Local Declarations: + */ + int i; +/* + * Module Body: + */ +/* Establish a condition handler */ +/* Get the command line */ +/* Parse the command line */ +/* Get the filename string */ + (void)sprintf(file,"%s", argv[1]); +/* Process the /TOC qualifier */ + i = 2; + *toc_flag = IDX_K_NONE; + if (argc > i) { + if ((strncmp("/TOC", argv[i],4)) == 0) { + if (argv[i][5] == 'A') *toc_flag = IDX_K_ARTICLE; + if (argv[i][5] == 'R') *toc_flag = IDX_K_REPORT; + i++; + } + } +/* Process the /MASTER qualifier */ + *mst_flag = FALSE; + if (argc > i) + if (strncmp("/MASTER",argv[i],7) == 0) *mst_flag = TRUE; +} |