]> andersk Git - moira.git/blobdiff - clients/mailmaint/mailmaint.c
posixify source
[moira.git] / clients / mailmaint / mailmaint.c
index acf6dbafba6df236afb27ccd7d7c375b99087ab1..7f085aa5f55391a619064a10147894f41878c2d1 100644 (file)
@@ -19,7 +19,7 @@ static char rcsid_mailmaint_c[] = "$Header$";
 #include <stdio.h>
 #include <pwd.h>
 #include <signal.h>
-#include <strings.h>
+#include <string.h>
 #include <curses.h>
 #include <sys/types.h>
 #include <varargs.h>
@@ -71,7 +71,6 @@ static int get_list_info();
 static int fetch_list_info();
 
 char *malloc();
-char *rindex();
 char *getlogin();
 extern char *strsave();
 char *getenv();
@@ -92,6 +91,10 @@ int level, found_some, currow, page, num_members;
 int moreflg, toggle, first_time;
 char *uname;
 
+/* This crock is because the original code was very broken and this makes
+ * it work.  Someday, we should abandon the code or fix it right.
+ */
+#define mvcur(oy,ox,ny,nx) move(ny,nx)
 
 /****************************************************/
 /*ARGSUSED*/
@@ -108,7 +111,7 @@ main(argc, argv)
     int use_menu = 1;
     char buf[BUFSIZ], *motd;
 
-    if ((whoami = rindex(argv[0], '/')) == NULL)
+    if ((whoami = strrchr(argv[0], '/')) == NULL)
        whoami = argv[0];
     else
        whoami++;
@@ -201,8 +204,8 @@ get_main_input()
        currow = DISPROW + 2;
        page = 1;
        toggle = num_members = moreflg = 0;
