Annotation of 43BSDReno/contrib/mh/uip/mhpath.c, revision 1.1.1.1

1.1       root        1: /* mhpath.c - print full pathnames */
                      2: 
                      3: #include "../h/mh.h"
                      4: #include <stdio.h>
                      5: 
                      6: /*  */
                      7: 
                      8: static struct swit switches[] = {
                      9: #define        HELPSW  0
                     10:     "help", 4,
                     11: 
                     12:     NULL, NULL
                     13: };
                     14: 
                     15: /*  */
                     16: 
                     17: /* ARGSUSED */
                     18: 
                     19: main(argc, argv)
                     20:        int argc;
                     21:        char *argv[];
                     22: {
                     23:     int     msgp = 0,
                     24:             msgnum;
                     25:     char   *cp,
                     26:            *maildir,
                     27:            *folder = NULL,
                     28:             buf[100],
                     29:           **ap,
                     30:           **argp,
                     31:            *arguments[MAXARGS],
                     32:            *msgs[MAXARGS];
                     33:     struct msgs *mp;
                     34: 
                     35:     invo_name = r1bindex (argv[0], '/');
                     36:     if ((cp = m_find (invo_name)) != NULL) {
                     37:        ap = brkstring (cp = getcpy (cp), " ", "\n");
                     38:        ap = copyip (ap, arguments);
                     39:     }
                     40:     else
                     41:        ap = arguments;
                     42:     (void) copyip (argv + 1, ap);
                     43:     argp = arguments;
                     44: 
                     45: /*  */
                     46: 
                     47:     while (cp = *argp++) {
                     48:        if (*cp == '-')
                     49:            switch (smatch (++cp, switches)) {
                     50:                case AMBIGSW: 
                     51:                    ambigsw (cp, switches);
                     52:                    done (1);
                     53:                case UNKWNSW: 
                     54:                    adios (NULLCP, "-%s unknown", cp);
                     55:                case HELPSW: 
                     56:                    (void) sprintf (buf, "%s [+folder] [msgs] [switches]",
                     57:                            invo_name);
                     58:                    help (buf, switches);
                     59:                    done (1);
                     60:            }
                     61:        if (*cp == '+' || *cp == '@') {
                     62:            if (folder)
                     63:                adios (NULLCP, "only one folder at a time!");
                     64:            else
                     65:                folder = path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF);
                     66:        }
                     67:        else
                     68:            msgs[msgp++] = cp;
                     69:     }
                     70: 
                     71: /*  */
                     72: 
                     73:     if (!m_find ("path"))
                     74:        free (path ("./", TFOLDER));
                     75: 
                     76:     if (!folder)
                     77:        folder = m_getfolder ();
                     78:     maildir = m_maildir (folder);
                     79:     if (!msgp) {
                     80:        printf ("%s\n", maildir);
                     81:        done (0);
                     82:     }
                     83: 
                     84:     if (chdir (maildir) == NOTOK)
                     85:        adios (maildir, "unable to change directory to");
                     86:     if (!(mp = m_gmsg (folder)))
                     87:        adios (NULLCP, "unable to read folder %s", folder);
                     88: 
                     89:     if ((mp = m_remsg (mp, 0, MAXFOLDER)) == NULL)
                     90:        adios (NULLCP, "unable to allocate folder storage");
                     91:     mp -> msgflags |= MHPATH;
                     92: 
                     93:     for (msgnum = 0; msgnum < msgp; msgnum++)
                     94:        if (!m_convert (mp, msgs[msgnum]))
                     95:            done (1);
                     96:     m_setseq (mp);
                     97: 
                     98: /*  */
                     99: 
                    100:     if (mp -> numsel > MAXARGS - 2)
                    101:        adios (NULLCP, "more than %d messages", MAXARGS - 2);
                    102: 
                    103:     for (msgnum = mp -> lowsel; msgnum <= mp -> hghsel; msgnum++)
                    104:        if (mp -> msgstats[msgnum] & SELECTED)
                    105:            printf ("%s/%s\n", mp -> foldpath, m_name (msgnum));
                    106: 
                    107:     m_sync (mp);
                    108:     m_update ();
                    109: 
                    110:     done (0);
                    111: }
                    112: 
                    113: /*
                    114:  * XXX We need to force config.o to be linked in to get around
                    115:  * library order problems
                    116:  */
                    117: /* XXX don't bother if linking with the shared library */
                    118: #ifndef SHARED
                    119: static void
                    120: kludge()
                    121: {
                    122:        (void)libpath((char *)0);
                    123: }
                    124: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.