Example #1
0
File: load.c Project: bert/pcb-rnd
gr_t *load(FILE *f)
{
	int lineno;
	int nets[2][MAXNODES];  /* nodes in nets */
	int neut[MAXNODES];     /* neutral nodes */
	int nn_net[2];          /* number of nodes in nets */
	int nn_neut;            /* number of nodes in nets */
	int nodes_fin;          /* 1 after reading the first conn line */
	gr_t *g = NULL;

/* peek at next char and return if it is a newline */
#define return_at_eol \
	do { \
		char c; \
		c = fgetc(f); \
		if ((c == '\r') || (c == '\n')) \
			return; \
		ungetc(c, f); \
	} while(0)


	/* eat up space and tabs */
	void eat_space(void)
	{
		int c;
		do {
			c = fgetc(f);
		} while(isspc(c));
		ungetc(c, f);
	}
Example #2
0
str
parseargs::getarg ()
{
  skiplwsp ();
  if (p >= lim || *p == '\n')
    return NULL;

  bool q = false;
  vec<char> arg;
  for (;;) {
    if (*p == '\\') {
      if (p + 1 >= lim) {
	error ("invalid '\\' before end of file");
	return NULL;
      }
      else if (p[1] == '\n')
	skiplwsp ();
      else {
	arg.push_back (p[1]);
	p += 2;
      }
      continue;
    }
    if (p >= lim) {
      if (q)
	error ("closing '\"' missing");
      return str (arg.base (), arg.size ());
    }
    if (*p == '\"')
      q = !q;
    else if (q || !isspc (*p))
      arg.push_back (*p);
    else
      return str (arg.base (), arg.size ());
    p++;
  }
  return NULL;			// XXX - egcs bug
}
Example #3
0
File: stdlib.c Project: sng7ca/ygg
/* ... */
int atoi(const char *s, int bs)
{
	register int sg, n;

	/* skip spaces */
	for (; isspc(*s); s++)
		;
	/* get sign */
	switch (*s) {
	case '-':
		sg = -1;
		s++;
		break;
	case '+':
		s++;
	default:
		sg = 1;
	}
	/* calc val */
	for (n = 0; isdig(*s); s++)
		n = n * bs + *s - '0';
	return n * sg;
}