Subversion Repositories SvarDOS

Rev

Rev 1023 | Rev 1070 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1023 Rev 1024
Line 82... Line 82...
82
 
82
 
83
  /* clear out struct and copy command line to it */
83
  /* clear out struct and copy command line to it */
84
  bzero(f, sizeof(*f));
84
  bzero(f, sizeof(*f));
85
  strcpy(f->cmd, p->cmdline);
85
  strcpy(f->cmd, p->cmdline);
86
 
86
 
87
  /* locate the %varname */
87
  /* locate the %varname (single char) */
88
  i = p->argoffset;
88
  i = p->argoffset;
89
  while (f->cmd[i] == ' ') i++;
89
  while (f->cmd[i] == ' ') i++;
90
  if (f->cmd[i] != '%') goto INVALID_SYNTAX;
90
  if ((f->cmd[i] != '%') || (f->cmd[i+1] == ' ') || (f->cmd[i+2] != ' ')) goto INVALID_SYNTAX;
91
  f->varname = i;
91
  f->varname = f->cmd[i+1];
92
  /* find the end of varname (space) */
-
 
93
  while ((f->cmd[i] != ' ') && (f->cmd[i] != 0)) i++;
-
 
94
  if (f->cmd[i] != ' ') goto INVALID_SYNTAX;
92
  i += 3;
95
  f->cmd[i++] = 0; /* terminate varname and move to next field */
-
 
96
 
93
 
97
  /* look (and skip) the "IN" part */
94
  /* look (and skip) the "IN" part */
98
  while (f->cmd[i] == ' ') i++;
95
  while (f->cmd[i] == ' ') i++;
99
  if (((f->cmd[i] & 0xDF) != 'I') && ((f->cmd[i+1] & 0xDF) != 'N') && (f->cmd[i+2] != ' ')) goto INVALID_SYNTAX;
96
  if (((f->cmd[i] & 0xDF) != 'I') && ((f->cmd[i+1] & 0xDF) != 'N') && (f->cmd[i+2] != ' ')) goto INVALID_SYNTAX;
100
  i += 3;
97
  i += 3;
Line 102... Line 99...
102
  /* look for patterns start */
99
  /* look for patterns start */
103
  while (f->cmd[i] == ' ') i++;
100
  while (f->cmd[i] == ' ') i++;
104
  if (f->cmd[i] != '(') goto INVALID_SYNTAX;
101
  if (f->cmd[i] != '(') goto INVALID_SYNTAX;
105
  i++;
102
  i++;
106
  while (f->cmd[i] == ' ') i++;
103
  while (f->cmd[i] == ' ') i++;
107
  f->curpat = i;
104
  f->nextpat = i;
108
  /* look for patterns end */
105
  /* look for patterns end */
109
  while ((f->cmd[i] != ')') && (f->cmd[i] != 0)) i++;
106
  while ((f->cmd[i] != ')') && (f->cmd[i] != 0)) i++;
110
  if (f->cmd[i] != ')') goto INVALID_SYNTAX;
107
  if (f->cmd[i] != ')') goto INVALID_SYNTAX;
111
  f->cmd[i++] = 0; /* terminate patterns and move to next field */
108
  f->cmd[i++] = 0; /* terminate patterns and move to next field */
112
 
109