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

  1. Path: seismo!uunet!rs
  2. From: rs@uunet.UU.NET (Rich Salz)
  3. Newsgroups: comp.sources.unix
  4. Subject: v10i015:  The IDA Sendmail Kit, Part04/07
  5. Message-ID: <427@uunet.UU.NET>
  6. Date: 23 Jun 87 04:41:58 GMT
  7. Organization: UUNET Communications Services, Arlington, VA
  8. Lines: 1178
  9. Approved: rs@uunet.uu.net
  10.  
  11. Mod.sources: Volume 10, Number 15
  12. Submitted by: Lennart Lovstrand <mcvax!ida.liu.se!lel>
  13. Archive-name: ida/Part04
  14.  
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 4 (of 7)."
  23. # Contents:  ida/lib/xaliases ida/patches/parseaddr.c.diff
  24. # Wrapped by lenlo@prefix on Wed Jun 10 15:39:55 1987
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f ida/lib/xaliases -a "${1}" != "-c" ; then 
  27.   echo shar: Will not over-write existing file \"ida/lib/xaliases\"
  28. else
  29. echo shar: Extracting \"ida/lib/xaliases\" \(16825 characters\)
  30. sed "s/^X//" >ida/lib/xaliases <<'END_OF_ida/lib/xaliases'
  31. X##########################################################################
  32. X## Alias file for IDA.LiU.SE aka liuida.UUCP                ##
  33. X##########################################################################
  34. X#  Aliases in this file will NOT be expanded in message headers.
  35. X#
  36. X#  Aliases are recognized in any mix of upper and lower case,
  37. X#  since they are all converted to lower case.
  38. X#
  39. X#    >>>>>>>>>>    A consequence of the above line is that mail
  40. X#    >> BUG! >>    can't be aliased to addresses with capital
  41. X#    >>>>>>>>>>    letters (eg. files).
  42. X#
  43. X#    >>>>>>>>>>    The program "newaliases" may need to be run after
  44. X#    >> NOTE >>    this file is updated for any changes to
  45. X#    >>>>>>>>>>    show through to sendmail.
  46. X#
  47. X##
  48. X
  49. X# Following alias is required by the new mail protocol, RFC 822
  50. X# Set it to the address of a HUMAN who deals with this system's mail problems.
  51. XPostmaster@ida:        lel@ida
  52. XPostmaster:        Postmaster@ida
  53. X
  54. X# Alias for mailer daemon; returned messages from our MAILER-DAEMON
  55. X# should be routed to our local Postmaster.
  56. XMAILER-DAEMON, MAILER-DAEMON@ida:    Postmaster@ida
  57. X
  58. X# Aliases to handle mail to programs or files, eg news
  59. Xb-smtp, b-smtp@ida:    "|egrep '^#' | sed 's/^#//' | /usr/lib/sendmail -bs"
  60. Xdecode, decode@ida:    "|/usr/bin/uudecode"
  61. Xnamelist, namelist@ida:    "|/usr/lib/uucp/reclist"
  62. Xnobody, nobody@ida:    /dev/null
  63. Xrnews, rnews@ida:    "|/usr/lib/news/uurec"
  64. X
  65. Xxlp@ida, xlp-e-1tr@ida:    xlp-e-1tr-s@ida
  66. Xxlp-e-bv@ida:        xlp-e-bv-s@ida
  67. Xxlp-b-1tr@ida:        xlp-b-1tr-s@ida
  68. X
  69. Xxlp-e-1tr-e@ida:    "|/usr/lib/mail/mahafilter -Pxlp-e-1tr"
  70. Xxlp-e-bv-e@ida:        "|/usr/lib/mail/mahafilter -Pxlp-e-bv"
  71. Xxlp-b-1tr-e@ida:    "|/usr/lib/mail/mahafilter -Pxlp-b-1tr"
  72. X
  73. Xxlp-e-1tr-s@ida:    "|/usr/lib/mail/mahafilter -Pxlp-e-1tr -S"
  74. Xxlp-e-bv-s@ida:        "|/usr/lib/mail/mahafilter -Pxlp-e-bv -S"
  75. Xxlp-b-1tr-s@ida:    "|/usr/lib/mail/mahafilter -Pxlp-b-1tr -S"
  76. X
  77. Xalw, alw-e-1tr:        "|lpr -Palw"
  78. X
  79. X#########################################################################
  80. X# Specific mail -> news entries                    
  81.     #
  82. X#########################################################################
  83. X
  84. Xtest-news@ida:        "|/usr/lib/news/inews -h -n test"
  85. X
  86. Xida-mac@ida:        "|/usr/lib/news/altrecnews ida.mac"
  87. X
  88. Xowner-ida-mac@ida:    Postmaster@ida
  89. X
  90. X#########################################################################
  91. X# Misc generic system users                        #
  92. X#########################################################################
  93. X
  94. Xnews, news@ida:        Postmaster@ida
  95. Xusenet, usenet@ida:    Postmaster@ida
  96. Xdaemon, daemon@ida:    Postmaster@ida
  97. Xuucp, uucp@ida:        Postmaster@ida
  98. X
  99. X#########################################################################
  100. X# Misc mail group links                        
  101.     #
  102. X#########################################################################
  103. X
  104. XIDA, IDA@IDA, IDA@LiU.SE:    IDA@LISBET
  105. XADB@ida:            ADB@LISBET
  106. XAIELAB@ida, AILAB@ida:        AIELAB@LISBET
  107. XASLAB@ida:            ASLAB@LISBET
  108. XCADLAB@ida:            CADLAB@LISBET
  109. XLIBLAB@ida:            LIBLAB@LISBET
  110. XNLPLAB@ida:            NLPLAB@LISBET
  111. XPELAB@ida:            PELAB@LISBET
  112. XRKLLAB@ida, RKL@ida:        RKLLAB@LISBET
  113. X
  114. Xowner-IDA, owner-IDA@IDA, owner-IDA@LiU.SE:    Postmaster@ida
  115. Xowner-ADB@ida:            Postmaster@ida
  116. Xowner-AIELAB@ida:        Postmaster@ida
  117. Xowner-ASLAB@ida:        Postmaster@ida
  118. Xowner-CADLAB@ida:        Postmaster@ida
  119. Xowner-LIBLAB@ida:        Postmaster@ida
  120. Xowner-NLPLAB@ida:        Postmaster@ida
  121. Xowner-PELAB@ida:        Postmaster@ida
  122. X
  123. X#########################################################################
  124. X# Arpanet mail group links                        #
  125. X#########################################################################
  126. X
  127. Xakt@ida:            AKT@LISBET
  128. XARPAnet-BBoards@ida:        ARPANET-BBOARDS@LISBET
  129. XExPhi-Group@ida:        :include:/usr/lib/mail/groups/exphi-group
  130. XHorse-List@ida:            HORSE-LIST@LISBET
  131. XIDA-Info-1100@ida:        :include:/usr/lib/mail/groups/ida-info-1100
  132. XIDA-Bug-1100@ida:        BUG-1100@LISBET
  133. Xida-info-gnu@ida:        :include:/usr/lib/mail/groups/ida-info-gnu
  134. XInfo-Postscript@ida:        INFO-POSTSCRIPT@LISBET
  135. Xlll@ida:            LASER-LOVERS@LISBET, Leif.Finmo@IDA
  136. XMusic-Research@ida:        MUSIC-RESEARCH@LISBET, JANNE@TOKER
  137. XNL-KR@ida:            NL-KR@LISBET
  138. XParsym@ida:            PARSYM@LISBET
  139. XProlog-Digest@ida:        PROLOG-DIGEST@LISBET
  140. XPsychNet@ida:            PsychNet@LISBET
  141. XSMAuG@ida:            SMAuG@LISBET
  142. Xsunflash@ida:            :include: /usr/lib/mail/groups/sunflash
  143. XTekTCP@ida:            TEKTCP@LISBET
  144. XTeXHAX@ida:            TEXHAX@LISBET, Arne.Faldt@IDA
  145. Xtester@ida:            :include:/usr/lib/mail/groups/foo
  146. XTOPS-20-Experts@ida:        lenlo@ida, arnfa@ida
  147. XTransputer@ida:            Transputer@LISBET, "|/usr/lib/news/altr
  148. ecnews -h -a daemon@ida.liu.se -n fa.transputer"
  149. X
  150. Xowner-akt@ida:            Postmaster@ida
  151. Xowner-ARPAnet-BBoards@ida:    Postmaster@ida
  152. Xowner-ExPhi-Group@ida:        Postmaster@ida
  153. Xowner-Horse-List@ida:        Postmaster@ida
  154. Xowner-IDA-Info-1100@ida:    Postmaster@ida
  155. Xowner-IDA-Bug-1100@ida:        Postmaster@ida
  156. Xowner-ida-info-gnu@ida:        Postmaster@ida
  157. Xowner-Info-Postscript@ida:    Postmaster@ida
  158. Xowner-lll@ida:            Postmaster@ida
  159. Xowner-Music-Research@ida:    Postmaster@ida
  160. Xowner-nl-kr@ida:        Postmaster@ida
  161. Xowner-parsym@ida:        Postmaster@ida
  162. Xowner-prolog-digest@ida:    Postmaster@ida
  163. Xowner-psychnet@ida:        Postmaster@ida
  164. Xowner-SMAuG@ida:        Postmaster@ida
  165. Xowner-sunflash@ida:        Postmaster@ida
  166. Xowner-TekTCP@ida:        Postmaster@ida
  167. Xowner-TeXHAX@ida:        Postmaster@ida
  168. Xowner-tester@ida:        lel@ida
  169. Xowner-TOPS-20-Experts@ida:    Postmaster@ida
  170. Xowner-Transputer@ida:        Postmaster@ida
  171. X
  172. X#########################################################################
  173. X# Individual local aliases                        #
  174. X#########################################################################
  175. X
  176. Xlennart:        lenlo
  177. Xlin-p:            linpa                (Lin Padgham)
  178. X
  179. Xbly@ida:        jbl@ida                (Bryan Lyles)
  180. Xbud@ida:        hla@ida                (Harald Lawson)
  181. Xes@ida:            ejs@ida                (Erik Sandewall
  182. )
  183. Xjac@ida:        lel@ida                (Jacek's mail sent to L
  184. eL)
  185. Xjanba@ida:        lel@ida                (Janell's mail sent to 
  186. lel)
  187. Xjim@ida:        jwg@ida                (James W Goodwin)
  188. Xlpa@ida:        lin@ida                (Lin Padgham)
  189. Xola@ida:        olast@ida
  190. Xpeter-f@ida:        petfr@majestix            (Peter Fritzsons bror, 
  191. suck)
  192. Xralf@ida:        rni@ida                (Ralf Nilsson)
  193. Xralf-n@ida:        rni@ida                (Ralf Nilsson)
  194. Xralf_n@ida:        rni@ida                (Ralf Nilsson)
  195. Xrolf-k@ida:        rolka@ida            (Rolf Karlsson)
  196. Xsandewal@ida:        ejs@ida                (Erik Sandewall)
  197. Xsandewall@ida:        ejs@ida                (Erik Sandewall)
  198. X
  199. XvaxTest@ida:        lennart@hazel            (testing, testing...)
  200. X
  201. X# Temporary due to enea/seismo lossage
  202. Xj-maluszynski@ida:    J-MALUSZYNSKI@LISBET
  203. Xl-lovstrand@ida:    L-LOVSTRAND@LISBET
  204. Xw-drabent@ida:        W-DRABENT@LISBET
  205. X
  206. X
  207. X#########################################################################
  208. X# Signature aliases                            #
  209. X#                                    #
  210. X# The format here is:                            #
  211. X#    signature, altsign, full.name: alias-list            #
  212. X# where alias-list is a comma and/or newline-separated list of user    #
  213. X# names.  Each user name may be headed by a '<' and/or '>' with the    #
  214. X# following meaning:                            #
  215. X#     > user -- mail to this sign/full.name is delivered to the user    #
  216. X#    <  user -- mail from this user is rewritten with the signature    #
  217. X#           as new sender                    #
  218. X#    <> user -- the combination of the above                #
  219. X#       user -- same as '> user'                    #
  220. X#                                    #
  221. X# BE AWARE!  This special '<>' syntax is quite in antagony with RFC822    #
  222. X#         and was adapted only for its simplicity.  Any suggestions    #
  223. X#         for an alternative syntax are warmly welcomed.        #
  224. X#########################################################################
  225. X
  226. Xaha@ida, andha@ida, Anders.Haraldsson@ida:    <> A-HARALDSSON@LISBET
  227. Xajl@ida, andli@ida, Andrzej.Lingas@ida, lingas@ida: <> A-LINGAS@LISBET
  228. Xaka@ida, andka@ida, Andreas.Kagedal@ida:    <> A-KAGEDAL@LISBET
  229. Xalu@ida, andlu@ida, Anders.Lundberg@ida:    <> A-LUNDBERG@LISBET
  230. Xamj@ida, annja@ida, Anne-Marie.Jacobsson@ida:    <> AM-JACOBSON@LISBET
  231. Xany@ida, andny@ida, Anders.Nyberg@ida:        <> A-NYBERG@LISBET, < andny
  232. Xaoa@ida, andal@ida, Anders.Aleryd@ida:        <> A-ALERYD@LISBET, < andal
  233. Xara@ida, andra@ida, Anders.Rantila@ida:        <> A-RANTILA@LISBET, < 
  234. ara
  235. Xarf@ida, arnfa@ida, Arne.Faldt@ida:        <> A-FAELDT@LISBET, <> arnfa
  236. Xarj@ida, arnjo@ida, Arne.Jonsson@ida:        <> ARNE-J@LISBET, < arnjo
  237. Xaro@ida, annro@ida, Annie.Rostlinger@ida:    <> A-ROSTLINGER@LISBET
  238. X#-- saknar userid!
  239. Xast@ida, arnst@ida, Arne.Stahre@ida:        <> A-STAHRE@LISBET, < arnst
  240. Xato@ida, andto@ida, Anders.Torne@ida:        <> A-TORNE@LISBET
  241. Xava@ida, arjva@ida, Arja.Vainio-Larsson@ida:     <> A-VAINIO@LISBET
  242. Xban@ida, bjoni@ida, Bjorn.Nilsson@ida:        <> B-NILSSON@LISBET, < bjoni
  243. Xbaw@ida, andwi@ida, Andreas.Wickberg@ida:    <> A-WICKBERG@LISBET, < andwi
  244. Xbda@ida, birda@ida, Birgitta.Dahlgren@ida:     <> B-DAHLGREN@LISBET
  245. Xbek@ida, barek@ida, Barbara.Ekman@ida:        <> BARBARA@LISBET
  246. Xbfa@ida, bjofj@ida, Bjorn.Fjellborg@ida, bfj@ida: <> B-FJELLBORG@LISBET
  247. Xbkn@ida, berni@ida, Bernt.Nilsson@ida:        <> BERNT-N@LISBET, < berni
  248. Xbln@ida, benle@ida, Bengt.Lennartsson@ida:    < BENGT@LISBET, <> bln
  249. Xbma@ida, briah@ida, Britt-Marie.Ahlenback@ida:    <> BM-AHLENBECK@LISBET
  250. Xbmk@ida, bodma@ida, Bodil.Mattson-Kihlstrom@ida: <> B-KIHLSTROM@LISBET
  251. Xbod@ida, benod@ida, Benny.Odenteg@ida:        <> B-ODENTEG@LISBET
  252. Xbol@ida, birol@ida, Birgitta.Olander@ida, bio@ida: <> B-OLANDER@LISBET, < biro
  253. l
  254. Xbro@ida, borro@ida, Borje.Rosenberg@ida:    <> B-ROSENBERG@LISBET
  255. Xbsu@ida, bosu@ida, Bo.Sundgren@ida:        <> B-SUNDGREN@LISBET
  256. Xcba@ida, chrba@ida, Christer.Backstrom@ida:    <> C-BACKSTROM@LISBET
  257. Xccg@ida, chrgn@ida, Christian.Gnosspelius@ida:    <> C-GNOSSPELIUS@LISBET, < chrg
  258. n
  259. Xcha@ida, chrha@ida, Christer.Hansson@ida:    <> C-HANSSON@LISBET, < chrha
  260. Xchl@ida, chrle@ida, Christos.Levcopoulos@ida:    <> CHRISTOS@LISBET, < chrle
  261. Xcib@ida, carbj@ida, Carina.Bjorkman@ida:    <> CARINA@LISBET
  262. Xcil@ida, clail@ida, Claes.Illergard@ida:    <> C-ILLERGARD@LISBET, < clail
  263. Xckr@ida, chrkr@ida, Christian.Krysander@ida:    <> CHRISTIAN@LISBET, < chrkr
  264. Xdbu@ida, doubu@ida, Douglas.Busch@ida:        <> D-BUSCH@LISBET
  265. Xddr@ida, dimdr@ida, Dimiter.Driankov@ida:    <> D-DRIANKOV@LISBET, < dimdr
  266. Xdif@ida, dimfo@ida, Dimitrios.Fotiades@ida:    <> DIMITRIOS@LISBET, < dimfo
  267. Xeat@ida, erite@ida, Erik.Tengvald@ida:        <> E-TENGVALD@LISBET, < erite
  268. Xecs@ida, evasv@ida, Eva-Chris.Svensson@ida:    <> EVA-CHRIS@LISBET
  269. Xejs@ida, erisa@ida, Erik.Sandewall@ida:        <> E-SANDEWALL@LISBET, 
  270. < erisa
  271. Xeno@ida, erlno@ida, Erling.Nordmark@ida:    <> E-NORDMARK@LISBET
  272. Xfli@ida, freli@ida, Fredrik.Lindstrom@ida:    <> F-LINDSTROM@LISBET
  273. Xggo@ida, gorgo@ida, Goran.Goldkuhl@ida:        <> G-GOLDKUHL@LISBET
  274. Xgka@ida, gorka@ida, Goran.Karlsson@ida:        <> G-KARLSON@LISBET
  275. Xglt@ida, gunli@ida, Gunilla.Lingenhult@ida:    <> G-LINGENHULT@LISBET
  276. Xgni@ida, gosni@ida, Gosta.Nilsson@ida:        <> G-NILSSON@LISBET
  277. Xher@ida, hener@ida, Henrik.Eriksson@ida:    <> H-ERIKSSON@LISBET, < her
  278. Xhbl@ida, hanbl@ida, Hans.Block@ida:        <> H-BLOCK@LISBET
  279. Xheh@ida, hanho@ida, Hans.Holmgren@ida:        <> H-HOLMGREN@LISBET, < hanho
  280. Xhjk@ida, janko@ida, Jan.Komorowski@ida:        <> J-KOMOROWSKI@LISBET
  281. Xhla@ida, harla@ida, Harold.Lawson@ida, budla@ida, Bud.Lawson@ida: <> BUD@LISBE
  282. T, < harla
  283. Xhno@ida, henno@ida, Henrik.Nordin@ida:        <> H-NORDIN@LISBET, < henno
  284. Xhst@ida, hakst@ida, Hakan.Straaf@ida:        <> H-STRAAF@LISBET
  285. Xime@ida, ingem@ida, Inger.Emanuelson@ida:    <> INGER@LISBET, < ingem
  286. Xira@ida, ivara@ida, Ivan.Rankin@ida:        <> I-RANKIN@LISBET, < ivara
  287. Xjas@ida, johan@ida, Johan.Andersson@ida:    <> JOHAN@LISBET, < johan
  288. Xjbl@ida, bryly@ida, Bryan.Lyles@ida:        > Lyles.wbst@Xerox.COM
  289. X#-- tills vidare
  290. Xjfa@ida, johfa@ida, Johan.Fagerstrom@ida:    <> J-FAGERSTROM@LISBET, < johfa
  291. Xjhu@ida, johhu@ida, Johan.Hultman@ida:        <> J-HULTMAN@LISBET, < johhu
  292. Xjlo@ida, jonlo@ida, Jonas.Lowgren@ida:        <> J-LOWGREN@LISBET, < jlo
  293. Xjma@ida, jalma@ida, Jalal.Maleki@ida:        <> JALAL@LISBET, < jalma
  294. Xjmz@ida, janma@ida, Jan.Maluszynski@ida:    <> J-MALUSZYNSKI@LISBET, < janm
  295. a
  296. Xjwc@ida, jonwa@ida, Jonas.Wallgren@ida:        <> J-WALLGREN@LISBET
  297. Xjwg@ida, jamgo@ida, James.Goodwin@ida, James.W.Goodwin@ida, jimgo@ida, Jim.Goo
  298. dwin@ida: <> JIM@LISBET, < jimgo
  299. Xkku@ida, krzku@ida, Krzysztof.Kuchcinski@ida, krk@ida: <> K-KUCHCINSKI@LISBET,
  300.  < krzku
  301. Xkol@ida, kerol@ida, Kerstin.Olsson@ida:        <> K-OLSSON@LISBET, < k
  302. erol
  303. Xkre@ida, krier@ida, Kristina.Ernstsson@ida:    <> KRISTINA@LISBET, < krier
  304. Xkrs@ida, krisa@ida, Kristian.Sandahl@ida:    <> K-SANDAHL@LISBET, < krisa
  305. Xkry@ida, kevry@ida, Kevin.Ryan@ida:        <> K-RYAN@LISBET, < kevry
  306. Xksd@ida, katsu@ida, Katarina.Sunnerud@ida:    <> KATARINA@LISBET, < katsu
  307. Xlah@ida, larah@ida, Lars.Ahrenberg@ida:        <> L-AHRENBERG@LISBET
  308. Xlbe@ida, larbe@ida, Lars.Bengtsson@ida:        <> L-BENGTSSON@LISBET, 
  309. < larbe
  310. Xlbf@ida, leifi@ida, Leif.Finmo@ida:        <> LEIF@LISBET, < leifi
  311. Xlbj@ida, lisbj@ida, Lisbet.Bjorklund@ida:    <> L-BJORKLUND@LISBET
  312. Xlel@ida, lenlo@ida, Lennart.Lovstrand@ida:    <> L-LOVSTRAND@LISBET,
  313. X    < lel@obelix, < LENNART@HAZEL, <> lenlo
  314. Xlew@ida, lilwa@ida, Lillemor.Wallgren@ida:    <> LILLEMOR@LISBET
  315. Xlin@ida, linpa@ida, Lin.Padgham@ida:        < L-PADGHAM@LISBET, <> linpa
  316. Xlli@ida, lisli@ida, Lisbeth.Linge@ida:        <> LISBETH@LISBET
  317. Xlra@ida, lisra@ida, Lise-Lotte.Raunio@ida:    <> L-RAUNIO@LISBET
  318. Xlro@ida, lenro@ida, Lennart.Rohlin@ida:        <> L-ROHLIN@LISBET
  319. Xlst@ida, larst@ida, Lars.Stromberg@ida:        <> L-STROMBERG@LISBET, 
  320. < larst
  321. Xlwi@ida, larwi@ida, Lars.Wikstrand@ida:        <> L-WIKSTRAND@LISBET
  322. Xmak@ida, marka@ida, Mariam.Kamkar@ida:        <> MARIAM@LISBET, < marka
  323. Xmgw@ida, matwi@ida, Mats.Wiren@ida:        <> M-WIREN@LISBET, < matwi
  324. Xmij@ida, maljo@ida, Malin.Johansson@ida:    <> MALIN@LISBET
  325. Xmip@ida, mikpa@ida, Mikael.Patel@ida:        <> MIKAEL@LISBET, < mikpa
  326. Xmja@ida, manja@ida, Manny.Jagerfeld@ida:    <> M-JAGERFELD@LISBET
  327. Xmme@ida, magme@ida, Magnus.Merkel@ida:        <> M-MERKEL@LISBET
  328. Xmre@ida, micre@ida, Michael.Reinfrank@ida:    <> M-REINFRANK@LISBET
  329. X# reinfra@ztivax.UUCP
  330. Xmru@ida, matru@ida, Mats.Rundquist@ida:        <> M-RUNDQUIST@LISBET, 
  331. < mru
  332. Xmsa@ida, matan@ida, Mats.S.Andersson@ida, masan@ida, Mats.Andersson@ida: <> MA
  333. TS@LISBET, < msa
  334. Xmsv@ida, miksv@ida, Mikael.Svensson@ida:    <> M-SVENSSON@LISBET, < miksv
  335. Xnda@ida, nilda@ida, Nils.Dahlback@ida:        <> N-DAHLBACK@LISBET
  336. Xnka@ida, naika@ida, Nail.Kavak@ida:        <> N-KAVAK@LISBET, < naika
  337. Xnos@ida, nossh@ida, Nosrat.Shahsavar@ida:    <> N-SHAHSAVAR@LISBET, < nos
  338. Xnsh@ida, nahsh@ida, Nahid.Shahmehri@ida:    <> NAHID@LISBET, < nahsh
  339. Xoha@ida, oveha@ida, Ove.Hanebring@ida:        <> O-HANEBRING@LISBET
  340. Xope@ida, olape@ida, Ola.Petersson@ida:        <> O-PETERSSON@LISBET
  341. Xowl@ida, ollwi@ida, Olle.Willen@ida:        <> OLLE-W@LISBET, < ollwi
  342. Xpab@ida, petab@ida, Peter.Aberg@ida:        <> P-ABERG@LISBET, < pab
  343. Xpaf@ida, petfr@ida, Peter.Fritzson@ida:        < P-FRITZSON@LISBET, <>
  344.  petfr
  345. Xpdy@ida, patdo@ida, Patrick.Doherty@ida, pdo@ida: <> P-DOHERTY@LISBET, < patdo
  346. X#pem@ida, parem@ida, Par.Emanuelson@ida:    <> PAER@LISBET
  347. Xpha@ida, petha@ida, Peter.Haneklou@ida:        <> P-HANEKLO@LISBET, < 
  348. petha
  349. Xphj@ida, hakja@ida, Hakan.Jakobsson@ida:    <> H-JAKOBSSON@LISBET, < hakja
  350. Xpjn@ida, pejni@ida, Peter.J.Nilsson@ida:    <> PJ-NILSSON@LISBET, <> pjn, <
  351.  PJN@HAZEL
  352. Xplo@ida, petlo@ida, Peter.Loborg@ida:        <> P-LOBORG@LISBET
  353. Xpkw@ida, kriwa@ida, Kristian.Wallin@ida:    <> K-WALLIN@LISBET
  354. Xplv@ida, pablo@ida, Pablo.Lozan-Villegas@ida:    <> P-LOZAN-VILLEGAS@LISBET
  355. Xpsn@ida, pesni@ida, Peter.S.Nilsson@ida, pni@ida: <> P-NILSSON@LISBET, < pesni
  356. X# vilken g{ller?  'psn' torde vara b{ttre (med tanke p} 'pjn')
  357. Xpso@ida, palso@ida, Pal.Sorgaard@ida:        <> P-SORGAARD@LISBET
  358. Xpuo@ida, perov@ida, Per.Overnas@ida:        <> PER@LISBET, < perov
  359. Xrhj@ida, rolhj@ida, Roland.Hjerppe@ida:        <> R-HJERPPE@LISBET, < 
  360. rolhj
  361. Xrka@ida, rolka@ida, Rolf.Karlsson@ida:        <> R-KARLSSON@LISBET, < rolka
  362. Xrni@ida, ralni@ida, Ralf.Nilsson@ida:        <> ralni, < RALF-N@LISBET
  363. X#-- slutat
  364. Xrob@ida, robbi@ida, Rober.Bilos@ida:        <> ROBER@LISBET, < robbi
  365. Xron@ida, rolni@ida, Rolf.Nilsson@ida:        <> R-NILSSON@LISBET
  366. Xrre@ida, rolre@ida, Roland.Rehmnert@ida:    <> R-REHMNERT@LISBET, < rolre
  367. Xsbo@ida, stabo@ida, Staffan.Bonnier@ida:    <> S-BONNIER@LISBET, < stabo
  368. Xrrq@ida, ralro@ida, Ralph.Ronnquist@ida:    <> RALPH-RONNQUIST@LISBET, < ra
  369. lro
  370. Xrzo@ida, rogzo@ida, Roger.Zollner@ida:        <> R-ZOLLNER@LISBET
  371. Xsha@ida, steha@ida, Stefan.Hammar@ida:        <> S-HAMMAR@LISBET
  372. Xsic@ida, shach@ida, Shamsul.Chowdhury@ida:    <> SHAMSUL@LISBET, < shach
  373. Xsmn@ida, svemo@ida, Sven.Moen@ida:        < S-MOEN@LISBET, <> svemo
  374. Xsnt@ida, simna@ida, Simin.Nadjm-Tehrani@ida:    <> S-NADJM-TEHRANI@LISBET, < sn
  375. t
  376. Xsos@ida, olast@ida, Ola.Stromfors@ida:        < OLA@LISBET, <> ola
  377. Xsso@ida, sivso@ida, Siv.Soderlund@ida:        <> S-SODERLUND@LISBET
  378. Xsth@ida, stuha@ida, Sture.Hagglund@ida:        <> STURE@LISBET, < stuh
  379. a
  380. Xswr@ida, stewr@ida, Stefan.Wrammerfors@ida:    <> stewr
  381. Xtao@ida, tomol@ida, Tommy.Olsson@ida:        <> TOMMY@LISBET, < tao
  382. Xtha@ida, timha@ida, Tim.Hansen@ida:        <> T-HANSEN@LISBET
  383. Xtla@ida, tonla@ida, Tony.Larsson@ida:        <> T-LARSSON@LISBET, < tonla
  384. Xton@ida, torna@ida, Torbjorn.Naslund@ida, tna@ida: < T-NASLUND@LISBET, <> torn
  385. a
  386. Xtoh@ida, tomoh@ida, Tommy.Ohlsson@ida:        <> T-OHLSSON@LISBET
  387. Xtor@ida, totna@ida, Torbjorn.Naslund.ADB@ida:    <> TORBJORN-NASLUND-ADB@LISBET
  388. Xtps@ida, tomso@ida, Tomas.Sokolnicki@ida:    <> T-SOKOLNICKI@LISBET
  389. Xtri@ida, tomri@ida, Tom.Rindborg@ida:        <> T-RINDBORG@LISBET, < tomri
  390. Xtti@ida, tooti@ida, Toomas.Timpka@ida:        <> T-TIMPKA@LISBET
  391. Xuda@ida, ulfda@ida, Ulf.Dahlen@ida:        <> U-DAHLEN@LISBET, < uda
  392. Xurn@ida, ulfni@ida, Ulf.Nilsson@ida:        <> U-NILSSON@LISBET, < ulfni
  393. Xwdr@ida, wlodr@ida, Wlodek.Drabent@ida, Wlodzimierz.Drabent@ida: <> W-DRABENT@
  394. LISBET, < wlodr
  395. Xyla@ida, yngla@ida, Yngve.Larsson@ida:        <  Y-LARSSON@LISBET, <> yngla
  396. Xzpe@ida, zebpe@ida, Zebo.Peng@ida:        <> ZEBO@LISBET, < zebpe
  397. END_OF_ida/lib/xaliases
  398. if test 16825 -ne `wc -c <ida/lib/xaliases`; then
  399.     echo shar: \"ida/lib/xaliases\" unpacked with wrong size!
  400. fi
  401. # end of overwriting check
  402. fi
  403. if test -f ida/patches/parseaddr.c.diff -a "${1}" != "-c" ; then 
  404.   echo shar: Will not over-write existing file \"ida/patches/parseaddr.c.diff\"
  405. else
  406. echo shar: Extracting \"ida/patches/parseaddr.c.diff\" \(17702 characters\)
  407. sed "s/^X//" >ida/patches/parseaddr.c.diff <<'END_OF_ida/patches/parseaddr.c.di
  408. ff'
  409. X*** parseaddr.c.orig    Fri Mar 13 18:51:07 1987
  410. X--- parseaddr.c    Mon May 25 15:51:35 1987
  411. X***************
  412. X*** 508,518 ****
  413. X      struct match mlist[MAXMATCH];    /* stores match on LHS */
  414. X      char *npvp[MAXATOM+1];        /* temporary space for rebuild */
  415. X      extern bool sameword();
  416. X  
  417. X      if (OpMode == MD_TEST || tTd(21, 2))
  418. X      {
  419. X          printf("rewrite: ruleset %2d   input:", ruleset);
  420. X!         printav(pvp);
  421. X      }
  422. X      if (pvp == NULL)
  423. X          return;
  424. X--- 508,519 ----
  425. X      struct match mlist[MAXMATCH];    /* stores match on LHS */
  426. X      char *npvp[MAXATOM+1];        /* temporary space for rebuild */
  427. X      extern bool sameword();
  428. X+     char tokbuf[MAXNAME+1];        /* for concatenated class tokens */
  429. X  
  430. X      if (OpMode == MD_TEST || tTd(21, 2))
  431. X      {
  432. X          printf("rewrite: ruleset %2d   input:", ruleset);
  433. X!         printcav(pvp);
  434. X      }
  435. X      if (pvp == NULL)
  436. X          return;
  437. X***************
  438. X*** 528,534 ****
  439. X          if (tTd(21, 12))
  440. X          {
  441. X              printf("-----trying rule:");
  442. X!             printav(rwr->r_lhs);
  443. X          }
  444. X  # endif DEBUG
  445. X  
  446. X--- 529,535 ----
  447. X          if (tTd(21, 12))
  448. X          {
  449. X              printf("-----trying rule:");
  450. X!             printcav(rwr->r_lhs);
  451. X          }
  452. X  # endif DEBUG
  453. X  
  454. X***************
  455. X*** 563,583 ****
  456. X              switch (*rp)
  457. X              {
  458. X                  register STAB *s;
  459. X  
  460. X-               case MATCHCLASS:
  461. X                case MATCHNCLASS:
  462. X!                 /* match any token in (not in) a class */
  463. X                  s = stab(ap, ST_CLASS, ST_FIND);
  464. X!                 if (s == NULL || !bitnset(rp[1], s->s_class))
  465. X!                 {
  466. X!                     if (*rp == MATCHCLASS)
  467. X!                         goto backup;
  468. X!                 }
  469. X!                 else if (*rp == MATCHNCLASS)
  470. X                      goto backup;
  471. X  
  472. X!                 /* explicit fall-through */
  473. X  
  474. X                case MATCHONE:
  475. X                case MATCHANY:
  476. X                  /* match exactly one token */
  477. X--- 564,604 ----
  478. X              switch (*rp)
  479. X              {
  480. X                  register STAB *s;
  481. X+                 char **oldavp;
  482. X  
  483. X                case MATCHNCLASS:
  484. X!                 /* match any single token not in a class */
  485. X                  s = stab(ap, ST_CLASS, ST_FIND);
  486. X!                 if (s != NULL && bitnset(rp[1], s->s_class))
  487. X                      goto backup;
  488. X  
  489. X!                 /* match exactly one token */
  490. X!                 mlp->first = avp;
  491. X!                 mlp->last = avp++;
  492. X!                 mlp++;
  493. X!                 break;
  494. X  
  495. X+               case MATCHCLASS:
  496. X+                 /* match any token in a class */
  497. X+                 /* slow, concat version by lel@ida.liu.se */
  498. X+                 /* handles multi-token class matches, though */
  499. X+                 oldavp = avp;
  500. X+                 *tokbuf = NULL;
  501. X+                 do {
  502. X+                   if (*avp == NULL) {
  503. X+                     avp = oldavp;
  504. X+                     goto backup;
  505. X+                   }
  506. X+                   strcat(tokbuf, *avp++);
  507. X+                   s = stab(tokbuf, ST_CLASS, ST_FIND);
  508. X+                 } while (s == NULL ||
  509. X+                      !bitnset(rp[1], s->s_class));
  510. X+ 
  511. X+                 mlp->first = oldavp;
  512. X+                 mlp->last = avp-1;
  513. X+                 mlp++;
  514. X+                 break;
  515. X+ 
  516. X                case MATCHONE:
  517. X                case MATCHANY:
  518. X                  /* match exactly one token */
  519. X***************
  520. X*** 610,615 ****
  521. X--- 631,667 ----
  522. X              while (--rvp >= rwr->r_lhs)
  523. X              {
  524. X                  rp = *rvp;
  525. X+                 if (*rp == MATCHCLASS) {
  526. X+                   register STAB *s;
  527. X+                   char **oldavp;
  528. X+ 
  529. X+                   /* attempt to extend binding */
  530. X+                   /* slow, concat version by lel@ida.liu.se */
  531. X+ 
  532. X+                   oldavp = avp;
  533. X+                   *tokbuf = NULL;
  534. X+                   for (avp = mlp[-1].first;
  535. X+                        avp <= mlp[-1].last; avp++)
  536. X+                     strcat(tokbuf, *avp);
  537. X+ 
  538. X+                   do {
  539. X+                     if (*avp == NULL) {
  540. X+                       /* back out binding */
  541. X+                       avp = oldavp;
  542. X+                       mlp--;
  543. X+                       goto cantextend;
  544. X+                     }
  545. X+                     strcat(tokbuf, *avp++);
  546. X+                     s = stab(tokbuf, ST_CLASS, ST_FIND);
  547. X+                   } while (s == NULL ||
  548. X+                        !bitnset(rp[1], s->s_class));
  549. X+ 
  550. X+                   /* found an extension */
  551. X+                   mlp[-1].last = avp-1;
  552. X+                   rvp++;
  553. X+                   break;
  554. X+                 }
  555. X+                   cantextend:
  556. X                  if (*rp == MATCHANY || *rp == MATCHZANY)
  557. X                  {
  558. X                      /* extend binding and continue */
  559. X***************
  560. X*** 619,626 ****
  561. X                      break;
  562. X                  }
  563. X                  avp--;
  564. X!                 if (*rp == MATCHONE || *rp == MATCHCLASS ||
  565. X!                     *rp == MATCHNCLASS)
  566. X                  {
  567. X                      /* back out binding */
  568. X                      mlp--;
  569. X--- 671,677 ----
  570. X                      break;
  571. X                  }
  572. X                  avp--;
  573. X!                 if (*rp == MATCHONE || *rp == MATCHNCLASS)
  574. X                  {
  575. X                      /* back out binding */
  576. X                      mlp--;
  577. X***************
  578. X*** 653,659 ****
  579. X          if (tTd(21, 12))
  580. X          {
  581. X              printf("-----rule matches:");
  582. X!             printav(rvp);
  583. X          }
  584. X  # endif DEBUG
  585. X  
  586. X--- 704,710 ----
  587. X          if (tTd(21, 12))
  588. X          {
  589. X              printf("-----rule matches:");
  590. X!             printcav(rvp);
  591. X          }
  592. X  # endif DEBUG
  593. X  
  594. X***************
  595. X*** 732,821 ****
  596. X  
  597. X          for (rvp = npvp; *rvp != NULL; rvp++)
  598. X          {
  599. X!             char **hbrvp;
  600. X              char **xpvp;
  601. X              int trsize;
  602. X              char *olddelimchar;
  603. X!             char buf[MAXNAME + 1];
  604. X              char *pvpb1[MAXATOM + 1];
  605. X              char pvpbuf[PSBUFSIZE];
  606. X              extern char *DelimChar;
  607. X  
  608. X!             if (**rvp != HOSTBEGIN)
  609. X                  continue;
  610. X  
  611. X              /*
  612. X!             **  Got a hostname lookup.
  613. X              **
  614. X              **    This could be optimized fairly easily.
  615. X              */
  616. X  
  617. X              hbrvp = rvp;
  618. X  
  619. X              /* extract the match part */
  620. X!             while (*++rvp != NULL && **rvp != HOSTEND)
  621. X                  continue;
  622. X              if (*rvp != NULL)
  623. X                  *rvp++ = NULL;
  624. X  
  625. X!             /* save the remainder of the input string */
  626. X              trsize = (int) (avp - rvp + 1) * sizeof *rvp;
  627. X              bcopy((char *) rvp, (char *) pvpb1, trsize);
  628. X  
  629. X!             /* look it up */
  630. X!             cataddr(++hbrvp, buf, sizeof buf);
  631. X!             maphostname(buf, sizeof buf);
  632. X! 
  633. X!             /* scan the new host name */
  634. X!             olddelimchar = DelimChar;
  635. X!             xpvp = prescan(buf, '\0', pvpbuf);
  636. X!             DelimChar = olddelimchar;
  637. X!             if (xpvp == NULL)
  638. X!             {
  639. X!                 syserr("rewrite: cannot prescan canonical hostn
  640. ame: %s", buf);
  641. X!                 return;
  642. X              }
  643. X  
  644. X!             /* append it to the token list */
  645. X!             for (avp = --hbrvp; *xpvp != NULL; xpvp++)
  646. X!             {
  647. X!                 *avp++ = newstr(*xpvp);
  648. X!                 if (avp >= &npvp[MAXATOM])
  649. X!                     goto toolong;
  650. X!             }
  651. X  
  652. X              /* restore the old trailing information */
  653. X!             for (xpvp = pvpb1; (*avp++ = *xpvp++) != NULL; )
  654. X!                 if (avp >= &npvp[MAXATOM])
  655. X!                     goto toolong;
  656. X  
  657. X!             break;
  658. X          }
  659. X  
  660. X          /*
  661. X          **  Check for subroutine calls.
  662. X          */
  663. X  
  664. X!         if (*npvp != NULL && **npvp == CALLSUBR)
  665. X!         {
  666. X!             bcopy((char *) &npvp[2], (char *) pvp,
  667. X!                 (int) (avp - npvp - 2) * sizeof *avp);
  668. X  # ifdef DEBUG
  669. X-             if (tTd(21, 3))
  670. X-                 printf("-----callsubr %s\n", npvp[1]);
  671. X- # endif DEBUG
  672. X-             rewrite(pvp, atoi(npvp[1]));
  673. X-         }
  674. X-         else
  675. X-         {
  676. X-             bcopy((char *) npvp, (char *) pvp,
  677. X-                 (int) (avp - npvp) * sizeof *avp);
  678. X-         }
  679. X- # ifdef DEBUG
  680. X          if (tTd(21, 4))
  681. X          {
  682. X              printf("rewritten as:");
  683. X!             printav(pvp);
  684. X          }
  685. X  # endif DEBUG
  686. X      }
  687. X--- 783,907 ----
  688. X  
  689. X          for (rvp = npvp; *rvp != NULL; rvp++)
  690. X          {
  691. X!             char **hbrvp, **ubrvp;
  692. X              char **xpvp;
  693. X              int trsize;
  694. X              char *olddelimchar;
  695. X!             char hbuf[MAXNAME + 1], ubuf[MAXNAME + 1];
  696. X              char *pvpb1[MAXATOM + 1];
  697. X              char pvpbuf[PSBUFSIZE];
  698. X+             bool match, defaultpart;
  699. X              extern char *DelimChar;
  700. X+             char begintype, db;
  701. X  
  702. X!             if (**rvp != HOSTBEGIN && **rvp != KEYBEGIN)
  703. X                  continue;
  704. X  
  705. X              /*
  706. X!             **  Got a hostname or database lookup.
  707. X              **
  708. X              **    This could be optimized fairly easily.
  709. X              */
  710. X  
  711. X+             begintype = **rvp;
  712. X              hbrvp = rvp;
  713. X+             ubrvp = NULL;
  714. X  
  715. X+             /* read database name if that's what we're up for */
  716. X+             if (begintype == KEYBEGIN) {
  717. X+                 if (*++rvp != NULL)
  718. X+                     db = **rvp;
  719. X+             }
  720. X+ 
  721. X              /* extract the match part */
  722. X!             while (*++rvp != NULL &&
  723. X!                    (begintype == HOSTBEGIN ?
  724. X!                 **rvp != HOSTEND :
  725. X!                 **rvp != KEYEND && **rvp != CANONHOST) &&
  726. X!                    **rvp != CANONUSER)
  727. X                  continue;
  728. X+             if (**rvp == CANONHOST) {
  729. X+                 *rvp = NULL;
  730. X+                 ubrvp = rvp+1;
  731. X+                 while (*++rvp != NULL && **rvp != KEYEND &&
  732. X+                        **rvp != CANONUSER)
  733. X+                     continue;
  734. X+             }
  735. X+             defaultpart = **rvp == CANONUSER;
  736. X              if (*rvp != NULL)
  737. X                  *rvp++ = NULL;
  738. X  
  739. X!             /* Save the remainder of the input string */
  740. X              trsize = (int) (avp - rvp + 1) * sizeof *rvp;
  741. X              bcopy((char *) rvp, (char *) pvpb1, trsize);
  742. X  
  743. X!             /* Look it up (lowercase version) */
  744. X!             cataddr(hbrvp + (begintype == HOSTBEGIN ? 1 : 2),
  745. X!                 hbuf, sizeof hbuf);
  746. X!             if (begintype == HOSTBEGIN)
  747. X!                 match = maphostname(hbuf, sizeof hbuf);
  748. X!             else {
  749. X!                 cataddr(ubrvp, ubuf, sizeof ubuf);
  750. X!                 match = mapkey(db, hbuf, sizeof hbuf, ubuf);
  751. X              }
  752. X+             if (match || !defaultpart) {
  753. X+                 /* scan the new route/host name */
  754. X+                 olddelimchar = DelimChar;
  755. X+                 xpvp = prescan(hbuf, '\0', pvpbuf);
  756. X+                 DelimChar = olddelimchar;
  757. X+                 if (xpvp == NULL) {
  758. X+                     syserr("rewrite: cannot prescan %s: %s"
  759. X+                            begintype == HOSTBEGIN ?
  760. X+                            "new hostname" :
  761. X+                            "dbm lookup result",
  762. X+                            hbuf);
  763. X+                     return;
  764. X+                 }
  765. X  
  766. X!                 /* append it to the token list */
  767. X!                 for (avp = hbrvp; *xpvp != NULL; xpvp++) {
  768. X!                     *avp++ = newstr(*xpvp);
  769. X!                     if (avp >= &npvp[MAXATOM])
  770. X!                         goto toolong;
  771. X!                 }
  772. X!             } else
  773. X!                 avp = hbrvp;
  774. X  
  775. X              /* restore the old trailing information */
  776. X!             rvp = avp - 1;
  777. X!             for (xpvp = pvpb1; *xpvp != NULL; xpvp++) {
  778. X!                 if (defaultpart && (begintype == HOSTBEGIN ?
  779. X!                         **xpvp == HOSTEND :
  780. X!                         **xpvp == KEYEND)) {
  781. X!                 defaultpart = FALSE;
  782. X!                 rvp = avp - 1;
  783. X!                 } else if (!defaultpart || !match)
  784. X!                 *avp++ = *xpvp;
  785. X!                 if (avp >= &npvp[MAXATOM])
  786. X!                   goto toolong;
  787. X!             }
  788. X!             *avp++ = NULL;
  789. X  
  790. X!             /*break;*/
  791. X          }
  792. X  
  793. X          /*
  794. X          **  Check for subroutine calls.
  795. X+         **  Then copy vector back into original space.
  796. X          */
  797. X  
  798. X!         callsubr(npvp);
  799. X! 
  800. X!         for (avp = npvp; *avp++ != NULL;);
  801. X!         bcopy((char *) npvp, (char *) pvp,
  802. X!               (int) (avp - npvp) * sizeof *avp);
  803. X! 
  804. X! 
  805. X  # ifdef DEBUG
  806. X          if (tTd(21, 4))
  807. X          {
  808. X              printf("rewritten as:");
  809. X!             printcav(pvp);
  810. X          }
  811. X  # endif DEBUG
  812. X      }
  813. X***************
  814. X*** 823,832 ****
  815. X      if (OpMode == MD_TEST || tTd(21, 2))
  816. X      {
  817. X          printf("rewrite: ruleset %2d returns:", ruleset);
  818. X!         printav(pvp);
  819. X      }
  820. X  }
  821. X   /*
  822. X  **  BUILDADDR -- build address from token vector.
  823. X  **
  824. X  **    Parameters:
  825. X--- 909,967 ----
  826. X      if (OpMode == MD_TEST || tTd(21, 2))
  827. X      {
  828. X          printf("rewrite: ruleset %2d returns:", ruleset);
  829. X!         printcav(pvp);
  830. X      }
  831. X  }
  832. X   /*
  833. X+ **  CALLSUBR -- call subroutines in rewrite vector
  834. X+ **
  835. X+ **    Parameters:
  836. X+ **        pvp -- pointer to token vector.
  837. X+ **
  838. X+ **    Returns:
  839. X+ **        none.
  840. X+ **
  841. X+ **    Side Effects:
  842. X+ **        pvp is modified.
  843. X+ */
  844. X+ 
  845. X+ callsubr(pvp)
  846. X+     char **pvp;
  847. X+ {
  848. X+     char **rvp;
  849. X+     int subr;
  850. X+ 
  851. X+     for (; *pvp != NULL; pvp++)
  852. X+     if (**pvp == CALLSUBR) {
  853. X+ 
  854. X+         subr = atoi(pvp[1]);
  855. X+ 
  856. X+ # ifdef DEBUG
  857. X+         if (tTd(21, 3))
  858. X+         printf("-----callsubr %d\n", subr);
  859. X+ # endif DEBUG
  860. X+ 
  861. X+         /*
  862. X+         **  Take care of possible inner calls.
  863. X+         */
  864. X+         callsubr(pvp+2);
  865. X+ 
  866. X+         /*
  867. X+         **  Move vector up over calling opcode.
  868. X+         */
  869. X+         for (rvp = pvp+2; *rvp != NULL; rvp++)
  870. X+         rvp[-2] = rvp[0];
  871. X+         rvp[-2] = NULL;
  872. X+ 
  873. X+         /*
  874. X+         **  Call inferior ruleset.
  875. X+         */
  876. X+         rewrite(pvp, subr);
  877. X+ 
  878. X+         break;
  879. X+     }
  880. X+ }
  881. X+  /*
  882. X  **  BUILDADDR -- build address from token vector.
  883. X  **
  884. X  **    Parameters:
  885. X***************
  886. X*** 907,915 ****
  887. X          while (*tv != NULL && **tv != CANONUSER)
  888. X              (void) strcat(buf, *tv++);
  889. X          a->q_host = newstr(buf);
  890. X!     }
  891. X!     else
  892. X          a->q_host = NULL;
  893. X  
  894. X      /* figure out the user */
  895. X      if (**tv != CANONUSER)
  896. X--- 1042,1053 ----
  897. X          while (*tv != NULL && **tv != CANONUSER)
  898. X              (void) strcat(buf, *tv++);
  899. X          a->q_host = newstr(buf);
  900. X!     } else {
  901. X!         if (**tv == CANONHOST)
  902. X!             while (*tv != NULL && **tv != CANONUSER)
  903. X!                 *tv++;
  904. X          a->q_host = NULL;
  905. X+     }
  906. X  
  907. X      /* figure out the user */
  908. X      if (**tv != CANONUSER)
  909. X***************
  910. X*** 920,927 ****
  911. X  
  912. X      /* rewrite according recipient mailer rewriting rules */
  913. X      rewrite(++tv, 2);
  914. X!     if (m->m_r_rwset > 0)
  915. X!         rewrite(tv, m->m_r_rwset);
  916. X      rewrite(tv, 4);
  917. X  
  918. X      /* save the result for the command line/RCPT argument */
  919. X--- 1058,1065 ----
  920. X  
  921. X      /* rewrite according recipient mailer rewriting rules */
  922. X      rewrite(++tv, 2);
  923. X!     if (m->m_re_rwset > 0)
  924. X!         rewrite(tv, m->m_re_rwset);
  925. X      rewrite(tv, 4);
  926. X  
  927. X      /* save the result for the command line/RCPT argument */
  928. X***************
  929. X*** 1002,1008 ****
  930. X          return (FALSE);
  931. X  
  932. X      /* if the user isn't the same, we can drop out */
  933. X!     if (strcmp(a->q_user, b->q_user) != 0)
  934. X          return (FALSE);
  935. X  
  936. X      /* if the mailer ignores hosts, we have succeeded! */
  937. X--- 1140,1146 ----
  938. X          return (FALSE);
  939. X  
  940. X      /* if the user isn't the same, we can drop out */
  941. X!     if (!sameword(a->q_user, b->q_user))
  942. X          return (FALSE);
  943. X  
  944. X      /* if the mailer ignores hosts, we have succeeded! */
  945. X***************
  946. X*** 1012,1018 ****
  947. X      /* otherwise compare hosts (but be careful for NULL ptrs) */
  948. X      if (a->q_host == NULL || b->q_host == NULL)
  949. X          return (FALSE);
  950. X!     if (strcmp(a->q_host, b->q_host) != 0)
  951. X          return (FALSE);
  952. X  
  953. X      return (TRUE);
  954. X--- 1150,1156 ----
  955. X      /* otherwise compare hosts (but be careful for NULL ptrs) */
  956. X      if (a->q_host == NULL || b->q_host == NULL)
  957. X          return (FALSE);
  958. X!     if (!sameword(a->q_host, b->q_host))
  959. X          return (FALSE);
  960. X  
  961. X      return (TRUE);
  962. X***************
  963. X*** 1072,1077 ****
  964. X--- 1210,1217 ----
  965. X  **            rather than the recipient rewriting rules.
  966. X  **        canonical -- if set, strip out any comment information,
  967. X  **            etc.
  968. X+ **        headeraddress -- if set, use header specific rewriting
  969. X+ **            rulesets and uurelativize if M_RELATIVIZE is set.
  970. X  **
  971. X  **    Returns:
  972. X  **        the text string representing this address relative to
  973. X***************
  974. X*** 1086,1096 ****
  975. X  */
  976. X  
  977. X  char *
  978. X! remotename(name, m, senderaddress, canonical)
  979. X      char *name;
  980. X      struct mailer *m;
  981. X      bool senderaddress;
  982. X      bool canonical;
  983. X  {
  984. X      register char **pvp;
  985. X      char *fancy;
  986. X--- 1226,1237 ----
  987. X  */
  988. X  
  989. X  char *
  990. X! remotename(name, m, senderaddress, canonical, headeraddress)
  991. X      char *name;
  992. X      struct mailer *m;
  993. X      bool senderaddress;
  994. X      bool canonical;
  995. X+     bool headeraddress;
  996. X  {
  997. X      register char **pvp;
  998. X      char *fancy;
  999. X***************
  1000. X*** 1108,1114 ****
  1001. X  # endif DEBUG
  1002. X  
  1003. X      /* don't do anything if we are tagging it as special */
  1004. X!     if ((senderaddress ? m->m_s_rwset : m->m_r_rwset) < 0)
  1005. X          return (name);
  1006. X  
  1007. X      /*
  1008. X--- 1249,1257 ----
  1009. X  # endif DEBUG
  1010. X  
  1011. X      /* don't do anything if we are tagging it as special */
  1012. X!     if ((senderaddress ?
  1013. X!          (headeraddress ? m->m_sh_rwset : m->m_se_rwset) :
  1014. X!          (headeraddress ? m->m_rh_rwset : m->m_re_rwset)) < 0)
  1015. X          return (name);
  1016. X  
  1017. X      /*
  1018. X***************
  1019. X*** 1154,1176 ****
  1020. X  
  1021. X      /*
  1022. X      **  Do more specific rewriting.
  1023. X!     **    Rewrite using ruleset 1 or 2 depending on whether this is
  1024. X!     **        a sender address or not.
  1025. X      **    Then run it through any receiving-mailer-specific rulesets.
  1026. X      */
  1027. X  
  1028. X!     if (senderaddress)
  1029. X!     {
  1030. X!         rewrite(pvp, 1);
  1031. X!         if (m->m_s_rwset > 0)
  1032. X!             rewrite(pvp, m->m_s_rwset);
  1033. X      }
  1034. X-     else
  1035. X-     {
  1036. X-         rewrite(pvp, 2);
  1037. X-         if (m->m_r_rwset > 0)
  1038. X-             rewrite(pvp, m->m_r_rwset);
  1039. X-     }
  1040. X  
  1041. X      /*
  1042. X      **  Do any final sanitation the address may require.
  1043. X--- 1297,1329 ----
  1044. X  
  1045. X      /*
  1046. X      **  Do more specific rewriting.
  1047. X!     **    Rewrite using ruleset 1 or 2 for envelope addresses and
  1048. X!     **    5 or 6 for header addresses depending on whether this
  1049. X!     **    is a sender address or not.
  1050. X      **    Then run it through any receiving-mailer-specific rulesets.
  1051. X      */
  1052. X  
  1053. X!     if (senderaddress) {
  1054. X!         if (headeraddress) {
  1055. X!             rewrite(pvp, SplitRewriting ? 5 : 1);
  1056. X!             if (m->m_sh_rwset > 0)
  1057. X!                 rewrite(pvp, m->m_sh_rwset);
  1058. X!         } else {
  1059. X!             rewrite(pvp, 1);
  1060. X!             if (m->m_se_rwset > 0)
  1061. X!                 rewrite(pvp, m->m_se_rwset);
  1062. X!         }
  1063. X!     } else {
  1064. X!         if (headeraddress) {
  1065. X!             rewrite(pvp, SplitRewriting ? 6 : 2);
  1066. X!             if (m->m_rh_rwset > 0)
  1067. X!                 rewrite(pvp, m->m_rh_rwset);
  1068. X!         } else {
  1069. X!             rewrite(pvp, 2);
  1070. X!             if (m->m_re_rwset > 0)
  1071. X!                 rewrite(pvp, m->m_re_rwset);
  1072. X!         }
  1073. X      }
  1074. X  
  1075. X      /*
  1076. X      **  Do any final sanitation the address may require.
  1077. X***************
  1078. X*** 1182,1187 ****
  1079. X--- 1335,1348 ----
  1080. X      rewrite(pvp, 4);
  1081. X  
  1082. X      /*
  1083. X+     **  Check if we're supposed to do make the address
  1084. X+     **  UUCP !-relative to the rcpt host vs ourselves.
  1085. X+     */
  1086. X+ 
  1087. X+     if (headeraddress && bitnset(M_RELATIVIZE, m->m_flags))
  1088. X+         uurelativize("\001k", "\001h", pvp);
  1089. X+ 
  1090. X+     /*
  1091. X      **  Now restore the comment information we had at the beginning.
  1092. X      */
  1093. X  
  1094. X***************
  1095. X*** 1195,1198 ****
  1096. X--- 1356,1421 ----
  1097. X          printf("remotename => `%s'\n", buf);
  1098. X  # endif DEBUG
  1099. X      return (buf);
  1100. X+ }
  1101. X+  /*
  1102. X+ **  UURELATIVIZE -- Make an address !-relative to recipient/sender nodes
  1103. X+ **
  1104. X+ **    Parameters:
  1105. X+ **        from -- the sending node (usually "$k" or "$w")
  1106. X+ **        to -- the receiving node (usually "$h")
  1107. X+ **        pvp -- address vector
  1108. X+ **
  1109. X+ **    Returns:
  1110. X+ **        none.
  1111. X+ **
  1112. X+ **    Side Effects:
  1113. X+ **        The pvp is rewritten to be relative the "to" node
  1114. X+ **        wrt the "from" node.  In other words, if the pvp
  1115. X+ **        is headed by "to!" that part is stripped; otherwise
  1116. X+ **        "from!" is prepended.  Exception: "to!user" addresses
  1117. X+ **        with no '!'s in the user part are sent as is.
  1118. X+ **
  1119. X+ **    Bugs:
  1120. X+ **        The pvp may overflow, but we don't catch it.
  1121. X+ */
  1122. X+ 
  1123. X+ uurelativize(from, to, pvp)
  1124. X+     char *from, *to;
  1125. X+     char **pvp;
  1126. X+ {
  1127. X+     register char **pxp = pvp;
  1128. X+     char expfrom[MAXNAME], expto[MAXNAME];
  1129. X+ 
  1130. X+     expand(from, expfrom, &expfrom[sizeof expfrom - 1], CurEnv);
  1131. X+     expand(to, expto, &expto[sizeof expto - 1], CurEnv);
  1132. X+ 
  1133. X+     /*
  1134. X+      * supposing that we've got something, should
  1135. X+      * we add "from!" or remove "to!"?
  1136. X+      */
  1137. X+     if (pvp[0] != NULL)
  1138. X+         if (pvp[1] == NULL || strcmp(pvp[1], "!") != 0 ||
  1139. X+             /*sameword?*/ strcmp(pvp[0], expto) != 0) {
  1140. X+         /* either local name, no UUCP address, or not to "to!"    */
  1141. X+         /* ==> prepend address with "from!"            */
  1142. X+ 
  1143. X+         /* already there? */
  1144. X+         if (pvp[1] == NULL || strcmp(pvp[1], "!") != 0 ||
  1145. X+             /*sameword?*/ strcmp(pvp[0], expfrom) != 0) {
  1146. X+             /* no, put it there */
  1147. X+             while (*pxp != NULL)
  1148. X+             pxp++;
  1149. X+             do
  1150. X+             pxp[2] = *pxp;
  1151. X+             while (pxp-- != pvp);
  1152. X+             pvp[0] = newstr(expfrom);
  1153. X+             pvp[1] = "!";
  1154. X+         }
  1155. X+         } else {
  1156. X+         /* address is to "to!" -- remove if not "to!user" */
  1157. X+         for (pxp = &pvp[2]; *pxp != NULL && strcmp(*pxp, "!") != 0; pxp
  1158. ++);
  1159. X+         if (*pxp != NULL)
  1160. X+             for (pxp = pvp; *pxp != NULL; pxp++)
  1161. X+             *pxp = pxp[2];
  1162. X+         }
  1163. X  }
  1164. END_OF_ida/patches/parseaddr.c.diff
  1165. if test 17702 -ne `wc -c <ida/patches/parseaddr.c.diff`; then
  1166.     echo shar: \"ida/patches/parseaddr.c.diff\" unpacked with wrong size!
  1167. fi
  1168. # end of overwriting check
  1169. fi
  1170. echo shar: End of archive 4 \(of 7\).
  1171. cp /dev/null ark4isdone
  1172. MISSING=""
  1173. for I in 1 2 3 4 5 6 7 ; do
  1174.     if test ! -f ark${I}isdone ; then
  1175.     MISSING="${MISSING} ${I}"
  1176.     fi
  1177. done
  1178. if test "${MISSING}" = "" ; then
  1179.     echo You have unpacked all 7 archives.
  1180.     echo "See ida/README and ida/INSTALL for further instructions."
  1181.     rm -f ark[1-9]isdone
  1182. else
  1183.     echo You still need to unpack the following archives:
  1184.     echo "        " ${MISSING}
  1185. fi
  1186. ##  End of shell archive.
  1187. exit 0
  1188.