X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmsh.c;h=aed4bc7dfc3d68d4fa2bcab512e1f0ee6bc3341a;hp=41cf5102a9d8f15dabc72c83804dc0f6e3b32cda;hb=5dd6771b28c257af405d7248639ed0e3bcdce38b;hpb=794dab6aa5027ffaf024506140c258f6a0a9322d diff --git a/uip/msh.c b/uip/msh.c index 41cf510..aed4bc7 100644 --- a/uip/msh.c +++ b/uip/msh.c @@ -2,7 +2,9 @@ /* * msh.c -- The nmh shell * - * $Id$ + * This code is Copyright (c) 2002, by the authors of nmh. See the + * COPYRIGHT file in the root directory of the nmh distribution for + * complete copyright information. */ /* @@ -16,8 +18,9 @@ #include #include #include -#include -#include +#include +#include +#include #ifdef HAVE_TERMIOS_H # include @@ -67,7 +70,7 @@ static struct swit switches[] = { #define VERSIONSW 13 { "version", 0 }, #define HELPSW 14 - { "help", 4 }, + { "help", 0 }, { NULL, 0 } }; @@ -346,7 +349,7 @@ main (int argc, char **argv) if (folder) adios (NULL, "only one folder at a time!"); else - folder = path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF); + folder = pluspath (cp); } else if (file) @@ -408,7 +411,8 @@ main (int argc, char **argv) m_reset (); - return done (0); + done (0); + return 1; } @@ -727,10 +731,10 @@ setup (char *file) #ifdef BPOP if (pmsh) { - strncpy (tmpfil, m_tmpfil (invo_name), sizeof(tmpfil)); - if ((fp = fopen (tmpfil, "w+")) == NULL) - padios (tmpfil, "unable to create"); - unlink (tmpfil); + char *tfile = m_mktemp2(NULL, invo_name, NULL, &fp); + if (tfile == NULL) padios("msh", "unable to create temporary file"); + unlink(tfile); + strncpy(tmpfil, tfile, sizeof(tmpfil)); } else #endif /* BPOP */ @@ -754,7 +758,7 @@ setup (char *file) if (!(mp = (struct msgs *) calloc ((size_t) 1, sizeof(*mp)))) padios (NULL, "unable to allocate folder storage"); - if (!(mp->msgstats = calloc ((size_t) 1, msgp + 3))) + if (!(mp->msgstats = calloc ((size_t) msgp + 3, sizeof(*(mp->msgstats))))) padios (NULL, "unable to allocate message status storage"); mp->hghmsg = msgp; @@ -937,9 +941,7 @@ m_gMsgs (int n) return; nmsgs = nMsgs + n + MAXFOLDER / 2; - Msgs = (struct Msg *) realloc ((char *) Msgs, (size_t) (nmsgs + 2) * sizeof *Msgs); - if (Msgs == NULL) - padios (NULL, "unable to reallocate Msgs structure"); + Msgs = (struct Msg *) mh_xrealloc ((char *) Msgs, (size_t) (nmsgs + 2) * sizeof *Msgs); memset((char *) (Msgs + nMsgs + 2), 0, (size_t) ((nmsgs - nMsgs) * sizeof *Msgs)); nMsgs = nmsgs; @@ -992,10 +994,10 @@ msh_ready (int msgnum, int full) if (Msgs[msgnum].m_top == 0) padios (NULL, "msh_ready (%d, %d) botch", msgnum, full); if (!full) { - strncpy (tmpfil, m_tmpfil (invo_name), sizeof(tmpfil)); - if ((yp = fopen (tmpfil, "w+")) == NULL) - padios (tmpfil, "unable to create"); - unlink (tmpfil); + char *tfile = m_mktemp2(NULL, invo_name, NULL, &yp); + if (tfile == NULL) padios("msh", "unable to create temporary file"); + unlink(tfile); + strncpy(tmpfil, tfile, sizeof(tmpfil)); if (pop_top (Msgs[msgnum].m_top, 4, pop_action) == NOTOK) padios (NULL, "%s", response); @@ -1159,7 +1161,7 @@ scanstring (char *arg) void readids (int id) { - register int cur, seqnum, i, msgnum; + register int cur, seqnum, i=0, msgnum; if (mp->curmsg == 0) seq_setcur (mp, mp->lowmsg); @@ -1222,7 +1224,7 @@ readid (int msgnum) case FLD: case FLDEOF: case FLDPLUS: - if (!strcasecmp (name, BBoard_ID)) { + if (!mh_strcasecmp (name, BBoard_ID)) { bp = getcpy (buf); while (state == FLDPLUS) { state = m_getfld (state, name, buf, sizeof(buf), zp); @@ -1471,7 +1473,7 @@ getargs (char *prompt, struct swit *sw, struct Cmd *cmdp) continue; if (buffer[0] == '?') { printf ("commands:\n"); - print_sw (ALL, sw, ""); + print_sw (ALL, sw, "", stdout); printf ("type CTRL-D or use ``quit'' to leave %s\n", invo_name); continue; @@ -1541,7 +1543,8 @@ static int parse (char *buffer, struct Cmd *cmdp) { int argp = 0; - char c, *cp, *pp; + unsigned char c, *cp; + char *pp; cmdp->line[0] = 0; pp = cmdp->args[argp++] = cmdp->line; @@ -1888,7 +1891,7 @@ static int pINI (void) { int i, vrsn; - char *bp; + unsigned char *bp; struct record rcs, *rc; rc = &rcs; @@ -2137,7 +2140,7 @@ pCMD (char *str, struct swit *sw, struct Cmd *cmdp) case OK: printf ("commands:\n"); - print_sw (ALL, sw, ""); + print_sw (ALL, sw, "", stdout); printf ("type ``quit'' to leave %s\n", invo_name); fflush (stdout); fflush (stderr);