/* This function should be called to log a message in the KMOD log. * Arguments: * Message logging level (1, 2, 3, 4) (higher number is lower priority). * Format is the usual printf() format, and the following args are the args that * printf() takes. */ void kmod_log_msg(int level, const char *format, ...) { va_list arg; char date[256]; kstr str, fmt; time_t now; if ((level & global_opts.log_level) != level) return; va_start(arg, format); kstr_init(&fmt); kstr_init(&str); time(&now); strftime(date, 256, "%Y/%m/%d %H:%M:%S", localtime(&now)); kstr_sf(&fmt, "%s : %s", date, format); kstr_sfv(&str, fmt.data, arg); fprintf(global_opts.log_file, "%s", str.data); va_end(arg); kstr_clean(&str); kstr_clean(&fmt); }
void kmo_seterror(const char *format, ...) { /* Make the sprintf(). */ va_list arg; va_start(arg, format); kstr_sfv(&kmo_scratch_str, format, arg); va_end(arg); /* Set the error string. */ kstr_assign_kstr(&kmo_error_str, &kmo_scratch_str); }
void kstr_sf(kstr *self, const char *format, ...) { va_list arg; va_start(arg, format); kstr_sfv(self, format, arg); va_end(arg); }
void kstr_init_sfv(kstr *self, const char *format, va_list args) { kstr_init(self); kstr_sfv(self, format, args); }