int konoha_main(konoha_t konoha, int argc, const char **argv) { CTX ctx = (CTX)konoha; int i, ret = 0, n = knh_parseopt(ctx, argc, argv); knh_linkDynamicReadline(ctx); knh_linkDynamicRegex(ctx); knh_linkDynamicIconv(ctx); for (i = 0; konoha_modules[i].init != NULL; ++i) { konoha_modules[i].init(argc, n, argv); } argc = argc - n; argv = argv + n; if(isActorMode) { char portstr[6] = {0}; knh_snprintf(portstr, sizeof(portstr), "%d", port); const char *argv_actor[3] = {"actsrv", portstr, NULL}; argc = 2; argv = argv_actor; } knh_parsearg(ctx, argc, argv); if(argc == 0) { ret = konoha_shell(ctx, NULL); } else if(isMPIMode) { kMPI_argv0 = argv[0]; knh_loadPackage(ctx, STEXT("konoha.mpi")); knh_eval(ctx, "using konoha.mpi.*; int main(String[] args) { new TaskScript().exec(MPI.vload()); MPI.vmainloop(); return 0 }", 1, NULL); ret = knh_runMain(ctx, argc, argv); } else { if(knh_startScript(ctx, argv[0]) == K_CONTINUE && !knh_isCompileOnly(ctx)) { ret = knh_runMain(ctx, argc, argv); if(isInteractiveMode) { konoha_shell(ctx, NULL); } } } for (i = 0; konoha_modules[i].exit != NULL; ++i) { konoha_modules[i].exit(); } return ret; }
static knh_String_t *Gamma_vperror(CTX ctx, int pe, const char *fmt, va_list ap) { knh_String_t *msg = TS_EMPTY; int isPRINT = (pe <= KC_DWARN) ? 1 : 0; if(pe != KC_DEBUG && (CTX_isInteractive(ctx) || knh_isCompileOnly(ctx))) { isPRINT = 1; } if(Gamma_isQuiet(ctx->gma) || ctx->gma->uline == 0) { isPRINT = 0; } //DBG_P("/*isPRINT=%d*/ uline=%d", isPRINT, ctx->gma->uline); if(isPRINT == 1) { knh_cwb_t cwbbuf, *cwb = knh_cwb_open(ctx, &cwbbuf); knh_write_uline(ctx, cwb->w, ctx->gma->uline); knh_write_ascii(ctx, cwb->w, KC__(pe)); knh_vprintf(ctx, cwb->w, fmt, ap); msg = knh_cwb_newString(ctx, cwb); knh_Array_add(ctx, DP(ctx->gma)->errmsgs, msg); fprintf(stderr, "%s - %s%s\n", TERM_BNOTE(ctx, pe), S_tochar(msg), TERM_ENOTE(ctx, pe)); } return msg; }
int konoha_main(konoha_t konoha, int argc, const char **argv) { CTX ctx = (CTX)konoha; int i, ret = 0, n = knh_parseopt(ctx, argc, argv); knh_linkDynamicReadline(ctx); knh_linkDynamicRegex(ctx); knh_linkDynamicIconv(ctx); for (i = 0; konoha_modules[i].init != NULL; ++i) { konoha_modules[i].init(argc, n, argv); } argc = argc - n; argv = argv + n; if(isActorMode) { char portstr[6] = {0}; knh_snprintf(portstr, sizeof(portstr), "%d", port); const char *argv_actor[3] = {"actsrv", portstr, NULL}; argc = 2; argv = argv_actor; } knh_parsearg(ctx, argc, argv); if(argc == 0) { ret = konoha_shell(ctx, NULL); } else { if(knh_startScript(ctx, argv[0]) == K_CONTINUE && !knh_isCompileOnly(ctx)) { ret = knh_runMain(ctx, argc, argv); if(isInteractiveMode) { konoha_shell(ctx, NULL); } } } for (i = 0; konoha_modules[i].exit != NULL; ++i) { konoha_modules[i].exit(); } return ret; }