}
}
+ANN static m_str plug_dir(void) {
+ const m_str home = getenv("HOME");
+ const size_t sz = strlen(home);
+ const m_str pdir = "/.gwplug";
+ m_str plug_dir = (m_str)xmalloc(sz + strlen(pdir) + 1);
+ strcpy(plug_dir, home);
+ strcpy(plug_dir + sz, pdir);
+ return plug_dir;
+}
+
ANN static void arg_init(Arg* arg) {
vector_init(&arg->add);
vector_init(&arg->lib);
vector_init(&arg->mod);
vector_init(&arg->config);
- vector_add(&arg->lib, (vtype)GWPLUG_DIR);
+// vector_add(&arg->lib, (vtype)GWPLUG_DIR);
+ vector_add(&arg->lib, (vtype)plug_dir());
}
ANN void arg_release(Arg* arg) {
vector_release(&arg->add);
+ xfree((m_str)vector_front(&arg->lib));
vector_release(&arg->lib);
vector_release(&arg->mod);
config_end(&arg->config);
#include<locale.h>
#endif
-static jmp_buf jmp;
-static struct Gwion_ gwion;
+//static jmp_buf jmp;
+//static struct Gwion_ gwion;
static void sig(int unused NUSED) {
- gwion.vm->bbq->is_running = 0;
- longjmp(jmp, 1);
+// gwion.vm->bbq->is_running = 0;
+// longjmp(jmp, 1);
+#ifdef BUILD_ON_WINDOWS
+ exit(EXIT_FAILURE);
+#else
+ pthread_exit(NULL);
+#endif
}
int main(int argc, char** argv) {
Arg arg = { .argc=argc, .argv=argv, .loop=-1 };
signal(SIGINT, sig);
signal(SIGTERM, sig);
+ struct Gwion_ gwion = {};
const m_bool ini = gwion_ini(&gwion, &arg);
arg_release(&arg);
- if(setjmp(jmp) == 0 && ini > 0)
+ if(/*setjmp(jmp) == 0 && */ini > 0)
gwion_run(&gwion);
gwion_end(&gwion);
+ THREAD_RETURN(EXIT_SUCCESS);
return EXIT_SUCCESS;
}