コード例 #1
0
ファイル: raptor_libxml.c プロジェクト: nevali/raptor
static void
raptor_libxml_error_common(void* user_data, const char *msg, va_list args, 
                           const char *prefix, int is_fatal)
{
  raptor_sax2* sax2 = NULL;
  int prefix_length = strlen(prefix);
  int length;
  char *nmsg;
  size_t msg_len;
  raptor_world* world = NULL;
  raptor_locator* locator = NULL;

  if(user_data) {
    /* Work around libxml2 bug - sometimes the sax2->error
     * returns a user_data, sometimes the userdata
     */
    if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC)
      sax2 = (raptor_sax2*)user_data;
    else
      /* user_data is not userData */
      sax2 = (raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData;
  }

  if(sax2) {
    world = sax2->world;
    locator = sax2->locator;
    
    if(locator)
      raptor_libxml_update_document_locator(sax2, sax2->locator);
  }

  msg_len = strlen(msg);
  length = prefix_length + msg_len + 1;
  nmsg = (char*)RAPTOR_MALLOC(cstring, length);
  if(nmsg) {
    memcpy(nmsg, prefix, prefix_length); /* Do not copy NUL */
    memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
    if(nmsg[length-1] == '\n')
      nmsg[length-1]='\0';
  }

  if(is_fatal)
    raptor_log_error_varargs(world,
                             RAPTOR_LOG_LEVEL_FATAL,
                             locator, 
                             nmsg ? nmsg : msg, 
                             args);
  else
    raptor_log_error_varargs(world,
                             RAPTOR_LOG_LEVEL_ERROR,
                             locator, 
                             nmsg ? nmsg : msg, 
                             args);
  
  if(nmsg)
    RAPTOR_FREE(cstring,nmsg);
}
コード例 #2
0
ファイル: raptor_libxml.c プロジェクト: Kirushanr/audacity
static void
raptor_libxml_error_common(void* user_data, const char *msg, va_list args, 
                           const char *prefix, int is_fatal)
{
  raptor_sax2* sax2=NULL;
  int prefix_length=strlen(prefix);
  int length;
  char *nmsg;

  if(user_data) {
    /* Work around libxml2 bug - sometimes the sax2->error
     * returns a user_data, sometimes the userdata
     */
    if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC)
      sax2=(raptor_sax2*)user_data;
    else
      /* user_data is not userData */
      sax2=(raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData;
  }

  if(sax2->locator)
    raptor_libxml_update_document_locator(sax2, sax2->locator);

  length=prefix_length+strlen(msg)+1;
  nmsg=(char*)RAPTOR_MALLOC(cstring, length);
  if(nmsg) {
    strcpy(nmsg, prefix);
    strcpy(nmsg+prefix_length, msg);
    if(nmsg[length-1]=='\n')
      nmsg[length-1]='\0';
  }

  if(is_fatal)
    raptor_log_error_varargs(RAPTOR_LOG_LEVEL_FATAL,
                             sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_FATAL].handler, 
                             sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_FATAL].user_data,
                             sax2->locator, 
                             nmsg ? nmsg : msg, 
                             args);
  else
    raptor_log_error_varargs(RAPTOR_LOG_LEVEL_ERROR,
                             sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].handler,
                             sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].user_data,
                             sax2->locator, 
                             nmsg ? nmsg : msg, 
                             args);
  
  if(nmsg)
    RAPTOR_FREE(cstring,nmsg);
}
コード例 #3
0
ファイル: raptor_libxml.c プロジェクト: nevali/raptor
void
raptor_libxml_validation_warning(void* user_data, const char *msg, ...) 
{
  va_list args;
  raptor_sax2* sax2 = (raptor_sax2*)user_data;
  int prefix_length = strlen(xml_validation_warning_prefix);
  int length;
  char *nmsg;
  size_t msg_len;
  
  va_start(args, msg);

  raptor_libxml_update_document_locator(sax2, sax2->locator);

  msg_len = strlen(msg);
  length = prefix_length + msg_len + 1;
  nmsg = (char*)RAPTOR_MALLOC(cstring, length);
  if(nmsg) {
    memcpy(nmsg, xml_validation_warning_prefix, prefix_length); /* Do not copy NUL */
    memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
    if(nmsg[length-2] == '\n')
      nmsg[length-2]='\0';
  }

  raptor_log_error_varargs(sax2->world,
                           RAPTOR_LOG_LEVEL_WARN,
                           sax2->locator, 
                           nmsg ? nmsg : msg, 
                           args);
  if(nmsg)
    RAPTOR_FREE(cstring,nmsg);
  va_end(args);
}
コード例 #4
0
ファイル: raptor_libxml.c プロジェクト: nevali/raptor
void
raptor_libxml_generic_error(void* user_data, const char *msg, ...) 
{
  raptor_world* world = (raptor_world*)user_data;
  va_list args;
  const char* prefix = xml_generic_error_prefix;
  int prefix_length = strlen(prefix);
  int length;
  char *nmsg;
  size_t msg_len;
  
  va_start(args, msg);

  msg_len = strlen(msg);
  length = prefix_length + msg_len + 1;
  nmsg = (char*)RAPTOR_MALLOC(cstring, length);
  if(nmsg) {
    memcpy(nmsg, prefix, prefix_length); /* Do not copy NUL */
    memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
    if(nmsg[length-1] == '\n')
      nmsg[length-1]='\0';
  }

  raptor_log_error_varargs(world, RAPTOR_LOG_LEVEL_ERROR,
                           /* locator */ NULL,
                           nmsg ? nmsg : msg, 
                           args);
  
  if(nmsg)
    RAPTOR_FREE(cstring,nmsg);

  va_end(args);
}
コード例 #5
0
ファイル: raptor_libxml.c プロジェクト: Kirushanr/audacity
void
raptor_libxml_validation_warning(void* user_data, const char *msg, ...) 
{
  va_list args;
  raptor_sax2* sax2=(raptor_sax2*)user_data;
  int prefix_length=strlen(xml_validation_warning_prefix);
  int length;
  char *nmsg;

  va_start(args, msg);

  raptor_libxml_update_document_locator(sax2, sax2->locator);

  length=prefix_length+strlen(msg)+1;
  nmsg=(char*)RAPTOR_MALLOC(cstring, length);
  if(nmsg) {
    strcpy(nmsg, xml_validation_warning_prefix);
    strcpy(nmsg+prefix_length, msg);
    if(nmsg[length-2]=='\n')
      nmsg[length-2]='\0';
  }

  raptor_log_error_varargs(RAPTOR_LOG_LEVEL_WARNING,
                           sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_WARNING].handler,
                           sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_WARNING].user_data,
                           sax2->locator, 
                           nmsg ? nmsg : msg, 
                           args);
  if(nmsg)
    RAPTOR_FREE(cstring,nmsg);
  va_end(args);
}
コード例 #6
0
ファイル: raptor_libxml.c プロジェクト: Kirushanr/audacity
void
raptor_libxml_generic_error(void* user_data, const char *msg, ...) 
{
  raptor_error_handlers* error_handlers=(raptor_error_handlers*)user_data;
  va_list args;
  const char* prefix=xml_generic_error_prefix;
  int prefix_length=strlen(prefix);
  int length;
  char *nmsg;

  va_start(args, msg);

  /* no SAX2 and locator from error_handlers */

  length=prefix_length+strlen(msg)+1;
  nmsg=(char*)RAPTOR_MALLOC(cstring, length);
  if(nmsg) {
    strcpy(nmsg, prefix);
    strcpy(nmsg+prefix_length, msg);
    if(nmsg[length-1]=='\n')
      nmsg[length-1]='\0';
  }

  raptor_log_error_varargs(RAPTOR_LOG_LEVEL_ERROR,
                           error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].handler,
                           error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].user_data,
                           error_handlers->locator,
                           nmsg ? nmsg : msg, 
                           args);
  
  if(nmsg)
    RAPTOR_FREE(cstring,nmsg);

  va_end(args);
}
コード例 #7
0
void
raptor_log_error_formatted(raptor_world* world, raptor_log_level level,
                           raptor_locator* locator,
                           const char* message, ...)
{
  va_list arguments;

  va_start(arguments, message);
  raptor_log_error_varargs(world, level, locator, message, arguments);
  va_end(arguments);
}
コード例 #8
0
ファイル: raptor_www.c プロジェクト: nevali/raptor
void
raptor_www_error(raptor_www* www, const char *message, ...) 
{
  va_list arguments;

  va_start(arguments, message);

  raptor_log_error_varargs(www->world,
                           RAPTOR_LOG_LEVEL_ERROR,
                           &www->locator,
                           message, arguments);

  va_end(arguments);
}
コード例 #9
0
ファイル: raptor_sax2.c プロジェクト: JervenBolleman/raptor
/*
 * raptor_sax2_simple_error - Error from a sax2 - Internal
 *
 * Matches the raptor_simple_message_handler API but calls
 * the sax2 error_handler
 */
