int owl_keyhandler_init(owl_keyhandler *kh) { if (0 != owl_dict_create(&kh->keymaps)) return(-1); kh->active = NULL; owl_keyhandler_reset(kh); return(0); }
int owl_dict_regtest(void) { owl_dict d; owl_list l; int numfailed=0; char *av="aval", *bv="bval", *cv="cval", *dv="dval"; printf("# BEGIN testing owl_dict\n"); FAIL_UNLESS("create", 0==owl_dict_create(&d)); FAIL_UNLESS("insert b", 0==owl_dict_insert_element(&d, "b", bv, owl_dict_noop_delete)); FAIL_UNLESS("insert d", 0==owl_dict_insert_element(&d, "d", dv, owl_dict_noop_delete)); FAIL_UNLESS("insert a", 0==owl_dict_insert_element(&d, "a", av, owl_dict_noop_delete)); FAIL_UNLESS("insert c", 0==owl_dict_insert_element(&d, "c", cv, owl_dict_noop_delete)); FAIL_UNLESS("reinsert d (no replace)", -2==owl_dict_insert_element(&d, "d", dv, 0)); FAIL_UNLESS("find a", av==owl_dict_find_element(&d, "a")); FAIL_UNLESS("find b", bv==owl_dict_find_element(&d, "b")); FAIL_UNLESS("find c", cv==owl_dict_find_element(&d, "c")); FAIL_UNLESS("find d", dv==owl_dict_find_element(&d, "d")); FAIL_UNLESS("find e (non-existent)", NULL==owl_dict_find_element(&d, "e")); FAIL_UNLESS("remove d", dv==owl_dict_remove_element(&d, "d")); FAIL_UNLESS("find d (post-removal)", NULL==owl_dict_find_element(&d, "d")); FAIL_UNLESS("get_size", 3==owl_dict_get_size(&d)); FAIL_UNLESS("get_keys", 0==owl_dict_get_keys(&d, &l)); FAIL_UNLESS("get_keys result size", 3==owl_list_get_size(&l)); /* these assume the returned keys are sorted */ FAIL_UNLESS("get_keys result val",0==strcmp("a",owl_list_get_element(&l,0))); FAIL_UNLESS("get_keys result val",0==strcmp("b",owl_list_get_element(&l,1))); FAIL_UNLESS("get_keys result val",0==strcmp("c",owl_list_get_element(&l,2))); owl_list_cleanup(&l, owl_free); owl_dict_cleanup(&d, NULL); /* if (numfailed) printf("*** WARNING: failures encountered with owl_dict\n"); */ printf("# END testing owl_dict (%d failures)\n", numfailed); return(numfailed); }
int owl_filter_regtest(void) { int numfailed=0; owl_message m; owl_filter *f1, *f2, *f3, *f4, *f5; owl_dict_create(&g.filters); g.filterlist = NULL; owl_message_init(&m); owl_message_set_type_zephyr(&m); owl_message_set_direction_in(&m); owl_message_set_class(&m, "owl"); owl_message_set_instance(&m, "tester"); owl_message_set_sender(&m, "owl-user"); owl_message_set_recipient(&m, "joe"); owl_message_set_attribute(&m, "foo", "bar"); #define TEST_FILTER(f, e) do { \ numtests++; \ numfailed += owl_filter_test_string(f, &m, e); \ } while(0) TEST_FILTER("true", 1); TEST_FILTER("false", 0); TEST_FILTER("( true )", 1); TEST_FILTER("not false", 1); TEST_FILTER("( true ) or ( false )", 1); TEST_FILTER("true and false", 0); TEST_FILTER("( true or true ) or ( ( false ) )", 1); TEST_FILTER("class owl", 1); TEST_FILTER("class ^owl$", 1); TEST_FILTER("instance test", 1); TEST_FILTER("instance ^test$", 0); TEST_FILTER("instance ^tester$", 1); TEST_FILTER("foo bar", 1); TEST_FILTER("class owl and instance tester", 1); TEST_FILTER("type ^zephyr$ and direction ^in$ and ( class ^owl$ or instance ^owl$ )", 1); /* Order of operations and precedence */ TEST_FILTER("not true or false", 0); TEST_FILTER("true or true and false", 0); TEST_FILTER("true and true and false or true", 1); TEST_FILTER("false and false or true", 1); TEST_FILTER("true and false or false", 0); f1 = owl_filter_new_fromstring("f1", "class owl"); owl_global_add_filter(&g, f1); TEST_FILTER("filter f1", 1); owl_global_remove_filter(&g, "f1"); /* Test recursion prevention */ FAIL_UNLESS("self reference", (f2 = owl_filter_new_fromstring("test", "filter test")) == NULL); owl_filter_delete(f2); /* mutual recursion */ f3 = owl_filter_new_fromstring("f3", "filter f4"); owl_global_add_filter(&g, f3); FAIL_UNLESS("mutual recursion", (f4 = owl_filter_new_fromstring("f4", "filter f3")) == NULL); owl_global_remove_filter(&g, "f3"); owl_filter_delete(f4); /* support referencing a filter several times */ FAIL_UNLESS("DAG", (f5 = owl_filter_new_fromstring("dag", "filter f1 or filter f1")) != NULL); owl_filter_delete(f5); return 0; }
void owl_variable_dict_setup(owl_vardict *vd) { owl_dict_create(vd); owl_variable_add_defaults(vd); }
void owl_global_init(owl_global *g) { char *cd; const char *homedir; #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif #if !GLIB_CHECK_VERSION(2, 31, 0) g_thread_init(NULL); #endif owl_select_init(); g->lines=LINES; g->cols=COLS; /* We shouldn't need this if we initialize lines and cols before the first * owl_window_get_screen, but to be safe, we synchronize. */ owl_window_resize(owl_window_get_screen(), g->lines, g->cols); g->context_stack = NULL; owl_global_push_context(g, OWL_CTX_STARTUP, NULL, NULL, NULL); g->curmsg=0; g->topmsg=0; g->markedmsgid=-1; g->startupargs=NULL; owl_variable_dict_setup(&(g->vars)); g->rightshift=0; g->pw = NULL; g->vw = NULL; g->tw = NULL; owl_keyhandler_init(&g->kh); owl_keys_setup_keymaps(&g->kh); owl_dict_create(&(g->filters)); g->filterlist = NULL; g->puntlist = g_ptr_array_new(); g->messagequeue = g_queue_new(); owl_dict_create(&(g->styledict)); g->curmsg_vert_offset=0; g->resizepending=0; g->direction=OWL_DIRECTION_DOWNWARDS; owl_fmtext_init_colorpair_mgr(&(g->cpmgr)); g->debug=OWL_DEBUG; owl_regex_init(&g->search_re); g->starttime=time(NULL); /* assumes we call init only a start time */ g->lastinputtime=g->starttime; g->newmsgproc_pid=0; owl_global_set_config_format(g, 0); owl_global_set_no_have_config(g); owl_history_init(&(g->msghist)); owl_history_init(&(g->cmdhist)); g->nextmsgid=0; /* Fill in some variables which don't have constant defaults */ /* glib's g_get_home_dir prefers passwd entries to $HOME, so we * explicitly check getenv first. */ homedir = getenv("HOME"); if (!homedir) homedir = g_get_home_dir(); g->homedir = g_strdup(homedir); g->confdir = NULL; g->startupfile = NULL; cd = g_build_filename(g->homedir, OWL_CONFIG_DIR, NULL); owl_global_set_confdir(g, cd); g_free(cd); g->msglist = owl_messagelist_new(); _owl_global_init_windows(g); g->aim_screenname=NULL; g->aim_screenname_for_filters=NULL; g->aim_loggedin=0; owl_buddylist_init(&(g->buddylist)); g->havezephyr=0; g->haveaim=0; g->ignoreaimlogin=0; owl_global_set_no_doaimevents(g); owl_errqueue_init(&(g->errqueue)); owl_zbuddylist_create(&(g->zbuddies)); g->zaldlist = NULL; g->pseudologin_notify = 0; owl_message_init_fmtext_cache(); g->kill_buffer = NULL; g->interrupt_count = 0; #if GLIB_CHECK_VERSION(2, 31, 0) g_mutex_init(&g->interrupt_lock); #else g->interrupt_lock = g_mutex_new(); #endif }
int owl_variable_dict_setup(owl_vardict *vd) { owl_variable *var, *cur; if (owl_dict_create(vd)) return(-1); for (var = variables_to_init; var->name != NULL; var++) { cur = owl_malloc(sizeof(owl_variable)); memcpy(cur, var, sizeof(owl_variable)); switch (cur->type) { case OWL_VARIABLE_OTHER: cur->set_fn(cur, cur->pval_default); break; case OWL_VARIABLE_STRING: if (!cur->validate_fn) cur->validate_fn = owl_variable_string_validate_default; if (!cur->set_fn) cur->set_fn = owl_variable_string_set_default; if (!cur->set_fromstring_fn) cur->set_fromstring_fn = owl_variable_string_set_fromstring_default; if (!cur->get_fn) cur->get_fn = owl_variable_get_default; if (!cur->get_tostring_fn) cur->get_tostring_fn = owl_variable_string_get_tostring_default; if (!cur->free_fn) cur->free_fn = owl_variable_free_default; cur->set_fn(cur, cur->pval_default); break; case OWL_VARIABLE_BOOL: if (!cur->validate_fn) cur->validate_fn = owl_variable_bool_validate_default; if (!cur->set_fn) cur->set_fn = owl_variable_bool_set_default; if (!cur->set_fromstring_fn) cur->set_fromstring_fn = owl_variable_bool_set_fromstring_default; if (!cur->get_fn) cur->get_fn = owl_variable_get_default; if (!cur->get_tostring_fn) cur->get_tostring_fn = owl_variable_bool_get_tostring_default; if (!cur->free_fn) cur->free_fn = owl_variable_free_default; cur->val = owl_malloc(sizeof(int)); cur->set_fn(cur, &cur->ival_default); break; case OWL_VARIABLE_INT: if (!cur->validate_fn) cur->validate_fn = owl_variable_int_validate_default; if (!cur->set_fn) cur->set_fn = owl_variable_int_set_default; if (!cur->set_fromstring_fn) cur->set_fromstring_fn = owl_variable_int_set_fromstring_default; if (!cur->get_fn) cur->get_fn = owl_variable_get_default; if (!cur->get_tostring_fn) cur->get_tostring_fn = owl_variable_int_get_tostring_default; if (!cur->free_fn) cur->free_fn = owl_variable_free_default; cur->val = owl_malloc(sizeof(int)); cur->set_fn(cur, &cur->ival_default); break; default: fprintf(stderr, "owl_variable_setup: invalid variable type\n"); return(-2); } owl_dict_insert_element(vd, cur->name, (void*)cur, NULL); } return 0; }
int owl_variable_dict_setup(owl_vardict *vd) { owl_variable *var, *cur; if (owl_dict_create(vd)) return(-1); for (var = variables_to_init; var->name != NULL; var++) { cur = g_new(owl_variable, 1); *cur = *var; /* strdup all the strings so we can delete them consistently. */ cur->name = g_strdup(var->name); cur->summary = g_strdup(var->summary); cur->description = g_strdup(var->description); switch (cur->type) { case OWL_VARIABLE_OTHER: cur->set_fn(cur, cur->pval_default); break; case OWL_VARIABLE_STRING: if (!cur->validate_fn) cur->validate_fn = owl_variable_string_validate_default; if (!cur->set_fn) cur->set_fn = owl_variable_string_set_default; if (!cur->set_fromstring_fn) cur->set_fromstring_fn = owl_variable_string_set_fromstring_default; if (!cur->get_fn) cur->get_fn = owl_variable_get_default; if (!cur->get_tostring_fn) cur->get_tostring_fn = owl_variable_string_get_tostring_default; if (!cur->delete_fn) cur->delete_fn = owl_variable_delete_default; cur->set_fn(cur, cur->pval_default); break; case OWL_VARIABLE_BOOL: if (!cur->validate_fn) cur->validate_fn = owl_variable_bool_validate_default; if (!cur->set_fn) cur->set_fn = owl_variable_bool_set_default; if (!cur->set_fromstring_fn) cur->set_fromstring_fn = owl_variable_bool_set_fromstring_default; if (!cur->get_fn) cur->get_fn = owl_variable_get_default; if (!cur->get_tostring_fn) cur->get_tostring_fn = owl_variable_bool_get_tostring_default; if (!cur->delete_fn) cur->delete_fn = owl_variable_delete_default; cur->val = g_new(int, 1); cur->set_fn(cur, &cur->ival_default); break; case OWL_VARIABLE_INT: if (!cur->validate_fn) cur->validate_fn = owl_variable_int_validate_default; if (!cur->set_fn) cur->set_fn = owl_variable_int_set_default; if (!cur->set_fromstring_fn) cur->set_fromstring_fn = owl_variable_int_set_fromstring_default; if (!cur->get_fn) cur->get_fn = owl_variable_get_default; if (!cur->get_tostring_fn) cur->get_tostring_fn = owl_variable_int_get_tostring_default; if (!cur->delete_fn) cur->delete_fn = owl_variable_delete_default; cur->val = g_new(int, 1); cur->set_fn(cur, &cur->ival_default); break; default: fprintf(stderr, "owl_variable_setup: invalid variable type\n"); return(-2); } owl_dict_insert_element(vd, cur->name, cur, NULL); } return 0; }
void owl_cmddict_init(owl_cmddict *cd) { owl_dict_create(cd); }
void owl_keyhandler_init(owl_keyhandler *kh) { owl_dict_create(&kh->keymaps); kh->active = NULL; owl_keyhandler_reset(kh); }