diff options
author | Joseph Hunkeler <jhunk@stsci.edu> | 2011-03-30 16:58:44 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunk@stsci.edu> | 2011-03-30 16:58:44 -0400 |
commit | e62a7775c4ba4d2d24fd5096f9e790c40e0a44f9 (patch) | |
tree | 43a2f5fea9b3c79fdae906ccef5e27cdae013d98 | |
parent | bc95eb65ec89e021ec04f7d43bfbc8c7d718570c (diff) | |
download | duser-e62a7775c4ba4d2d24fd5096f9e790c40e0a44f9.tar.gz |
List deletion active
-rw-r--r-- | duser.c | 54 |
1 files changed, 51 insertions, 3 deletions
@@ -12,12 +12,13 @@ int CMD_FLAG_NOOPT = 0; int CMD_FLAG_DEL = 0; +int CMD_FLAG_DEL_ALL = 0; +int CMD_FLAG_DEL_LIST = 0; int CMD_FLAG_MOD = 0; int CMD_FLAG_ADD = 0; int CMD_FLAG_LIST = 0; int CMD_FLAG_HELP = 0; int CMD_FLAG_LOOK = 0; -int CMD_FLAG_DEL_ALL = 0; int CMD_FLAG_NULL = 0; char* basename(const char* path) @@ -26,6 +27,44 @@ char* basename(const char* path) return ptr ? ptr + 1 : (char*)path; } +int user_del_list(const char* filename) +{ + char tmp[PATH_MAX]; + snprintf(tmp, PATH_MAX, "%s%s", list_path, filename); + + if((access(tmp, F_OK|W_OK)) != 0) + { + fprintf(stderr, "%s: %s\n", basename(tmp), strerror(errno)); + return -1; + } + + printf("\n!!!WARNING!!!\n"); + printf("You are about to delete the mailing list '%s'\n\n", basename(tmp)); + printf("Are SURE you want to continue? [y/N]"); + int choice = getchar(); + if((user_choice(choice)) != 0) + { + printf("Aborting...\n"); + exit(1); + } + else + { + COM(SELF, "Command: DELETE LIST\n"); + if((unlink(tmp)) != 0) + { + fprintf(stderr, "%s: %s\n", basename(tmp), strerror(errno)); + return errno; + } + else + { + COM(SELF, "List '%s' deleted\n", basename(tmp)); + printf("Deleted list: '%s'\n", basename(tmp)); + } + } + + return 0; +} + int user_del_all(const char* needle) { processed.files = get_file_count(list_path); @@ -372,6 +411,10 @@ int user_cmd(const int argc, char* argv[]) { CMD_FLAG_DEL_ALL = 1; } + if((strncmp(cmd, "delL", strlen(cmd))) == 0) + { + CMD_FLAG_DEL_LIST = 1; + } if((strncmp(cmd, "add", strlen(cmd))) == 0) { CMD_FLAG_ADD = 1; @@ -468,10 +511,9 @@ int main(int argc, char* argv[]) printf("\nDo you wish to wish to delete this record? [y/N] "); char choice = getchar(); - int success = 0; if((user_choice(choice)) == 0) { - if((success = user_del(rec)) > 0) + if((user_del(rec)) > 0) { printf("Record deleted\n"); COM(SELF, "Commmand: DELETE %s\n", CMD_FLAG_DEL_ALL ? "ALL" : "SINGLE"); @@ -491,6 +533,12 @@ int main(int argc, char* argv[]) return 0; } + if(CMD_FLAG_DEL_LIST) + { + user_del_list(needle); + return 0; + } + if(CMD_FLAG_ADD) { printf("add flag active\n"); |