74 token = strtok(edit,
" \r\t\n");
75 while(token != (
char *)NULL)
78 token = strtok((
char *)NULL,
" \r\t\n");
99 st_fail(
"Usage: batch batch_file_name");
114 st_fail(
"Missing arg for 'batch clear' command");
129 sprintf(sysBuf,
"vi %s", fname);
137 st_fail(
"Unable to locate an internal procedure named: %s", name);
143 st_fail(
"Missing arg for 'batch edit' command");
173 st_fail(
"Unable to locate batch file %s", name);
184 char *cp, line[256], *string;
185 char *home, *init, *proc;
186 char pname1[256], pname2[256], pname3[256];
192 home = getenv(
"HOME");
193 init = getenv(
"OBSINIT");
194 proc = getenv(
"LINUXPOPS_HOME");
196 st_print(
"loadBatch(): Looking for batch file: %s\n", bname);
200 sprintf(pname1,
"%s/%s", home, bname);
205 sprintf(pname2,
"%s/%s/%s", home, init, bname);
210 sprintf(pname3,
"%s/procedures/%s", proc, bname);
213 st_print(
"loadBatch(): %s\n", pname1);
214 st_print(
"loadBatch(): %s\n", pname2);
215 st_print(
"loadBatch(): %s\n", pname3);
218 if((fp = fopen(bname,
"r") ) > (FILE *)0)
220 st_print(
"Found batch file ./here\n");
223 if((fp = fopen(pname1,
"r") ) > (FILE *)0)
225 st_print(
"Found batch file in HOME \n");
228 if((fp = fopen(pname2,
"r") ) > (FILE *)0)
230 st_print(
"Found batch file in HOME/INIT \n");
233 if((fp = fopen(pname3,
"r") ) > (FILE *)0)
235 st_print(
"Found batch file in $LINUXPOPS_HOME/procedures\n");
240 st_fail(
"Unable to open file %s", bname);
244 st_report(
"loadBatch(): Loading: %s", bname);
250 st_fail(
"Unable to allocate free Batch memory");
262 while((
string = fgets(line,
sizeof(line), fp)) != NULL)
272 if((!strncmp(line,
"procedure", 9)))
274 strcpy(p->
name, line+10);
277 if((cp = strstr(line,
"ntoken? ")))
283 strcpy(p->
lines[i++], line);
286 if(!strncmp(line,
"#", 1) && (cp = strstr(line,
"Usage")))
288 strcpy(p->
usage, cp);
294 st_fail(
"Batch file line too long");
299 st_fail(
"Too many lines, %d, in batch file %s", i, bname);
318 int i, j, n, ret, lptokens, pause=0, loophead = 0;
319 char *cp, tbuf[256], scanBuf[256],
320 arg1[256], arg2[256], arg3[256], arg4[256], arg5[256], arg6[256], arg7[256], arg8[256];
344 st_print(
"execBatch(): Arg1 = %s\n", arg1);
345 st_print(
"execBatch(): Arg2 = %s\n", arg2);
346 st_print(
"execBatch(): Arg3 = %s\n", arg3);
347 st_print(
"execBatch(): Arg4 = %s\n", arg4);
348 st_print(
"execBatch(): Arg5 = %s\n", arg5);
349 st_print(
"execBatch(): Arg6 = %s\n", arg6);
350 st_print(
"execBatch(): Arg7 = %s\n", arg7);
351 st_print(
"execBatch(): Arg8 = %s\n", arg8);
352 st_print(
"execBatch(): pToken = %d\n", lptokens);
359 if(strlen(p->
lines[i]))
364 strcpy(tbuf, p->
lines[i]);
366 if(!strncmp(tbuf,
"#", 1))
374 st_report(
"execBatch(): ptokens: %d", lptokens);
381 st_fail(
"%s: Wrong number of args: Needs at least: %d", name, p->
ntokens);
390 st_report(
"execBatch(): Before Parsing: %s", tbuf);
397 st_report(
"execBatch(): Found %d tokens in this line", n);
400 bzero(tbuf,
sizeof(tbuf));
410 if(!strcasecmp(
batch_tok[j],
"secondArg"))
421 if(!strcasecmp(
batch_tok[j],
"thirdArg"))
432 if(!strcasecmp(
batch_tok[j],
"fourthArg"))
443 if(!strcasecmp(
batch_tok[j],
"fifthArg"))
454 if(!strcasecmp(
batch_tok[j],
"sixthArg"))
465 if(!strcasecmp(
batch_tok[j],
"seventhArg"))
476 if(!strcasecmp(
batch_tok[j],
"eightArg"))
495 st_report(
"execBatch(): After reassemble: %s", tbuf);
498 if((cp = strcasestr(tbuf,
"stackscan")))
510 if(strstr(tbuf,
"startstack"))
516 st_report(
"execBatch(): Found Top of Stack Loop: indx %d", loophead);
522 if(strstr(tbuf,
"endstack"))
526 st_report(
"execBatch(): Found End of Stack Loop");
540 if(strstr(tbuf,
"pause"))
569 st_fail(
"execBatch(): Batch procedure: %s, not found", name);
589 if(strlen(p->
lines[i]))
597 st_fail(
"printBatch(): Batch procedure: %s, not found", name);
629 st_print(
" Slot: Filename Procedure n-Lines nTokens Usage\n\n");
636 st_print(
"%3d:%16.16s%16.16s %4d %d '%s'\n",
661 if(!strncasecmp(p->
name, arg, len))
663 sprintf(tbuf,
"%s ", p->
name);
688 st_report(
"Re-Loading Procedure %s into Slot %d", name, i);
699 st_report(
"Loading New Procedure %s into Slot %d", name, i);
char * strcmprs(char *str)
struct PARSE_STACK * args
int deNewLineIt(char *buf)
struct BATCH_COMMAND * getFreeBatch(char *name)
struct BATCH_COMMAND bcommands[MAX_BATCH_COMMANDS]
int printBatch(char *name)
#define MAX_BATCH_COMMANDS
int loadBatch(char *bname)
char batch_tok[MAX_TOKENS][MAX_TOKENS]
int execBatch(char *name)
int findAmbiguousBatch(char *arg, char *buf)
int clearBatch(char *name)
int batch_get_tok(char *edit)
char lines[MAX_BATCH_LINES][MAX_BATCH_LWIDTH]