From: Ralph Corderoy Date: Wed, 24 May 2017 18:22:02 +0000 (+0100) Subject: uip/inc.c: Delete POP3's -pack option for msh users. X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/6170b76c7d080efb5e980260d8fb7a33e0512f61?hp=6fecd8232121c24a002faeb60dba7d35948f6156 uip/inc.c: Delete POP3's -pack option for msh users. inc(1)'s -pack option, only available with POP3 access, stored the emails in a spool file instead of a folder. The man page says this was intended for msh(1) users, but msh was deleted in e6917522. The spool file was always in packf(1)'s MMDF format, no option of -mbox, and was a rare producer of `map' files that indexed the spool file, again intended for msh. Removing -pack makes deletion of map files elsewhere in the code easier. --- diff --git a/h/dropsbr.h b/h/dropsbr.h index 1445b038..b90baa69 100644 --- a/h/dropsbr.h +++ b/h/dropsbr.h @@ -47,6 +47,5 @@ int mbx_read (FILE *, long, struct drop **); int mbx_copy (char *, int, int, int, int, char *, int); int mbx_size (int, off_t, off_t); int mbx_close (char *, int); -char *map_name (char *); int map_write (char *, int, int, long, off_t, off_t, long, int, int); int map_chk (char *, int, struct drop *, long, int); diff --git a/man/inc.man b/man/inc.man index 787588b5..61624195 100644 --- a/man/inc.man +++ b/man/inc.man @@ -31,9 +31,6 @@ inc \- incorporate new mail to an nmh folder .IR portname/number ] .RB [ \-user .IR username ] -.RB [ \-pack -.IR file ] -.RB [ \-nopack ] .RB [ \-proxy .IR command ] .RB [ \-sasl " | " \-nosasl ] @@ -234,15 +231,6 @@ server. The string .I %h in the command will be substituted by the hostname to connect to. .PP -When using POP, if the -.B \-pack -.I file -switch is given then -.B inc -will -.IR packf (1) -the user's mail drop from the POP service host to the named file. -.PP For debugging purposes, you may give the switch .BR \-snoop , which will allow you to monitor the POP transaction. If @@ -385,8 +373,6 @@ is given. .TP \-width The width of the terminal. -.TP -\-nopack .PD .SH CONTEXT The folder into which messages are being incorporated will become the diff --git a/test/inc/test-pop b/test/inc/test-pop index db21c31d..64620173 100755 --- a/test/inc/test-pop +++ b/test/inc/test-pop @@ -105,25 +105,7 @@ check "$testmessage" `mhpath +inbox 11` 'keep first' check "${testmessage}.2" `mhpath +inbox 12` check "${testmessage}.3" `mhpath +inbox 13` -# check -pack -pid=`"${MH_OBJ_DIR}/test/fakepop" "$testport" \ - "$TESTUSER" "$TESTPASS" "$testmessage"` - -touch "$MH_TEST_DIR/inc.mbox" -run_test "inc -user ${TESTUSER} -host 127.0.0.1 -port $testport -width 80 \ - -pack $MH_TEST_DIR/inc.mbox" \ - "Incorporating new mail into (null)... - - 1 12/17 No Such User Hello<>$MH pid=`"${MH_OBJ_DIR}/test/fakepop" "$testport" \ "$TESTUSER" "$TESTPASS" "$testmessage"` -touch "$MH_TEST_DIR/inc.mbox" -run_test "inc -user ${TESTUSER} -host 127.0.0.1 -port $testport -width 65 \ - -pack $MH_TEST_DIR/inc.mbox" \ - "Incorporating new mail into (null)... - - 1 12/17 No Such User Hello<bb_map = map_name (bb->bb_file); */ -char * +static char * map_name (char *file) { char *cp, *dp; diff --git a/uip/inc.c b/uip/inc.c index 529be75e..f3888394 100644 --- a/uip/inc.c +++ b/uip/inc.c @@ -60,8 +60,6 @@ X("format string", 5, FMTSW) \ X("host hostname", 0, HOSTSW) \ X("user username", 0, USERSW) \ - X("pack file", 0, PACKSW) \ - X("nopack", 0, NPACKSW) \ X("port name/number", 0, PORTSW) \ X("silent", 0, SILSW) \ X("nosilent", 0, NSILSW) \ @@ -105,16 +103,9 @@ static int snoop = 0; extern char response[]; -static int size; -static long pos; - -static int mbx_style = MMDF_FORMAT; -static int pd = NOTOK; - static long start; static long stop; -static char *packfile = NULL; static FILE *pf = NULL; /* This is an attempt to simplify things by putting all the @@ -166,12 +157,8 @@ static FILE *in; /* * prototypes */ -char *map_name(char *); - static void inc_done(int) NORETURN; static int pop_action(char *); -static int pop_pack(char *); -static int map_count(void); int maildir_srt(const void *va, const void *vb) @@ -338,14 +325,6 @@ main (int argc, char **argv) adios (NULL, "missing argument to %s", argp[-2]); continue; - case PACKSW: - if (!(packfile = *argp++) || *packfile == '-') - adios (NULL, "missing argument to %s", argp[-2]); - continue; - case NPACKSW: - packfile = NULL; - continue; - case SNOOPSW: snoop++; continue; @@ -533,10 +512,6 @@ main (int argc, char **argv) newmail = cp; } - /* skip the folder setup */ - if ((inc_type == INC_POP) && packfile) - goto go_to_it; - if (!context_find ("path")) free (path ("./", TFOLDER)); if (!folder) @@ -561,8 +536,6 @@ main (int argc, char **argv) if (!(mp = folder_read (folder, 0))) adios (NULL, "unable to read folder %s", folder); -go_to_it: - if (inc_type == INC_FILE && Maildir == NULL) { if (access (newmail, W_OK) != NOTOK) { locked++; @@ -623,65 +596,26 @@ go_to_it: */ if (inc_type == INC_POP) { int i; - if (packfile) { - packfile = path (packfile, TFILE); - if (stat (packfile, &st) == NOTOK) { - if (errno != ENOENT) - adios (packfile, "error on file"); - cp = concat ("Create file \"", packfile, "\"? ", NULL); - if (noisy && !read_yes_or_no_if_tty (cp)) - done (1); - free (cp); - } - msgnum = map_count (); - if ((pd = mbx_open (packfile, mbx_style, getuid(), getgid(), m_gmprot())) - == NOTOK) - adios (packfile, "unable to open"); - if ((pf = fdopen (pd, "w+")) == NULL) - adios (NULL, "unable to fdopen %s", packfile); - } else { - hghnum = msgnum = mp->hghmsg; - } + hghnum = msgnum = mp->hghmsg; for (i = 1; i <= nmsgs; i++) { charstring_t scanl = NULL; msgnum++; - if (packfile) { - size_t len; - - fseek (pf, 0L, SEEK_CUR); - pos = ftell (pf); - size = 0; - len = strlen(mmdlm1); - if (fwrite(mmdlm1, 1, len, pf) < len) - advise (mmdlm1, "fwrite"); - start = ftell (pf); - - if (pop_retr (i, pop_pack) == NOTOK) - adios (NULL, "%s", response); - - fseek (pf, 0L, SEEK_CUR); - stop = ftell (pf); - if (fflush (pf)) - adios (packfile, "write error on"); - fseek (pf, start, SEEK_SET); - } else { - cp = mh_xstrdup(m_name (msgnum)); - if ((pf = fopen (cp, "w+")) == NULL) - adios (cp, "unable to write"); - chmod (cp, m_gmprot ()); - start = stop = 0L; - - if (pop_retr (i, pop_action) == NOTOK) - adios (NULL, "%s", response); - - if (fflush (pf)) - adios (cp, "write error on"); - fseek (pf, 0L, SEEK_SET); - } + cp = mh_xstrdup(m_name (msgnum)); + if ((pf = fopen (cp, "w+")) == NULL) + adios (cp, "unable to write"); + chmod (cp, m_gmprot ()); + start = stop = 0L; + + if (pop_retr (i, pop_action) == NOTOK) + adios (NULL, "%s", response); + + if (fflush (pf)) + adios (cp, "write error on"); + fseek (pf, 0L, SEEK_SET); switch (incerr = scan (pf, msgnum, 0, nfs, width, - packfile ? 0 : msgnum == mp->hghmsg + 1 && chgflag, + msgnum == mp->hghmsg + 1 && chgflag, 1, NULL, stop - start, noisy, &scanl)) { case SCNEOF: printf ("%*d empty\n", DMAXFOLDER, msgnum); @@ -708,30 +642,14 @@ go_to_it: } charstring_free (scanl); - if (packfile) { - size_t len; - - fseek (pf, stop, SEEK_SET); - len = strlen(mmdlm2); - if (fwrite(mmdlm2, 1, len, pf) < len) - advise (mmdlm2, "fwrite"); - if (fflush (pf) || ferror (pf)) { - int e = errno; - pop_quit (); - errno = e; - adios (packfile, "write error on"); - } - map_write (packfile, pd, 0, 0L, start, stop, pos, size, noisy); - } else { - if (ferror(pf) || fclose (pf)) { - int e = errno; - (void) m_unlink (cp); - pop_quit (); - errno = e; - adios (cp, "write error on"); - } - free (cp); - } + if (ferror(pf) || fclose (pf)) { + int e = errno; + (void) m_unlink (cp); + pop_quit (); + errno = e; + adios (cp, "write error on"); + } + free (cp); if (trnflag && pop_dele (i) == NOTOK) adios (NULL, "%s", response); @@ -741,10 +659,6 @@ go_to_it: if (pop_quit () == NOTOK) adios (NULL, "%s", response); - if (packfile) { - mbx_close (packfile, pd); - pd = NOTOK; - } } /* @@ -913,9 +827,6 @@ go_to_it: if (noisy) fflush (stdout); - if ((inc_type == INC_POP) && packfile) - done (0); - /* * truncate file we are incorporating from */ @@ -929,7 +840,6 @@ go_to_it: close (newfd); else admonish (newmail, "error zero'ing"); - (void) m_unlink(map_name(newmail)); } } else { if (noisy) @@ -1009,8 +919,6 @@ static void NORETURN inc_done (int status) { done = exit; - if (packfile && pd != NOTOK) - mbx_close (packfile, pd); if (locked) { GETGROUPPRIVS(); @@ -1027,39 +935,3 @@ pop_action (char *s) stop += strlen (s) + 1; return 0; /* Is return value used? This was missing before 1999-07-15. */ } - -static int -pop_pack (char *s) -{ - int j; - char buffer[BUFSIZ]; - - snprintf (buffer, sizeof(buffer), "%s\n", s); - for ( ; (j = stringdex (mmdlm1, buffer)) >= 0; buffer[j]++) - continue; - for ( ; (j = stringdex (mmdlm2, buffer)) >= 0; buffer[j]++) - continue; - fputs (buffer, pf); - size += strlen (buffer) + 1; - return 0; /* Is return value used? This was missing before 1999-07-15. */ -} - -static int -map_count (void) -{ - int md; - char *cp; - struct drop d; - struct stat st; - - if (stat (packfile, &st) == NOTOK) - return 0; - if ((md = open (cp = map_name (packfile), O_RDONLY)) == NOTOK - || map_chk (cp, md, &d, (long) st.st_size, 1)) { - if (md != NOTOK) - close (md); - return 0; - } - close (md); - return (d.d_id); -}