void os_reportSetApiInfoDescription( const char *description, ...) { os_reportInfo *report; va_list args; char * descriptionCopy = NULL; /* since description may point to report->description*/ if (description) { descriptionCopy = os_strdup(description); } report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO); if (report) { if (report->description) { os_free(report->description); report->description = NULL; } if (descriptionCopy) { report->description = (char*) os_malloc(OS_MAX_DESCRIPTIONSIZE); if (report->description) { va_start(args, description); os_vsnprintf(report->description, OS_MAX_DESCRIPTIONSIZE-1, descriptionCopy, args); va_end(args); } } } os_free(descriptionCopy); }
static void os_defaultDiag ( const char *cluster, os_diagLevel level, const char *description, va_list args) { os_time ostime; char extended_description[512]; char procIdentity[64]; char threadIdentity[64]; char node[64]; ostime = os_timeGet(); os_vsnprintf (extended_description, sizeof(extended_description)-1, description, args); extended_description [sizeof(extended_description)-1] = '\0'; os_gethostname (node, sizeof(node)); os_threadFigureIdentity (threadIdentity, sizeof (threadIdentity)-1); threadIdentity [sizeof (threadIdentity)-1] = '\0'; os_procFigureIdentity (procIdentity, sizeof (procIdentity)-1); procIdentity [sizeof (procIdentity)-1] = '\0'; printf ( "Diag - %s:%s:%s - T:%d.%9.9d L:%s C:%s D:%s\n", node, procIdentity, threadIdentity, ostime.tv_sec, ostime.tv_nsec, os_diagLevelText[level], cluster, extended_description); }
static void os_reportSetApiInfoRec( const char *reportContext, const char *sourceLine, const char *callStack, os_int32 reportCode, const char *description, va_list args) { os_reportInfo *report; char * descriptionCopy = NULL; /* since description may point to report->description*/ if (description) { descriptionCopy = os_strdup(description); } report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO); if (report == NULL) { report = (os_reportInfo *)os_threadMemMalloc(OS_THREAD_API_INFO, sizeof(os_reportInfo)); if (report) memset(report, 0, sizeof(os_reportInfo)); } if (report) { if (report->reportContext) { os_free(report->reportContext); report->reportContext = NULL; } if (reportContext) { report->reportContext = os_strdup(reportContext); } if (report->sourceLine) { os_free(report->sourceLine); report->sourceLine = NULL; } if (sourceLine) { report->sourceLine = os_strdup(sourceLine); } if (report->callStack) { os_free(report->callStack); report->callStack = NULL; } if (callStack) { report->callStack = os_strdup(callStack); } report->reportCode = reportCode; if (report->description) { os_free(report->description); report->description = NULL; } if (descriptionCopy) { report->description = (char*) os_malloc(OS_MAX_DESCRIPTIONSIZE); if (report->description) { os_vsnprintf(report->description, OS_MAX_DESCRIPTIONSIZE-1, descriptionCopy, args); } } } os_free(descriptionCopy); }
static void exa_perf_instance_print(const char *fmt, ...) { va_list ap; char log[EXALOG_MSG_MAX + 1]; va_start(ap, fmt); os_vsnprintf(log, EXALOG_MSG_MAX + 1, fmt, ap); va_end(ap); exalog_info("%s", log); }
static void nn_vlogb (struct thread_state1 *self, const char *fmt, va_list ap) { int n, trunc = 0; size_t nrem; logbuf_t lb; if (*fmt == 0) return; if (self && self->lb) lb = self->lb; else { lb = &gv.static_logbuf; if (gv.static_logbuf_lock_inited) { /* not supposed to be multi-threaded when mutex not initialized */ os_mutexLock (&gv.static_logbuf_lock); } } nrem = lb->bufsz - lb->pos; if (nrem > 0) { n = os_vsnprintf (lb->buf + lb->pos, nrem, fmt, ap); if (n >= 0 && (size_t) n < nrem) lb->pos += (size_t) n; else { lb->pos += nrem; trunc = 1; } if (trunc) { static const char msg[] = "(trunc)\n"; const size_t msglen = sizeof (msg) - 1; assert (lb->pos <= lb->bufsz); assert (lb->pos >= msglen); memcpy (lb->buf + lb->pos - msglen, msg, msglen); } } if (fmt[strlen (fmt) - 1] == '\n') { logbuf_flush_real (self, lb); } if (lb == &gv.static_logbuf && gv.static_logbuf_lock_inited) { os_mutexUnlock (&gv.static_logbuf_lock); } }
static void d_doPrint( d_configuration config, const char* format, va_list args) { char description[512]; if(config->tracingOutputFile){ os_vsnprintf(description, sizeof(description)-1, format, args); description [sizeof(description)-1] = '\0'; fprintf(config->tracingOutputFile, "%s", description); fflush(config->tracingOutputFile); if(config->tracingSynchronous){ os_fsync(config->tracingOutputFile); } } }
void DLRL_Exception_format( DLRL_Exception *_this, LOC_long exceptionID, char *exceptionName, char *format, va_list args) { char *p; int space = DLRL_MAX_EXCEPTION_MESSAGE_SIZE; int len; assert (_this); assert(exceptionName); assert(format); _this->exceptionID = exceptionID; p = _this->exceptionMessage; len = strlen(_this->exceptionMessage); space = DLRL_MAX_EXCEPTION_MESSAGE_SIZE - len; snprintf(p + len, space, "Exception %s --\n", exceptionName); p[DLRL_MAX_EXCEPTION_MESSAGE_SIZE - 1] = '\0'; len = strlen(p); space = DLRL_MAX_EXCEPTION_MESSAGE_SIZE - len; if (format) { snprintf(p + len, space, " "); p[DLRL_MAX_EXCEPTION_MESSAGE_SIZE - 1] = '\0'; len = strlen(p); space = DLRL_MAX_EXCEPTION_MESSAGE_SIZE - len; os_vsnprintf(p + len, space, format, args); p[DLRL_MAX_EXCEPTION_MESSAGE_SIZE - 1] = '\0'; len = strlen(p); space = DLRL_MAX_EXCEPTION_MESSAGE_SIZE - len; snprintf(p + len, space, "\n"); p[DLRL_MAX_EXCEPTION_MESSAGE_SIZE - 1] = '\0'; } }
void sd_stringAddImpl ( sd_string str, const c_char *format, va_list args) { c_ulong l; c_bool ready = FALSE; while ( !ready ) { l = os_vsnprintf(SD_POINTER(str), SD_FREE(str), format, args); if ( l < SD_FREE(str) ) { str->index += l; ready = TRUE; } else { sd_stringRealloc(str); if ( l >= SD_FREE(str) ) { ready = TRUE; } } } }
void os_report( os_reportType reportType, const char *reportContext, const char *fileName, os_int32 lineNo, os_int32 reportCode, const char *description, ...) { va_list args; unsigned int i; const char *file_name = fileName; const char *ptr; char xml_description[1024]; char extended_description[1024]; char threadIdentity[64]; char procIdentity[256]; struct os_reportEventV1_s eventDetails = { OS_REPORT_EVENT_V1, /* version */ 0, /* reportType */ NULL, /* reportContext */ NULL, /* fileName */ 0, /* lineNo */ 0, /* code */ NULL, /*description */ NULL, /* threadDesc */ NULL /*processDesc */ }; #ifdef WIN32 char file_separator = '\\'; #else char file_separator = '/'; #endif eventDetails.description = (char*) &extended_description; eventDetails.threadDesc = (char*) &threadIdentity; eventDetails.processDesc = (char*) &procIdentity; if (reportType < os_reportVerbosity) { /* This level / type of report is below the process output suppression threshold. */ return; } va_start(args, description); os_vsnprintf(extended_description, sizeof(extended_description)-1, description, args); va_end(args); extended_description[sizeof(extended_description)-1] = '\0'; os_threadFigureIdentity(threadIdentity, sizeof (threadIdentity)-1); threadIdentity[sizeof (threadIdentity)-1] = '\0'; os_procFigureIdentity(procIdentity, sizeof (procIdentity)-1); procIdentity[sizeof (procIdentity)-1] = '\0'; eventDetails.reportType = reportType; eventDetails.reportContext = reportContext; eventDetails.lineNo = lineNo; eventDetails.code = reportCode; for (ptr=fileName; *ptr!=0; ptr++) { if (*ptr == file_separator) { file_name = (char *)((os_address)ptr+1); } } eventDetails.fileName = file_name; if (os_reportServicesCount != 0) { for (i = 0; i < OS_REPORTSERVICES_MAX; i++) { if (os_reportServices[i].os_reportContext != 0) { /* Must call va_start and va_end before and after each call to the plugged in services */ va_start(args, description); os_reportServices[i].os_reportService(os_reportServices[i].os_reportContext, reportType, reportContext, file_name, lineNo, reportCode, description, args); va_end(args); } } } if (reportPluginAdmin != NULL){ if (xmlReportPluginsCount > 0) { /* print format the XML string only if at least one plugin * has been registered with an XML Report method */ os_sprintf (xml_description, "<%s>\n" "<DESCRIPTION>%s</DESCRIPTION>\n" "<CONTEXT>%s</CONTEXT>\n" "<FILE>%s</FILE>\n" "<LINE>%d</LINE>\n" "<CODE>%d</CODE>\n" "</%s>\n", os_reportTypeText[reportType], extended_description, reportContext, file_name, lineNo, reportCode, os_reportTypeText[reportType]); xml_description[sizeof(xml_description)-1] = '\0'; } for (i = 0; i < reportPluginAdmin->size; i++){ if (reportPluginAdmin->reportArray[i] != NULL) { if (reportPluginAdmin->reportArray[i]->report_symbol != NULL) { reportPluginAdmin->reportArray[i]->report_symbol (reportPluginAdmin->reportArray[i]->plugin_context, xml_description); } if (reportPluginAdmin->reportArray[i]->typedreport_symbol != NULL) { reportPluginAdmin->reportArray[i]->typedreport_symbol (reportPluginAdmin->reportArray[i]->plugin_context, (os_reportEvent) &eventDetails); } } } } if (doDefault) { os_defaultReport(&eventDetails); } va_start(args, description); if (reportType == OS_API_INFO) { char sourceLine[512]; snprintf(sourceLine, sizeof(sourceLine), "%s::%d", file_name, lineNo); sourceLine[sizeof(sourceLine)-1] = '\0'; os_reportSetApiInfoRec(reportContext, sourceLine, NULL, reportCode, description, args); } va_end(args); }