📄 main.c
字号:
#include "main.h"wlWindow gwin;int quit=0;int debug;world_t worl;ca_t *g_ca; //global cacas_t *g_cas;dfa_t *g_dfa;dfa_ca_t *g_dc;pat_t *g_pat;dl_t *g_dl;static void run_init_file(char *fn) { int i, j, k; char l[100]; FILE *fp; char *c, *p; if ( !(fp = fopen(fn, "r")) ) { printf("couldn't open '%s', returning\n", fn); return; } while (fgets(l, 100, fp)) { p = strchr(l, '\n'); *p = '\0'; cas_addstr(g_cas, l); cas_addch(g_cas, XK_Return); } fclose(fp);}void print_usage(void) { printf("usage:\n"); printf("\t-f <input file>\n"); printf("\t[-h] help\n");}int main(int argc, char **argv) { char *fn = NULL; /*"samp.input";*/ FILE *fin; int i; int c; extern char *optarg; void *handle1; while ((c = getopt(argc, argv, "f:h")) != -1) { switch(c) { case 'f': fn = strdup(optarg); break; case 'h': default: print_usage(); exit(1); } } if (!(fn)) { print_usage(); exit(1); } /* initial init of CA */ if (!(fin = fopen(fn, "r"))) { printf("couldn't open %s, exiting\n", fn); exit(0); } g_ca = (ca_t *)malloc(sizeof(ca_t)); ca_file_config(g_ca, fin); fclose(fin); //ca_print(g_ca); /* inital init of dfa filter. testing!!! if (!(fin = fopen("conf/dfa/sampo.conf", "r"))) { printf("couldn't open conf/dfa/sampo.conf\n"); exit(0); } */ g_dfa = (dfa_t *)malloc(sizeof(dfa_t)); memset(g_dfa, 0, sizeof(dfa_t)); /* dfa_config(g_dfa, fin); fclose(fin); */ /*dfa_print(g_dfa);*/ /* and finally, the dfa ca structure init, still testing */ g_dc = (dfa_ca_t *)malloc(sizeof(dfa_ca_t)); memset(g_dc, 0, sizeof(dfa_ca_t)); /* dfa_ca_init(g_dc, g_dfa, g_ca); dfa_ca_print(g_dc); */ wlinit(&gwin, argc, argv); worldinit(); glinit(0, &worl, NULL); disp_init(&worl, g_ca); g_cas = (cas_t *)malloc(sizeof(cas_t)); cas_init(g_cas, 5, 40, NULL, 5, 5); /* init of default display lists */ if (!(fin = fopen("conf/display/disp.conf", "r"))) { printf("couldn't open conf/display/disp.conf\n"); exit(0); } g_dl = (dl_t *)malloc(sizeof(dl_t)); dl_readcfg(g_dl, fin); fclose(fin); /* pattern init */ g_pat = (pat_t *)malloc(sizeof(pat_t)); memset(g_pat, 0, sizeof(pat_t)); /* loadable display function handle1 = dlopen("./loadable/display.so", RTLD_LAZY); if (!handle1) { printf("shit: %s\n", dlerror()); } displayfunc = dlsym(handle1, "dyn_displayfunc"); idlefunc = dlsym(handle1, "dyn_idlefunc"); printf("INIT: %i %i %i\n", handle1, displayfunc, idlefunc); if ((!handle1) || (!displayfunc) || (!idlefunc)) { printf("bad load of display.so\n"); exit(1); } */ gwin.g_idle = idlefunc; gwin.g_disp = displayfunc; gwin.g_key = keyfunc; gwin.g_butt = buttfunc; gwin.g_motion = motionfunc; gwin.g_confignotify = configfunc; /* for (i=0; i<128; i++) { printf("%x: %i\n", i, g_ca->r[i]); } printf("nei_num: %i\n", g_ca->nei_num); */ run_init_file(".caglrc"); while (!quit) { wlmain(&gwin); } ca_free(g_ca); dlclose(handle1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -