_Use_decl_annotations_ void writeAPIlog(Config* config, const char* fmt, ...) { va_list ap; memset(&ap, 0, sizeof(ap)); ReadWriteLock_AcquireRead(&config->lock); va_start(ap, fmt); Vfprintf(config->apilogfile, fmt, ap); va_end(ap); fprintf(config->apilogfile, "\r\n"); FlushLog(config->apilogfile); ReadWriteLock_ReleaseRead(&config->lock); }
//------------------------------------------------------------------ void Verbose::Warn(const char *class_name, const char *func_name, const char *format, ...) { if(!active[VERBOSE_WARN_LEVEL]) return; va_list args; va_start(args, format); printf("WARNING %s::%s :\n\t", class_name, func_name); vprintf(format, args); FILE *fp; char *filename = "phys.warn"; if( (fp = Fopen(filename, "a")) == NULL ) { ERR.FileA("Verbose","Warn", filename); } Fprintf(fp,"WARNING %s::%s :\n\t", class_name, func_name); Vfprintf(fp, format, args); Fclose(fp); }
//------------------------------------------------------------------ void Error::General(const char *class_name, const char *func_name, const char *format, // format of message ...) // argument list of message { FILE *fp; error_func_name = "General"; va_list args; va_start(args, format); printf(error_string[general], class_name, func_name); vprintf(format, args); if( (fp = Fopen(ALL_NODES,error_file_name, "w")) == NULL ) { printf(error_string[file_w], error_class_name, error_func_name, error_file_name); Exit(exit_value[file_w]); } Fprintf(fp, error_string[general], class_name, func_name); Vfprintf(fp, format, args); Fclose(fp); Exit(exit_value[general]); }
/** * Dumps formatted string to debug console and stderr if such is available */ int PRINT_Stderr(Str format, va_list va) { int n = Vfprintf(stderr, format, va); fflush(stderr); return n; }
/** * Dumps formatted string to debug console and stdout if such is available */ int PRINT_Stdout(Str format, va_list va) { int n = Vfprintf(stdout, format, va); fflush(stdout); return n; }