Esempio n. 1
0
File: util.c Progetto: HarryR/sanos
void error_ex(TCCState *s1, int is_warning, const char *fmt, va_list ap)
{
  char buf[2048];
  BufferedFile **f;
  
  buf[0] = '\0';
  if (file) {
    for (f = s1->include_stack; f < s1->include_stack_ptr; f++) {
      strcat_printf(buf, sizeof(buf), "In file included from %s:%d:\n", (*f)->filename, (*f)->line_num);
    }
    if (file->line_num > 0) {
      strcat_printf(buf, sizeof(buf), "%s:%d: ", file->filename, file->line_num);
    } else {
      strcat_printf(buf, sizeof(buf), "%s: ", file->filename);
    }
  } else {
    strcat_printf(buf, sizeof(buf), "cc: ");
  }
  if (is_warning) {
    strcat_printf(buf, sizeof(buf), "warning: ");
  }
  strcat_vprintf(buf, sizeof(buf), fmt, ap);

  if (!s1->error_func) {
    // Default case: stderr
    fprintf(stderr, "%s\n", buf);
  } else {
    s1->error_func(s1->error_opaque, buf);
  }
  if (!is_warning || s1->warn_error) s1->nb_errors++;
}
Esempio n. 2
0
PUB_FUNC void strcat_printf(char *buf, int buf_size, const char *fmt, ...)
{
	va_list ap;
	va_start (ap, fmt);
	strcat_vprintf (buf, buf_size, fmt, ap);
	va_end (ap);
}
Esempio n. 3
0
static void error1(TCCState *s1, int is_warning, const char *fmt, va_list ap)
{
	char buf[2048];
	BufferedFile **pf, *f;

	buf[0] = '\0';
	/* use upper file if inline ":asm:" or token ":paste:" */
	for (f = file; f && f->filename[0] == ':'; f = f->prev) {
		;
	}
	if (f) {
		for (pf = s1->include_stack; pf < s1->include_stack_ptr; pf++) {
			strcat_printf (buf, sizeof(buf), "In file included from %s:%d:\n",
				(*pf)->filename, (*pf)->line_num);
		}
		if (f->line_num > 0) {
			strcat_printf (buf, sizeof(buf), "%s:%d: ",
				f->filename, f->line_num);
		} else {
			strcat_printf (buf, sizeof(buf), "%s: ",
				f->filename);
		}
	} else {
		strcat_printf (buf, sizeof(buf), "tcc: ");
	}
	if (is_warning) {
		strcat_printf (buf, sizeof(buf), "warning: ");
	} else {
		strcat_printf (buf, sizeof(buf), "error: ");
	}
	strcat_vprintf (buf, sizeof(buf), fmt, ap);

	if (!s1->error_func) {
		/* default case: stderr */
		fprintf (stderr, "%s\n", buf);
	} else {
		s1->error_func (s1->error_opaque, buf);
	}
	if (!is_warning || s1->warn_error) {
		s1->nb_errors++;
	}
}