static void mode_set(GString *str, char type, char mode) { g_return_if_fail(str != NULL); if (type == '-') mode_remove(str, mode); else mode_add_sorted(str, mode, NULL); }
static void mode_set_arg(GString *str, char type, char mode, const char *arg) { g_return_if_fail(str != NULL); g_return_if_fail(type == '-' || arg != NULL); if (type == '-') mode_remove(str, mode); else mode_add_sorted(str, mode, arg); }
static void mode_set(IRC_SERVER_REC *server, GString *str, char type, char mode, int user) { g_return_if_fail(str != NULL); if (type == '-') mode_remove(server, str, mode, user); else mode_add_sorted(server, str, mode, NULL, user); }
static void mode_set_arg(IRC_SERVER_REC *server, GString *str, char type, char mode, const char *arg, int user) { g_return_if_fail(str != NULL); g_return_if_fail(type == '-' || arg != NULL); if (type == '-') mode_remove(server, str, mode, user); else mode_add_sorted(server, str, mode, arg, user); }
int main(int argc, char **argv){ int remove=0; int longout=0; int tag_add=0; int tag_del=0; char *tag_filter=NULL; int importance=5; enum db which_db=DB_STD; int invert_order=0; enum sort_policy sort=ID; char opt; note_db_t db; while((opt=getopt(argc, argv, "vlri:Is:ARt:GD")) != -1){ switch(opt){ case 'v': printf("txt v%s\n", VERSION); exit(0); case 'l': longout=1; break; case 'r': remove=1; break; case 'i': importance=atoi(optarg); if(importance<1 || importance>10){ puts("Bad importance specified, must be integer between" \ "1 and 10 (inclusive)"); exit(9); } break; case 't': if(optarg[0]=='#'){ tag_filter=optarg+1; }else{ printf("Invalid tag %s (must be specified with a # sign).", optarg); exit(9); } break; case 's': switch(optarg[0]){ case 'c': sort=CREATED; break; case 'i': sort=IMPORTANCE; break; default: puts("Unknown sorting policy. Ignoring."); break; } break; case 'I': invert_order=1; break; case 'A': tag_add=1; break; case 'R': tag_del=1; break; case 'G': which_db=DB_GLOBAL; break; case 'D': which_db=DB_DIR; break; } } if(remove+tag_add+tag_del>1){ puts("Options -r, -A and/or -R can not be used simultaneously."); exit(9); } db=get_db(which_db); if(remove){ mode_remove(argc, argv, &db); save_db(&db, NOTESFILE); }else if(tag_add || tag_del){ mode_tag_edit(argc, argv, &db, tag_del); save_db(&db, NOTESFILE); }else if(argc==optind){ mode_list(&db, longout, sort, invert_order, tag_filter); }else{ mode_add(argc, argv, &db, importance); save_db(&db, NOTESFILE); } free_db(&db); return 0; }