Added all of the MH sources, including RCS files, in
[mmh] / docs / historical / mh-6.8.5 / uip / RCS / send.c,v
1 head    1.14;
2 access;
3 symbols;
4 locks; strict;
5 comment @ * @;
6
7
8 1.14
9 date    95.12.06.21.04.47;      author jromine; state Exp;
10 branches;
11 next    1.13;
12
13 1.13
14 date    95.12.06.19.20.22;      author jromine; state Exp;
15 branches;
16 next    1.12;
17
18 1.12
19 date    92.12.15.00.20.22;      author jromine; state Exp;
20 branches;
21 next    1.11;
22
23 1.11
24 date    92.11.04.02.58.40;      author jromine; state Exp;
25 branches;
26 next    1.10;
27
28 1.10
29 date    92.11.04.01.02.08;      author jromine; state Exp;
30 branches;
31 next    1.9;
32
33 1.9
34 date    92.10.16.21.37.36;      author jromine; state Exp;
35 branches;
36 next    1.8;
37
38 1.8
39 date    92.10.16.16.52.07;      author jromine; state Exp;
40 branches;
41 next    1.7;
42
43 1.7
44 date    92.02.11.00.37.37;      author jromine; state Exp;
45 branches;
46 next    1.6;
47
48 1.6
49 date    92.02.10.17.33.44;      author jromine; state Exp;
50 branches;
51 next    1.5;
52
53 1.5
54 date    92.01.31.22.26.58;      author jromine; state Exp;
55 branches;
56 next    1.4;
57
58 1.4
59 date    92.01.31.16.34.50;      author jromine; state Exp;
60 branches;
61 next    1.3;
62
63 1.3
64 date    90.04.05.15.03.46;      author sources; state Exp;
65 branches;
66 next    1.2;
67
68 1.2
69 date    90.03.16.15.27.32;      author sources; state Exp;
70 branches;
71 next    1.1;
72
73 1.1
74 date    90.03.13.14.21.40;      author sources; state Exp;
75 branches;
76 next    ;
77
78
79 desc
80 @@
81
82
83 1.14
84 log
85 @add hidden -queued (for post?)
86 @
87 text
88 @/* send.c - send a composed message */
89 #ifndef lint
90 static char ident[] = "@@(#)$Id: send.c,v 1.13 1995/12/06 19:20:22 jromine Exp jromine $";
91 #endif  /* lint */
92
93 #include "../h/mh.h"
94 #include <errno.h>
95 #include <stdio.h>
96 #include <signal.h>
97 #include <sys/types.h>
98 #include <sys/stat.h>
99 #ifdef LOCALE
100 #include        <locale.h>
101 #endif
102
103 /* \f */
104
105 #ifndef TMA
106 #define TMAminc(a)      (a)
107 #else   /* TMA */
108 #define TMAminc(a)      0
109 #endif  /* TMA */
110
111 #ifdef  MIME
112 #define MIMEminc(a)     (a)
113 #else
114 #define MIMEminc(a)     0
115 #endif
116
117 static struct swit switches[] = {
118 #define ALIASW  0
119     "alias aliasfile", 0,
120
121 #define DEBUGSW 1
122     "debug", -5,
123
124 #define DRAFTSW 2
125     "draft", 0,
126
127 #define DFOLDSW 3
128     "draftfolder +folder", 6,
129 #define DMSGSW  4
130     "draftmessage msg", 6,
131 #define NDFLDSW 5
132     "nodraftfolder", 0,
133
134 #define ENCRSW  6
135     "encrypt", TMAminc (-7),
136 #define NENCRSW 7
137     "noencrypt", TMAminc (-9),
138
139 #define FILTSW  8
140     "filter filterfile", 0,
141 #define NFILTSW 9
142     "nofilter", 0,
143
144 #define FRMTSW  10
145     "format", 0,
146 #define NFRMTSW 11
147     "noformat", 0,
148
149 #define FORWSW  12
150     "forward", 0,
151 #define NFORWSW 13
152     "noforward", 0,
153
154 #define MIMESW  14
155     "mime", MIMEminc(-4),
156 #define NMIMESW 15
157     "nomime", MIMEminc(-6),
158
159 #define MSGDSW  16
160     "msgid", 0,
161 #define NMSGDSW 17
162     "nomsgid", 0,
163
164 #define PUSHSW  18
165     "push", 0,
166 #define NPUSHSW 19
167     "nopush", 0,
168
169 #define SPLITSW 20
170     "split seconds", MIMEminc(-5),
171
172 #define UNIQSW  21
173     "unique", -6,
174 #define NUNIQSW 22
175     "nounique", -8,
176
177 #define VERBSW  23
178     "verbose", 0,
179 #define NVERBSW 24
180     "noverbose", 0,
181
182 #define WATCSW  25
183     "watch", 0,
184 #define NWATCSW 26
185     "nowatch", 0,
186
187 #define WIDTHSW 27
188     "width columns", 0,
189
190 #define HELPSW  28
191     "help", 4,
192
193 #define MAILSW  29
194     "mail", -4,
195 #define SAMLSW  30
196     "saml", -4,
197 #define SENDSW  31
198     "send", -4,
199 #define SOMLSW  32
200     "soml", -4,
201
202 #define CLIESW  33
203     "client host", -6,
204 #define SERVSW  34
205     "server host", -6,
206 #define SNOOPSW 35
207     "snoop", -5,
208
209 #define QUEUESW 36
210     "queued", -6,
211
212 #define RECORSW 37
213     "record program", -6,
214 #define NRECOSW 38
215     "norecord", -8,
216
217     NULL, 0
218 };
219
220 static struct swit anyl[] = {
221 #define NOSW    0
222     "no", 0,
223 #define YESW    1
224     "yes", 0,
225 #define LISTDSW 2
226     "list", 0,
227
228     NULL, 0
229 };
230
231 /* \f */
232
233 extern int debugsw;             /* from sendsbr.c */
234 extern int forwsw;
235 extern int inplace;
236 extern int mime;
237 extern int pushsw;
238 extern int splitsw;
239 extern int unique;
240 extern int verbsw;
241
242 extern char *altmsg;            /*  .. */
243 extern char *annotext;
244 extern char *distfile;
245
246
247 extern int   errno;
248
249 /* \f */
250
251 /* ARGSUSED */
252
253 main (argc, argv)
254 int     argc;
255 char   *argv[];
256 {
257     int     msgp = 0,
258             distsw = 0,
259             vecp = 1,
260             isdf = 0,
261             msgnum,
262             status;
263     char   *cp,
264            *dfolder = NULL,
265            *maildir = NULL,
266             buf[100],
267           **ap,
268           **argp,
269            *arguments[MAXARGS],
270            *msgs[MAXARGS],
271            *vec[MAXARGS];
272     struct msgs *mp;
273     struct stat st;
274 #ifdef  UCI
275     FILE   *fp;
276 #endif  /* UCI */
277
278 #ifdef LOCALE
279         setlocale(LC_ALL, "");
280 #endif
281     invo_name = r1bindex (argv[0], '/');
282     if ((cp = m_find (invo_name)) != NULL) {
283         ap = brkstring (cp = getcpy (cp), " ", "\n");
284         ap = copyip (ap, arguments);
285     }
286     else
287         ap = arguments;
288     (void) copyip (argv + 1, ap);
289     argp = arguments;
290
291     vec[vecp++] = "-library";
292     vec[vecp++] = getcpy (m_maildir (""));
293
294 /* \f */
295
296     while (cp = *argp++) {
297         if (*cp == '-')
298             switch (smatch (++cp, switches)) {
299                 case AMBIGSW: 
300                     ambigsw (cp, switches);
301                     done (1);
302                 case UNKWNSW: 
303                     adios (NULLCP, "-%s unknown\n", cp);
304                 case HELPSW: 
305                     (void) sprintf (buf, "%s [file] [switches]", invo_name);
306                     help (buf, switches);
307                     done (1);   /* thanks, phyl */
308
309                 case DRAFTSW: 
310                     msgs[msgp++] = draft;
311                     continue;
312
313                 case DFOLDSW: 
314                     if (dfolder)
315                         adios (NULLCP, "only one draft folder at a time!");
316                     if (!(cp = *argp++) || *cp == '-')
317                         adios (NULLCP, "missing argument to %s", argp[-2]);
318                     dfolder = path (*cp == '+' || *cp == '@@' ? cp + 1 : cp,
319                             *cp != '@@' ? TFOLDER : TSUBCWF);
320                     continue;
321                 case DMSGSW: 
322                     if (!(cp = *argp++) || *cp == '-')
323                         adios (NULLCP, "missing argument to %s", argp[-2]);
324                     msgs[msgp++] = cp;
325                     continue;
326                 case NDFLDSW: 
327                     dfolder = NULL;
328                     isdf = NOTOK;
329                     continue;
330
331                 case PUSHSW: 
332                     pushsw++;
333                     continue;
334                 case NPUSHSW: 
335                     pushsw = 0;
336                     continue;
337
338                 case SPLITSW: 
339                     if (!(cp = *argp++) || sscanf (cp, "%d", &splitsw) != 1)
340                         adios (NULLCP, "missing argument to %s", argp[-2]);
341                     continue;
342
343                 case UNIQSW: 
344                     unique++;
345                     continue;
346                 case NUNIQSW: 
347                     unique = 0;
348                     continue;
349
350                 case FORWSW:
351                     forwsw++;
352                     continue;
353                 case NFORWSW:
354                     forwsw = 0;
355                     continue;
356
357                 case VERBSW: 
358                     verbsw++;
359                     vec[vecp++] = --cp;
360                     continue;
361                 case NVERBSW:
362                     verbsw = 0;
363                     vec[vecp++] = --cp;
364                     continue;
365
366                 case MIMESW:
367 #ifdef  MIME
368                     mime++;
369                     vec[vecp++] = --cp;
370 #endif
371                     continue;
372                 case NMIMESW:
373 #ifdef  MIME
374                     mime = 0;
375                     vec[vecp++] = --cp;
376 #endif
377                     continue;
378
379                 case DEBUGSW: 
380                     debugsw++;  /* fall */
381                 case NFILTSW: 
382                 case FRMTSW: 
383                 case NFRMTSW: 
384                 case MSGDSW: 
385                 case NMSGDSW: 
386                 case WATCSW: 
387                 case NWATCSW: 
388                 case MAILSW: 
389                 case SAMLSW: 
390                 case SENDSW: 
391                 case SOMLSW: 
392                 case ENCRSW:
393                 case NENCRSW:
394                 case SNOOPSW: 
395                 case QUEUESW: 
396                 case NRECOSW: 
397                     vec[vecp++] = --cp;
398                     continue;
399
400                 case ALIASW: 
401                 case FILTSW: 
402                 case WIDTHSW: 
403                 case CLIESW: 
404                 case SERVSW: 
405                 case RECORSW: 
406                     vec[vecp++] = --cp;
407                     if (!(cp = *argp++) || *cp == '-')
408                         adios (NULLCP, "missing argument to %s", argp[-2]);
409                     vec[vecp++] = cp;
410                     continue;
411             }
412         else
413             msgs[msgp++] = cp;
414     }
415     if (cp = m_find ("Aliasfile")) {    /* allow Aliasfile: profile entry */
416         char *dp = NULL;
417
418         for (ap = brkstring(dp = getcpy(cp), " ", "\n"); ap && *ap; ap++) {
419             vec[vecp++] = "-alias";
420             vec[vecp++] = *ap;
421         }
422     }
423
424 /* \f */
425
426     if (dfolder == NULL) {
427         if (msgp == 0) {
428 #ifdef  WHATNOW
429             if ((cp = getenv ("mhdraft")) && *cp) {
430                 msgs[msgp++] = cp;
431                 goto go_to_it;
432             }
433 #endif  /* WHATNOW */
434             msgs[msgp++] = getcpy (m_draft (NULLCP, NULLCP, 1, &isdf));
435             if (stat (msgs[0], &st) == NOTOK)
436                 adios (msgs[0], "unable to stat draft file");
437             cp = concat ("Use \"", msgs[0], "\"? ", NULLCP);
438             for (status = LISTDSW; status != YESW;) {
439                 if (!(argp = getans (cp, anyl)))
440                     done (1);
441                 switch (status = smatch (*argp, anyl)) {
442                     case NOSW: 
443                         done (0);
444                     case YESW: 
445                         break;
446                     case LISTDSW: 
447                         (void) showfile (++argp, msgs[0]);
448                         break;
449                     default:
450                         advise (NULLCP, "say what?");
451                         break;
452                 }
453             }
454         }
455         else
456             for (msgnum = 0; msgnum < msgp; msgnum++)
457                 msgs[msgnum] = getcpy (m_maildir (msgs[msgnum]));
458     }
459     else {
460         if (!m_find ("path"))
461             free (path ("./", TFOLDER));
462
463         if (!msgp)
464             msgs[msgp++] = "cur";
465         maildir = m_maildir (dfolder);
466
467         if (chdir (maildir) == NOTOK)
468             adios (maildir, "unable to change directory to");
469         if (!(mp = m_gmsg (dfolder)))
470             adios (NULLCP, "unable to read folder %s", dfolder);
471         if (mp -> hghmsg == 0)
472             adios (NULLCP, "no messages in %s", dfolder);
473
474         for (msgnum = 0; msgnum < msgp; msgnum++)
475             if (!m_convert (mp, msgs[msgnum]))
476                 done (1);
477         m_setseq (mp);
478
479         for (msgp = 0, msgnum = mp -> lowsel; msgnum <= mp -> hghsel; msgnum++)
480             if (mp -> msgstats[msgnum] & SELECTED) {
481                 msgs[msgp++] = getcpy (m_name (msgnum));
482 #ifdef  notdef
483                 mp -> msgstats[msgnum] |= DELETED;
484 #endif  /* notdef */
485                 mp -> msgstats[msgnum] &= ~EXISTS;
486             }
487         mp -> msgflags |= SEQMOD;
488
489         m_sync (mp);
490     }
491 #ifdef  WHATNOW
492 go_to_it: ;
493 #endif  /* WHATNOW */
494
495 /* \f */
496
497 #ifdef  TMA
498     if ((cp = getenv ("KDS")) == NULL || *cp == 0)
499         if ((cp = m_find ("kdsproc")) && *cp)
500             (void) m_putenv ("KDS", cp);
501     if ((cp = getenv ("TMADB")) == NULL || *cp == 0)
502         if ((cp = m_find ("tmadb")) && *cp)
503             (void) m_putenv ("TMADB", m_maildir (cp));
504 #endif  /* TMA */
505
506     if ((cp = getenv ("SIGNATURE")) == NULL || *cp == 0)
507         if ((cp = m_find ("signature")) && *cp)
508             (void) m_putenv ("SIGNATURE", cp);
509 #ifdef  UCI
510         else {
511             (void) sprintf (buf, "%s/.signature", mypath);
512             if ((fp = fopen (buf, "r")) != NULL
513                 && fgets (buf, sizeof buf, fp) != NULL) {
514                     (void) fclose (fp);
515                     if (cp = index (buf, '\n'))
516                         *cp = 0;
517                     (void) m_putenv ("SIGNATURE", buf);
518             }
519         }
520 #endif  /* UCI */
521
522     for (msgnum = 0; msgnum < msgp; msgnum++)
523         if (stat (msgs[msgnum], &st) == NOTOK)
524             adios (msgs[msgnum], "unable to stat draft file");
525
526     if ((annotext = getenv ("mhannotate")) == NULL || *annotext == 0)
527         annotext = NULL;
528     if (annotext && ((cp = getenv ("mhinplace")) != NULL && *cp != 0))
529         inplace = atoi (cp);
530     if ((altmsg = getenv ("mhaltmsg")) == NULL || *altmsg == 0)
531         altmsg = NULL;  /* used by dist interface - see below */
532
533     if ((cp = getenv ("mhdist"))
534             && *cp
535             && (distsw = atoi (cp))
536             && altmsg) {
537         vec[vecp++] = "-dist";
538         distfile = getcpy (m_scratch (altmsg, invo_name));
539         if (link (altmsg, distfile) == NOTOK) {
540             if (errno != EXDEV
541 #ifdef  EISREMOTE
542                     && errno != EISREMOTE
543 #endif  /* EISREMOTE */
544                 )
545                 adios (distfile, "unable to link %s to", altmsg);
546             free (distfile);
547             distfile = getcpy (m_tmpfil (invo_name));
548             {
549                 int     in, out;
550                 struct stat st;
551
552                 if ((in = open (altmsg, 0)) == NOTOK)
553                     adios (altmsg, "unable to open");
554                 (void) fstat(in, &st);
555                 if ((out = creat (distfile, (int) st.st_mode & 0777)) == NOTOK)
556                     adios (distfile, "unable to write");
557                 cpydata (in, out, altmsg, distfile);
558                 (void) close (in);
559                 (void) close (out);
560             }   
561         }
562     }
563     else
564         distfile = NULL;
565
566     if (altmsg == NULL || stat (altmsg, &st) == NOTOK)
567         st.st_mtime = 0, st.st_dev = 0, st.st_ino = 0;
568     if (pushsw)
569         push ();
570
571     status = 0;
572     vec[0] = r1bindex (postproc, '/');
573     closefds (3);
574
575     for (msgnum = 0; msgnum < msgp; msgnum++)
576         switch (sendsbr (vec, vecp, msgs[msgnum], &st)) {
577             case DONE: 
578                 done (++status);
579
580             case NOTOK: 
581                 status++;       /* fall */
582             case OK:
583                 break;
584         }
585
586     m_update ();
587
588     done (status);
589 }
590 @
591
592
593 1.13
594 log
595 @fixes from mtr
596 @
597 text
598 @d3 1
599 a3 1
600 static char ident[] = "@@(#)$Id: send.c,v 1.12 1992/12/15 00:20:22 jromine Exp jromine $";
601 d122 4
602 a125 1
603 #define RECORSW 36
604 d127 1
605 a127 1
606 #define NRECOSW 37
607 d308 1
608 @
609
610
611 1.12
612 log
613 @endif sugar
614 @
615 text
616 @d3 1
617 a3 1
618 static char ident[] = "@@(#)$Id: send.c,v 1.11 1992/11/04 02:58:40 jromine Exp jromine $";
619 d122 5
620 d305 1
621 d314 1
622 @
623
624
625 1.11
626 log
627 @m_putenv
628 @
629 text
630 @d3 2
631 a4 2
632 static char ident[] = "@@(#)$Id: send.c,v 1.10 1992/11/04 01:02:08 jromine Exp jromine $";
633 #endif  lint
634 d20 1
635 a20 1
636 #else   TMA
637 d22 1
638 a22 1
639 #endif  TMA
640 d181 1
641 a181 1
642 #endif  UCI
643 d335 1
644 a335 1
645 #endif  WHATNOW
646 d386 1
647 a386 1
648 #endif  notdef
649 d395 1
650 a395 1
651 #endif  WHATNOW
652 d406 1
653 a406 1
654 #endif  TMA
655 d422 1
656 a422 1
657 #endif  UCI
658 d445 1
659 a445 1
660 #endif  EISREMOTE
661 @
662
663
664 1.10
665 log
666 @LOCALE
667 putenv
668 @
669 text
670 @d3 1
671 a3 1
672 static char ident[] = "@@(#)$Id: send.c,v 1.9 1992/10/16 21:37:36 jromine Exp jromine $";
673 d402 1
674 a402 1
675             (void) putenv ("KDS", cp);
676 d405 1
677 a405 1
678             (void) putenv ("TMADB", m_maildir (cp));
679 d419 1
680 a419 1
681                     (void) putenv ("SIGNATURE", buf);
682 @
683
684
685 1.9
686 log
687 @MIME changes
688 @
689 text
690 @d3 1
691 a3 1
692 static char ident[] = "@@(#)$Id: send.c,v 1.8 1992/10/16 16:52:07 jromine Exp jromine $";
693 d12 3
694 d183 3
695 d410 1
696 a410 1
697             (void) putenv ("SIGNATURE", cp);
698 @
699
700
701 1.8
702 log
703 @MIME ifdefs
704 @
705 text
706 @d3 1
707 a3 1
708 static char ident[] = "@@(#)$Id: send.c,v 1.7 1992/02/11 00:37:37 jromine Exp jromine $";
709 d64 6
710 a69 1
711 #define MSGDSW  14
712 d71 1
713 a71 1
714 #define NMSGDSW 15
715 d74 1
716 a74 1
717 #define PUSHSW  16
718 d76 1
719 a76 1
720 #define NPUSHSW 17
721 d79 1
722 a79 1
723 #define SPLITSW 18
724 d82 1
725 a82 1
726 #define UNIQSW  19
727 d84 1
728 a84 1
729 #define NUNIQSW 20
730 d87 1
731 a87 1
732 #define VERBSW  21
733 d89 1
734 a89 1
735 #define NVERBSW 22
736 d92 1
737 a92 1
738 #define WATCSW  23
739 d94 1
740 a94 1
741 #define NWATCSW 24
742 d97 1
743 a97 1
744 #define WIDTHSW 25
745 d100 1
746 a100 1
747 #define HELPSW  26
748 d103 1
749 a103 1
750 #define MAILSW  27
751 d105 1
752 a105 1
753 #define SAMLSW  28
754 d107 1
755 a107 1
756 #define SENDSW  29
757 d109 1
758 a109 1
759 #define SOMLSW  30
760 d112 1
761 a112 1
762 #define CLIESW  31
763 d114 1
764 a114 1
765 #define SERVSW  32
766 d116 1
767 a116 1
768 #define SNOOPSW 33
769 d138 1
770 d263 13
771 @
772
773
774 1.7
775 log
776 @get mhaltmsg for -dist
777 @
778 text
779 @d3 1
780 a3 1
781 static char ident[] = "@@(#)$Id: send.c,v 1.6 1992/02/10 17:33:44 jromine Exp jromine $";
782 d21 6
783 d75 1
784 a75 1
785     "split seconds", 0,
786 @
787
788
789 1.6
790 log
791 @allow "Aliasfile" to be multiple files
792 @
793 text
794 @d3 1
795 a3 1
796 static char ident[] = "@@(#)$Id: send.c,v 1.5 1992/01/31 22:26:58 jromine Exp jromine $";
797 a398 3
798     if (annotext
799             && ((altmsg = getenv ("mhaltmsg")) == NULL || *altmsg == 0))
800         altmsg = NULL;
801 d401 2
802 @
803
804
805 1.5
806 log
807 @kerberos
808 @
809 text
810 @d3 1
811 a3 1
812 static char ident[] = "@@(#)$Id: send.c,v 1.4 1992/01/31 16:34:50 jromine Exp jromine $";
813 d287 6
814 a292 2
815         vec[vecp++] = "-alias";
816         vec[vecp++] = getcpy(cp);
817 @
818
819
820 1.4
821 log
822 @Multimedia MH
823 @
824 text
825 @d3 1
826 a3 1
827 static char ident[] = "@@(#)$Id: send.c,v 1.3 90/04/05 15:03:46 sources Exp $";
828 d108 1
829 a108 1
830     NULL, NULL
831 d119 1
832 a119 1
833     NULL, NULL
834 d365 1
835 a365 1
836     if ((cp = getenv ("KDS")) == NULL || *cp == NULL)
837 d368 1
838 a368 1
839     if ((cp = getenv ("TMADB")) == NULL || *cp == NULL)
840 d373 1
841 a373 1
842     if ((cp = getenv ("SIGNATURE")) == NULL || *cp == NULL)
843 d383 1
844 a383 1
845                         *cp = NULL;
846 d393 1
847 a393 1
848     if ((annotext = getenv ("mhannotate")) == NULL || *annotext == NULL)
849 d396 1
850 a396 1
851             && ((altmsg = getenv ("mhaltmsg")) == NULL || *altmsg == NULL))
852 d398 1
853 a398 1
854     if (annotext && ((cp = getenv ("mhinplace")) != NULL && *cp != NULL))
855 @
856
857
858 1.3
859 log
860 @add ID
861 @
862 text
863 @d3 1
864 a3 1
865 static char ident[] = "@@(#)$Id:$";
866 d68 4
867 a71 1
868 #define UNIQSW  18
869 d73 1
870 a73 1
871 #define NUNIQSW 19
872 d76 1
873 a76 1
874 #define VERBSW  20
875 d78 1
876 a78 1
877 #define NVERBSW 21
878 d81 1
879 a81 1
880 #define WATCSW  22
881 d83 1
882 a83 1
883 #define NWATCSW 23
884 d86 1
885 a86 1
886 #define WIDTHSW 24
887 d89 1
888 a89 1
889 #define HELPSW  25
890 d92 1
891 a92 1
892 #define MAILSW  26
893 d94 1
894 a94 1
895 #define SAMLSW  27
896 d96 1
897 a96 1
898 #define SENDSW  28
899 d98 1
900 a98 1
901 #define SOMLSW  29
902 d101 1
903 a101 1
904 #define CLIESW  30
905 d103 1
906 a103 1
907 #define SERVSW  31
908 d105 1
909 a105 1
910 #define SNOOPSW 32
911 d128 1
912 d130 1
913 d225 5
914 d244 9
915 a259 2
916                 case VERBSW: 
917                 case NVERBSW: 
918 @
919
920
921 1.2
922 log
923 @add "Aliasfile: file" profile entry (like -alias file)
924 @
925 text
926 @d2 3
927 @
928
929
930 1.1
931 log
932 @Initial revision
933 @
934 text
935 @d266 4
936 @