static void
raptor_sax2_simple_error(void* user_data, const char *message, ...)
{
  raptor_sax2* sax2 = (raptor_sax2*)user_data;
  va_list arguments;

  va_start(arguments, message);

  if(sax2) {
    raptor_log_error_varargs(sax2->world,
                             RAPTOR_LOG_LEVEL_ERROR,
                             sax2->locator,
                             message, arguments);
  }
  
  va_end(arguments);
}
コード例 #10
0
ファイル: raptor_libxml.c プロジェクト: nevali/raptor
static void
raptor_libxml_warning(void* user_data, const char *msg, ...) 
{
  raptor_sax2* sax2 = NULL;
  va_list args;
  int prefix_length = strlen(xml_warning_prefix);
  int length;
  char *nmsg;
  size_t msg_len;

  /* Work around libxml2 bug - sometimes the sax2->error
   * returns a ctx, sometimes the userdata
   */
  if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC)
    sax2 = (raptor_sax2*)user_data;
  else
    /* user_data is not userData */
    sax2 = (raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData;

  va_start(args, msg);

  raptor_libxml_update_document_locator(sax2, sax2->locator);

  msg_len = strlen(msg);
  length = prefix_length + msg_len + 1;
  nmsg = (char*)RAPTOR_MALLOC(cstring, length);
  if(nmsg) {
    memcpy(nmsg, xml_warning_prefix, prefix_length); /* Do not copy NUL */
    memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
    if(nmsg[length-2] == '\n')
      nmsg[length-2]='\0';
  }
  
  raptor_log_error_varargs(sax2->world,
                           RAPTOR_LOG_LEVEL_WARN,
                           sax2->locator, 
                           nmsg ? nmsg : msg, 
                           args);
  if(nmsg)
    RAPTOR_FREE(cstring,nmsg);
  va_end(args);
}
コード例 #11
0
/*
 * raptor_sax2_simple_error - Error from a sax2 - Internal
 *
 * Matches the raptor_simple_message_handler API but calls
 * the sax2 error_handler
 */
static void
raptor_sax2_simple_error(void* user_data, const char *message, ...)
{
  raptor_sax2* sax2=(raptor_sax2*)user_data;
  va_list arguments;

  va_start(arguments, message);

  if(sax2) {
    raptor_log_level level=RAPTOR_LOG_LEVEL_ERROR;
    raptor_message_handler_closure* cl;
    cl=&sax2->error_handlers->handlers[level];
    raptor_log_error_varargs(sax2->world,
                             level, cl->handler, cl->user_data,
                             sax2->locator,
                             message, arguments);
  }
  
  va_end(arguments);
}