aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunk@stsci.edu>2011-03-30 16:58:44 -0400
committerJoseph Hunkeler <jhunk@stsci.edu>2011-03-30 16:58:44 -0400
commite62a7775c4ba4d2d24fd5096f9e790c40e0a44f9 (patch)
tree43a2f5fea9b3c79fdae906ccef5e27cdae013d98
parentbc95eb65ec89e021ec04f7d43bfbc8c7d718570c (diff)
downloadduser-e62a7775c4ba4d2d24fd5096f9e790c40e0a44f9.tar.gz
List deletion active
-rw-r--r--duser.c54
1 files changed, 51 insertions, 3 deletions
diff --git a/duser.c b/duser.c
index 624689c..7b1f64a 100644
--- a/duser.c
+++ b/duser.c
@@ -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");