X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmsh.c;h=c2d4e1a64b197c2801acf00d5e3e989909d7816b;hp=0c9c8e011e959830616cda6af5c1a5fbe702f06f;hb=ecc90fb56b43863f4c33ed62da4abe898b17d7fb;hpb=6c42153ad9362cc676ea66563bf400d7511b3b68 diff --git a/uip/msh.c b/uip/msh.c index 0c9c8e0..c2d4e1a 100644 --- a/uip/msh.c +++ b/uip/msh.c @@ -2,8 +2,6 @@ /* * 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. @@ -22,6 +20,7 @@ #include #include #include +#include #ifdef HAVE_TERMIOS_H # include @@ -119,11 +118,6 @@ static int windows[NWIN + 1]; static jmp_buf peerenv; -#ifdef BPOP -int pmsh = 0; /* BPOP enabled */ -extern char response[]; -#endif /* BPOP */ - /* * PARENT */ @@ -194,14 +188,6 @@ static void msh (int); static int read_map (char *, long); static int read_file (long, int); -#ifdef BPOP -# ifdef NNTP -static int pop_statmsg (char *); -# endif /* NNTP */ -static int read_pop (void); -static int pop_action (char *); -#endif /* BPOP */ - static void m_gMsgs (int); FILE *msh_ready (int, int); static int check_folder (int); @@ -241,9 +227,6 @@ main (int argc, char **argv) int id = 0, scansw = 0, vmh1 = 0, vmh2 = 0; char *cp, *file = NULL, *folder = NULL; char **argp, **arguments, buf[BUFSIZ]; -#ifdef BPOP - int pmsh1 = 0, pmsh2 = 0; -#endif #ifdef LOCALE setlocale(LC_ALL, ""); @@ -325,18 +308,10 @@ main (int argc, char **argv) case PREADSW: if (!(cp = *argp++) || *cp == '-') adios (NULL, "missing argument to %s", argp[-2]); -#ifdef BPOP - if ((pmsh1 = atoi (cp)) < 1) - adios (NULL, "bad argument %s %s", argp[-2], cp); -#endif /* BPOP */ continue; case PWRITSW: if (!(cp = *argp++) || *cp == '-') adios (NULL, "missing argument to %s", argp[-2]); -#ifdef BPOP - if ((pmsh2 = atoi (cp)) < 1) - adios (NULL, "bad argument %s %s", argp[-2], cp); -#endif /* BPOP */ continue; case TCURSW: @@ -350,7 +325,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) @@ -387,20 +362,6 @@ main (int argc, char **argv) #endif /* SIGTSTP */ } -#ifdef BPOP - if (pmsh = pmsh1 && pmsh2) { - cp = getenv ("MHPOPDEBUG"); -#ifdef NNTP - if (pop_set (pmsh1, pmsh2, cp && *cp, myname) == NOTOK) -#else /* NNTP */ - if (pop_set (pmsh1, pmsh2, cp && *cp) == NOTOK) -#endif /* NNTP */ - padios (NULL, "%s", response); - if (folder) - file = folder, folder = NULL; - } -#endif /* BPOP */ - if (folder) fsetup (folder); else @@ -412,7 +373,8 @@ main (int argc, char **argv) m_reset (); - return done (0); + done (0); + return 1; } @@ -725,19 +687,6 @@ setup (char *file) { int i, msgp; struct stat st; -#ifdef BPOP - char tmpfil[BUFSIZ]; -#endif - -#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); - } - else -#endif /* BPOP */ if ((fp = fopen (file, "r")) == NULL) padios (file, "unable to read"); #ifdef FIOCLEX @@ -768,41 +717,13 @@ setup (char *file) mp->foldpath = getcpy (myname ? myname : file); clear_folder_flags (mp); -#ifdef BPOP - if (pmsh) - set_readonly (mp); - else { -#endif /* BPOP */ stat (file, &st); if (st.st_uid != getuid () || access (file, W_OK) == NOTOK) set_readonly (mp); -#ifdef BPOP - } -#endif /* BPOP */ mp->lowoff = 1; mp->hghoff = mp->hghmsg + 1; -#ifdef BPOP - if (pmsh) { -#ifndef NNTP - for (i = mp->lowmsg; i <= mp->hghmsg; i++) { - Msgs[i].m_top = i; - clear_msg_flags (mp, i); - set_exists (mp, i); - set_virtual (mp, i); - } -#else /* NNTP */ - for (i = mp->lowmsg; i <= mp->hghmsg; i++) { - if (Msgs[i].m_top) /* set in read_pop() */ - clear_msg_flags (mp, i); - set_exists (mp, i); - set_virtual (mp, i); - } -#endif /* NNTP */ - } - else -#endif /* BPOP */ for (i = mp->lowmsg; i <= mp->hghmsg; i++) { clear_msg_flags (mp, i); set_exists (mp, i); @@ -827,11 +748,6 @@ read_map (char *file, long size) register struct drop *dp, *mp; struct drop *rp; -#ifdef BPOP - if (pmsh) - return read_pop (); -#endif /* BPOP */ - if ((i = map_read (file, size, &rp, 1)) == 0) return 0; @@ -859,11 +775,6 @@ read_file (long pos, int msgp) register struct drop *dp, *mp; struct drop *rp; -#ifdef BPOP - if (pmsh) - return (msgp - 1); -#endif /* BPOP */ - if ((i = mbx_read (fp, pos, &rp, 1)) <= 0) return (msgp - 1); @@ -883,47 +794,6 @@ read_file (long pos, int msgp) } -#ifdef BPOP -#ifdef NNTP -static int pop_base = 0; - -static int -pop_statmsg (char *s) -{ - register int i, n; - - n = (i = atoi (s)) - pop_base; /* s="nnn header-line..." */ - Msgs[n].m_top = Msgs[n].m_bboard_id = i; -} - -#endif /* NNTP */ - -static int -read_pop (void) -{ - int nmsgs, nbytes; - - if (pop_stat (&nmsgs, &nbytes) == NOTOK) - padios (NULL, "%s", response); - - m_gMsgs (nmsgs); - -#ifdef NNTP /* this makes read_pop() do some real work... */ - pop_base = nbytes - 1; /* nmsgs=last-first+1, nbytes=first */ - pop_exists (pop_statmsg); -#endif /* NNTP */ - return nmsgs; -} - - -static int -pop_action (char *s) -{ - fprintf (yp, "%s\n", s); -} -#endif /* BPOP */ - - static void m_gMsgs (int n) { @@ -941,9 +811,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; @@ -956,10 +824,6 @@ msh_ready (int msgnum, int full) register int msgp; int fd; char *cp; -#ifdef BPOP - char tmpfil[BUFSIZ]; - long pos1, pos2; -#endif if (yp) { fclose (yp); @@ -991,50 +855,6 @@ msh_ready (int msgnum, int full) return yp; } -#ifdef BPOP - if (pmsh && is_virtual (mp, msgnum)) { - 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); - - if (pop_top (Msgs[msgnum].m_top, 4, pop_action) == NOTOK) - padios (NULL, "%s", response); - - m_eomsbr ((int (*)()) 0); /* XXX */ - msg_style = MS_DEFAULT; /* .. */ - fseek (yp, 0L, SEEK_SET); - return yp; - } - - fseek (fp, 0L, SEEK_END); - fwrite (mmdlm1, 1, strlen (mmdlm1), fp); - if (fflush (fp)) - padios ("temporary file", "write error on"); - fseek (fp, 0L, SEEK_END); - pos1 = ftell (fp); - - yp = fp; - if (pop_retr (Msgs[msgnum].m_top, pop_action) == NOTOK) - padios (NULL, "%s", response); - yp = NULL; - - fseek (fp, 0L, SEEK_END); - pos2 = ftell (fp); - fwrite (mmdlm2, 1, strlen (mmdlm2), fp); - if (fflush (fp)) - padios ("temporary file", "write error on"); - - Msgs[msgnum].m_start = pos1; - Msgs[msgnum].m_stop = pos2; - - unset_virtual (mp, msgnum); - } -#endif /* BPOP */ - m_eomsbr ((int (*)()) 0); /* XXX */ fseek (fp, Msgs[msgnum].m_start, SEEK_SET); return fp; @@ -1047,11 +867,6 @@ check_folder (int scansw) int seqnum, i, low, hgh, msgp; struct stat st; -#ifdef BPOP - if (pmsh) - return 0; -#endif /* BPOP */ - if (fmsh) { if (stat (mp->foldpath, &st) == NOTOK) padios (mp->foldpath, "unable to stat"); @@ -1163,7 +978,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); @@ -1204,21 +1019,9 @@ readid (int msgnum) int i, state; char *bp, buf[BUFSIZ], name[NAMESZ]; register FILE *zp; -#ifdef BPOP - int arg1, arg2, arg3; -#endif if (Msgs[msgnum].m_bboard_id) return Msgs[msgnum].m_bboard_id; -#ifdef BPOP - if (pmsh) { - if (Msgs[msgnum].m_top == 0) - padios (NULL, "readid (%d) botch", msgnum); - if (pop_list (Msgs[msgnum].m_top, (int *) 0, &arg1, &arg2, &arg3) == OK - && arg3 > 0) - return (Msgs[msgnum].m_bboard_id = arg3); - } -#endif /* BPOP */ zp = msh_ready (msgnum, 0); for (state = FLD;;) @@ -1226,7 +1029,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); @@ -1475,7 +1278,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; @@ -1545,7 +1348,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; @@ -1799,12 +1603,6 @@ m_reset (void) write_ids (); folder_free (mp); /* free folder/message structure */ myname = NULL; -#ifdef BPOP - if (pmsh) { - pop_done (); - pmsh = 0; - } -#endif /* BPOP */ } @@ -1892,7 +1690,7 @@ static int pINI (void) { int i, vrsn; - char *bp; + unsigned char *bp; struct record rcs, *rc; rc = &rcs; @@ -2141,7 +1939,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);