home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume10 / ida / part01 next >
Encoding:
Internet Message Format  |  1987-06-22  |  62.2 KB

  1. Path: seismo!uunet!rs
  2. From: rs@uunet.UU.NET (Rich Salz)
  3. Newsgroups: comp.sources.unix
  4. Subject: v10i012:  The IDA Sendmail Kit, Part01/07
  5. Message-ID: <424@uunet.UU.NET>
  6. Date: 23 Jun 87 04:40:23 GMT
  7. Organization: UUNET Communications Services, Arlington, VA
  8. Lines: 2391
  9. Approved: rs@uunet.uu.net
  10.  
  11. Mod.sources: Volume 10, Number 12
  12. Submitted by: Lennart Lovstrand <mcvax!ida.liu.se!lel>
  13. Archive-name: ida/Part01
  14.  
  15. [ After talking with a couple of people, I decided to mix backlogged sources
  16.   with recent submissions in order to get stuff that people are currently
  17.   interested in out in a reasonable amount of time.  Also, please remember
  18.   that I am not able to provide mail-based retrieval service at this time;
  19.   this is a guest account on UUNET that I am using.  --r$ ]
  20.  
  21. This is the first part of the IDA Sendmail Enhancement Kit. 
  22.  
  23. The Kit includes a set of source code modifications to the BSD 4.3
  24. sendmail program (version 5.11).  The changes will enable sendmail to
  25. have direct access to dbm(3) files, separate envelope/header rewriting
  26. rulesets, and multi-token class matches among other things.
  27.  
  28. As a separate part of the Kit is the IDA Sendmail Master Configuration
  29. file and a sample setup used at the CIS Dept, U of Linkoping.  The
  30. configuration file together with the supplied data files and utility
  31. programs, implement such nice features as pathalias based systems
  32. routing within sendmail, fully !-/@-translating rulesets, and generic
  33. local user addresses.
  34.  
  35. Finally, there is an accompanying paper on mail addressing issues in
  36. general and hybrid addresses in particular.  Included in the paper is a
  37. description of the changes to sendmail and the configuration setup.
  38.  
  39. Unpack the Kit by (preferably) cd'ing to the sendmail home directory and
  40. sending the part after the "--cut--here--" line to /bin/sh or unshar.
  41. This should create a new "ida" subdirectory with all the Kit's files.
  42. Then see ida/README and ida/INSTALL for further instructions.
  43.  
  44. --cut--here--cut--here--cut--here--cut--here--cut--here--cut--here-->8--
  45. #! /bin/sh
  46. # This is a shell archive.  Remove anything before this line, then unpack
  47. # it by saving it into a file and typing "sh file".  To overwrite existing
  48. # files, type "sh file -c".  You can also feed this as standard input via
  49. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  50. # will see the following message at the end:
  51. #        "End of archive 1 (of 7)."
  52. # Contents:  ida ida/MANIFEST ida/Makefile ida/aux ida/aux/Makefile
  53. #   ida/aux/header.c ida/aux/mkdomext.c ida/aux/scanf.c ida/cf
  54. #   ida/cf/Makefile ida/cf/asterix.m4 ida/cf/client.m4
  55. #   ida/cf/majestix.m4 ida/cf/newaliases.m4 ida/cf/obelix.m4 ida/doc
  56. #   ida/doc/Makefile ida/doc/mkdomext.1 ida/doc/xalparse.8 ida/lib
  57. #   ida/lib/Makefile ida/lib/decnet ida/lib/decnet/nodes
  58. #   ida/lib/decnet/xtable ida/lib/mailertable ida/lib/restart_clients
  59. #   ida/lib/sendmail.hf ida/lib/sendmail.st ida/lib/stop_clients
  60. #   ida/lib/uucp ida/lib/uucp/relays ida/lib/uucp/xtable ida/patches
  61. #   ida/patches/BSD29.edit ida/patches/BSD42.diff
  62. #   ida/patches/MDBM.edit ida/patches/Makefile
  63. #   ida/patches/Version.c.diff ida/patches/conf.c.diff
  64. #   ida/patches/err.c.diff ida/patches/headers.c.diff
  65. #   ida/patches/macro.c.diff ida/patches/mdbm_compat.h
  66. #   ida/patches/queue.c.diff ida/patches/readcf.c.diff
  67. #   ida/patches/savemail.c.diff ida/patches/usersmtp.c.diff
  68. #   ida/patches/util.c.diff
  69. # Wrapped by lenlo@prefix on Wed Jun 10 15:39:47 1987
  70. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  71. if test ! -d ida ; then
  72.     echo shar: Creating directory \"ida\"
  73.     mkdir ida
  74. fi
  75. if test -f ida/MANIFEST -a "${1}" != "-c" ; then 
  76.   echo shar: Will not over-write existing file \"ida/MANIFEST\"
  77. else
  78. echo shar: Extracting \"ida/MANIFEST\" \(1726 characters\)
  79. sed "s/^X//" >ida/MANIFEST <<'END_OF_ida/MANIFEST'
  80. X File Name        Archive #
  81. X----------------------------------
  82. X ida                1
  83. X ida/INSTALL            2
  84. X ida/MANIFEST            1
  85. X ida/Makefile            1
  86. X ida/README            1
  87. X ida/aux            1
  88. X ida/aux/Makefile        1
  89. X ida/aux/dbm.c            3
  90. X ida/aux/header.c        1
  91. X ida/aux/mkdomext.c        1
  92. X ida/aux/rmail.c        3
  93. X ida/aux/scanf.c        1
  94. X ida/aux/xalparse.c        3
  95. X ida/cf                1
  96. X ida/cf/Makefile        1
  97. X ida/cf/Sendmail.mc        5
  98. X ida/cf/asterix.m4        1
  99. X ida/cf/client.m4        1
  100. X ida/cf/majestix.m4        1
  101. X ida/cf/newaliases.m4        1
  102. X ida/cf/obelix.m4        1
  103. X ida/doc            1
  104. X ida/doc/Makefile        1
  105. X ida/doc/dbm.1            2
  106. X ida/doc/mkdomext.1        1
  107. X ida/doc/part1.ms        6
  108. X ida/doc/part2.ms        7
  109. X ida/doc/xalparse.8        1
  110. X ida/lib            1
  111. X ida/lib/Makefile        1
  112. X ida/lib/decnet            1
  113. X ida/lib/decnet/nodes        1
  114. X ida/lib/decnet/xtable        1
  115. X ida/lib/domaintable        2
  116. X ida/lib/mailertable        1
  117. X ida/lib/pathtable        2
  118. X ida/lib/restart_clients    1
  119. X ida/lib/sendmail.hf        1
  120. X ida/lib/sendmail.st        1
  121. X ida/lib/stop_clients        1
  122. X ida/lib/uucp            1
  123. X ida/lib/uucp/relays        1
  124. X ida/lib/uucp/xtable        1
  125. X ida/lib/xaliases        4
  126. X ida/patches            1
  127. X ida/patches/BSD29.diff        2
  128. X ida/patches/BSD29.edit        1
  129. X ida/patches/BSD42.diff        1
  130. X ida/patches/MDBM.diff        2
  131. X ida/patches/MDBM.edit        1
  132. X ida/patches/Makefile        1
  133. X ida/patches/Version.c.diff    1
  134. X ida/patches/alias.c.diff    3
  135. X ida/patches/conf.c.diff    1
  136. X ida/patches/daemon.c.diff    2
  137. X ida/patches/deliver.c.diff    2
  138. X ida/patches/err.c.diff        1
  139. X ida/patches/headers.c.diff    1
  140. X ida/patches/macro.c.diff    1
  141. X ida/patches/main.c.diff    2
  142. X ida/patches/mdbm_compat.h    1
  143. X ida/patches/op.me.diff        3
  144. X ida/patches/parseaddr.c.diff    4
  145. X ida/patches/queue.c.diff    1
  146. X ida/patches/readcf.c.diff    1
  147. X ida/patches/recipient.c.diff    2
  148. X ida/patches/savemail.c.diff    1
  149. X ida/patches/sendmail.h.diff    3
  150. X ida/patches/srvrsmtp.c.diff    2
  151. X ida/patches/usersmtp.c.diff    1
  152. X ida/patches/util.c.diff    1
  153. END_OF_ida/MANIFEST
  154. if test 1726 -ne `wc -c <ida/MANIFEST`; then
  155.     echo shar: \"ida/MANIFEST\" unpacked with wrong size!
  156. fi
  157. # end of overwriting check
  158. fi
  159. if test -f ida/Makefile -a "${1}" != "-c" ; then 
  160.   echo shar: Will not over-write existing file \"ida/Makefile\"
  161. else
  162. echo shar: Extracting \"ida/Makefile\" \(1378 characters\)
  163. sed "s/^X//" >ida/Makefile <<'END_OF_ida/Makefile'
  164. X#
  165. X#  MAKEFILE -- The IDA Sendmail Enhancement Kit.
  166. X#  Copyright (c) 1987 Lennart Lovstrand
  167. X#  CIS Dept, Univ of Linkoping, Sweden
  168. X#
  169. X#  Use it, abuse it, but don't sell it.
  170. X#
  171. X
  172. X#  Global definitions; will be exported to all Makefiles
  173. XMAN8DIR=    /usr/man/manl        # Place for the section 8 manuals
  174. XMAN8EXT=    .l            # Extension for section 8 manuals
  175. XMAN1DIR=    /usr/man/manl        # Place for the section 1 manuals
  176. XMAN1EXT=    .l            # Extension for section 1 manuals
  177. XBINDIR=        /usr/local/bin        # Where the binary aux files sh
  178. ould go
  179. XLIBDIR=        /usr/lib/mail        # Where the data files should b
  180. e
  181. XSRCDIR=        ../../src        # The sendmail src subdirectory
  182. XINCLUDEDIR=    ../../include        # The sendmail include subdirectory
  183. XDOCDIR=        ../../doc        # The sendmail doc subdirctory
  184. XMDBM=        #-DMDBM -I$(SRCDIR)    # Only defined if you want to use mdbm
  185. XDBMLIB=        -ldbm            # Change to -lmdbm if you use m
  186. dbm
  187. XDBMEXT=        .dir            # Change to .map for mdbm
  188. XTROFF=        pstroff            # The [nt]roff program of your choice
  189. X
  190. Xconfigure:    config.ed
  191. X        @echo ">>> Propagating changes to subdirectories."
  192. X        for M in */Makefile; do \
  193. X            ed $$M <config.ed; \
  194. X        done
  195. X
  196. Xconfig.ed:    Makefile
  197. X        egrep '^[^#    ].*=' Makefile | \
  198. X        sed -e 's/[     ]*#.*$$//' -e 's/#.*$$//' \
  199. X            -e 's/^\(.*=\).*$$/g\/^\1\/c\\;&\\;./' | \
  200. X        tr ';' '\012' >$@
  201. X        echo w >>$@
  202. X        echo q >>$@
  203. X
  204. Xclean:
  205. X        -rm -f \#* *~ config.ed
  206. X
  207. Xspotless:    clean
  208. X        for d in */.; do \
  209. X            (cd $$d; make clean); \
  210. X        done
  211. END_OF_ida/Makefile
  212. if test 1378 -ne `wc -c <ida/Makefile`; then
  213.     echo shar: \"ida/Makefile\" unpacked with wrong size!
  214. fi
  215. # end of overwriting check
  216. fi
  217. if test ! -d ida/aux ; then
  218.     echo shar: Creating directory \"ida/aux\"
  219.     mkdir ida/aux
  220. fi
  221. if test -f ida/aux/Makefile -a "${1}" != "-c" ; then 
  222.   echo shar: Will not over-write existing file \"ida/aux/Makefile\"
  223. else
  224. echo shar: Extracting \"ida/aux/Makefile\" \(877 characters\)
  225. sed "s/^X//" >ida/aux/Makefile <<'END_OF_ida/aux/Makefile'
  226. X#
  227. X#  MAKEFILE -- Auxiliary Files.
  228. X#  Copyright (c) 1987 Lennart Lovstrand
  229. X#  CIS Dept, Univ of Linkoping, Sweden
  230. X#
  231. X#  Use it, abuse it, but don't sell it.
  232. X#
  233. X
  234. XBINS=        dbm mkdomext scanf xalparse
  235. XCFLAGS=        -O -DVMUNIX -I$(INCLUDEDIR)
  236. X
  237. X#  The following definitions are inserted by ../Makefile
  238. X#  Change them there--not here!
  239. XBINDIR=        /usr/local/bin
  240. XLIBDIR=        /usr/lib/mail
  241. XSRCDIR=        ../../src
  242. XINCLUDEDIR=    ../../include
  243. XDBMLIB=        -ldbm
  244. X
  245. Xall:        $(BINS) rmail
  246. X
  247. Xdbm:        dbm.c
  248. X        $(CC) $(CFLAGS) $(MDBM) -o dbm dbm.c $(DBMLIB)
  249. X
  250. Xrmail:        rmail.c
  251. X        $(CC) $(CFLAGS) $(MDBM) -o rmail rmail.c $(DBMLIB)
  252. X
  253. Xinstall:    $(BINS)
  254. X        cp $(BINS) $(BINDIR)
  255. X        cd $(BINDIR); strip $(BINS)
  256. X        @echo '>>> Do "make install-rmail" to explitly install rmail.'
  257. X
  258. Xinstall-rmail:    rmail
  259. X        install -m 4755 -o root -s rmail /bin
  260. X
  261. Xclean:
  262. X        -rm -f \#* *~ *.o $(BINS)
  263. X
  264. X.c.o:
  265. X        $(CC) $(CFLAGS) -c $<
  266. X
  267. X.c:
  268. X        $(CC) $(CFLAGS) -o $@ $<
  269. END_OF_ida/aux/Makefile
  270. if test 877 -ne `wc -c <ida/aux/Makefile`; then
  271.     echo shar: \"ida/aux/Makefile\" unpacked with wrong size!
  272. fi
  273. # end of overwriting check
  274. fi
  275. if test -f ida/aux/header.c -a "${1}" != "-c" ; then 
  276.   echo shar: Will not over-write existing file \"ida/aux/header.c\"
  277. else
  278. echo shar: Extracting \"ida/aux/header.c\" \(1683 characters\)
  279. sed "s/^X//" >ida/aux/header.c <<'END_OF_ida/aux/header.c'
  280. X/*
  281. X**  HEADER -- Header line parser.
  282. X**  Copyright (c) 1985 Lennart Lovstrand
  283. X**  CIS Dept, Univ of Linkoping, Sweden
  284. X**
  285. X**  Use it, abuse it, but don't sell it.
  286. X**
  287. X**  Version of 14-Apr-85.
  288. X*/
  289. X
  290. X#include <stdio.h>
  291. X#include <strings.h>
  292. X#include <ctype.h>
  293. X#include "useful.h"
  294. X
  295. X#define H_CC        "cc"
  296. X#define H_FROM        "from"
  297. X#define H_MESSAGE_ID    "message_id"
  298. X#define H_RETURN_PATH    "return-path"
  299. X#define H_TO        "to"
  300. X#define H_VIA        "via"
  301. X
  302. X#define COMMA    ','
  303. X
  304. X#define MAKELC(C)    (isupper(C) ? tolower(C) : C)
  305. X
  306. X/*
  307. X *    iskey: checks if the line is prefixed by
  308. X *    the supplied keyword (immediately followed by
  309. X *    a colon)
  310. X */
  311. Xiskey(key, line)
  312. Xchar *key, *line;
  313. X{
  314. X    for (; *key != NULL && *line != NULL; key++, line++)
  315. X        if (MAKELC(*key) != MAKELC(*line))
  316. X            break;
  317. X
  318. X    return *key == NULL && *line == ':';
  319. X}
  320. X
  321. Xchar *eat(str, ch)
  322. Xchar *str, ch;
  323. X{
  324. X    for(; *str == ch; str++);
  325. X    return str;
  326. X}
  327. X
  328. X/*
  329. X *    extract_address:
  330. X *    finds and extracts the machine address part of an address field
  331. X */
  332. X
  333. Xchar *extract_address(field, address)
  334. Xchar *field, *address;
  335. X{
  336. X    char *address_start = address;
  337. X
  338. X    while(*field && *field != COMMA && *field != '>')
  339. X        switch (*field) {
  340. X            case '<':
  341. X                return extract_address(field, address_start);
  342. X            case '(':
  343. X                while (*field && *field != ')');
  344. X                    field++;
  345. X                break;
  346. X            case '"':
  347. X                do
  348. X                    *address++ = *field++;
  349. X                while (*field && *field != '"');
  350. X                if (*field)
  351. X                    *address++ = *field++;
  352. X                break;
  353. X            case ' ':
  354. X                *address++ = *field++;
  355. X                field = eat(field, ' ');
  356. X                break;
  357. X            case '\\':
  358. X                *address++ = *field++;
  359. X                /* fall through */
  360. X            default:
  361. X                *address++ = *field++;
  362. X        }
  363. X    *address = NULL;
  364. X    if (*field)
  365. X        return index(field, COMMA)+1;
  366. X    else
  367. X        return field;
  368. X}
  369. X
  370. X
  371. END_OF_ida/aux/header.c
  372. if test 1683 -ne `wc -c <ida/aux/header.c`; then
  373.     echo shar: \"ida/aux/header.c\" unpacked with wrong size!
  374. fi
  375. # end of overwriting check
  376. fi
  377. if test -f ida/aux/mkdomext.c -a "${1}" != "-c" ; then 
  378.   echo shar: Will not over-write existing file \"ida/aux/mkdomext.c\"
  379. else
  380. echo shar: Extracting \"ida/aux/mkdomext.c\" \(2248 characters\)
  381. sed "s/^X//" >ida/aux/mkdomext.c <<'END_OF_ida/aux/mkdomext.c'
  382. X/*
  383. X**  MKDOMEXT -- Extend domain names
  384. X**  Copyright (c) 1987 Lennart Lovstrand
  385. X**  CIS Dept, Univ of Linkoping, Sweden
  386. X**
  387. X**  Use it, abuse it, but don't sell it.
  388. X*/
  389. X
  390. X#include "useful.h"
  391. X#include <stdio.h>
  392. X#include <ctype.h>
  393. X
  394. X#ifndef lint
  395. Xstatic char    SccsId[] = "@(#)mkdomext.c 1.5 (lel@ida.liu.se) 4/24/87";
  396. X#endif !lint
  397. X
  398. Xvoid printf(), fprintf();
  399. X
  400. Xchar *Progname;
  401. X
  402. Xmain(argc, argv)
  403. X     int argc;
  404. X     char **argv;
  405. X{
  406. X    char buf[BUFSIZ];
  407. X    char domains[BUFSIZ];
  408. X    char *tab, *p, *index();
  409. X
  410. X    Progname = argv[0];
  411. X
  412. X    if (argc == 1) {
  413. X    fprintf(stderr, "%s: no domains?\n", Progname);
  414. X    exit(1);
  415. X    }
  416. X
  417. X    /* collect the argument domain names */
  418. X    domains[0] = '\0';
  419. X    for (argc--, argv++; argc > 0; argc--, argv++) {
  420. X    if (strlen(*argv) + 3 > sizeof(domains)) {
  421. X        fprintf(stderr, "%s: too many domain arguments--\n %s %s %s\n",
  422. X            Progname,
  423. X            "chain two instances of", Progname,
  424. X            "together or recompile with larger ``domains'' array");
  425. X        exit(1);
  426. X    }
  427. X    (void) strcat(domains, " .");
  428. X    (void) strcat(domains, *argv);
  429. X    }
  430. X
  431. X    while (gets(buf) != NULL) {
  432. X    tab = index(buf, '\t');
  433. X    if (tab != NULL)
  434. X        *tab = '\0';
  435. X
  436. X    for (p = index(buf, '.'); p != NULL; p = index(p + 1, '.')) {
  437. X        if (instring(domains, p)) {
  438. X        for (; p != NULL; p = index(p + 1, '.')) {
  439. X            *p = '\0';
  440. X            if (tab != NULL)
  441. X            printf("%s\t%s\n", buf, tab + 1);
  442. X            else
  443. X            printf("%s\n", buf);
  444. X            *p = '.';
  445. X        }
  446. X        break;
  447. X        }
  448. X    }
  449. X    if (tab != NULL)
  450. X        *tab = '\t';
  451. X    puts(buf);
  452. X    }
  453. X}
  454. X
  455. X/*
  456. X**    INSTRING -- Returns TRUE if the source string ``s'' can be found
  457. X**        as a substring in target string ``t''.
  458. X*/
  459. X
  460. Xinstring(t, s)
  461. X     char *t, *s;
  462. X{
  463. X    extern char *index();
  464. X    register char *p;
  465. X    register int len = strlen(s);
  466. X
  467. X    for (p = index(t, *s); p != NULL; p = index(p + 1, *s))
  468. X    if (ispart(p, s, len))
  469. X        return TRUE;
  470. X    return FALSE;
  471. X}
  472. X
  473. X/*
  474. X**    ISPART -- Compare at most the first n chars of two strings
  475. X**        without respect to upper/lower case.
  476. X*/
  477. X
  478. Xispart(s, t, n)
  479. X     register char *s, *t;
  480. X     register int n;
  481. X{
  482. X    for (; n > 0 && *s != '\0' && *t != '\0'; s++, t++, n--)
  483. X    if ((isupper(*s) ? tolower(*s) : *s) !=
  484. X        (isupper(*t) ? tolower(*t) : *t))
  485. X        break;
  486. X    return (n == 0 || *s == *t); /* really *s == 0 && *t == 0 */
  487. X}
  488. END_OF_ida/aux/mkdomext.c
  489. if test 2248 -ne `wc -c <ida/aux/mkdomext.c`; then
  490.     echo shar: \"ida/aux/mkdomext.c\" unpacked with wrong size!
  491. fi
  492. # end of overwriting check
  493. fi
  494. if test -f ida/aux/scanf.c -a "${1}" != "-c" ; then 
  495.   echo shar: Will not over-write existing file \"ida/aux/scanf.c\"
  496. else
  497. echo shar: Extracting \"ida/aux/scanf.c\" \(1068 characters\)
  498. sed "s/^X//" >ida/aux/scanf.c <<'END_OF_ida/aux/scanf.c'
  499. X/*
  500. X**  SCANF -- Program to scan & extract input lines.
  501. X**  Copyright (c) 1987 Lennart Lovstrand
  502. X**  CIS Dept, Univ of Linkoping, Sweden
  503. X**
  504. X**  Use it, abuse it, but don't sell it.
  505. X**
  506. X**  Very simple version 0.1 of Apr 19, 1987 1:18am
  507. X*/
  508. X
  509. X#include "useful.h"
  510. X#include <stdio.h>
  511. X#include <ctype.h>
  512. X
  513. Xmain(argc, argv)
  514. X    int argc;
  515. X    char **argv;
  516. X{
  517. X    char buf[BUFSIZ], val[BUFSIZ];
  518. X    FILE *input;
  519. X    bool ignore_case = FALSE;
  520. X
  521. X    if (argc > 1 && strcmp(argv[1], "-i") == 0) {
  522. X    ignore_case = TRUE;
  523. X    argc--; argv++;
  524. X    }
  525. X
  526. X    if (argc < 2 || argc > 3) {
  527. X    fprintf(stderr, "usage: %s [-i] scanf_pattern [file]");
  528. X    exit(1);
  529. X    }
  530. X
  531. X    if (ignore_case)
  532. X    lower(argv[1]);
  533. X
  534. X    if (argc == 2)
  535. X    input = stdin;
  536. X    else {
  537. X    input = fopen(argv[2], "r");
  538. X    if (input == NULL) {
  539. X        perror(argv[2]);
  540. X        exit(1);
  541. X    }
  542. X    }
  543. X
  544. X    while (fgets(buf, sizeof(buf), input) != NULL) {
  545. X    if (ignore_case)
  546. X        lower(buf);
  547. X    if (sscanf(buf, argv[1], val) == 1)
  548. X        puts(val);
  549. X    }
  550. X}
  551. X
  552. Xlower(p)
  553. X    register char *p;
  554. X{
  555. X    for (; *p != '\0'; p++)
  556. X    if (isupper(*p))
  557. X        *p = tolower(*p);
  558. X}
  559. END_OF_ida/aux/scanf.c
  560. if test 1068 -ne `wc -c <ida/aux/scanf.c`; then
  561.     echo shar: \"ida/aux/scanf.c\" unpacked with wrong size!
  562. fi
  563. # end of overwriting check
  564. fi
  565. if test ! -d ida/cf ; then
  566.     echo shar: Creating directory \"ida/cf\"
  567.     mkdir ida/cf
  568. fi
  569. if test -f ida/cf/Makefile -a "${1}" != "-c" ; then 
  570.   echo shar: Will not over-write existing file \"ida/cf/Makefile\"
  571. else
  572. echo shar: Extracting \"ida/cf/Makefile\" \(1153 characters\)
  573. sed "s/^X//" >ida/cf/Makefile <<'END_OF_ida/cf/Makefile'
  574. X#
  575. X#  MAKEFILE -- Configuration Files.
  576. X#  Copyright (c) 1987 Lennart Lovstrand
  577. X#  CIS Dept, Univ of Linkoping, Sweden
  578. X#
  579. X#  Use it, abuse it, but don't sell it.
  580. X#
  581. X
  582. X#  Linkoping specific defintions 
  583. XCONFIGS=    asterix.cf client.cf majestix.cf newaliases.cf obelix.cf
  584. X
  585. XCLIENTS=    crabbofix lillefix miraculix portofix prefix senilix \
  586. X        smidefix tragicomix
  587. X
  588. X#  The following definitions are inserted by ../Makefile
  589. X#  Change them there--not here!
  590. XLIBDIR=        /usr/lib/mail
  591. X
  592. Xall:        $(CONFIGS)
  593. X
  594. Xinstall:    $(CONFIGS)
  595. X        cp majestix.cf client.cf newaliases.cf $(LIBDIR)
  596. X        rcp asterix.cf asterix:/usr/lib/sendmail.cf
  597. X        mail -s sendmail.cf real_lel@obelix <obelix.cf
  598. X
  599. Xclients:    $(CLIENTS)
  600. X
  601. X$(CLIENTS):
  602. X        -rsh $@ rm /private$(LIBDIR)/sendmail.fc
  603. X        -rcp client.cf $@:/private$(LIBDIR)/sendmail.cf
  604. X
  605. Xdiff:
  606. X        -diff $(LIBDIR)/majestix.cf majestix.cf
  607. X        -diff $(LIBDIR)/client.cf client.cf
  608. X
  609. Xclean:
  610. X        -rm -f \#* *~ $(CONFIGS)
  611. X
  612. Xbackup:
  613. X        cp *.m4 *.mc BACKUP
  614. X
  615. X$(CONFIGS):    Sendmail.mc
  616. X
  617. Xsendmail.cf    Sendmail.cf:
  618. X        @echo 'Based on what host?  Do make <host>.cf instead.'
  619. X
  620. Xstop:
  621. X        -skill sendmail
  622. X
  623. Xrestart:    stop
  624. X        /usr/lib/sendmail -bd -q30m
  625. X
  626. X.SUFFIXES:    .cf .m4
  627. X
  628. X.m4.cf:
  629. X        m4 $*.m4 >$*.cf
  630. END_OF_ida/cf/Makefile
  631. if test 1153 -ne `wc -c <ida/cf/Makefile`; then
  632.     echo shar: \"ida/cf/Makefile\" unpacked with wrong size!
  633. fi
  634. # end of overwriting check
  635. fi
  636. if test -f ida/cf/asterix.m4 -a "${1}" != "-c" ; then 
  637.   echo shar: Will not over-write existing file \"ida/cf/asterix.m4\"
  638. else
  639. echo shar: Extracting \"ida/cf/asterix.m4\" \(448 characters\)
  640. sed "s/^X//" >ida/cf/asterix.m4 <<'END_OF_ida/cf/asterix.m4'
  641. X# Sendmail configuration file for asterix.liu.se
  642. Xdefine(ALIASES, LIBDIR/aliases)
  643. Xdefine(DECNETXTABLE, LIBDIR/decnet/xtable)
  644. Xdefine(DECNETNODES, LIBDIR/decnet/nodes)
  645. Xdefine(DEFAULT_DOMAIN, liu.se)
  646. Xdefine(DOMAINTABLE, LIBDIR/domaintable)
  647. Xdefine(GENERICFROM, LIBDIR/generics)
  648. Xdefine(MAILERTABLE, LIBDIR/mailertable)
  649. Xdefine(PATHTABLE, LIBDIR/pathtable)
  650. Xdefine(UUCPNODES, /usr/lib/uucp/L.sys)
  651. Xdefine(UUCPXTABLE, LIBDIR/uucp/xtable)
  652. Xinclude(Sendmail.mc)
  653. END_OF_ida/cf/asterix.m4
  654. if test 448 -ne `wc -c <ida/cf/asterix.m4`; then
  655.     echo shar: \"ida/cf/asterix.m4\" unpacked with wrong size!
  656. fi
  657. # end of overwriting check
  658. fi
  659. if test -f ida/cf/client.m4 -a "${1}" != "-c" ; then 
  660.   echo shar: Will not over-write existing file \"ida/cf/client.m4\"
  661. else
  662. echo shar: Extracting \"ida/cf/client.m4\" \(412 characters\)
  663. sed "s/^X//" >ida/cf/client.m4 <<'END_OF_ida/cf/client.m4'
  664. X# Sendmail configuration file for Sun-3 clients (*.liu.se)
  665. Xdefine(ALIASES, LIBDIR/aliases)
  666. Xdefine(DECNETXTABLE, LIBDIR/decnet/xtable)
  667. Xdefine(DECNETNODES, LIBDIR/decnet/nodes)
  668. Xdefine(DEFAULT_DOMAIN, liu.se)
  669. Xdefine(DOMAINTABLE, LIBDIR/domaintable)
  670. Xdefine(GENERICFROM, LIBDIR/generics)
  671. Xdefine(PSEUDONYMS, all)
  672. Xdefine(RELAY_HOST, majestix)
  673. Xdefine(RELAY_MAILER, TCP)
  674. Xdefine(RSH_SERVER, majestix)
  675. Xinclude(Sendmail.mc)
  676. END_OF_ida/cf/client.m4
  677. if test 412 -ne `wc -c <ida/cf/client.m4`; then
  678.     echo shar: \"ida/cf/client.m4\" unpacked with wrong size!
  679. fi
  680. # end of overwriting check
  681. fi
  682. if test -f ida/cf/majestix.m4 -a "${1}" != "-c" ; then 
  683.   echo shar: Will not over-write existing file \"ida/cf/majestix.m4\"
  684. else
  685. echo shar: Extracting \"ida/cf/majestix.m4\" \(560 characters\)
  686. sed "s/^X//" >ida/cf/majestix.m4 <<'END_OF_ida/cf/majestix.m4'
  687. X# Sendmail configuration file for host majestix.liu.se
  688. Xdefine(ALIASES, LIBDIR/aliases)
  689. Xdefine(DECNETXTABLE, LIBDIR/decnet/xtable)
  690. Xdefine(DECNETNODES, LIBDIR/decnet/nodes)
  691. Xdefine(DEFAULT_DOMAIN, liu.se)
  692. Xdefine(DOMAINTABLE, LIBDIR/domaintable)
  693. Xdefine(GENERICFROM, LIBDIR/generics)
  694. Xdefine(MAILERTABLE, LIBDIR/mailertable)
  695. Xdefine(PATHTABLE, LIBDIR/pathtable)
  696. Xdefine(PSEUDONYMS, ida.liu.se liuida all)
  697. Xdefine(UUCPNAME, liuida)
  698. Xdefine(UUCPNODES, /usr/lib/uucp/L.sys)
  699. Xdefine(UUCPRELAYS, LIBDIR/uucp/relays)
  700. Xdefine(UUCPXTABLE, LIBDIR/uucp/xtable)
  701. Xinclude(Sendmail.mc)
  702. END_OF_ida/cf/majestix.m4
  703. if test 560 -ne `wc -c <ida/cf/majestix.m4`; then
  704.     echo shar: \"ida/cf/majestix.m4\" unpacked with wrong size!
  705. fi
  706. # end of overwriting check
  707. fi
  708. if test -f ida/cf/newaliases.m4 -a "${1}" != "-c" ; then 
  709.   echo shar: Will not over-write existing file \"ida/cf/newaliases.m4\"
  710. else
  711. echo shar: Extracting \"ida/cf/newaliases.m4\" \(199 characters\)
  712. sed "s/^X//" >ida/cf/newaliases.m4 <<'END_OF_ida/cf/newaliases.m4'
  713. X# Automatically generated config file for newaliases program
  714. Xdefine(ALIASES, LIBDIR/aliases)
  715. Xdefine(DEFAULT_HOST, all)
  716. Xdefine(DOMAINTABLE, LIBDIR/domaintable)
  717. Xdefine(NEWALIASES)
  718. Xinclude(Sendmail.mc)
  719. END_OF_ida/cf/newaliases.m4
  720. if test 199 -ne `wc -c <ida/cf/newaliases.m4`; then
  721.     echo shar: \"ida/cf/newaliases.m4\" unpacked with wrong size!
  722. fi
  723. # end of overwriting check
  724. fi
  725. if test -f ida/cf/obelix.m4 -a "${1}" != "-c" ; then 
  726.   echo shar: Will not over-write existing file \"ida/cf/obelix.m4\"
  727. else
  728. echo shar: Extracting \"ida/cf/obelix.m4\" \(320 characters\)
  729. sed "s/^X//" >ida/cf/obelix.m4 <<'END_OF_ida/cf/obelix.m4'
  730. X# Sendmail configuration file for host obelix.UUCP
  731. Xdefine(ALIASES, LIBDIR/aliases)
  732. Xdefine(BSD29)
  733. Xdefine(DEFAULT_DOMAIN, liu.se)
  734. Xdefine(RELAY_HOST, asterix)
  735. Xdefine(RELAY_MAILER, UUCP-B)
  736. Xdefine(PSEUDONYMS, obelix.UUCP obelix.liu.se obelix.liu obelix.ida.liu.se)
  737. Xdefine(UUCPNODES, /usr/lib/uucp/L.sys)
  738. Xinclude(Sendmail.mc)
  739. END_OF_ida/cf/obelix.m4
  740. if test 320 -ne `wc -c <ida/cf/obelix.m4`; then
  741.     echo shar: \"ida/cf/obelix.m4\" unpacked with wrong size!
  742. fi
  743. # end of overwriting check
  744. fi
  745. if test ! -d ida/doc ; then
  746.     echo shar: Creating directory \"ida/doc\"
  747.     mkdir ida/doc
  748. fi
  749. if test -f ida/doc/Makefile -a "${1}" != "-c" ; then 
  750.   echo shar: Will not over-write existing file \"ida/doc/Makefile\"
  751. else
  752. echo shar: Extracting \"ida/doc/Makefile\" \(996 characters\)
  753. sed "s/^X//" >ida/doc/Makefile <<'END_OF_ida/doc/Makefile'
  754. X#
  755. X#  MAKEFILE -- The Documentation Files.
  756. X#  Copyright (c) 1987 Lennart Lovstrand
  757. X#  CIS Dept, Univ of Linkoping, Sweden
  758. X#
  759. X#  Use it, abuse it, but don't sell it.
  760. X#
  761. X
  762. XMAN1S=        dbm.1 mkdomext.1
  763. XMAN8S=        xalparse.8
  764. XMANS=        $(MAN1S) $(MAN8S)
  765. XDOC=        paper.ms
  766. XDOCS=        part1.ms part2.ms
  767. X
  768. X#  The following definitions are inserted by ../Makefile
  769. X#  Change them there--not here!
  770. XMAN8DIR=    /usr/man/manl
  771. XMAN8EXT=    .l
  772. XMAN1DIR=    /usr/man/manl
  773. XMAN1EXT=    .l
  774. XTROFF=        pstroff
  775. X
  776. Xdoc:        $(DOC)
  777. X        refer -e -l,2 -s $(DOC) | tbl | $(TROFF) -ms
  778. X
  779. Xdoc.lpr:    $(DOC)
  780. X        refer -e -l,2 -s $(DOC) | tbl | nroff -ms > $@
  781. X
  782. Xman:        $(MANS)
  783. X        for m in $(MANS); do \
  784. X            $(TROFF) -man $$m; \
  785. X        done
  786. X
  787. Xman.lpr:    $(MANS)
  788. X        for m in $(MANS); do \
  789. X            nroff -man $$m > $$m.lpr; \
  790. X        done
  791. X
  792. X$(DOC):
  793. X        cat $(DOCS) >$(DOC)
  794. X        -rm -f $(DOCS)
  795. X
  796. Xinstall:    $(MANS)
  797. X        for m in $(MAN1S); do \
  798. X            cp $$m $(MAN1DIR)/`basename $$m .1`$(MAN1EXT); \
  799. X        done
  800. X        for m in $(MAN8S); do \
  801. X            cp $$m $(MAN8DIR)/`basename $$m .8`$(MAN8EXT); \
  802. X        done
  803. X
  804. Xclean:
  805. X        -rm -f \#* *~ *.lpr
  806. END_OF_ida/doc/Makefile
  807. if test 996 -ne `wc -c <ida/doc/Makefile`; then
  808.     echo shar: \"ida/doc/Makefile\" unpacked with wrong size!
  809. fi
  810. # end of overwriting check
  811. fi
  812. if test -f ida/doc/mkdomext.1 -a "${1}" != "-c" ; then 
  813.   echo shar: Will not over-write existing file \"ida/doc/mkdomext.1\"
  814. else
  815. echo shar: Extracting \"ida/doc/mkdomext.1\" \(1613 characters\)
  816. sed "s/^X//" >ida/doc/mkdomext.1 <<'END_OF_ida/doc/mkdomext.1'
  817. X.TH MKDOMEXT 1 "24 April 1987"                \" -*- nroff -*-
  818. X.SH NAME
  819. Xmkdomext \- make the exteneded set of domain names
  820. X.SH SYNOPSIS
  821. X.B mkdomext
  822. X.IR domain " [\|.\|.\|.\|]"
  823. X.SH DESCRIPTION
  824. XThis program acts as a filter that, when supplied with fully qualified
  825. Xdomain names on stdin, will generate all legal abbreviations of these on
  826. Xstdout with respect to the parent domains given on the command line.  It
  827. Xis used to be able to recognize unqualified local subdomains and sibling
  828. Xdomains from one or more positions in the domain hierarchy.
  829. X.PP
  830. XThe fully qualified domains on stdin should be given one on a line, each
  831. Xterminated by a newline or tab.  Any text after the tab will go through
  832. Xuntouched.  This makes it especially useful for filtering the output of
  833. Xthe
  834. X.IR dbm (1)
  835. X.B parse
  836. Xfunction when producing a domain name server table.
  837. X.SH EXAMPLE
  838. X.nf
  839. X.ta \w'majestix.liu.se'u+5n
  840. X% cat >foo
  841. Xmajestix.liu.se    majestix.liu.se
  842. Xobelix.liu.se    obelix.liu.se
  843. Xobelix.\s-1UUCP\s+1    obelix.liu.se
  844. Xaida.uu.se    aida.uu.se
  845. Xmc.lcs.mit.edu    mc.lcs.mit.edu
  846. Xmit-mc    mc.lcs.mit.edu
  847. X^D
  848. X% mkdomext liu.se \s-1UUCP\s+1 <foo >bar
  849. X% cat bar
  850. Xmajestix    majestix.liu.se
  851. Xmajestix.liu    majestix.liu.se
  852. Xmajestix.liu.se    majestix.liu.se
  853. Xobelix    obelix.liu.se
  854. Xobelix.liu    obelix.liu.se
  855. Xobelix.liu.se    obelix.liu.se
  856. Xobelix    obelix.liu.se
  857. Xobelix.\s-1UUCP\s+1    obelix.liu.se
  858. Xaida.uu    aida.uu.se
  859. Xaida.uu.se    aida.uu.se
  860. Xmc.lcs.mit.edu    mc.lcs.mit.edu
  861. Xmit-mc    mc.lcs.mit.edu
  862. X.SH AUTHOR
  863. X.nf
  864. XLennart Lovstrand <lel@ida.liu.se>
  865. XCIS Dept, Univ of Linkoping, Sweden
  866. X.fi
  867. X.SH "SEE ALSO"
  868. X.IR dbm (1)
  869. X.br
  870. XRFC822\-Standard for the Format of ARPA Internet Text Messages
  871. X(section 6.2.2)
  872. END_OF_ida/doc/mkdomext.1
  873. if test 1613 -ne `wc -c <ida/doc/mkdomext.1`; then
  874.     echo shar: \"ida/doc/mkdomext.1\" unpacked with wrong size!
  875. fi
  876. # end of overwriting check
  877. fi
  878. if test -f ida/doc/xalparse.8 -a "${1}" != "-c" ; then 
  879.   echo shar: Will not over-write existing file \"ida/doc/xalparse.8\"
  880. else
  881. echo shar: Extracting \"ida/doc/xalparse.8\" \(1604 characters\)
  882. sed "s/^X//" >ida/doc/xalparse.8 <<'END_OF_ida/doc/xalparse.8'
  883. X.TH XALPARSE 8 "24 April 1987"                \" -*- nroff -*-
  884. X.SH NAME
  885. Xxalparse \- parse an extended aliases file
  886. X.SH SYNOPSIS
  887. X.B xalparse
  888. X.I xaliases aliases generics
  889. X.SH DESCRIPTION
  890. XThe
  891. X.I xalparse
  892. Xprogram parses an extended aliases file and produceces an ordinary
  893. Xaliases file together with a file with generic address translations.
  894. X.PP
  895. XThe format of the xaliases file is a superset of
  896. X.IR aliases (5):
  897. X.RS
  898. Xalias, alias, \|.\|.\|.\|: prefix address, prefix address, \|.\|.\|.\|
  899. X.RE
  900. XIt differes by allowing more than one LHS alias and by adding an
  901. Xoptional
  902. X.I prefix
  903. Xin front of each RHS address.  The
  904. X.I prefix
  905. Xmarks the address as either inbound or outbound according to the
  906. Xfollowing table:
  907. X.RS
  908. X.nf
  909. X.ta \w'(\fIno mark\fP)'u+5n
  910. X(\fIno mark\fP)    Inbound
  911. X<    Outbound
  912. X>    Inbound
  913. X<>    Both Inbound and Outbound
  914. X.fi
  915. X.RE
  916. X.PP
  917. XInbound aliasing is the normal function implemented by
  918. X.IR aliases (5).
  919. XAll inbound entries are therefore simply copied to the
  920. X.I aliases
  921. Xoutput file.  Outbound addresses are written to the
  922. X.I generics
  923. Xfile in a format suitable for parsing by
  924. X.I dbm (1).
  925. XEach line will consist of the first LHS
  926. X.I alias
  927. Xof the entry followed by the outbound addresses separated with spaces.
  928. XThe
  929. X.I generics
  930. Xfile is then normally loaded into a
  931. X.IR dbm (3)
  932. Xdatabase that is read by
  933. X.IR sendmail (8)
  934. Xand used to substitute header sender addresses with the aliased name.
  935. X.SH AUTHOR
  936. X.nf
  937. XLennart Lovstrand <lel@ida.liu.se>
  938. XCIS Dept, Univ of Linkoping, Sweden
  939. X.fi
  940. X.SH "SEE ALSO"
  941. X.IR dbm (1),
  942. X.IR aliases (5),
  943. X.IR sendmail (8)
  944. X.br
  945. XElectronic Mail Addressing in Theory and Practice with The IDA Sendmail
  946. XEnchancement Kit.
  947. END_OF_ida/doc/xalparse.8
  948. if test 1604 -ne `wc -c <ida/doc/xalparse.8`; then
  949.     echo shar: \"ida/doc/xalparse.8\" unpacked with wrong size!
  950. fi
  951. # end of overwriting check
  952. fi
  953. if test ! -d ida/lib ; then
  954.     echo shar: Creating directory \"ida/lib\"
  955.     mkdir ida/lib
  956. fi
  957. if test -f ida/lib/Makefile -a "${1}" != "-c" ; then 
  958.   echo shar: Will not over-write existing file \"ida/lib/Makefile\"
  959. else
  960. echo shar: Extracting \"ida/lib/Makefile\" \(2394 characters\)
  961. sed "s/^X//" >ida/lib/Makefile <<'END_OF_ida/lib/Makefile'
  962. X#
  963. X#  MAKEFILE -- Library Files.
  964. X#  Copyright (c) 1987 Lennart Lovstrand
  965. X#  CIS Dept, Univ of Linkoping, Sweden
  966. X#
  967. X#  Use it, abuse it, but don't sell it.
  968. X#
  969. X
  970. XSENDMAIL=    /usr/lib/sendmail
  971. XTABLES=        domaintable$(DBMEXT) generics$(DBMEXT) \
  972. X        pathtable$(DBMEXT) aliases$(DBMEXT) mailertable$(DBMEXT) \
  973. X        decnet/nodes decnet/xtable$(DBMEXT) uucp/xtable$(DBMEXT)
  974. XPATHFLAGS=    -C25 -i -l`hostname`$(DOMAIN)
  975. XUUCPNODES=    /usr/lib/uucp/L.sys
  976. X
  977. X#  Linkoping specific definitions
  978. XDEPENDENTS=    asterix
  979. XDOMAIN=        .liu.se
  980. XNODE_DATA=    /usr/lisbet/ps/system/node-data.cmd
  981. X
  982. X#  The following definitions are inserted by ../Makefile
  983. X#  Change them there--not here!
  984. XLIBDIR=        /usr/lib/mail
  985. XDBMEXT=        .dir
  986. X
  987. X
  988. X#  Update all dbm tables
  989. Xall:    $(TABLES)
  990. X
  991. X#  Fetch vital files from file server
  992. Xpropagate:
  993. X    @for d in $(DEPENDENTS); do \
  994. X        echo ">>> Propagating changes to $$d"; \
  995. X        rcp domaintable pathtable $${d}:$(LIBDIR); \
  996. X        rcp decnet/nodes decnet/xtable $${d}:$(LIBDIR)/decnet; \
  997. X        rcp uucp/xtable $${d}:$(LIBDIR)/uucp; \
  998. X        rsh $$d "cd $(LIBDIR); make"; \
  999. X    done
  1000. X
  1001. Xpathtable$(DBMEXT):    pathtable
  1002. X    pathalias $(PATHFLAGS) pathtable | dbm load pathtable
  1003. X
  1004. Xaliases generics:    xaliases
  1005. X    xalparse xaliases aliases generics
  1006. X
  1007. Xaliases$(DBMEXT):    aliases
  1008. X    $(SENDMAIL) -Cnewaliases.cf -bi
  1009. X
  1010. Xgenerics$(DBMEXT):    generics
  1011. X    dbm -L make generics generics
  1012. X
  1013. X# Note: Local fix here for making all DECnet nodes belong in .SUNET.SE
  1014. Xdomaintable$(DBMEXT):    domaintable decnet/nodes
  1015. X    (dbm parse domaintable; \
  1016. X     awk '{printf "%s.sunet.se\t%s.sunet.se\n", $$1, $$1}' decnet/nodes) |\
  1017. X     mkdomext liu.se ida.liu.se sunet.se UUCP | dbm -IL load domaintable
  1018. X
  1019. Xmailertable$(DBMEXT):    mailertable
  1020. X    dbm -L make mailertable mailertable
  1021. X
  1022. X# Note: Local fix here for making all DECnet nodes belong in .SUNET.SE
  1023. Xdecnet/xtable$(DBMEXT):    decnet/xtable decnet/nodes
  1024. X    (dbm parse decnet/xtable; \
  1025. X     awk '{printf "%s.sunet.se\t%s\n", $$1, $$1}' decnet/nodes) | \
  1026. X     dbm -IL load decnet/xtable
  1027. X
  1028. Xdecnet/nodes:        $(NODE_DATA)
  1029. X    cp decnet/nodes decnet/nodes.old
  1030. X    scanf -i " set node %*s name %s" $(NODE_DATA) >$@
  1031. X
  1032. Xuucp/xtable$(DBMEXT):    uucp/xtable $(UUCPNODES)
  1033. X    (dbm parse uucp/xtable; \
  1034. X     awk '{printf "%s.UUCP\t%s\n", $$1, $$1}' $(UUCPNODES)) | \
  1035. X     dbm -IL load uucp/xtable
  1036. X
  1037. Xstop:
  1038. X    -/usr/local/bin/skill sendmail
  1039. X
  1040. Xrestart:    stop
  1041. X    $(SENDMAIL) -bd -q30m
  1042. X
  1043. Xasterix:
  1044. X    rsh asterix "cd /usr/lib/mail; make fetch all"
  1045. X
  1046. Xclean:
  1047. X    -rm -f \#* *~ *.dir *.pag *.map *.dat */*.dir */*.pag */*.map */*.dat
  1048. END_OF_ida/lib/Makefile
  1049. if test 2394 -ne `wc -c <ida/lib/Makefile`; then
  1050.     echo shar: \"ida/lib/Makefile\" unpacked with wrong size!
  1051. fi
  1052. # end of overwriting check
  1053. fi
  1054. if test ! -d ida/lib/decnet ; then
  1055.     echo shar: Creating directory \"ida/lib/decnet\"
  1056.     mkdir ida/lib/decnet
  1057. fi
  1058. if test -f ida/lib/decnet/nodes -a "${1}" != "-c" ; then 
  1059.   echo shar: Will not over-write existing file \"ida/lib/decnet/nodes\"
  1060. else
  1061. echo shar: Extracting \"ida/lib/decnet/nodes\" \(1248 characters\)
  1062. sed "s/^X//" >ida/lib/decnet/nodes <<'END_OF_ida/lib/decnet/nodes'
  1063. Xliuida
  1064. Xlisbet
  1065. Xlaura
  1066. Xbill
  1067. Xbull
  1068. Xtrisse
  1069. Xfrasse
  1070. Xmurre
  1071. Xfille
  1072. Xbilbo
  1073. Xfrodo
  1074. Xelrond
  1075. Xgollum
  1076. Xolds
  1077. Xchevy
  1078. Xkafka
  1079. Xrolls
  1080. Xniva
  1081. Xvaz
  1082. Xlinnea
  1083. Xlinus
  1084. Xlina
  1085. Xelinor
  1086. Xp13l00
  1087. Xviktor
  1088. Xludvig
  1089. Xhazel
  1090. Xbigwig
  1091. Xkloker
  1092. Xtoker
  1093. Xclover
  1094. Xfiver
  1095. Xdaisy
  1096. Xaladin
  1097. Xturtle
  1098. Xminmin
  1099. Xjinjin
  1100. Xweiwei
  1101. Xfelix
  1102. Xflinta
  1103. Xflisa
  1104. Xfrida
  1105. Xfilip
  1106. Xfilipb
  1107. Xfenix
  1108. Xfrank
  1109. Xdec
  1110. Xrtr13a
  1111. Xmoll
  1112. Xdur
  1113. Xnfr
  1114. Xelin
  1115. Xelsy
  1116. Xelmer
  1117. Xromeo
  1118. Xvaxkab
  1119. Xkleo
  1120. Xklas
  1121. Xkicki
  1122. Xvera
  1123. Xkaron
  1124. Xpallas
  1125. Xfreja
  1126. Xelvira
  1127. Xsi
  1128. Xrtr08a
  1129. Xidun
  1130. Xbrage
  1131. Xbackus
  1132. Xnoatun
  1133. Xnjord
  1134. Xskade
  1135. Xgotl
  1136. Xmeta
  1137. Xpara
  1138. Xthermo
  1139. Xhelios
  1140. Xoseen
  1141. Xksab
  1142. Xkthttt
  1143. Xevild
  1144. Xelinda
  1145. Xelise
  1146. Xella
  1147. Xelton
  1148. Xelena
  1149. Xelke
  1150. Xelsa
  1151. Xeliza
  1152. Xornen
  1153. Xknoen
  1154. Xffacom
  1155. Xafivax
  1156. Xa08001
  1157. Xplasma
  1158. Xplasm1
  1159. Xvanb
  1160. Xvana
  1161. Xmcg
  1162. Xvanc
  1163. Xbasun
  1164. Xpsypdp
  1165. Xpsyvax
  1166. Xutb1
  1167. Xutb2
  1168. Xbiovax
  1169. Xostvax
  1170. Xtpsyk
  1171. Xargus
  1172. Xrtm
  1173. Xostpdp
  1174. Xlvax
  1175. Xmanwe
  1176. Xskogis
  1177. Xfjarr
  1178. Xrtr09a
  1179. Xmalin
  1180. Xtekla
  1181. Xcartus
  1182. Xpelle
  1183. Xpictor
  1184. Xtlu
  1185. Xmax
  1186. Xkvax1
  1187. Xkvax2
  1188. Xsigurd
  1189. Xescil
  1190. Xgwax1
  1191. Xgwax2
  1192. Xkemist
  1193. Xcell
  1194. Xminc
  1195. Xsilver
  1196. Xlapse
  1197. Xmaja
  1198. Xrtr18a
  1199. Ximunis
  1200. Xxray
  1201. Xgraph
  1202. Ximmuna
  1203. Xbmc1
  1204. Xfarfar
  1205. Xeva
  1206. Xnimbus
  1207. Xlaban
  1208. Xpax
  1209. Xtersx
  1210. Xapele1
  1211. Xtekn01
  1212. Xinfth1
  1213. Xtherm1
  1214. Xorgch1
  1215. Xfyvax1
  1216. Xfyvax2
  1217. Xelsys
  1218. Xcontrl
  1219. Xmeddat
  1220. Xsostel
  1221. Xfyvax3
  1222. Xcthmga
  1223. Xrtr31a
  1224. Xinfth2
  1225. Xinfth3
  1226. Xinfth4
  1227. Xkstad
  1228. Xlnkarl
  1229. Xedbild
  1230. Xsmtgbg
  1231. Xgotmed
  1232. Xvega
  1233. Xkcvax
  1234. Xsirius
  1235. Xgemini
  1236. Xadam
  1237. Xcastor
  1238. Xpollux
  1239. Xrigel
  1240. Xpandor
  1241. Xikaros
  1242. Xjanus
  1243. Xperdix
  1244. Xpan
  1245. Xshanno
  1246. Xbutter
  1247. Xerlang
  1248. Xpluto
  1249. Xagaton
  1250. Xbode
  1251. Xemma
  1252. Xshiva
  1253. Xegino
  1254. Xsamson
  1255. Xtyche
  1256. Xgarbo
  1257. Xalice
  1258. Xmira
  1259. Xp46xje
  1260. Xp46ldc
  1261. Xrtr46a
  1262. Xp46ibm
  1263. Xp46vm1
  1264. Xvaxi
  1265. Xvaxii
  1266. END_OF_ida/lib/decnet/nodes
  1267. if test 1248 -ne `wc -c <ida/lib/decnet/nodes`; then
  1268.     echo shar: \"ida/lib/decnet/nodes\" unpacked with wrong size!
  1269. fi
  1270. # end of overwriting check
  1271. fi
  1272. if test -f ida/lib/decnet/xtable -a "${1}" != "-c" ; then 
  1273.   echo shar: Will not over-write existing file \"ida/lib/decnet/xtable\"
  1274. else
  1275. echo shar: Extracting \"ida/lib/decnet/xtable\" \(1613 characters\)
  1276. sed "s/^X//" >ida/lib/decnet/xtable <<'END_OF_ida/lib/decnet/xtable'
  1277. X#
  1278. X#    DECnet domain translation table v1.0
  1279. X#    Last edited by lel@ida.liu.se Mon Apr 20 21:42:58 MET DST 1987
  1280. X#
  1281. X#    This file contiains the official domain name for nodes
  1282. X#    either on the locally connected DECnet or on the national
  1283. X#    SUNET.
  1284. X#
  1285. X#    Each line should contain the node's name within the DECnet
  1286. X#    followed by it's full official domain name.  The domain name
  1287. X#    may be followed by other names by which the node should be
  1288. X#    recognized, eg. when nodes are present in multiple domains.
  1289. X#
  1290. X#    Nodes not represented here but present in the decnet/nodes file
  1291. X#    are assumed to be contained in the SUNET.SE domain.
  1292. X#
  1293. X
  1294. Xagaton        agaton.lu.se
  1295. Xaida        aida.uu.se
  1296. Xaladin        aladin.liu.se
  1297. Xbmc1        bmc1.uu.se
  1298. Xcarmen        carmen.uu.se
  1299. Xcartus        cartus.uu.se
  1300. Xcell        cell.uu.se
  1301. Xclover        clover.liu.se
  1302. Xdaisy        daisy.liu.se
  1303. Xelinor        elinor.liu.se
  1304. Xescil        escil.uu.se
  1305. Xeva        eva.uu.se
  1306. Xfarfar        farfar.uu.se
  1307. Xfreja        freja.qz.se
  1308. Xgraph        graph.uu.se
  1309. Xgwax1        gwax1.uu.se
  1310. Xgwax2        gwax2.uu.se
  1311. Xhazel        hazel.liu.se
  1312. Ximmuna        immuna.uu.se
  1313. Ximunis        imunis.uu.se
  1314. Xjinjin        jinjin.liu.se
  1315. Xkemist        kemist.uu.se
  1316. Xkvax1        kvax1.uu.se
  1317. Xkvax2        kvax2.uu.se
  1318. Xlaban        laban.uu.se
  1319. Xlapse        lapse.uu.se
  1320. Xlina        lina.liu.se
  1321. Xlinnea        linnea.liu.se
  1322. Xlinus        linus.liu.se
  1323. Xlisbet        lisbet.liu.se
  1324. Xludvig        ludvig.liu.se
  1325. Xmaja        maja.uu.se
  1326. Xmalin        malin.uu.se
  1327. Xmax        max.uu.se
  1328. Xminc        minc.uu.se
  1329. Xminmin        minmin.liu.se
  1330. Xnimbus        nimbus.uu.se
  1331. Xp13l00        p13l00.liu.se
  1332. Xpandor        pandor.lu.se
  1333. Xpax        pax.uu.se
  1334. Xpelle        pelle.uu.se
  1335. Xpictor        pictor.uu.se
  1336. Xrtr18a        rtr18a.uu.se
  1337. Xsigurd        sigurd.uu.se
  1338. Xsilver        silver.uu.se
  1339. Xtekla        tekla.uu.se
  1340. Xtlu        tlu.uu.se
  1341. Xturtle        turtle.liu.se
  1342. Xviktor        viktor.liu.se
  1343. Xweiwei        weiwei.liu.se
  1344. Xxray        xray.uu.se
  1345. END_OF_ida/lib/decnet/xtable
  1346. if test 1613 -ne `wc -c <ida/lib/decnet/xtable`; then
  1347.     echo shar: \"ida/lib/decnet/xtable\" unpacked with wrong size!
  1348. fi
  1349. # end of overwriting check
  1350. fi
  1351. if test -f ida/lib/mailertable -a "${1}" != "-c" ; then 
  1352.   echo shar: Will not over-write existing file \"ida/lib/mailertable\"
  1353. else
  1354. echo shar: Extracting \"ida/lib/mailertable\" \(374 characters\)
  1355. sed "s/^X//" >ida/lib/mailertable <<'END_OF_ida/lib/mailertable'
  1356. X#
  1357. X#    Mailer table for physical node majestix.liu.se
  1358. X#    (aka the UUCP node liuida)
  1359. X#
  1360. X
  1361. XUUCP:alp    alp.UUCP    alp.se
  1362. XUUCP:liutde    liutde.UUCP    liutde.se    tde.liu.se
  1363. XUUCP:prosys    prosys.UUCP    prosys.se
  1364. XUUCP-A:enea    enea.UUCP    enea.se
  1365. XUUCP-A:erilin    erilin.UUCP    erilin.se    erilin.ericsson.se
  1366. XUUCP-A:erix    erix.UUCP    erix.se        erix.ericsson.se
  1367. XUUCP-A:rainier    rainier.UUCP    rainier.se    rainier.liu.se
  1368. END_OF_ida/lib/mailertable
  1369. if test 374 -ne `wc -c <ida/lib/mailertable`; then
  1370.     echo shar: \"ida/lib/mailertable\" unpacked with wrong size!
  1371. fi
  1372. # end of overwriting check
  1373. fi
  1374. if test -f ida/lib/restart_clients -a "${1}" != "-c" ; then 
  1375.   echo shar: Will not over-write existing file \"ida/lib/restart_clients\"
  1376. else
  1377. echo shar: Extracting \"ida/lib/restart_clients\" \(202 characters\)
  1378. sed "s/^X//" >ida/lib/restart_clients <<'END_OF_ida/lib/restart_clients'
  1379. X#!/bin/sh
  1380. X#        restart sendmail on all clients
  1381. X#
  1382. X
  1383. Xfor h in crabbofix lillefix miraculix portofix prefix senilix smidefix tragico
  1384. mix; do
  1385. X  echo -n "$h "
  1386. X  rsh $h -n "(cd /usr/lib/mail; make restart)"
  1387. Xdone
  1388. END_OF_ida/lib/restart_clients
  1389. if test 202 -ne `wc -c <ida/lib/restart_clients`; then
  1390.     echo shar: \"ida/lib/restart_clients\" unpacked with wrong size!
  1391. fi
  1392. chmod +x ida/lib/restart_clients
  1393. # end of overwriting check
  1394. fi
  1395. if test -f ida/lib/sendmail.hf -a "${1}" != "-c" ; then 
  1396.   echo shar: Will not over-write existing file \"ida/lib/sendmail.hf\"
  1397. else
  1398. echo shar: Extracting \"ida/lib/sendmail.hf\" \(1858 characters\)
  1399. sed "s/^X//" >ida/lib/sendmail.hf <<'END_OF_ida/lib/sendmail.hf'
  1400. X@(#)    sendmail.hf    4.2    6/7/85
  1401. Xcpyr    
  1402. Xcpyr    Sendmail
  1403. Xcpyr    Copyright (c) 1983  Eric P. Allman
  1404. Xcpyr    Berkeley, California
  1405. Xcpyr    
  1406. Xcpyr    Copyright (c) 1983 Regents of the University of California.
  1407. Xcpyr    All rights reserved.  The Berkeley software License Agreement
  1408. Xcpyr    specifies the terms and conditions for redistribution.
  1409. Xcpyr    
  1410. Xcpyr    @(#)sendmail.hf    4.2 (Berkeley) 6/7/85
  1411. Xcpyr    
  1412. Xsmtp    Commands:
  1413. Xsmtp        HELO    MAIL    RCPT    DATA    RSET
  1414. Xsmtp        NOOP    QUIT    HELP    VRFY    EXPN
  1415. Xsmtp    For more info use "HELP <topic>".
  1416. Xsmtp    To report bugs in the implementation contact eric@Berkeley.ARPA
  1417. Xsmtp    or eric@UCB-ARPA.ARPA.
  1418. Xsmtp    For local information contact postmaster at this site.
  1419. Xhelp    HELP [ <topic> ]
  1420. Xhelp        The HELP command gives help info.
  1421. Xhelo    HELO <hostname>
  1422. Xhelo        Introduce yourself.  I am a boor, so I really don't
  1423. Xhelo        care if you do.
  1424. Xmail    MAIL FROM: <sender>
  1425. Xmail        Specifies the sender.
  1426. Xrcpt    RCPT TO: <recipient>
  1427. Xrcpt        Specifies the recipient.  Can be used any number of times.
  1428. Xdata    DATA
  1429. Xdata        Following text is collected as the message.
  1430. Xdata        End with a single dot.
  1431. Xrset    RSET
  1432. Xrset        Resets the system.
  1433. Xquit    QUIT
  1434. Xquit        Exit sendmail (SMTP).
  1435. Xvrfy    VRFY <recipient>
  1436. Xvrfy        Not implemented to protocol.  Gives some sexy
  1437. Xvrfy        information.
  1438. Xexpn    EXPN <recipient>
  1439. Xexpn        Same as VRFY in this implementation.
  1440. Xnoop    NOOP
  1441. Xnoop        Do nothing.
  1442. Xsend    SEND FROM: <sender>
  1443. Xsend        replaces the MAIL command, and can be used to send
  1444. Xsend        directly to a users terminal.  Not supported in this
  1445. Xsend        implementation.
  1446. Xsoml    SOML FROM: <sender>
  1447. Xsoml        Send or mail.  If the user is logged in, send directly,
  1448. Xsoml        otherwise mail.  Not supported in this implementation.
  1449. Xsaml    SAML FROM: <sender>
  1450. Xsaml        Send and mail.  Send directly to the user's terminal,
  1451. Xsaml        and also mail a letter.  Not supported in this
  1452. Xsaml        implementation.
  1453. Xturn    TURN
  1454. Xturn        Reverses the direction of the connection.  Not currently
  1455. Xturn        implemented.
  1456. END_OF_ida/lib/sendmail.hf
  1457. if test 1858 -ne `wc -c <ida/lib/sendmail.hf`; then
  1458.     echo shar: \"ida/lib/sendmail.hf\" unpacked with wrong size!
  1459. fi
  1460. # end of overwriting check
  1461. fi
  1462. if test -f ida/lib/sendmail.st -a "${1}" != "-c" ; then 
  1463.   echo shar: Will not over-write existing file \"ida/lib/sendmail.st\"
  1464. else
  1465. echo shar: Extracting \"ida/lib/sendmail.st\" \(0 character\)
  1466. sed "s/^X//" >ida/lib/sendmail.st <<'END_OF_ida/lib/sendmail.st'
  1467. END_OF_ida/lib/sendmail.st
  1468. if test 0 -ne `wc -c <ida/lib/sendmail.st`; then
  1469.     echo shar: \"ida/lib/sendmail.st\" unpacked with wrong size!
  1470. fi
  1471. # end of overwriting check
  1472. fi
  1473. if test -f ida/lib/stop_clients -a "${1}" != "-c" ; then 
  1474.   echo shar: Will not over-write existing file \"ida/lib/stop_clients\"
  1475. else
  1476. echo shar: Extracting \"ida/lib/stop_clients\" \(196 characters\)
  1477. sed "s/^X//" >ida/lib/stop_clients <<'END_OF_ida/lib/stop_clients'
  1478. X#!/bin/sh
  1479. X#        stop sendmail on all clients
  1480. X#
  1481. X
  1482. Xfor h in crabbofix lillefix miraculix portofix prefix senilix smidefix tragico
  1483. mix; do
  1484. X  echo -n "$h "
  1485. X  rsh $h -n "(cd /usr/lib/mail; make stop)"
  1486. Xdone
  1487. END_OF_ida/lib/stop_clients
  1488. if test 196 -ne `wc -c <ida/lib/stop_clients`; then
  1489.     echo shar: \"ida/lib/stop_clients\" unpacked with wrong size!
  1490. fi
  1491. chmod +x ida/lib/stop_clients
  1492. # end of overwriting check
  1493. fi
  1494. if test ! -d ida/lib/uucp ; then
  1495.     echo shar: Creating directory \"ida/lib/uucp\"
  1496.     mkdir ida/lib/uucp
  1497. fi
  1498. if test -f ida/lib/uucp/relays -a "${1}" != "-c" ; then 
  1499.   echo shar: Will not over-write existing file \"ida/lib/uucp/relays\"
  1500. else
  1501. echo shar: Extracting \"ida/lib/uucp/relays\" \(548 characters\)
  1502. sed "s/^X//" >ida/lib/uucp/relays <<'END_OF_ida/lib/uucp/relays'
  1503. Xakgua.UUCP
  1504. Xalberta.UUCP
  1505. Xbellcore.UUCP
  1506. Xburl.UUCP
  1507. Xcbosgd.UUCP
  1508. Xcernvax.UUCP
  1509. Xclyde.UUCP
  1510. Xcmcl2.UUCP
  1511. Xcuae2.UUCP
  1512. Xdecvax.UUCP
  1513. Xdecwrl.UUCP
  1514. Xdiku.UUCP
  1515. Xdrillsys.UUCP
  1516. Xenea.UUCP
  1517. Xenea.se
  1518. Xgatech.UUCP
  1519. Xglacier.UUCP
  1520. Xhao.UUCP
  1521. Xhplabs.UUCP
  1522. Xi2unix.UUCP
  1523. Xihnp4.UUCP
  1524. Xinria.UUCP
  1525. Xkddlab.UUCP
  1526. Xlll-crg.UUCP
  1527. Xlll-lcc.UUCP
  1528. Xmcnc.UUCP
  1529. Xmcvax.UUCP
  1530. Xmcvax.cwi.nl
  1531. Xmunnari.UUCP
  1532. Xoliveb.UUCP
  1533. Xpenet.UUCP
  1534. Xphilabs.UUCP
  1535. Xprlb2.UUCP
  1536. Xqantel.UUCP
  1537. Xsdcrdcf.UUCP
  1538. Xsdcsvax.UUCP
  1539. Xseismo.UUCP
  1540. Xtektronix.UUCP
  1541. Xubc-vision.UUCP
  1542. Xukc.UUCP
  1543. Xulysses.UUCP
  1544. Xunido.UUCP
  1545. Xutzoo.UUCP
  1546. Xuw-beaver.UUCP
  1547. Xvmars.UUCP
  1548. Xwatmath.UUCP
  1549. END_OF_ida/lib/uucp/relays
  1550. if test 548 -ne `wc -c <ida/lib/uucp/relays`; then
  1551.     echo shar: \"ida/lib/uucp/relays\" unpacked with wrong size!
  1552. fi
  1553. # end of overwriting check
  1554. fi
  1555. if test -f ida/lib/uucp/xtable -a "${1}" != "-c" ; then 
  1556.   echo shar: Will not over-write existing file \"ida/lib/uucp/xtable\"
  1557. else
  1558. echo shar: Extracting \"ida/lib/uucp/xtable\" \(672 characters\)
  1559. sed "s/^X//" >ida/lib/uucp/xtable <<'END_OF_ida/lib/uucp/xtable'
  1560. X#
  1561. X#    Translation table between domain addresses and
  1562. X#    flat-spaced UUCP node names.
  1563. X#
  1564. X#    This table is used when formatting addresses for
  1565. X#    delivery overold-fashioned UUCP links.  Batched SMTP
  1566. X#    over UUCP does not use this table, since it is assumed
  1567. X#    that (B)SMTP nodes already know about domain names.
  1568. X#
  1569. X#    It is never necessary to enter a translation from "foo.UUCP"
  1570. X#    to "foo", since that already (automatically) is done by
  1571. X#    ruleset 14.
  1572. X#
  1573. X
  1574. Xalp        alp.se
  1575. Xemil        emil.uu.se
  1576. Xenea        enea.se
  1577. Xerilin        erilin.ericsson.se
  1578. Xerix        erix.ericsson.se
  1579. Xkuling        kuling.uu.se
  1580. Xliuida        ida.liu.se
  1581. Xliutde        tde.liu.se
  1582. Xmcvax        mcvax.cwi.nl
  1583. Xnumax        numax.uu.se
  1584. Xobelix        obelix.liu.se
  1585. Xprosys        prosys.se
  1586. END_OF_ida/lib/uucp/xtable
  1587. if test 672 -ne `wc -c <ida/lib/uucp/xtable`; then
  1588.     echo shar: \"ida/lib/uucp/xtable\" unpacked with wrong size!
  1589. fi
  1590. # end of overwriting check
  1591. fi
  1592. if test ! -d ida/patches ; then
  1593.     echo shar: Creating directory \"ida/patches\"
  1594.     mkdir ida/patches
  1595. fi
  1596. if test -f ida/patches/BSD29.edit -a "${1}" != "-c" ; then 
  1597.   echo shar: Will not over-write existing file \"ida/patches/BSD29.edit\"
  1598. else
  1599. echo shar: Extracting \"ida/patches/BSD29.edit\" \(263 characters\)
  1600. sed "s/^X//" >ida/patches/BSD29.edit <<'END_OF_ida/patches/BSD29.edit'
  1601. X: BSD29.edit SRCDIR
  1602. Xcd $1
  1603. Xchmod u+w Makefile
  1604. Xecho ">>> Editing $1/Makefile for use with BSD 2.9..."
  1605. X/bin/ed Makefile <<EOF
  1606. Xg/^LIBS=/s/$/ -ljobs -lndir/
  1607. Xg/^OBJS2=/s/$/ bcopy.o/
  1608. Xg/^SRCS2=/s/$/ bcopy.c/
  1609. Xg/^CCONFIG=/s/$/ -DBSD29 -DUCB_NET/
  1610. Xw
  1611. Xq
  1612. XEOF
  1613. Xchmod u-w Makefile
  1614. END_OF_ida/patches/BSD29.edit
  1615. if test 263 -ne `wc -c <ida/patches/BSD29.edit`; then
  1616.     echo shar: \"ida/patches/BSD29.edit\" unpacked with wrong size!
  1617. fi
  1618. # end of overwriting check
  1619. fi
  1620. if test -f ida/patches/BSD42.diff -a "${1}" != "-c" ; then 
  1621.   echo shar: Will not over-write existing file \"ida/patches/BSD42.diff\"
  1622. else
  1623. echo shar: Extracting \"ida/patches/BSD42.diff\" \(523 characters\)
  1624. sed "s/^X//" >ida/patches/BSD42.diff <<'END_OF_ida/patches/BSD42.diff'
  1625. X*** sendmail.h.old    Wed May 27 01:59:12 1987
  1626. X--- sendmail.h    Wed May 27 02:26:37 1987
  1627. X***************
  1628. X*** 652,654 ****
  1629. X--- 652,673 ----
  1630. X  };
  1631. X  
  1632. X  extern struct metamac    MetaMacros[];
  1633. X+  
  1634. X+ /*
  1635. X+ ** BSD4.2 Compatibility Code
  1636. X+ */
  1637. X+ 
  1638. X+ #ifndef sigmask
  1639. X+ # define sigmask(m)    (1 << ((m)-1))
  1640. X+ #endif sigmask
  1641. X+ 
  1642. X+ #ifndef TRY_AGAIN
  1643. X+ # define TRY_AGAIN    2
  1644. X+ # ifdef EXTERN
  1645. X+ EXTERN int    h_errno;        /* ought to be initialized too */
  1646. X+ # endif EXTERN
  1647. X+ #endif TRY_AGAIN
  1648. X+ 
  1649. X+ #ifndef LOG_MAIL
  1650. X+ # define LOG_MAIL    (2<<3)
  1651. X+ #endif LOG_MAIL
  1652. END_OF_ida/patches/BSD42.diff
  1653. if test 523 -ne `wc -c <ida/patches/BSD42.diff`; then
  1654.     echo shar: \"ida/patches/BSD42.diff\" unpacked with wrong size!
  1655. fi
  1656. # end of overwriting check
  1657. fi
  1658. if test -f ida/patches/MDBM.edit -a "${1}" != "-c" ; then 
  1659.   echo shar: Will not over-write existing file \"ida/patches/MDBM.edit\"
  1660. else
  1661. echo shar: Extracting \"ida/patches/MDBM.edit\" \(171 characters\)
  1662. sed "s/^X//" >ida/patches/MDBM.edit <<'END_OF_ida/patches/MDBM.edit'
  1663. X: MDBM.edit SRCDIR DBMLIB
  1664. Xcd $1
  1665. Xchmod u+w Makefile
  1666. Xecho ">>> Editing $1/Makefile to enable MDBM..."
  1667. X/bin/ed Makefile <<EOF
  1668. Xg/^LIBS=/s/-ldbm/$2/
  1669. Xw
  1670. Xq
  1671. XEOF
  1672. Xchmod u-w Makefile
  1673. END_OF_ida/patches/MDBM.edit
  1674. if test 171 -ne `wc -c <ida/patches/MDBM.edit`; then
  1675.     echo shar: \"ida/patches/MDBM.edit\" unpacked with wrong size!
  1676. fi
  1677. # end of overwriting check
  1678. fi
  1679. if test -f ida/patches/Makefile -a "${1}" != "-c" ; then 
  1680.   echo shar: Will not over-write existing file \"ida/patches/Makefile\"
  1681. else
  1682. echo shar: Extracting \"ida/patches/Makefile\" \(1231 characters\)
  1683. sed "s/^X//" >ida/patches/Makefile <<'END_OF_ida/patches/Makefile'
  1684. X#
  1685. X#  MAKEFILE -- Sendmail Patches.
  1686. X#  Copyright (c) 1987 Lennart Lovstrand
  1687. X#  CIS Dept, Univ of Linkoping, Sweden
  1688. X#
  1689. X#  Use it, abuse it, but don't sell it.
  1690. X#
  1691. X
  1692. XSRCDIFFS=    Version.c.diff alias.c.diff conf.c.diff daemon.c.diff \
  1693. X        deliver.c.diff err.c.diff headers.c.diff macro.c.diff \
  1694. X        main.c.diff parseaddr.c.diff queue.c.diff readcf.c.diff \
  1695. X        recipient.c.diff savemail.c.diff sendmail.h.diff \
  1696. X        srvrsmtp.c.diff usersmtp.c.diff util.c.diff
  1697. XDOCDIFFS=    op.me.diff
  1698. X
  1699. X
  1700. X#  The following definitions are inserted by ../Makefile
  1701. X#  Change them there--not here!
  1702. XMDBM=
  1703. XDBMLIB=        -ldbm
  1704. XSRCDIR=        ../../src
  1705. XDOCDIR=        ../../doc
  1706. X
  1707. XBSD43 bsd43 patch:
  1708. X        for f in $(SRCDIFFS); do \
  1709. X            patch $(SRCDIR)/`basename $$f .diff` $$f; \
  1710. X        done
  1711. X        for f in $(DOCDIFFS); do \
  1712. X            patch $(DOCDIR)/`basename $$f .diff` $$f; \
  1713. X        done
  1714. X        -if [ -n "$(MDBM)" ]; then \
  1715. X            cp mdbm_compat.h $(SRCDIR); \
  1716. X            patch -d $(SRCDIR) -b .old < MDBM.diff; \
  1717. X            sh MDBM.edit $(SRCDIR) $(DBMLIB); \
  1718. X        fi
  1719. X
  1720. XBSD42 bsd42:    BSD43
  1721. X        patch -d $(SRCDIR) -b .old < BSD42.diff
  1722. X
  1723. XBSD29 bsd29:    BSD42
  1724. X        patch -d $(SRCDIR) -b .old < BSD29.diff
  1725. X        sh BSD29.edit $(SRCDIR)
  1726. X
  1727. Xbackup:
  1728. X        tar cvf Backup.tar $(SRCDIR)/*.[hc] $(DOCDIR)/op.me
  1729. X
  1730. Xrestore:
  1731. X        tar xvf Backup.tar
  1732. X
  1733. Xclean:
  1734. X        -rm -f \#* *~ Backup.tar
  1735. END_OF_ida/patches/Makefile
  1736. if test 1231 -ne `wc -c <ida/patches/Makefile`; then
  1737.     echo shar: \"ida/patches/Makefile\" unpacked with wrong size!
  1738. fi
  1739. # end of overwriting check
  1740. fi
  1741. if test -f ida/patches/Version.c.diff -a "${1}" != "-c" ; then 
  1742.   echo shar: Will not over-write existing file \"ida/patches/Version.c.diff\"
  1743. else
  1744. echo shar: Extracting \"ida/patches/Version.c.diff\" \(405 characters\)
  1745. sed "s/^X//" >ida/patches/Version.c.diff <<'END_OF_ida/patches/Version.c.diff'
  1746. X*** Version.c.orig    Fri Mar 13 18:51:11 1987
  1747. X--- Version.c    Mon May 25 15:51:13 1987
  1748. X***************
  1749. X*** 12,18 ****
  1750. X  static char    SccsId[] = "@(#)version.c    5.51 (Berkeley) 5/2/86";
  1751. X  #endif not lint
  1752. X  
  1753. X! char    Version[] = "5.51";
  1754. X  
  1755. X  # ifdef COMMENT
  1756. X  
  1757. X--- 12,18 ----
  1758. X  static char    SccsId[] = "@(#)version.c    5.51 (Berkeley) 5/2/86";
  1759. X  #endif not lint
  1760. X  
  1761. X! char    Version[] = "5.51++";
  1762. X  
  1763. X  # ifdef COMMENT
  1764. X  
  1765. END_OF_ida/patches/Version.c.diff
  1766. if test 405 -ne `wc -c <ida/patches/Version.c.diff`; then
  1767.     echo shar: \"ida/patches/Version.c.diff\" unpacked with wrong size!
  1768. fi
  1769. # end of overwriting check
  1770. fi
  1771. if test -f ida/patches/conf.c.diff -a "${1}" != "-c" ; then 
  1772.   echo shar: Will not over-write existing file \"ida/patches/conf.c.diff\"
  1773. else
  1774. echo shar: Extracting \"ida/patches/conf.c.diff\" \(720 characters\)
  1775. sed "s/^X//" >ida/patches/conf.c.diff <<'END_OF_ida/patches/conf.c.diff'
  1776. X*** conf.c.orig    Fri Mar 13 18:51:01 1987
  1777. X--- conf.c    Mon May 25 15:54:51 1987
  1778. X***************
  1779. X*** 80,85 ****
  1780. X--- 80,86 ----
  1781. X      "resent-cc",        H_RCPT|H_RESENT,
  1782. X      "bcc",            H_RCPT|H_ACHECK,
  1783. X      "resent-bcc",        H_RCPT|H_ACHECK|H_RESENT,
  1784. X+     "apparently-to",    H_RCPT,
  1785. X          /* message identification and control */
  1786. X      "message-id",        0,
  1787. X      "resent-message-id",    H_RESENT,
  1788. X***************
  1789. X*** 141,146 ****
  1790. X--- 142,149 ----
  1791. X  
  1792. X  setdefaults()
  1793. X  {
  1794. X+     int c;
  1795. X+ 
  1796. X      QueueLA = 8;
  1797. X      QueueFactor = 10000;
  1798. X      RefuseLA = 12;
  1799. X***************
  1800. X*** 151,156 ****
  1801. X--- 154,164 ----
  1802. X      FileMode = 0644;
  1803. X      DefUid = 1;
  1804. X      DefGid = 1;
  1805. X+ 
  1806. X+ # ifdef NDBM
  1807. X+     for (c = 0; c < 128; c++)
  1808. X+         DbmTab[c].dbm = DB_NOTYETOPEN;
  1809. X+ # endif NDBM
  1810. X  }
  1811. X  
  1812. X  # ifdef V6
  1813. END_OF_ida/patches/conf.c.diff
  1814. if test 720 -ne `wc -c <ida/patches/conf.c.diff`; then
  1815.     echo shar: \"ida/patches/conf.c.diff\" unpacked with wrong size!
  1816. fi
  1817. # end of overwriting check
  1818. fi
  1819. if test -f ida/patches/err.c.diff -a "${1}" != "-c" ; then 
  1820.   echo shar: Will not over-write existing file \"ida/patches/err.c.diff\"
  1821. else
  1822. echo shar: Extracting \"ida/patches/err.c.diff\" \(518 characters\)
  1823. sed "s/^X//" >ida/patches/err.c.diff <<'END_OF_ida/patches/err.c.diff'
  1824. X*** err.c.orig    Fri Mar 13 18:51:05 1987
  1825. X--- err.c    Mon May 25 15:55:17 1987
  1826. X***************
  1827. X*** 354,360 ****
  1828. X          (void) sprintf(buf, "Connection refused by %s", CurHostName);
  1829. X          return (buf);
  1830. X  
  1831. X!       case (TRY_AGAIN+MAX_ERRNO):
  1832. X          (void) sprintf(buf, "Host Name Lookup Failure");
  1833. X          return (buf);
  1834. X      }
  1835. X--- 354,360 ----
  1836. X          (void) sprintf(buf, "Connection refused by %s", CurHostName);
  1837. X          return (buf);
  1838. X  
  1839. X!       case (TRY_AGAIN+MAX_ERRNO): 
  1840. X          (void) sprintf(buf, "Host Name Lookup Failure");
  1841. X          return (buf);
  1842. X      }
  1843. END_OF_ida/patches/err.c.diff
  1844. if test 518 -ne `wc -c <ida/patches/err.c.diff`; then
  1845.     echo shar: \"ida/patches/err.c.diff\" unpacked with wrong size!
  1846. fi
  1847. # end of overwriting check
  1848. fi
  1849. if test -f ida/patches/headers.c.diff -a "${1}" != "-c" ; then 
  1850.   echo shar: Will not over-write existing file \"ida/patches/headers.c.diff\"
  1851. else
  1852. echo shar: Extracting \"ida/patches/headers.c.diff\" \(503 characters\)
  1853. sed "s/^X//" >ida/patches/headers.c.diff <<'END_OF_ida/patches/headers.c.diff'
  1854. X*** headers.c.orig    Fri Mar 13 18:51:06 1987
  1855. X--- headers.c    Mon May 25 15:51:27 1987
  1856. X***************
  1857. X*** 777,783 ****
  1858. X          *p = '\0';
  1859. X  
  1860. X          /* translate the name to be relative */
  1861. X!         name = remotename(name, m, bitset(H_FROM, h->h_flags), FALSE);
  1862. X          if (*name == '\0')
  1863. X          {
  1864. X              *p = savechar;
  1865. X--- 777,784 ----
  1866. X          *p = '\0';
  1867. X  
  1868. X          /* translate the name to be relative */
  1869. X!         name = remotename(name, m, bitset(H_FROM, h->h_flags), FALSE,
  1870. X!                   TRUE);
  1871. X          if (*name == '\0')
  1872. X          {
  1873. X              *p = savechar;
  1874. END_OF_ida/patches/headers.c.diff
  1875. if test 503 -ne `wc -c <ida/patches/headers.c.diff`; then
  1876.     echo shar: \"ida/patches/headers.c.diff\" unpacked with wrong size!
  1877. fi
  1878. # end of overwriting check
  1879. fi
  1880. if test -f ida/patches/macro.c.diff -a "${1}" != "-c" ; then 
  1881.   echo shar: Will not over-write existing file \"ida/patches/macro.c.diff\"
  1882. else
  1883. echo shar: Extracting \"ida/patches/macro.c.diff\" \(387 characters\)
  1884. sed "s/^X//" >ida/patches/macro.c.diff <<'END_OF_ida/patches/macro.c.diff'
  1885. X*** macro.c.orig    Fri Mar 13 18:51:06 1987
  1886. X--- macro.c    Mon May 25 15:51:29 1987
  1887. X***************
  1888. X*** 168,173 ****
  1889. X--- 168,174 ----
  1890. X  **        $h   to host
  1891. X  **        $i   queue id
  1892. X  **        $j   official SMTP hostname, used in messages+
  1893. X+ **        $k   our UUCP host name, if different from $w
  1894. X  **        $l   UNIX-style from line+
  1895. X  **        $n   name of sendmail ("MAILER-DAEMON" on local
  1896. X  **             net typically)+
  1897. END_OF_ida/patches/macro.c.diff
  1898. if test 387 -ne `wc -c <ida/patches/macro.c.diff`; then
  1899.     echo shar: \"ida/patches/macro.c.diff\" unpacked with wrong size!
  1900. fi
  1901. # end of overwriting check
  1902. fi
  1903. if test -f ida/patches/mdbm_compat.h -a "${1}" != "-c" ; then 
  1904.   echo shar: Will not over-write existing file \"ida/patches/mdbm_compat.h\"
  1905. else
  1906. echo shar: Extracting \"ida/patches/mdbm_compat.h\" \(762 characters\)
  1907. sed "s/^X//" >ida/patches/mdbm_compat.h <<'END_OF_ida/patches/mdbm_compat.h'
  1908. X/**
  1909. X **    MDBM Compatibility File
  1910. X **
  1911. X **    These definitions will make sendmail use Maryland's mdbm
  1912. X **    library package instead of the new multifile database
  1913. X **    routines of 4.3.
  1914. X **
  1915. X **    Note: Don't use this if you already have ndbm.
  1916. X **/
  1917. X
  1918. X#include <mdbm.h>
  1919. X
  1920. Xtypedef struct mdbm DBMFILE;
  1921. X
  1922. X#ifndef NDBM
  1923. X# define NDBM
  1924. X#endif NDBM
  1925. X#ifndef MDBM
  1926. X# define MDBM
  1927. X#endif MDBM
  1928. X
  1929. X/*
  1930. X *  Mdbm equivalents for ndbm functions
  1931. X */
  1932. X
  1933. X#define DBM_REPLACE    MDBM_REPLACE
  1934. X#define DBM_INSERT    MDBM_INSERT
  1935. X
  1936. X#define dbm_open(file, flags, mode) \
  1937. X            mdbm_open(file, flags, mode, NULL, NULL, NULL)
  1938. X#define dbm_close    mdbm_close
  1939. X#define dbm_fetch    mdbm_fetch
  1940. X#define dbm_store    mdbm_store
  1941. X#define dbm_firstkey    mdbm_firstkey
  1942. X#define dbm_nextkey    mdbm_nextkey /* don't forget to fill in 2nd param! */
  1943. END_OF_ida/patches/mdbm_compat.h
  1944. if test 762 -ne `wc -c <ida/patches/mdbm_compat.h`; then
  1945.     echo shar: \"ida/patches/mdbm_compat.h\" unpacked with wrong size!
  1946. fi
  1947. # end of overwriting check
  1948. fi
  1949. if test -f ida/patches/queue.c.diff -a "${1}" != "-c" ; then 
  1950.   echo shar: Will not over-write existing file \"ida/patches/queue.c.diff\"
  1951. else
  1952. echo shar: Extracting \"ida/patches/queue.c.diff\" \(744 characters\)
  1953. sed "s/^X//" >ida/patches/queue.c.diff <<'END_OF_ida/patches/queue.c.diff'
  1954. X*** queue.c.orig    Fri Mar 13 18:51:03 1987
  1955. X--- queue.c    Mon May 25 15:51:38 1987
  1956. X***************
  1957. X*** 175,181 ****
  1958. X      */
  1959. X  
  1960. X      bzero((char *) &nullmailer, sizeof nullmailer);
  1961. X!     nullmailer.m_r_rwset = nullmailer.m_s_rwset = -1;
  1962. X      nullmailer.m_eol = "\n";
  1963. X  
  1964. X      define('g', "\001f", e);
  1965. X--- 175,182 ----
  1966. X      */
  1967. X  
  1968. X      bzero((char *) &nullmailer, sizeof nullmailer);
  1969. X!     nullmailer.m_re_rwset = nullmailer.m_se_rwset = -1;
  1970. X!     nullmailer.m_rh_rwset = nullmailer.m_sh_rwset = -1;
  1971. X      nullmailer.m_eol = "\n";
  1972. X  
  1973. X      define('g', "\001f", e);
  1974. X***************
  1975. X*** 352,357 ****
  1976. X--- 353,362 ----
  1977. X          free(w->w_name);
  1978. X          free((char *) w);
  1979. X      }
  1980. X+     /*
  1981. X+      *    Don't let dropenvelope() trash locked queue files!
  1982. X+      */
  1983. X+     CurEnv->e_id = NULL;
  1984. X      finis();
  1985. X  }
  1986. X   /*
  1987. END_OF_ida/patches/queue.c.diff
  1988. if test 744 -ne `wc -c <ida/patches/queue.c.diff`; then
  1989.     echo shar: \"ida/patches/queue.c.diff\" unpacked with wrong size!
  1990. fi
  1991. # end of overwriting check
  1992. fi
  1993. if test -f ida/patches/readcf.c.diff -a "${1}" != "-c" ; then 
  1994.   echo shar: Will not over-write existing file \"ida/patches/readcf.c.diff\"
  1995. else
  1996. echo shar: Extracting \"ida/patches/readcf.c.diff\" \(2154 characters\)
  1997. sed "s/^X//" >ida/patches/readcf.c.diff <<'END_OF_ida/patches/readcf.c.diff'
  1998. X*** readcf.c.orig    Fri Mar 13 18:51:07 1987
  1999. X--- readcf.c    Mon May 25 15:51:41 1987
  2000. X***************
  2001. X*** 434,441 ****
  2002. X                  setbitn(*p, m->m_flags);
  2003. X              break;
  2004. X  
  2005. X!           case 'S':        /* sender rewriting ruleset */
  2006. X!           case 'R':        /* recipient rewriting ruleset */
  2007. X              i = atoi(p);
  2008. X              if (i < 0 || i >= MAXRWSETS)
  2009. X              {
  2010. X--- 434,441 ----
  2011. X                  setbitn(*p, m->m_flags);
  2012. X              break;
  2013. X  
  2014. X!           case 'S':        /* sender rewriting ruleset(s) */
  2015. X!           case 'R':        /* recipient rewriting ruleset(s) */
  2016. X              i = atoi(p);
  2017. X              if (i < 0 || i >= MAXRWSETS)
  2018. X              {
  2019. X***************
  2020. X*** 442,451 ****
  2021. X                  syserr("invalid rewrite set, %d max", MAXRWSETS
  2022. );
  2023. X                  return;
  2024. X              }
  2025. X!             if (fcode == 'S')
  2026. X!                 m->m_s_rwset = i;
  2027. X!             else
  2028. X!                 m->m_r_rwset = i;
  2029. X              break;
  2030. X  
  2031. X            case 'E':        /* end of line string */
  2032. X--- 442,464 ----
  2033. X                  syserr("invalid rewrite set, %d max", MAXRWSETS
  2034. );
  2035. X                  return;
  2036. X              }
  2037. X!             /* default envelope ruleset for header ruleset */
  2038. X!             if (fcode == 'S') {
  2039. X!                 m->m_se_rwset = i;
  2040. X!                 m->m_sh_rwset = i;
  2041. X!             } else {
  2042. X!                 m->m_re_rwset = i;
  2043. X!                 m->m_rh_rwset = i;
  2044. X!             }
  2045. X!             /* look for specific header rewriting ruleset */
  2046. X!             while (*p != '\0' && *p != ',' && *p != '/') p++;
  2047. X!             if (*p++ == '/') {
  2048. X!                 i = atoi(p);
  2049. X!                 if (fcode == 'S')
  2050. X!                     m->m_sh_rwset = i;
  2051. X!                 else
  2052. X!                     m->m_rh_rwset = i;
  2053. X!             }
  2054. X              break;
  2055. X  
  2056. X            case 'E':        /* end of line string */
  2057. X***************
  2058. X*** 797,803 ****
  2059. X        case 'i':        /* ignore dot lines in message */
  2060. X          IgnrDot = atobool(val);
  2061. X          break;
  2062. X! 
  2063. X        case 'L':        /* log level */
  2064. X          LogLevel = atoi(val);
  2065. X          break;
  2066. X--- 810,821 ----
  2067. X        case 'i':        /* ignore dot lines in message */
  2068. X          IgnrDot = atobool(val);
  2069. X          break;
  2070. X! # ifdef NDBM
  2071. X!       case 'K':        /* keyed database file */
  2072. X!         if (*val != '\0')
  2073. X!             DbmTab[*val].name = newstr(&val[1]);
  2074. X!         break;
  2075. X! # endif NDBM
  2076. X        case 'L':        /* log level */
  2077. X          LogLevel = atoi(val);
  2078. X          break;
  2079. X***************
  2080. X*** 911,916 ****
  2081. X--- 929,938 ----
  2082. X  
  2083. X        case 'Z':        /* work time factor */
  2084. X          WkTimeFact = atoi(val);
  2085. X+         break;
  2086. X+ 
  2087. X+       case '/':        /* use split envelope/header rewriting */
  2088. X+         SplitRewriting = TRUE;
  2089. X          break;
  2090. X  
  2091. X        default:
  2092. END_OF_ida/patches/readcf.c.diff
  2093. if test 2154 -ne `wc -c <ida/patches/readcf.c.diff`; then
  2094.     echo shar: \"ida/patches/readcf.c.diff\" unpacked with wrong size!
  2095. fi
  2096. # end of overwriting check
  2097. fi
  2098. if test -f ida/patches/savemail.c.diff -a "${1}" != "-c" ; then 
  2099.   echo shar: Will not over-write existing file \"ida/patches/savemail.c.diff\"
  2100. else
  2101. echo shar: Extracting \"ida/patches/savemail.c.diff\" \(1282 characters\)
  2102. sed "s/^X//" >ida/patches/savemail.c.diff <<'END_OF_ida/patches/savemail.c.diff
  2103. '
  2104. X*** savemail.c.orig    Fri Mar 13 18:51:08 1987
  2105. X--- savemail.c    Mon May 25 15:51:45 1987
  2106. X***************
  2107. X*** 366,371 ****
  2108. X--- 366,372 ----
  2109. X      ENVELOPE errenvelope;
  2110. X      static int returndepth;
  2111. X      register ADDRESS *q;
  2112. X+     char *to, *cc;
  2113. X  
  2114. X  # ifdef DEBUG
  2115. X      if (tTd(6, 1))
  2116. X***************
  2117. X*** 395,405 ****
  2118. X      ee->e_flags |= EF_RESPONSE;
  2119. X      ee->e_sendqueue = returnq;
  2120. X      openxscript(ee);
  2121. X!     for (q = returnq; q != NULL; q = q->q_next)
  2122. X!     {
  2123. X!         if (q->q_alias == NULL)
  2124. X!             addheader("to", q->q_paddr, ee);
  2125. X      }
  2126. X  
  2127. X      (void) sprintf(buf, "Returned mail: %s", msg);
  2128. X      addheader("subject", buf, ee);
  2129. X--- 396,422 ----
  2130. X      ee->e_flags |= EF_RESPONSE;
  2131. X      ee->e_sendqueue = returnq;
  2132. X      openxscript(ee);
  2133. X! 
  2134. X!     /* put the recipients in the to: header (cc: for PostMasterCopy) */
  2135. X!     cc = NULL;
  2136. X!     to = buf;
  2137. X!     for (q = returnq; q != NULL; q = q->q_next) {
  2138. X!         if (q->q_alias == NULL)
  2139. X!         if (strcmp(q->q_paddr, PostMasterCopy) == 0)
  2140. X!             cc = q->q_paddr;
  2141. X!         else {
  2142. X!             int len = strlen(q->q_paddr);
  2143. X! 
  2144. X!             *to++ = ',';
  2145. X!             strncpy(to, q->q_paddr, len);
  2146. X!             to += len;
  2147. X!         }
  2148. X      }
  2149. X+     *to = '\0';
  2150. X+     if (to != buf)
  2151. X+         addheader("to", buf+1, ee);
  2152. X+     if (cc)
  2153. X+         addheader("cc", cc, ee);
  2154. X  
  2155. X      (void) sprintf(buf, "Returned mail: %s", msg);
  2156. X      addheader("subject", buf, ee);
  2157. END_OF_ida/patches/savemail.c.diff
  2158. if test 1282 -ne `wc -c <ida/patches/savemail.c.diff`; then
  2159.     echo shar: \"ida/patches/savemail.c.diff\" unpacked with wrong size!
  2160. fi
  2161. # end of overwriting check
  2162. fi
  2163. if test -f ida/patches/usersmtp.c.diff -a "${1}" != "-c" ; then 
  2164.   echo shar: Will not over-write existing file \"ida/patches/usersmtp.c.diff\"
  2165. else
  2166. echo shar: Extracting \"ida/patches/usersmtp.c.diff\" \(1852 characters\)
  2167. sed "s/^X//" >ida/patches/usersmtp.c.diff <<'END_OF_ida/patches/usersmtp.c.diff
  2168. '
  2169. X*** usersmtp.c.orig    Fri Mar 13 18:51:09 1987
  2170. X--- usersmtp.c    Mon May 25 15:51:50 1987
  2171. X***************
  2172. X*** 34,39 ****
  2173. X--- 34,40 ----
  2174. X  
  2175. X  #define REPLYTYPE(r)    ((r) / 100)        /* first digit of reply code */
  2176. X  #define REPLYCLASS(r)    (((r) / 10) % 10)    /* second digit of repl
  2177. y code */
  2178. X+ #define SMTPGOODREPLY    250            /* positive SMTP respon
  2179. se */
  2180. X  #define SMTPCLOSING    421            /* "Service Shutting Down" */
  2181. X  
  2182. X  char    SmtpMsgBuffer[MAXLINE];        /* buffer for commands */
  2183. X***************
  2184. X*** 241,247 ****
  2185. X      register int r;
  2186. X      extern char *remotename();
  2187. X  
  2188. X!     smtpmessage("RCPT To:<%s>", m, remotename(to->q_user, m, FALSE, TRUE));
  2189. X  
  2190. X      SmtpPhase = "RCPT wait";
  2191. X      r = reply(m);
  2192. X--- 242,257 ----
  2193. X      register int r;
  2194. X      extern char *remotename();
  2195. X  
  2196. X!     /* DISABLED since I didn't understand why further rewriting
  2197. X!        should be necessary.  Since it doesn't go through ruleset 0
  2198. X!        on this second rewriting (which it should since it's a
  2199. X!        envelope recipient address) there is even the risk that it
  2200. X!        gets screwed up.
  2201. X!                         -- lel@ida.liu.se
  2202. X!     smtpmessage("RCPT To:<%s>", m, remotename(to->q_user, m, FALSE, TRUE,
  2203. X!                           FALSE));
  2204. X!     */
  2205. X!     smtpmessage("RCPT To:<%s>", m, to->q_user);
  2206. X  
  2207. X      SmtpPhase = "RCPT wait";
  2208. X      r = reply(m);
  2209. X***************
  2210. X*** 291,297 ****
  2211. X          return (EX_TEMPFAIL);
  2212. X      else if (r == 554)
  2213. X          return (EX_UNAVAILABLE);
  2214. X!     else if (r != 354)
  2215. X          return (EX_PROTOCOL);
  2216. X  
  2217. X      /* now output the actual message */
  2218. X--- 301,307 ----
  2219. X          return (EX_TEMPFAIL);
  2220. X      else if (r == 554)
  2221. X          return (EX_UNAVAILABLE);
  2222. X!     else if (r != 354 && r != 250)
  2223. X          return (EX_PROTOCOL);
  2224. X  
  2225. X      /* now output the actual message */
  2226. X***************
  2227. X*** 377,382 ****
  2228. X--- 387,395 ----
  2229. X  
  2230. X      if (tTd(18, 1))
  2231. X          printf("reply\n");
  2232. X+ 
  2233. X+     if (bitnset(M_BSMTP, m->m_flags))
  2234. X+         return (SMTPGOODREPLY);
  2235. X  
  2236. X      /*
  2237. X      **  Read the input line, being careful not to hang.
  2238. END_OF_ida/patches/usersmtp.c.diff
  2239. if test 1852 -ne `wc -c <ida/patches/usersmtp.c.diff`; then
  2240.     echo shar: \"ida/patches/usersmtp.c.diff\" unpacked with wrong size!
  2241. fi
  2242. # end of overwriting check
  2243. fi
  2244. if test -f ida/patches/util.c.diff -a "${1}" != "-c" ; then 
  2245.   echo shar: Will not over-write existing file \"ida/patches/util.c.diff\"
  2246. else
  2247. echo shar: Extracting \"ida/patches/util.c.diff\" \(2288 characters\)
  2248. sed "s/^X//" >ida/patches/util.c.diff <<'END_OF_ida/patches/util.c.diff'
  2249. X*** util.c.orig    Fri Mar 13 18:51:10 1987
  2250. X--- util.c    Mon May 25 15:51:52 1987
  2251. X***************
  2252. X*** 20,25 ****
  2253. X--- 20,27 ----
  2254. X  # include <ctype.h>
  2255. X  # include "sendmail.h"
  2256. X  
  2257. X+ bool catPrint = FALSE;        /* xputs: print strings for catenation 
  2258. */
  2259. X+ 
  2260. X  /*
  2261. X  **  STRIPQUOTES -- Strip quotes & quote bits from a string.
  2262. X  **
  2263. X***************
  2264. X*** 261,266 ****
  2265. X--- 263,269 ----
  2266. X      register char *s;
  2267. X  {
  2268. X      register char c;
  2269. X+     register struct metamac *m;
  2270. X  
  2271. X      if (s == NULL)
  2272. X      {
  2273. X***************
  2274. X*** 267,273 ****
  2275. X          printf("<null>");
  2276. X          return;
  2277. X      }
  2278. X!     (void) putchar('"');
  2279. X      while ((c = *s++) != '\0')
  2280. X      {
  2281. X          if (!isascii(c))
  2282. X--- 270,288 ----
  2283. X          printf("<null>");
  2284. X          return;
  2285. X      }
  2286. X! 
  2287. X!     if (s[0] == MATCHREPL && isdigit(s[1]) && s[2] == '\0') {
  2288. X!       printf("$%c", s[1]);
  2289. X!       return;
  2290. X!     } else
  2291. X!       for (m = MetaMacros; m->metaname != '\0'; m++)
  2292. X!         if (m->metaval == *s) {
  2293. X!           printf("$%c%s", m->metaname, &s[1]);
  2294. X!           return;
  2295. X!         }
  2296. X! 
  2297. X!     if (!catPrint)
  2298. X!         (void) putchar('"');
  2299. X      while ((c = *s++) != '\0')
  2300. X      {
  2301. X          if (!isascii(c))
  2302. X***************
  2303. X*** 282,288 ****
  2304. X          }
  2305. X          (void) putchar(c);
  2306. X      }
  2307. X!     (void) putchar('"');
  2308. X      (void) fflush(stdout);
  2309. X  }
  2310. X   /*
  2311. X--- 297,304 ----
  2312. X          }
  2313. X          (void) putchar(c);
  2314. X      }
  2315. X!     if (!catPrint)
  2316. X!         (void) putchar('"');
  2317. X      (void) fflush(stdout);
  2318. X  }
  2319. X   /*
  2320. X***************
  2321. X*** 306,316 ****
  2322. X      register char *p;
  2323. X  {
  2324. X      register char c;
  2325. X  
  2326. X      if (p == NULL)
  2327. X          return;
  2328. X      for (; (c = *p) != '\0'; p++)
  2329. X!         if (isascii(c) && isupper(c))
  2330. X              *p = c - 'A' + 'a';
  2331. X  }
  2332. X   /*
  2333. X--- 322,335 ----
  2334. X      register char *p;
  2335. X  {
  2336. X      register char c;
  2337. X+     register bool quoted_string = FALSE;
  2338. X  
  2339. X      if (p == NULL)
  2340. X          return;
  2341. X      for (; (c = *p) != '\0'; p++)
  2342. X!         if (c == '"')
  2343. X!             quoted_string = !quoted_string;
  2344. X!         else if (!quoted_string && isascii(c) && isupper(c))
  2345. X              *p = c - 'A' + 'a';
  2346. X  }
  2347. X   /*
  2348. X***************
  2349. X*** 862,865 ****
  2350. X--- 881,907 ----
  2351. X          if (map[i] != 0)
  2352. X              return (FALSE);
  2353. X      return (TRUE);
  2354. X+ }
  2355. X+ 
  2356. X+ /*
  2357. X+ **    PRINTCAV -- Print concatenated argument vector
  2358. X+ **
  2359. X+ **    Parameters:
  2360. X+ **        av -- argument vector.
  2361. X+ **
  2362. X+ **    Returns:
  2363. X+ **        none.
  2364. X+ **
  2365. X+ **    Side Effects:
  2366. X+ **        prints av.
  2367. X+ */
  2368. X+ 
  2369. X+ printcav(av)
  2370. X+      register char **av;
  2371. X+ {
  2372. X+   bool oldCatPrint = catPrint;
  2373. X+ 
  2374. X+   catPrint = TRUE;
  2375. X+   printav(av);
  2376. X+   catPrint = oldCatPrint;
  2377. X  }
  2378. END_OF_ida/patches/util.c.diff
  2379. if test 2288 -ne `wc -c <ida/patches/util.c.diff`; then
  2380.     echo shar: \"ida/patches/util.c.diff\" unpacked with wrong size!
  2381. fi
  2382. # end of overwriting check
  2383. fi
  2384. echo shar: End of archive 1 \(of 7\).
  2385. cp /dev/null ark1isdone
  2386. MISSING=""
  2387. for I in 1 2 3 4 5 6 7 ; do
  2388.     if test ! -f ark${I}isdone ; then
  2389.     MISSING="${MISSING} ${I}"
  2390.     fi
  2391. done
  2392. if test "${MISSING}" = "" ; then
  2393.     echo You have unpacked all 7 archives.
  2394.     echo "See ida/README and ida/INSTALL for further instructions."
  2395.     rm -f ark[1-9]isdone
  2396. else
  2397.     echo You still need to unpack the following archives:
  2398.     echo "        " ${MISSING}
  2399. fi
  2400. ##  End of shell archive.
  2401. exit 0
  2402.