-       c = getchar();
-       if (c == 13) {
+       c = getchar() & 0x7f;   /* mask parity bit */
+       if (c == '\r' || c == '\n') {
            if (position[level] == 7)
                c = 'q';
            else
@@ -259,9 +262,9 @@ get_main_input()
            }
            break;
        case 27:                /* up arrow */
-           c = getchar();
+           c = getchar() & 0x7f;
            if (c == 91) {
-               c = getchar();
+               c = getchar() & 0x7f;
                if (c == 65) {
                    position[level]--;
                    if (!position[level])
@@ -289,12 +292,12 @@ show_list_info()
 {
     char *buf;
 
-    show_text(DISPROW, STARTCOL, "Show information about a list.\n\r");
+    show_text(DISPROW, STARTCOL, "Show information about a list.\n");
     buf = calloc((unsigned)1024, 1);
     if (Prompt("Enter List Name: ", buf, LISTSIZE, 1) == 1) {
-       display_buff("\n\r");
+       display_buff("\n");
        if (fetch_list_info(buf, current_li) == 0) {
-           (void) sprintf(buf, "Description: %s\n\r", current_li->desc);
+           (void) sprintf(buf, "Description: %s\n", current_li->desc);
            if (strlen(buf) > 60)
                (void) display_buff(buf);
            else
@@ -386,20 +389,20 @@ add_member()
     char *argv[3];
     char *buf;
 
-    show_text(DISPROW, STARTCOL, "Add yourself to a list\n\r");
+    show_text(DISPROW, STARTCOL, "Add yourself to a list\n");
     buf = calloc(LISTMAX, 1);
     if (Prompt("Enter List Name: ", buf, LISTSIZE, 1) == 1) {
-       display_buff("\r\n");
+       display_buff("\n");
        argv[0] = strsave(buf);
        argv[1] = strsave("user");
        argv[2] = strsave(uname);
        if (status = mr_query("add_member_to_list", 3, argv,
                               scream, (char *) NULL)) {
-           display_buff("\r\n");
+           display_buff("\n");
            com_err(whoami, status, " found.\n");
        }
        else {
-           (void) sprintf(buf, "User %s added to list\r", uname);
+           (void) sprintf(buf, "User %s added to list\n", uname);
            show_text(DISPROW + 3, STARTCOL, buf);
        }
        currow = DISPROW + 4;
@@ -415,20 +418,20 @@ delete_member()
     char *argv[3];
     char *buf;
 
-    show_text(DISPROW, STARTCOL, "Remove yourself from a list\n\r");
+    show_text(DISPROW, STARTCOL, "Remove yourself from a list\n");
     buf = calloc(LISTMAX, 1);
     if (Prompt("Enter List Name: ", buf, LISTSIZE, 1) == 1) {
-       display_buff("\r\n");
+       display_buff("\n");
        argv[0] = strsave(buf);
        argv[1] = strsave("user");
        argv[2] = strsave(uname);
        if (status = mr_query("delete_member_from_list", 3, argv,
                               scream, (char *) NULL)) {
-           display_buff("\r\n");
+           display_buff("\n");
            com_err(whoami, status, " found.\n");
        }
        else {
-           (void) sprintf(buf, "User %s deleted from list\r", uname);
+           (void) sprintf(buf, "User %s deleted from list\n", uname);
            show_text(DISPROW + 3, STARTCOL, buf);
        }
        currow = DISPROW + 4;
@@ -447,13 +450,13 @@ list_by_member()
     nargv[1] = strsave("ruser");
     nargv[2] = strsave(uname);
     buf = calloc(BUFSIZ, 1);
-    (void) sprintf(buf, "%s is on the following lists:\r", uname);
+    (void) sprintf(buf, "%s is on the following lists:\n", uname);
     show_text(DISPROW, STARTCOL, buf);
     mvcur(0, 0, currow, STARTCOL);
     refresh();
     if (status = mr_query("get_lists_of_member", 2, nargv + 1,
                           print_1, (char *) NULL)) {
-       display_buff("\r\n");
+       display_buff("\n");
        com_err(whoami, status, " in get_lists_of_member");
     }
     currow++;
@@ -470,7 +473,7 @@ show_all()
 
     show_text(DISPROW, STARTCOL, "This function may take a \
 while... proceed? [y] ");
-    c = getchar();
+    c = getchar() & 0x7f;
     if (c == 'y' || c == 'Y' || c == '\n') {
        move(DISPROW + 1, STARTCOL);
        addstr("Processing query...please hold");
@@ -493,7 +496,7 @@ print_1(argc, argv, callback)
     char buf[BUFSIZ];
 
     /* no newline 'cause display_buff adds one */
-    (void) sprintf(buf, "%s\r", argv[0]);
+    (void) sprintf(buf, "%s\n", argv[0]);
     (void) start_display(buf);
 
     return (0);
@@ -515,7 +518,7 @@ print_all(argc, argv, callback)
        show_text(DISPROW + 1, STARTCOL, "All mailing lists:");
        first_time = 0;
     }
-    (void) sprintf(buf, "%s\r", argv[0]);
+    (void) sprintf(buf, "%s\n", argv[0]);
     (void) start_display(buf);
 
     return (0);
@@ -525,13 +528,13 @@ print_all(argc, argv, callback)
 list_all_groups()
 {
     char *argv[5];
-    argv[0] = argv[3] = "true";
-    argv[1] = argv[4] = "dontcare";
+    argv[0] = argv[1] = argv[3] = "true";
+    argv[4] = "dontcare";
     argv[2] = "false";
     first_time = 1;
     if (status = mr_query("qualified_get_lists", 5, argv,
                           print_all, (char *) NULL)) {
-       display_buff("\r\n");
+       display_buff("\n");
        com_err(whoami, status, " in list_all_groups\n");
     }
     end_display();
@@ -557,7 +560,7 @@ list_members()
        argv[0] = buf;
        if (status = mr_query("get_members_of_list", 1, argv,
                               print_2, (char *) NULL)) {
-           display_buff("\r\n");
+           display_buff("\n");
            com_err(whoami, status, " found.\n");
            currow++;
        }
@@ -604,7 +607,6 @@ start_display(buff)
     buffer = calloc(50, 1);
     if (currow >= LINES - 2) {
        page++;
-       currow++;
        mvcur(0, 0, currow, STARTCOL);
        refresh();
        if (Prompt("--RETURN for more, ctl-c to exit--", buffer, 1, 0) == 0) {
@@ -641,7 +643,7 @@ end_display()
 
     buffer = calloc(50, 1);
     currow++;
-    (void) sprintf(buffer, "End of List. %d Total Members\r", num_members);
+    (void) sprintf(buffer, "End of List. %d Total Members\n", num_members - 1);
     show_text(currow, STARTCOL, buffer);
     currow++;
     show_text(currow, STARTCOL, "Press any key to continue...");
@@ -691,7 +693,7 @@ pack_main_menu()
     buf = calloc(50, 1);
     (void) sprintf(buf, "Mail List Program for %s", uname);
     main_menu->title = strsave(buf);
-    main_menu->items[0] = strsave("1.  Show all mailing lists.");
+    main_menu->items[0] = strsave("1.  Show all public mailing lists.");
     main_menu->items[1] = strsave("2.  Get all members of a mailing list.");
     main_menu->items[2] = strsave("3.  Display lists of which you are a member.");
     main_menu->items[3] = strsave("4.  Show description of list.");
@@ -763,8 +765,8 @@ show_text(row, col, buff)
     char *buff;
 {
     mvcur(0, 0, row, col);
+    addstr(buff);
     refresh();
-    printf("%s", buff);
 }
 
 /****************************************************/
@@ -780,7 +782,7 @@ erase_line(row, col)
     buff[i] = 0;               /* just to be sure ! */
     move(row, col);
     mvcur(0, 0, row, col);
-    printf("%s", buff);
+    addstr(buff);
     refresh();
 }
 
@@ -810,9 +812,9 @@ clrwin(erase_row)
     mvcur(0, 0, erase_row, STARTCOL);
     refresh();
     for (i = erase_row; i <= currow - 1; i++) {
-       printf("%s\n\r", buff);
+       addstr(buff);
     }
-    printf("%s", buff);
+    addstr(buff);
     mvcur(erase_row, STARTCOL, STARTROW + oldpos[level] - 1, STARTCOL);
     refresh();
 }
@@ -885,11 +887,11 @@ Prompt(prompt, buf, buflen, crok)
     int c;
     char *p;
 
-    printf("%s", prompt);
+    addstr(prompt);
     refresh();
     for (p = buf; abs(strlen(p) - strlen(buf)) <= buflen;) {
        refresh();
-       c = getchar();
+       c = getchar() & 0x7f;
        switch (c) {
        case CTL('C'):
            return 0;
@@ -902,7 +904,7 @@ Prompt(prompt, buf, buflen, crok)
        case '\n':
        case '\r':
            if (crok)
-               display_buff("\r");
+               display_buff("\n");
            *p = '\0';
            if (strlen(buf) < 1)/* only \n or \r in buff */
                return (-1);
This page took 0.220145 seconds and 4 git commands to generate.