static int set_state_letter(int argc, char *argv[]) { /* * [0] [1] [2] [3] [4] * y3act set-state <file> <part-id> <state letter> */ if (!(strcmp(".", argv[4]) == 0 || strcmp(">", argv[4]) == 0 || strcmp("$", argv[4]) == 0)) { fprintf(stderr, "ERROR: Invalid state letter: '%s'\n", argv[4]); display_state_letter(); return 1; } struct task tasks; INIT_LIST_HEAD(&tasks.list); if (file_read(&tasks, argv[2]) == -1) return 1; struct task *t; int ret = find_task(&tasks, &t, argv[3], strlen(argv[3])); if (1 != ret) { free_tasks(&tasks); return 1; } strcpy(t->state, argv[4]); ret = file_new(&tasks, argv[2]); free_tasks(&tasks); return ret; }
void cleanup() /* {{{ */ { /* function to run on termination */ keybind *lastbind; /* free memory allocated normally */ check_free(searchstring); free_tasks(head); check_free(cfg.sortmode); free(cfg.version); free(cfg.formats.task); free(cfg.formats.title); free(cfg.formats.view); free(active_filter); while (keybinds!=NULL) { lastbind = keybinds; keybinds = keybinds->next; check_free(lastbind->argstr); free(lastbind); } free_colors(); free_prompts(); free_formats(); /* close open files */ fflush(logfp); fclose(logfp); } /* }}} */
void test_search() /* {{{ */ { /* test search functionality */ char *addcmdstr, *testcmdstr, *tmp; const char *proj = "test123"; const char pri = 'H'; const char *unique = "simple"; FILE *cmdout; task *this; bool pass; asprintf(&addcmdstr, "task add pro:%s pri:%c %s", proj, pri, unique); cmdout = popen(addcmdstr, "r"); pclose(cmdout); free_tasks(head); head = get_tasks(NULL); stdout = devnull; searchstring = strdup(unique); find_next_search_result(head, head); stdout = out; this = get_task_by_position(selline); pass = strcmp(this->project, proj)==0 && this->priority==pri; test_result("search", pass); if (!pass) { puts(addcmdstr); tmp = var_value_message(find_var("search_string"), 1); puts(tmp); free(tmp); puts("selected:"); printf("uuid: %s\n", this->uuid); printf("description: %s\n", this->description); printf("project: %s\n", this->project); printf("tags: %s\n", this->tags); fflush(stdout); asprintf(&testcmdstr, "task list %s", unique); system(testcmdstr); free(testcmdstr); } cmdout = popen("task undo", "r"); pclose(cmdout); free(addcmdstr); } /* }}} */