📄 inc.c.6.7
字号:
if ((in = lkfopen (newmail, "r")) == NULL) adios (NULLCP, "unable to lock and fopen %s", newmail); (void) fstat (fileno(in), &s1); } if (audfile) { if ((i = stat (audfile, &st)) == NOTOK) advise (NULLCP, "Creating Receive-Audit: %s", audfile); if ((aud = fopen (audfile, "a")) == NULL) adios (audfile, "unable to append to"); else if (i == NOTOK) (void) chmod (audfile, m_gmprot ());#ifndef POP fprintf (aud, from ? "<<inc>> %s -ms %s\n" : "<<inc>> %s\n", dtimenow (), from);#else POP fprintf (aud, from ? "<<inc>> %s -ms %s\n" : host ? "<<inc>> %s -host %s -user %s%s\n" : "<<inc>> %s\n", dtimenow (), from ? from : host, user, rpop ? " -rpop" : "");#endif POP }#ifdef MHE if (m_find ("mhe")) { cp = concat (maildir, "/++", NULLCP); i = stat (cp, &st); if ((mhe = fopen (cp, "a")) == NULL) admonish (cp, "unable to append to"); else if (i == NOTOK) (void) chmod (cp, m_gmprot ()); free (cp); }#endif MHE nfs = new_fs (form, format, FORMAT); if (noisy) { printf ("Incorporating new mail into %s...\n\n", folder); (void) fflush (stdout); }/* */#ifdef POP if (host) { if (file) { file = path (file, TFILE); if (stat (file, &st) == NOTOK) { if (errno != ENOENT) adios (file, "error on file"); cp = concat ("Create file \"", file, "\"? ", NULLCP); if (noisy && !getanswer (cp)) done (1); free (cp); } msgnum = map_count (); if ((pd = mbx_open (file, getuid (), getgid (), m_gmprot ())) == NOTOK) adios (file, "unable to open"); if ((pf = fdopen (pd, "w+")) == NULL) adios (NULLCP, "unable to fdopen %s", file); } else { hghnum = msgnum = mp -> hghmsg; if ((mp = m_remsg (mp, 0, mp -> hghmsg + nmsgs)) == NULL) adios (NULLCP, "unable to allocate folder storage"); } for (i = 1; i <= nmsgs; i++) { msgnum++; if (file) { (void) fseek (pf, 0L, 1); pos = ftell (pf); size = 0; (void) fwrite (mmdlm1, 1, strlen (mmdlm1), pf); start = ftell (pf); if (pop_retr (i, pop_pack) == NOTOK) adios (NULLCP, "%s", response); (void) fseek (pf, 0L, 1); stop = ftell (pf); if (fflush (pf)) adios (file, "write error on"); (void) fseek (pf, start, 0); } else { cp = getcpy (m_name (msgnum)); if ((pf = fopen (cp, "w+")) == NULL) adios (cp, "unable to write"); (void) chmod (cp, m_gmprot ()); start = stop = 0L; if (pop_retr (i, pop_action) == NOTOK) adios (NULLCP, "%s", response); if (fflush (pf)) adios (cp, "write error on"); (void) fseek (pf, 0L, 0); } switch (p = scan (pf, msgnum, 0, nfs, width, file ? 0 : msgnum == mp -> hghmsg + 1 && chgflag, 0, stop - start, noisy)) { case SCNEOF: printf ("%*d empty\n", DMAXFOLDER, msgnum); break; case SCNERR: case SCNNUM: break; case SCNMSG: case SCNENC: default: if (aud) fputs (scanl, aud);#ifdef MHE if (mhe) fputs (scanl, mhe);#endif MHE if (noisy) (void) fflush (stdout); if (!file) { mp -> msgstats[msgnum] = EXISTS;#ifdef TMA if (p == SCNENC) { if (mp -> lowsel == 0 || msgnum < mp -> lowsel) mp -> lowsel = msgnum; if (mp -> hghsel == 0 || msgnum > mp -> hghsel) mp -> hghsel = msgnum; mp -> numsel++; mp -> msgstats[msgnum] |= SELECTED; }#endif TMA mp -> msgstats[msgnum] |= UNSEEN; mp -> msgflags |= SEQMOD; } break; } if (file) { (void) fseek (pf, stop, 0); (void) fwrite (mmdlm2, 1, strlen (mmdlm2), pf); if (fflush (pf)) adios (file, "write error on"); (void) map_write (file, pd, 0, 0L, start, stop, pos, size, noisy); } else { if (ferror(pf) || fclose (pf)) adios (file, "write error on"); free (cp); } if (trnflag && pop_dele (i) == NOTOK) adios (NULLCP, "%s", response); } if (pop_quit () == NOTOK) adios (NULLCP, "%s", response); if (file) { (void) mbx_close (file, pd); pd = NOTOK; } } else {#endif POP/* */ m_unknown (in); /* the MAGIC invocation... */ hghnum = msgnum = mp -> hghmsg; for (;;) { if (msgnum >= mp -> hghoff) if ((mp = m_remsg (mp, 0, mp -> hghoff + MAXFOLDER)) == NULL) adios (NULLCP, "unable to allocate folder storage"); switch (i = scan (in, msgnum + 1, msgnum + 1, nfs, width, msgnum == hghnum && chgflag, 0, 0L, noisy)) { case SCNEOF: break; case SCNERR: if (aud) fputs ("inc aborted!\n", aud); adios (NULLCP, "aborted!"); case SCNNUM: adios (NULLCP, "more than %d messages in folder %s, %s not zero'd", MAXFOLDER, folder, newmail); default: adios (NULLCP, "scan() botch (%d)", i); case SCNMSG: case SCNENC: if (aud) fputs (scanl, aud);#ifdef MHE if (mhe) fputs (scanl, mhe);#endif MHE if (noisy) (void) fflush (stdout); msgnum++, mp -> hghmsg++; mp -> msgstats[msgnum] = EXISTS;#ifdef TMA if (i == SCNENC) { if (mp -> lowsel == 0 || mp -> lowsel > msgnum) mp -> lowsel = msgnum; if (mp -> hghsel == 0 || mp -> hghsel < msgnum) mp -> hghsel = msgnum; mp -> numsel++; mp -> msgstats[msgnum] |= SELECTED; }#endif TMA mp -> msgstats[msgnum] |= UNSEEN; mp -> msgflags |= SEQMOD; continue; } break; }#ifdef POP }#endif POP if (aud) (void) fclose (aud);#ifdef MHE if (mhe) (void) fclose (mhe);#endif MHE if (noisy) (void) fflush (stdout);#ifdef POP if (host && file) done (0);#endif POP/* */#ifdef POP if (host == NULL)#endif POP if (trnflag) { if (stat (newmail, &st) != NOTOK && s1.st_mtime != st.st_mtime) advise (NULLCP, "new messages have arrived!\007"); else { if ((i = creat (newmail, 0600)) != NOTOK) (void) close (i); else admonish (newmail, "error zero'ing"); (void) unlink (map_name (newmail)); } } else if (noisy) printf ("%s not zero'd\n", newmail); if (msgnum == hghnum) admonish (NULLCP, "no messages incorporated"); else { m_replace (pfolder, folder); if (chgflag) mp -> curmsg = hghnum + 1; mp -> hghmsg = msgnum; if (mp -> lowmsg == 0) mp -> lowmsg = 1; if (chgflag) /* sigh... */ m_setcur (mp, mp -> curmsg); }#ifdef POP if (host == NULL)#endif POP if (locked) (void) lkfclose (in, newmail); else (void) fclose (in); m_setvis (mp, 0); m_sync (mp); m_update ();#ifdef TMA if (decflag && mp -> numsel > 0) { if (noisy) { printf ("\nIncorporating encrypted mail into %s...\n\n", folder); (void) fflush (stdout); } tmastart (0); for (msgnum = mp -> lowsel; msgnum <= mp -> hghsel; msgnum++) if (mp -> msgstats[msgnum] & SELECTED && decipher (msgnum) == OK) { if ((in = fopen (cp = m_name (msgnum), "r")) == NULL) { admonish (cp, "unable to open message"); free (cp); continue; } switch (scan (in, msgnum, 0, nfs, width, msgnum == mp -> curmsg, 0, fstat (fileno (in), &st) != NOTOK ? (long) st.st_size : 0L, noisy)) { case SCNEOF: printf ("%*d empty\n", DMAXFOLDER, msgnum); break; default: break; } (void) fclose (in); free (cp); } tmastop (); if (noisy) (void) fflush (stdout); }#endif TMA done (0);}/* */#ifdef POPvoid done (status)int status;{ if (file && pd != NOTOK) (void) mbx_close (file, pd); exit (status);}#endif POP/* */#ifdef MFget_uucp_mail () { int child_id; char buffer[BUFSIZ]; struct stat st; (void) sprintf (buffer, "%s/%s", UUCPDIR, UUCPFIL); if (stat (buffer, &st) == NOTOK || st.st_size == 0) return; switch (child_id = vfork ()) { case NOTOK: admonish ("fork", "unable to"); break; case OK: execlp (umincproc, r1bindex (umincproc, '/'), NULLCP); fprintf (stderr, "unable to exec "); perror (umincproc); _exit (-1); default: (void) pidXwait (child_id, umincproc); break; }}#endif MF/* */#ifdef POPstatic int pop_action (s)register char *s;{ fprintf (pf, "%s\n", s); stop += strlen (s) + 1;}static int pop_pack (s)register char *s;{ register int j; char buffer[BUFSIZ]; (void) sprintf (buffer, "%s\n", s); for (j = 0; (j = stringdex (mmdlm1, buffer)) >= 0; buffer[j]++) continue; for (j = 0; (j = stringdex (mmdlm2, buffer)) >= 0; buffer[j]++) continue; fputs (buffer, pf); size += strlen (buffer) + 1;}static int map_count () { int md; char *cp; struct drop d; struct stat st; if (stat (file, &st) == NOTOK) return 0; if ((md = open (cp = map_name (file), 0)) == NOTOK || map_chk (cp, md, &d, (long) st.st_size, 1)) { if (md != NOTOK) (void) close (md); return 0; } (void) close (md); return (d.d_id);}#endif POP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -