void
raptor_log_error_varargs(raptor_world* world, raptor_log_level level,
                         raptor_locator* locator,
                         const char* message, va_list arguments)
{
  char *buffer = NULL;
  size_t length;
  
  if(level == RAPTOR_LOG_LEVEL_NONE)
    return;

  if(world->internal_ignore_errors)
    return;

  length = raptor_vasprintf(&buffer, message, arguments);
  if(!buffer) {
    if(locator && world) {
      raptor_locator_print(locator, stderr);
      fputc(' ', stderr);
    }
    fputs("raptor ", stderr);
    fputs(raptor_log_level_labels[level], stderr);
    fputs(" - ", stderr);
    vfprintf(stderr, message, arguments);
    fputc('\n', stderr);
    return;
  }

  if(length >= 1 && buffer[length-1] == '\n')
    buffer[length-1]='\0';
  
  raptor_log_error(world, level, locator, buffer);

  RAPTOR_FREE(char*, buffer);
}
Example #2
0
void
rasqal_log_error_varargs(rasqal_world* world, raptor_log_level level,
                         raptor_locator* locator,
                         const char* message, va_list arguments)
{
  char *buffer;
  size_t length;
  raptor_log_message logmsg;
  raptor_log_handler handler = world->log_handler;
  void* handler_data = world->log_handler_user_data;
  
  if(level == RAPTOR_LOG_LEVEL_NONE)
    return;

  buffer = NULL;
  if(raptor_vasprintf(&buffer, message, arguments) < 0)
    buffer = NULL;

  if(!buffer) {
    if(locator) {
      raptor_locator_print(locator, stderr);
      fputc(' ', stderr);
    }
    fputs("rasqal ", stderr);
    fputs(rasqal_log_level_labels[level], stderr);
    fputs(" - ", stderr);
    vfprintf(stderr, message, arguments);
    fputc('\n', stderr);
    return;
  }

  length=strlen(buffer);
  if(buffer[length-1]=='\n')
    buffer[length-1]='\0';
  
  if(handler) {
    /* This is the single place in rasqal that the user error handler
     * functions are called.
     */
    /* raptor2 raptor_log_handler */
    logmsg.code = -1; /* no information to put as code */
    logmsg.level = level;
    logmsg.locator = locator;
    logmsg.text = buffer;
    handler(handler_data, &logmsg);
  } else {
    if(locator) {
      raptor_locator_print(locator, stderr);
      fputc(' ', stderr);
    }
    fputs("rasqal ", stderr);
    fputs(rasqal_log_level_labels[level], stderr);
    fputs(" - ", stderr);
    fputs(buffer, stderr);
    fputc('\n', stderr);
  }

  RASQAL_FREE(char*, buffer);
}
Example #3
0
/**
 * raptor_vsnprintf:
 * @format: printf-style format string
 * @arguments: variable arguments list
 * 
 * Format output for a variable arguments list into a newly allocated buffer
 *
 * @Deprecated: This does not actually conform to vsnprintf's calling
 * convention and does not return the allocated buffer length.  Use
 * raptor_vsnprintf2() or raptor_vasprintf() instead.
 *
 * Return value: a newly allocated string as the formatted result or NULL on failure
 **/
char*
raptor_vsnprintf(const char *format, va_list arguments) 
{
  int len;
  char *buffer = NULL;

  RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(format, char*, NULL);

  len = raptor_vasprintf(&buffer, format, arguments);
  if(len < 0)
    return NULL;
  
  return buffer;
}