]> diplodocus.org Git - nmh/blob - docs/historical/mh-nov-1983/cmds/next.c
Removed --depth 1 from git clone invocation.
[nmh] / docs / historical / mh-nov-1983 / cmds / next.c
1 #include "mh.h"
2 #include <stdio.h>
3 #include <strings.h>
4
5 int glbtype;
6 struct msgs *mp;
7
8 struct swit switches[] = {
9 "help", 4, /* 0 */
10 0, 0
11 };
12
13 main(argc, argv)
14 char *argv[];
15 {
16 char *maildir, *vec[20], *folder, *nfolder;
17 register int msgnum;
18 register char *cp;
19 int next;
20 int vecp;
21 char **ap;
22 char *arguments[50], **argp;
23 extern char _sobuf[];
24
25 setbuf(stdout, _sobuf);
26 #ifdef NEWS
27 m_news();
28 #endif
29 next = glbtype;
30 folder = 0; vecp = 2;
31 cp = r1bindex(argv[0], '/');
32 if((cp = m_find(cp)) != NULL) {
33 ap = brkstring(cp = getcpy(cp), " ", "\n");
34 ap = copyip(ap, arguments);
35 } else
36 ap = arguments;
37 copyip(argv+1, ap);
38 argp = arguments;
39 while(cp = *argp++) {
40 if(*cp == '-')
41 switch(smatch(++cp, switches)) {
42 case -2:ambigsw(cp, switches); /* ambiguous */
43 goto leave;
44 /* unknown */
45 case -1:vec[vecp++] = --cp; continue;
46 case 0: if(next > 0) /* -help */
47 help("next [+folder] [switches] [switches for \"type\" ]", switches);
48 else
49 help("prev [+folder] [switches] [switches for \"type\" ]", switches);
50 goto leave;
51 }
52 if(*cp == '+') {
53 if(folder) {
54 fprintf(stderr, "Only one folder at a time.\n");
55 goto leave;
56 } else
57 folder = cp + 1;
58 } else {
59 fprintf(stderr, "Bad arg: %s\n", cp);
60 fprintf(stderr, "Usage: %s [+folder] [-l.switches]\n",
61 next>0? "next" : "prev");
62 goto leave;
63 }
64 }
65 vec[vecp] = 0;
66 if(!folder)
67 folder = m_getfolder();
68 maildir = m_maildir(folder);
69 if(chdir(maildir) < 0) {
70 fprintf(stderr, "Can't chdir to: ");
71 perror(maildir);
72 goto leave;
73 }
74 if(!(mp = m_gmsg(folder))) {
75 fprintf(stderr, "Can't read folder!?\n");
76 goto leave;
77 }
78 if(mp->hghmsg == 0) {
79 fprintf(stderr, "No messages in \"%s\".\n", folder);
80 goto leave;
81 }
82 if(!m_convert(next > 0 ? "next" : "prev"))
83 goto leave;
84 m_replace(pfolder, folder);
85 if(mp->lowsel != mp->curmsg)
86 m_setcur(mp->lowsel);
87 vec[1] = m_name(mp->lowsel);
88 printf("(Message %s:%s)\n", folder, vec[1]);
89 fflush(stdout);
90 vec[0] = "mh-type";
91 m_update();
92 execv(showproc, vec);
93 perror("Can't exec type");
94 leave:
95 m_update();
96 done(0);
97 }