pike.git / src / error.c

version» Context lines:

pike.git/src/error.c:244:   PMOD_EXPORT DECLSPEC(noreturn) void low_error(const char *buf) ATTRIBUTE((noreturn))   {    push_error(buf);    free_svalue(& throw_value);    move_svalue (&throw_value, --Pike_sp);    throw_severity = THROW_ERROR;    in_error=0;    pike_throw(); /* Hope someone is catching, or we will be out of balls. */   }    - PMOD_EXPORT void Pike_vsnprintf(char *str, size_t size, -  const char *fmt, va_list args) - { -  size--; -  -  do { -  if(fmt[0]=='%') { -  -  fmt++; -  -  switch( fmt++[0] ) { -  -  case 'O': -  { -  dynamic_buffer buf; -  dynbuf_string s; -  char *ostr; -  struct svalue t = va_arg(args, struct svalue); -  init_buf(&buf); -  describe_svalue(&t,0,0); -  s=complex_free_buf(&buf); -  ostr=s.str; -  -  while( --size>0 && (s.len--)>0 ) -  str++[0]=s.str++[0]; -  -  free(ostr); -  } -  break; -  -  case 'S': -  { -  dynamic_buffer buf; -  dynbuf_string s; -  char *ostr; -  struct svalue t; -  -  t.type = PIKE_T_STRING; -  t.u.string = va_arg(args, struct pike_string *); -  -  init_buf(&buf); -  describe_svalue(&t,0,0); -  s=complex_free_buf(&buf); -  ostr=s.str; -  -  while( --size>0 && (s.len--)>0 ) -  str++[0]=s.str++[0]; -  -  free(ostr); -  } -  break; -  -  case 's': -  { -  char *from = va_arg(args, char *); -  while( --size>0 && from[0]!=0 ) -  str++[0]=from++[0]; -  } -  break; -  -  case 'c': -  { -  int c = (char)va_arg(args, int); -  sprintf(str, "%c", c); -  str++; -  size--; -  } -  break; -  -  case 'd': -  { -  char buf[12]; -  int pos=0; -  sprintf(buf, "%d", va_arg(args, int)); -  while( --size>0 && buf[pos]!=0 ) -  str++[0]=buf[pos++]; -  } -  break; -  -  case 'x': -  { -  char buf[12]; -  int pos=0; -  sprintf(buf, "%x", va_arg(args, int)); -  while( --size>0 && buf[pos]!=0 ) -  str++[0]=buf[pos++]; -  } -  break; -  -  case '%': -  str++[0]='%'; -  size--; -  break; -  -  default: -  Pike_fatal("Unknown Pike_vsnprintf formatting char '%c'.\n", -  (fmt-1)[0]); -  } -  } -  else { -  str++[0]=fmt++[0]; -  size--; -  } -  -  } while(fmt[0] && size>0); -  -  str[0]=0; -  va_end(args); - } -  -  +    PMOD_EXPORT void va_make_error (const char *fmt, va_list args)   {    struct string_builder s;    init_string_builder(&s, 0);    string_builder_vsprintf(&s, fmt, args);    push_string(finish_string_builder(&s));    f_backtrace(0);    f_aggregate(2);   }