void knh_makeEvidence(Ctx *ctx, const char *ns, const char *event, int p, const char *fmt, ...) { if(p > LOG_WARNING && !knh_isSystemVerbose()) return; va_list ap; va_start(ap , fmt); if(fmt[0] == '*') { char newfmt[512]; knh_snprintf(newfmt, sizeof(newfmt), K_EVENT_FORMAT "%s", ns, event, fmt+1); ctx->share->ebiSPI->vsyslog(p, newfmt, ap); } else { DBG_ASSERT(ctx->bufa != NULL); knh_cwb_t cwbbuf, *cwb = knh_cwb_open(ctx, &cwbbuf); knh_printf(ctx, cwb->w, K_EVENT_FORMAT, ns, event); if(ctx->gma != NULL && SP(ctx->gma)->line != 0) { knh_write_uline(ctx, cwb->w, SP(ctx->gma)->uri, SP(ctx->gma)->line); } knh_vprintf(ctx, cwb->w, fmt, ap); ctx->share->ebiSPI->syslog(p, knh_cwb_tochar(ctx, cwb)); knh_cwb_clear(cwb, 0); } va_end(ap); if(p == LOG_EMERG || p == LOG_CRIT) { #if defined(K_USING_DEBUG) DBG_ABORT(); #endif knh_exit(ctx, 0); } }
const char* knh_ospath(CTX ctx, knh_path_t *ph) { knh_uchar_t *ubuf = P_ubuf(ph); DBG_ASSERT(ubuf[ph->plen] == 0); if(!ph->isRealPath) { int hasUTF8 = 0; size_t i; for(i = ph->pbody; i < ph->plen; i++) { int ch = ubuf[i]; if(ch == '/' || ch == '\\') { ubuf[i] = K_FILESEPARATOR; } if(ch > 127) hasUTF8 = 1; } if(hasUTF8) { KNH_TODO("multibytes file path"); } { knh_cwb_t cwbbuf, *cwb = knh_cwb_copy(ctx, &cwbbuf, ph, 0); const char *p = knh_realpath(ctx, knh_cwb_tochar(ctx, cwb), ph); knh_cwb_close(cwb); return p; // p is NULL if not found; } } return P_text(ph) + ph->pbody; }
knh_String_t* knh_getPropertyNULL(Ctx *ctx, knh_bytes_t key) { if(knh_bytes_startsWith(key, STEXT("env."))) { knh_cwb_t cwbbuf, *cwb = knh_cwb_open(ctx, &cwbbuf); knh_cwb_nzenvkey(ctx, cwb, knh_bytes_last(key, 4)); char *v = knh_getenv(knh_cwb_tochar(ctx, cwb)); knh_cwb_close(cwb); if(v == NULL) return NULL; return new_S(ctx, B(v)); } return (knh_String_t*)knh_DictMap_getNULL(ctx, DP(ctx->sys)->props, key); }
static void knh_vsyslog(Ctx *ctx, int p, const char *fmt, va_list ap) { if(p > LOG_WARNING && !knh_isSystemVerbose()) return; #ifdef KONOHA_ON_LKM //TODO_IDE(); vprintk(fmt, ap); #else if(ctx == NULL) { fprintf(stderr, "konoha[%s] ", LOG__(p)); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); } else { knh_cwb_t cwbbuf, *cwb = knh_cwb_open(ctx, &cwbbuf); knh_printf(ctx, cwb->w, "konoha[%s] ", LOG__(p)); knh_vprintf(ctx, cwb->w, fmt, ap); fprintf(stderr, "%s\n", knh_cwb_tochar(ctx, cwb)); knh_cwb_clear(cwb, 0); } #endif }