You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.7 KiB
74 lines
1.7 KiB
/**********
|
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
|
Author: 1985 Thomas L. Quarles
|
|
**********/
|
|
|
|
/*
|
|
* Get string input token from 'line', and return a pointer to it in 'token'
|
|
*/
|
|
|
|
#include "ngspice.h"
|
|
#include <stdio.h>
|
|
#include "iferrmsg.h"
|
|
#include "inpdefs.h"
|
|
#include "inp.h"
|
|
|
|
int INPgetStr(char **line, char **token, int gobble)
|
|
/* eat non-whitespace trash AFTER token? */
|
|
{
|
|
char *point;
|
|
char separator = '\0';
|
|
|
|
/* Scan along throwing away garbage characters. */
|
|
for (point = *line; *point != '\0'; point++) {
|
|
if ((*point == ' ') ||
|
|
(*point == '\t') ||
|
|
(*point == '=') ||
|
|
(*point == '(') || (*point == ')') || (*point == ','))
|
|
continue;
|
|
break;
|
|
}
|
|
if (*point == '"') {
|
|
separator = '"';
|
|
point++;
|
|
} else if (*point == '\'') {
|
|
separator = '\'';
|
|
point++;
|
|
}
|
|
/* mark beginning of token */
|
|
*line = point;
|
|
/* now find all good characters */
|
|
for (point = *line; *point != '\0'; point++) {
|
|
if ((*point == ' ') ||
|
|
(*point == '\t') ||
|
|
(*point == '=') ||
|
|
(*point == '(') ||
|
|
(*point == ')') || (*point == ',') || (*point == separator))
|
|
break;
|
|
}
|
|
|
|
/* Create token */
|
|
*token = TMALLOC(char, 1 + point - *line);
|
|
if (!*token)
|
|
return (E_NOMEM);
|
|
(void) strncpy(*token, *line, (size_t) (point - *line));
|
|
*(*token + (point - *line)) = '\0';
|
|
*line = point;
|
|
|
|
/* Gobble garbage to next token. */
|
|
if (separator && **line == separator) {
|
|
(*line)++; /* Skip one closing separator */
|
|
}
|
|
for (; **line != '\0'; (*line)++) {
|
|
if (**line == ' ')
|
|
continue;
|
|
if (**line == '\t')
|
|
continue;
|
|
if ((**line == '=') && gobble)
|
|
continue;
|
|
if ((**line == ',') && gobble)
|
|
continue;
|
|
break;
|
|
}
|
|
return (OK);
|
|
}
|