home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / sources / misc / 3815 < prev    next >
Encoding:
Text File  |  1992-08-15  |  33.5 KB  |  1,013 lines

  1. Newsgroups: comp.sources.misc
  2. Path: sparky!kent
  3. From: iain%anl433.uucp@Germany.EU.net (Iain Lea)
  4. Subject:  v31i086:  tin - threaded full screen newsreader v1.1, Patch05g/7
  5. Message-ID: <1992Aug16.012805.12948@sparky.imd.sterling.com>
  6. Followup-To: comp.sources.d
  7. X-Md4-Signature: e0a9b0028c19b33b58ea50d40e560f06
  8. Sender: kent@sparky.imd.sterling.com (Kent Landfield)
  9. Reply-To: iain%anl433.uucp@Germany.EU.net
  10. Organization: ANL A433, Siemens AG., Germany.
  11. References: <csm-v31i080=tin.201729@sparky.IMD.Sterling.COM>
  12. Date: Sun, 16 Aug 1992 01:28:05 GMT
  13. Approved: kent@sparky.imd.sterling.com
  14. Lines: 997
  15.  
  16. Submitted-by: iain%anl433.uucp@Germany.EU.net (Iain Lea)
  17. Posting-number: Volume 31, Issue 86
  18. Archive-name: tin/patch05g
  19. Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
  20. Patch-To: tin: Volume 31, Issue 1-15
  21.  
  22. #!/bin/sh
  23. # this is patch-1.15.shar.07 (part 7 of tin-1.15)
  24. # do not concatenate these parts, unpack them in order with /bin/sh
  25. # file tin-1.15.patch continued
  26. #
  27. if test ! -r _shar_seq_.tmp; then
  28.     echo 'Please unpack part 1 first!'
  29.     exit 1
  30. fi
  31. (read Scheck
  32.  if test "$Scheck" != 7; then
  33.     echo Please unpack part "$Scheck" next!
  34.     exit 1
  35.  else
  36.     exit 0
  37.  fi
  38. ) < _shar_seq_.tmp || exit 1
  39. if test ! -f _shar_wnt_.tmp; then
  40.     echo 'x - still skipping tin-1.15.patch'
  41. else
  42. echo 'x - continuing file tin-1.15.patch'
  43. sed 's/^X//' << 'SHAR_EOF' >> 'tin-1.15.patch' &&
  44. X  .ds ]W \*(mo \n(dy, 19\n(yr
  45. X  .nh
  46. X  .SH NAME
  47. --- 17,23 ----
  48. X  .if \n(mo=10 .ds mo October
  49. X  .if \n(mo=11 .ds mo November
  50. X  .if \n(mo=12 .ds mo December
  51. ! .TH TIN 1 "Version 1.1 PL5" "" "LOCAL"
  52. X  .ds ]W \*(mo \n(dy, 19\n(yr
  53. X  .nh
  54. X  .SH NAME
  55. ***************
  56. *** 77,87 ****
  57. X  mail unread articles to specified user for later reading.  For more
  58. X  information read section Automatic Mailing and Saving New News. 
  59. X  .TP
  60. - .B -n
  61. - notify the user of any newly created newsgroups since the last session.
  62. - .TP
  63. X  .BI -p " file"
  64. ! print program with options.\fP.
  65. X  .TP
  66. X  .B -r
  67. X  read news remotely from the default NNTP server specified in the
  68. --- 77,87 ----
  69. X  mail unread articles to specified user for later reading.  For more
  70. X  information read section Automatic Mailing and Saving New News. 
  71. X  .TP
  72. X  .BI -p " file"
  73. ! print program with options.
  74. ! .TP
  75. ! .BI -q
  76. ! quick start without checking for new newsgroups.
  77. X  .TP
  78. X  .B -r
  79. X  read news remotely from the default NNTP server specified in the
  80. ***************
  81. *** 117,123 ****
  82. X  in login file.
  83. X  .TP
  84. X  .B -Z
  85. ! check if there is any new/unread news and exit with appropiate status.
  86. X  If -v option is specified the number of unread articles in each group
  87. X  is printed.  An exit code 0 indicates no news, 1 that an error occurred
  88. X  and 2 that new/unread news exists.  Useful for writing scripts.
  89. --- 117,123 ----
  90. X  in login file.
  91. X  .TP
  92. X  .B -Z
  93. ! check if there is any new/unread news and exit with appropriate status.
  94. X  If -v option is specified the number of unread articles in each group
  95. X  is printed.  An exit code 0 indicates no news, 1 that an error occurred
  96. X  and 2 that new/unread news exists.  Useful for writing scripts.
  97. ***************
  98. *** 168,174 ****
  99. X  This has the advantage that there will only be one copy of the index files on
  100. X  the NNTP server for the whole of your network and tin clients must not be
  101. X  setuid news, but the disadvantage is that you will have to install my NNTP
  102. ! server patches to allow tin to retreive index file from your NNTP server and 
  103. X  and you must install an entry in the cron batcher system to have tind 
  104. X  regularly update index files (Note that this is the method we use on our
  105. X  network of 40-50 machines and have not had any problems).
  106. --- 168,174 ----
  107. X  This has the advantage that there will only be one copy of the index files on
  108. X  the NNTP server for the whole of your network and tin clients must not be
  109. X  setuid news, but the disadvantage is that you will have to install my NNTP
  110. ! server patches to allow tin to retrieve index file from your NNTP server and 
  111. X  and you must install an entry in the cron batcher system to have tind 
  112. X  regularly update index files (Note that this is the method we use on our
  113. X  network of 40-50 machines and have not had any problems).
  114. ***************
  115. *** 194,201 ****
  116. X  statistics.
  117. X  .PP
  118. X  A user starting tin for the first time can be automatically subscribed to a
  119. ! list of newsgroups that are deemed appropiate by the news administrator.  At
  120. ! our site the subscriptions file has 125 groups (our active file conatains
  121. X  over 400 groups with many only being marginally interesting to most people).
  122. X  The subscriptions file should be created in your news lib directory (i.e.
  123. X  /usr/lib/news/subscriptions) and should have file permissions set to 0644.
  124. --- 194,201 ----
  125. X  statistics.
  126. X  .PP
  127. X  A user starting tin for the first time can be automatically subscribed to a
  128. ! list of newsgroups that are deemed appropriate by the news administrator.  At
  129. ! our site the subscriptions file has 125 groups (our active file contains
  130. X  over 400 groups with many only being marginally interesting to most people).
  131. X  The subscriptions file should be created in your news lib directory (i.e.
  132. X  /usr/lib/news/subscriptions) and should have file permissions set to 0644.
  133. ***************
  134. *** 308,314 ****
  135. X  .PP
  136. X  .TP 10
  137. X  \fB^A,^E\fP
  138. ! move to beginnning or end of line, respectively.
  139. X  .TP
  140. X  \fB^F,^B\fP
  141. X  nondestructive move forward or back one location, respectively.
  142. --- 308,314 ----
  143. X  .PP
  144. X  .TP 10
  145. X  \fB^A,^E\fP
  146. ! move to beginning or end of line, respectively.
  147. X  .TP
  148. X  \fB^F,^B\fP
  149. X  nondestructive move forward or back one location, respectively.
  150. ***************
  151. *** 353,359 ****
  152. X  Read current group.
  153. X  .TP
  154. X  \fB<TAB>\fP
  155. ! View next unread group.
  156. X  .TP
  157. X  \fBB\fP
  158. X  Mail a bug report or comment to the author.  This is the best way of
  159. --- 353,360 ----
  160. X  Read current group.
  161. X  .TP
  162. X  \fB<TAB>\fP
  163. ! View next group withg unread news. Will wrap around to the beginning of the
  164. ! group selection list looking for unread groups.
  165. X  .TP
  166. X  \fBB\fP
  167. X  Mail a bug report or comment to the author.  This is the best way of
  168. ***************
  169. *** 400,405 ****
  170. --- 401,410 ----
  171. X  \fBQ\fP
  172. X  Quit tin.
  173. X  .TP
  174. + \fBr\fP
  175. + Toggle display of all subscribed to groups and just the subscribed to groups 
  176. + containing unread articles.
  177. + .TP
  178. X  \fBs\fP
  179. X  Subscribe to current group.
  180. X  .TP
  181. ***************
  182. *** 503,510 ****
  183. X  Mark all articles as read with confirmation.
  184. X  .TP
  185. X  \fBC\fP
  186. ! Cancel current article.  It must have been posted by the same user.  The
  187. ! cancel message can be seen in the newsgroup 'control'.
  188. X  .TP
  189. X  \fBd\fP
  190. X  Toggle display to show just the subject or the subject and author.
  191. --- 508,514 ----
  192. X  Mark all articles as read with confirmation.
  193. X  .TP
  194. X  \fBC\fP
  195. ! Mark all articles as read and goto next group with unread news.
  196. X  .TP
  197. X  \fBd\fP
  198. X  Toggle display to show just the subject or the subject and author.
  199. ***************
  200. *** 619,625 ****
  201. X  \fB*\fP
  202. X  Select current thread for later processing.
  203. X  .TP
  204. ! \fB.\fP
  205. X  Toggle selection of current thread. If at least one unread art,
  206. X  but not all unread arts, in thread is selected, then all unread
  207. X  arts become selected.
  208. --- 623,629 ----
  209. X  \fB*\fP
  210. X  Select current thread for later processing.
  211. X  .TP
  212. ! \fB\.\fP
  213. X  Toggle selection of current thread. If at least one unread art,
  214. X  but not all unread arts, in thread is selected, then all unread
  215. X  arts become selected.
  216. ***************
  217. *** 668,673 ****
  218. --- 672,681 ----
  219. X  \fBc\fP
  220. X  Mark thread as read after confirmation and return to previous level.
  221. X  .TP
  222. + \fBC\fP
  223. + Cancel current article.  It must have been posted by the same user.  The
  224. + cancel message can be seen in the newsgroup 'control'.
  225. + .TP
  226. X  \fBd\fP
  227. X  Toggle display to show just the subject or the subject and author.
  228. X  .TP
  229. ***************
  230. *** 853,859 ****
  231. X  \fB*\fP
  232. X  Select current thread for later processing.
  233. X  .TP
  234. ! \fB.\fP
  235. X  Toggle selection of current article.
  236. X  .TP
  237. X  \fB@\fP
  238. --- 861,867 ----
  239. X  \fB*\fP
  240. X  Select current thread for later processing.
  241. X  .TP
  242. ! \fB\.\fP
  243. X  Toggle selection of current article.
  244. X  .TP
  245. X  \fB@\fP
  246. ***************
  247. *** 861,867 ****
  248. X  .TP
  249. X  \fB~\fP
  250. X  Undo all selections on current thread.
  251. ! .SH "OPTIONS MENU"
  252. X  This menu is accessed by pressing 'M' at all levels.  It allows the user
  253. X  to customize the behaviour of tin.  The options are saved to the file
  254. X  \fI$HOME/.tin/tinrc\fP.  Use <SPACE> to toggle the required option and
  255. --- 869,875 ----
  256. X  .TP
  257. X  \fB~\fP
  258. X  Undo all selections on current thread.
  259. ! .SH "GLOBAL OPTIONS MENU"
  260. X  This menu is accessed by pressing 'M' at all levels.  It allows the user
  261. X  to customize the behaviour of tin.  The options are saved to the file
  262. X  \fI$HOME/.tin/tinrc\fP.  Use <SPACE> to toggle the required option and
  263. ***************
  264. *** 968,985 ****
  265. X  \fBPrinter\fP
  266. X  The printer program with options that is to be used to print
  267. X  articles.  Default is lpr for BSD machines and lp for SysV machines.
  268. ! .SH "KILL ARTICLE MENU"
  269. X  This menu is accessed by pressing '^K' at the group and page levels.  It
  270. ! allows the user to kill an article that matches the current ``Subject:''
  271. ! line, ``From:'' line or a string entered by the user.  The user entered string
  272. ! can be applied to the ``Subject:'' or ``From:'' lines of an article.  The kill
  273. ! description can be limited to the current newsgroup or it can apply to all newsgroups.
  274. ! Once entered the user can abort the command and not save the kill
  275. ! description, edit the kill file or save the kill description.
  276. X  .PP
  277. X  On starting tin the users killfile \fI$HOME/.tin/kill\fP is read and
  278. ! on entering a newsgroup any kill descriptions are applied.  Articles
  279. ! that match a kill description are marked killed and are not displayed.
  280. X  .SH "POSTING ARTICLES"
  281. X  Tin allows posting of articles, follow-up to already posted articles
  282. X  and replying direct through mail to the author of an article.
  283. --- 976,1047 ----
  284. X  \fBPrinter\fP
  285. X  The printer program with options that is to be used to print
  286. X  articles.  Default is lpr for BSD machines and lp for SysV machines.
  287. ! .SH "GROUP ATTRIBUTES"
  288. ! Tin allows certain attributes to be set on a per group basis. These
  289. ! group attributes are read from the file \fI$HOME/.tin/attributes\fP.
  290. ! A later version of Tin will provide a menu interface to set all the
  291. ! attributes. At present you will have to edit the file with your 
  292. ! editor :-(. The following group attributes are available:
  293. ! .RS
  294. ! .nf
  295. ! .ft CW
  296. ! newsgroup=alt.sources
  297. ! maildir=/usr/iain/Mail/sources
  298. ! savedir=/usr/iain/News/alt.sources
  299. ! sigfile=/usr/iain/.funny_sig
  300. ! followup_to=alt.sources.d
  301. ! auto_save=ON
  302. ! batch_save=ON
  303. ! show_only_unread=ON
  304. ! thread_arts=ON
  305. ! show_author=1
  306. ! sort_art_type=5
  307. ! post_proc_type=1
  308. ! .ft P
  309. ! .fi
  310. ! .RE
  311. ! Note that the ''newsgroup=<groupname>'' line has to be specified 
  312. ! before the attributes are specified for that group.
  313. ! .PP
  314. ! All attributes are set to a reasonable default so you only have to
  315. ! specify the attribute that you want to change (ie. savedir).
  316. ! .PP
  317. ! All toggle attributes are set by specifying ON/OFF. 
  318. ! .PP
  319. ! The show_author attribute is specified by a number from the following 
  320. ! range: 0=none, 1=username, 2=network address, 3=both.
  321. ! .PP
  322. ! The sort_art_type attribute is specified by a number from the following 
  323. ! range: 0=none, 1=subject descending, 2=subject ascending, 3=from descending, 
  324. ! 4=from ascending, 5=date descending, 6=date ascending.
  325. ! .PP
  326. ! The post_proc_type attribute is specified by a number from the following 
  327. ! range: 0=none, 1=shar, 2=uudecode, 3=uudecode & list zoo, 4=uudecode & 
  328. ! extract zoo.
  329. ! .SH "AUTOMATIC KILL AND SELECTION"
  330. ! When there is a subject or an author which you are either very
  331. ! interested in, or find completely uninteresting, you can easily
  332. ! instruct \fITin\fP to \fIauto-select\fP or \fIauto-kill\fP articles
  333. ! with specific subjects or from specific authors.  These instructions
  334. ! are stored in a \fIkill file\fP.
  335. ! .PP
  336. X  This menu is accessed by pressing '^K' at the group and page levels.  It
  337. ! allows the user to kill or select an article that matches the current 
  338. ! ``Subject:'' line, ``From:'' line or a string entered by the user.  
  339. ! The user entered string can be applied to the ``Subject:'' or ``From:'' 
  340. ! lines of an article.  The kill description can be limited to the current 
  341. ! newsgroup or it can apply to all newsgroups. Once entered the user can 
  342. ! abort the command and not save the kill description, edit the kill file 
  343. ! or save the kill description.
  344. X  .PP
  345. X  On starting tin the users killfile \fI$HOME/.tin/kill\fP is read and
  346. ! on entering a newsgroup any kill or select descriptions are applied.  
  347. ! .PP
  348. ! Articles that match a kill description are marked killed and are not 
  349. ! displayed. Articles that match an auto-select description are marked 
  350. ! with a ''*'' when displayed.
  351. X  .SH "POSTING ARTICLES"
  352. X  Tin allows posting of articles, follow-up to already posted articles
  353. X  and replying direct through mail to the author of an article.
  354. ***************
  355. *** 1055,1061 ****
  356. X  tin -S -f newsrc.save (save any unread articles in newgroups specified
  357. X  in file newsrc.save)
  358. X  .PP
  359. ! tin -R (read any unread articles saved by tin -S option)
  360. X  .SH SIGNATURES
  361. X  Tin will recognize a signature in either \fI$HOME/.signature\fP or
  362. X  \fI$HOME/.Sig\fP.  If \fI$HOME/.signature\fP exists, then the signature
  363. --- 1117,1123 ----
  364. X  tin -S -f newsrc.save (save any unread articles in newgroups specified
  365. X  in file newsrc.save)
  366. X  .PP
  367. ! tin -R (read any articles saved by tin -S option)
  368. X  .SH SIGNATURES
  369. X  Tin will recognize a signature in either \fI$HOME/.signature\fP or
  370. X  \fI$HOME/.Sig\fP.  If \fI$HOME/.signature\fP exists, then the signature
  371. ***************
  372. *** 1104,1110 ****
  373. X  Set the article header field ``Reply-To:'' to the return address specified
  374. X  by the variable.
  375. X  This is useful if the machine is not registered in the UUCP mail maps
  376. ! or if you wish to recieve replies at a different machine.
  377. X  This variable has precedence over the file \fI$HOME/.tin/replyto\fP
  378. X  that may also contain a return address.
  379. X  .TP
  380. --- 1166,1172 ----
  381. X  Set the article header field ``Reply-To:'' to the return address specified
  382. X  by the variable.
  383. X  This is useful if the machine is not registered in the UUCP mail maps
  384. ! or if you wish to receive replies at a different machine.
  385. X  This variable has precedence over the file \fI$HOME/.tin/replyto\fP
  386. X  that may also contain a return address.
  387. X  .TP
  388. ***************
  389. *** 1113,1119 ****
  390. X  directly through mail to somebody whose mail address is not directly
  391. X  recognized by the local host.  For example say the return address is
  392. X  \fIuser@bigvax\fP, but \fIbigvax\fP is not recognized by your host, so
  393. ! therfore the mail will not reach \fIuser\fP.  But the host \fIlittevax\fP
  394. X  is known to recognize your host and \fIbigvax\fP, so if ADD_ADDRESS is set
  395. X  (i.e. 'setenv ADD_ADDRESS @littevax' for csh or 'set ADD_ADDRESS @littevax'
  396. X  and 'export ADD_ADDRESS' for sh) the address \fIuser@bigvax@littlevax\fP will
  397. --- 1175,1181 ----
  398. X  directly through mail to somebody whose mail address is not directly
  399. X  recognized by the local host.  For example say the return address is
  400. X  \fIuser@bigvax\fP, but \fIbigvax\fP is not recognized by your host, so
  401. ! therefore the mail will not reach \fIuser\fP.  But the host \fIlittevax\fP
  402. X  is known to recognize your host and \fIbigvax\fP, so if ADD_ADDRESS is set
  403. X  (i.e. 'setenv ADD_ADDRESS @littevax' for csh or 'set ADD_ADDRESS @littevax'
  404. X  and 'export ADD_ADDRESS' for sh) the address \fIuser@bigvax@littlevax\fP will
  405. ***************
  406. *** 1162,1167 ****
  407. --- 1224,1232 ----
  408. X  $HOME/.tin/tinrc
  409. X  options.
  410. X  .TP 2i
  411. + $HOME/.tin/attributes
  412. + contains user specified group attributes.
  413. + .TP 2i
  414. X  $HOME/.tin/.index
  415. X  newsgroup index files directory.
  416. X  .TP 2i
  417. ***************
  418. *** 1168,1176 ****
  419. X  $HOME/.tin/add_address
  420. X  address to add to when replying through mail.
  421. X  .TP 2i
  422. - $HOME/.tin/active
  423. - used by -n option for notifying user of new groups.
  424. - .TP 2i
  425. X  $HOME/.tin/bug_address
  426. X  address to send bug reports to.
  427. X  .TP 2i
  428. --- 1233,1238 ----
  429. ***************
  430. *** 1186,1194 ****
  431. X  $HOME/.tin/replyto
  432. X  host address to use in ``Reply-To:'' mail header.
  433. X  .TP 2i
  434. - $HOME/.tin/unthread
  435. - contains groups that are not to be threaded.
  436. - .TP 2i
  437. X  $HOME/.signature
  438. X  signature.
  439. X  .TP 2i
  440. --- 1248,1253 ----
  441. ***************
  442. *** 1205,1211 ****
  443. X  Does not yet handle ``Xref:'' headers for cross-posted articles.
  444. X  .SH HISTORY
  445. X  Based on the tass newsreader that was developed by Rich Skrenta and posted
  446. ! to alt.sources in March 1991.  Tass was itself heavily infleuenced by NOTES
  447. X  which was developed at the University of Illinois by Ray Essick and
  448. X  Rob Kolstad in 1982.
  449. X  .PP
  450. --- 1264,1270 ----
  451. X  Does not yet handle ``Xref:'' headers for cross-posted articles.
  452. X  .SH HISTORY
  453. X  Based on the tass newsreader that was developed by Rich Skrenta and posted
  454. ! to alt.sources in March 1991.  Tass was itself heavily influenced by NOTES
  455. X  which was developed at the University of Illinois by Ray Essick and
  456. X  Rob Kolstad in 1982.
  457. X  .PP
  458. ***************
  459. *** 1234,1239 ****
  460. --- 1293,1300 ----
  461. X  Tin v1.1 PL3 (full distribution) was posted in 15 parts to alt.sources on 13 May 1992.
  462. X  .br
  463. X  Tin v1.1 PL4 (full distribution) was posted in 15 parts to alt.sources on 22 Jun 1992.
  464. + .br
  465. + Tin v1.1 PL5 (patch) was posted in 7 parts to alt.sources on 11 Aug 1992.
  466. X  .SH CREDITS
  467. X  .TP
  468. X  Rich Skrenta
  469. ***************
  470. *** 1254,1267 ****
  471. X  .PP
  472. X  I wish to thank the following people for supplying patchs:
  473. X  .PP
  474. ! Anton Aylward, Paul Bauwens, Dieter Becker, Dan Berry, Marc Boucher, Leila Burrell-Davis, 
  475. ! Robert Claeson, Steven Cogswell, Ned Danieley, Chris Davies, Brent Ermlick,
  476. ! Callum Gibson, Carl Hage, Paul Halsema, Ed Hanway, Daniel Hermans, Tom Hite, Torsten Homeyer,
  477. ! Nelson Kading, Fritz Kleeman, Karl-Koenig Koenigsson, Kris Kugel, Hakan Lennestal,
  478. ! Clifford Luke, Michael Faurot, David MacKenzie, James Nugen, Jeb Palmer, Tom Parry,
  479. ! Bill Poitras, Wolfgang Prediger, Jim Robinson, Stephen Roseman, Nickolay Saukh,
  480. ! Rich Salz, John Sauter, Bart Sears, Karl-Olav Serrander, Doug Sewell, Cliff Stanford,
  481. ! Steve Starck, Michael Traub, Adri Verhoef, Paul Vickers, Cary Whitney, Greg Woods, 
  482. X  Lloyd Wright
  483. X  .PP
  484. X  I wish to thank the following people for bug reports/comments:
  485. --- 1315,1331 ----
  486. X  .PP
  487. X  I wish to thank the following people for supplying patchs:
  488. X  .PP
  489. ! Anton Aylward, Paul Bauwens, Dieter Becker, Dan Berry, Marc Boucher, 
  490. ! Leila Burrell-Davis, Peter Castro, Robert Claeson, Steven Cogswell, 
  491. ! Don Costello, Ned Danieley, Chris Davies, Craig Durland, Kirk Edson, Rob Engle, 
  492. ! Brent Ermlick, Callum Gibson, Carl Hage, Paul Halsema, Ed Hanway, Scott Hauck,
  493. ! Daniel Hermans, Tom Hite, Torsten Homeyer, Nelson Kading, Fritz Kleeman, 
  494. ! Karl-Koenig Koenigsson, Kris Kugel, Alex Lange, Hakan Lennestal, Clifford Luke,
  495. ! Michael Faurot, David MacKenzie, James Nugen, Jeb Palmer, Tom Parry, 
  496. ! Bill Poitras, Wolfgang Prediger, Jim Robinson, Stephen Roseman, 
  497. ! Nickolay Saukh, Rich Salz, John Sauter, Bart Sears, Karl-Olav Serrander, 
  498. ! Doug Sewell, Steve Spearman, Cliff Stanford, Steve Starck, Mark Tomlin,
  499. ! Michael Traub, Adri Verhoef, Paul Vickers, Cary Whitney, Greg Woods, 
  500. X  Lloyd Wright
  501. X  .PP
  502. X  I wish to thank the following people for bug reports/comments:
  503. ***************
  504. *** 1268,1283 ****
  505. X  .PP
  506. X  Klaus Arzig, Scott Babb, Reiner Balling, Preston Bannister, Bill de Beabien,
  507. X  Volker Beyer, Etienne Bido, Roger Binns, Georg Biehler, Jean-Marc Bonnaudet,
  508. ! Sean Brady, Ian Brown, Andreas Brosig, Tom Czarnik, David Donovan, Peter Dressler, 
  509. ! Gerhard Ermer, Hugh Fader, Joachim Feld, Paul Fox, Bernhard Gmelch, Viet Hoang,
  510. ! Andy Jackson, Joe Johnson, Cyrill Jung, Kuo-Chein Kai, Hans-Juergen Knopp,
  511. ! Bernhard Kroenung, Murray Laing, Marty Leisner, Per Lindqvist, Bob Lukas,
  512. ! Kazushi Marukawa, Phillip Molloy, Toni Metz, Greg Miller, Klaus Neuberger, 
  513. ! Otto Niesser, Reiner Oelhaf, Alex Pakter, John Palkovic, Wolf Paul, Andrew Phillips,
  514. ! Stefan Rathmann, Ted Richards, David Ross, Jonas Rwgmyr, Daemon Schaefer, John Schmitz,
  515. ! Dean Schrimpf, Klamer Schutte, Fredy Schwatz, Bernd Schwerin, Chris Smith, 
  516. ! Daniel Smith, Steve Spearman, Hironobu Takahashi, Ken Taylor, Tony Travis, 
  517. ! Sven Werner, G. Woodbury, Orest Zboroski
  518. X  .SH AUTHOR
  519. X  .TP
  520. X  Iain Lea
  521. --- 1332,1348 ----
  522. X  .PP
  523. X  Klaus Arzig, Scott Babb, Reiner Balling, Preston Bannister, Bill de Beabien,
  524. X  Volker Beyer, Etienne Bido, Roger Binns, Georg Biehler, Jean-Marc Bonnaudet,
  525. ! Sean Brady, Ian Brown, Andreas Brosig, Craig Bruce, Tom Czarnik, David Donovan,
  526. ! Peter Dressler, Gerhard Ermer, Hugh Fader, Joachim Feld, Paul Fox, Jay Geertsen,
  527. ! Bernhard Gmelch, Viet Hoang, Andy Jackson, Joe Johnson, Cyrill Jung, Kuo-Chein Kai,
  528. ! Hans-Juergen Knopp, Tom Kovar, Bernhard Kroenung, Murray Laing, Marty Leisner,
  529. ! Per Lindqvist, Eric Litman, Bob Lukas, Michael Marshall, Kazushi Marukawa, 
  530. ! Phillip Molloy, Toni Metz, Greg Miller, Deeptendu Majumder, Klaus Neuberger, 
  531. ! Otto Niesser, Reiner Oelhaf, Alex Pakter, John Palkovic, Wolf Paul, Andrew Phillips, 
  532. ! Stefan Rathmann, Ted Richards, David Ross, Jonas Rwgmyr, Daemon Schaefer, 
  533. ! John Schmitz, Dean Schrimpf, Klamer Schutte, Fredy Schwatz, Dave Schweisguth, 
  534. ! Bernd Schwerin, Chris Smith, Daniel Smith, Hironobu Takahashi, Ken Taylor, 
  535. ! Tony Travis, Paul Verket, Sven Werner, Paul Wood, Gregory Woodbury, Orest Zboroski
  536. X  .SH AUTHOR
  537. X  .TP
  538. X  Iain Lea
  539. diff -rcs ../1.14/tin.h ./tin.h
  540. *** ../1.14/tin.h    Tue Aug 11 21:23:27 1992
  541. --- ./tin.h    Sat Aug  8 15:42:36 1992
  542. ***************
  543. *** 3,9 ****
  544. X   *  Module    : tin.h
  545. X   *  Author    : I.Lea & R.Skrenta
  546. X   *  Created   : 01-04-91
  547. !  *  Updated   : 22-06-92
  548. X   *  Notes     : #include files, #defines & struct's
  549. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  550. X   *              You may  freely  copy or  redistribute  this software,
  551. --- 3,9 ----
  552. X   *  Module    : tin.h
  553. X   *  Author    : I.Lea & R.Skrenta
  554. X   *  Created   : 01-04-91
  555. !  *  Updated   : 08-08-92
  556. X   *  Notes     : #include files, #defines & struct's
  557. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  558. X   *              You may  freely  copy or  redistribute  this software,
  559. ***************
  560. *** 17,30 ****
  561. X  #include    <errno.h>
  562. X  #ifdef apollo
  563. X  #    include </bsd4.3/usr/include/sys/types.h>
  564. X  #else
  565. X  #    include <sys/types.h>
  566. X  #endif
  567. - #include    <sys/stat.h>
  568. X  #include    <pwd.h>
  569. X  #include    <ctype.h>
  570. X  #include    <time.h>
  571. ! #if !defined(apollo) && !defined(__NeXT__)
  572. X  #    include    <unistd.h>
  573. X  #endif
  574. X  
  575. --- 17,33 ----
  576. X  #include    <errno.h>
  577. X  #ifdef apollo
  578. X  #    include </bsd4.3/usr/include/sys/types.h>
  579. + #    include </bsd4.3/usr/include/sys/stat.h>
  580. + #    include </bsd4.3/usr/include/time.h>
  581. X  #else
  582. X  #    include <sys/types.h>
  583. + #    include    <sys/stat.h>
  584. + #    include    <time.h>
  585. X  #endif
  586. X  #include    <pwd.h>
  587. X  #include    <ctype.h>
  588. X  #include    <time.h>
  589. ! #if !defined(__NeXT__) && !defined(apollo) && !defined(gould) && !defined(mips)
  590. X  #    include    <unistd.h>
  591. X  #endif
  592. X  
  593. ***************
  594. *** 32,38 ****
  595. X  #    include    <strings.h>
  596. X  #    include    <fcntl.h>
  597. X  #else
  598. ! #    ifndef apollo
  599. X  #        include    <stdlib.h>
  600. X  #    endif
  601. X  #    include    <string.h>
  602. --- 35,41 ----
  603. X  #    include    <strings.h>
  604. X  #    include    <fcntl.h>
  605. X  #else
  606. ! #    if !defined(apollo) && !defined(sysV68) && !defined(UTS)
  607. X  #        include    <stdlib.h>
  608. X  #    endif
  609. X  #    include    <string.h>
  610. ***************
  611. *** 58,64 ****
  612. X   * Needed for catching child processes
  613. X   */
  614. X  
  615. ! #ifdef SIGCHLD
  616. X  #    include    <sys/wait.h>
  617. X  #endif
  618. X  
  619. --- 61,67 ----
  620. X   * Needed for catching child processes
  621. X   */
  622. X  
  623. ! #if defined(SIGCHLD) && !defined(apollo)
  624. X  #    include    <sys/wait.h>
  625. X  #endif
  626. X  
  627. ***************
  628. *** 66,73 ****
  629. X   * Needed for resizing under an xterm
  630. X   */
  631. X  
  632. ! #if defined(SIGWINCH)
  633. ! #    ifndef SCO_UNIX
  634. X  #        include <termios.h>
  635. X  #    endif
  636. X  #    if !defined(TIOCGWINSZ) && !defined(TIOCGSIZE)
  637. --- 69,76 ----
  638. X   * Needed for resizing under an xterm
  639. X   */
  640. X  
  641. ! #if defined(SIGWINCH) && !defined(__NeXT__)
  642. ! #    ifdef SVR4
  643. X  #        include <termios.h>
  644. X  #    endif
  645. X  #    if !defined(TIOCGWINSZ) && !defined(TIOCGSIZE)
  646. ***************
  647. *** 144,151 ****
  648. X  #    if defined(sony)
  649. X  typedef int sigtype_t;
  650. X  #    else
  651. ! #        if __STDC__ || defined(SVR4) || defined(sinix) || defined(sun) || \
  652. !            defined(ultrix) || defined(atthcx) || defined(PTX) || defined(sgi)
  653. X  typedef void sigtype_t;
  654. X  #        else
  655. X  typedef int sigtype_t;
  656. --- 147,156 ----
  657. X  #    if defined(sony)
  658. X  typedef int sigtype_t;
  659. X  #    else
  660. ! #        if __STDC__ || defined(atthcx) || defined(PTX) || \
  661. !            defined(RS6000) || defined(sgi) || defined(sinix) || \
  662. !            defined(sysV68) || defined(sun) || defined(SVR4) || \
  663. !            defined(ultrix)
  664. X  typedef void sigtype_t;
  665. X  #        else
  666. X  typedef int sigtype_t;
  667. ***************
  668. *** 172,178 ****
  669. X   */
  670. X  
  671. X  #ifdef BSD
  672. ! #    if defined(_SEQUENT_) || defined(pyr)
  673. X  #        define        memcmp(s1, s2, n)    bcmp(s2, s1, n)
  674. X  #    endif
  675. X  #    define        strchr(str, ch)    index(str, ch)
  676. --- 177,183 ----
  677. X   */
  678. X  
  679. X  #ifdef BSD
  680. ! #    if defined(sequent) || defined(pyr)
  681. X  #        define        memcmp(s1, s2, n)    bcmp(s2, s1, n)
  682. X  #    endif
  683. X  #    define        strchr(str, ch)    index(str, ch)
  684. ***************
  685. *** 181,196 ****
  686. X  #    define        DEFAULT_PRINTER    "/usr/ucb/lpr"
  687. X  #    define        DEFAULT_SUM    "sum"
  688. X  #    ifdef DGUX
  689. - #        define        DEFAULT_MAILER    "/bin/mail"
  690. X  #        define        DEFAULT_MAILBOX    "/usr/mail"
  691. X  #        define        POSIX_JOB_CONTROL
  692. X  #        define        USE_INVERSE_HACK
  693. X  #    endif
  694. X  #    ifdef pyr
  695. ! #        define        DEFAULT_MAILER    "/usr/.attbin/mailx"
  696. X  #    endif
  697. X  #    ifndef DEFAULT_MAILER
  698. ! #        define        DEFAULT_MAILER    "/usr/ucb/Mail"
  699. X  #    endif
  700. X  #    ifndef DEFAULT_MAILBOX
  701. X  #        define        DEFAULT_MAILBOX    "/usr/spool/mail"
  702. --- 186,200 ----
  703. X  #    define        DEFAULT_PRINTER    "/usr/ucb/lpr"
  704. X  #    define        DEFAULT_SUM    "sum"
  705. X  #    ifdef DGUX
  706. X  #        define        DEFAULT_MAILBOX    "/usr/mail"
  707. X  #        define        POSIX_JOB_CONTROL
  708. X  #        define        USE_INVERSE_HACK
  709. X  #    endif
  710. X  #    ifdef pyr
  711. ! #        define        DEFAULT_MAILER    "/usr/.ucbbin/mail"
  712. X  #    endif
  713. X  #    ifndef DEFAULT_MAILER
  714. ! #        define        DEFAULT_MAILER    "/usr/lib/sendmail"
  715. X  #    endif
  716. X  #    ifndef DEFAULT_MAILBOX
  717. X  #        define        DEFAULT_MAILBOX    "/usr/spool/mail"
  718. ***************
  719. *** 199,234 ****
  720. X  #        define USE_LONG_FILENAMES
  721. X  #    endif
  722. X  #else
  723. ! #    ifdef M_XENIX
  724. ! #        define        DEFAULT_EDITOR    "/bin/vi"
  725. ! #        define        DEFAULT_MAILER    "/usr/bin/mail"
  726. ! #        define        DEFAULT_MAILBOX    "/usr/spool/mail"
  727. ! #    endif
  728. ! #    if defined(NCR) || defined(atthcx) || defined(HPUX)
  729. X  #        define        DEFAULT_MAILER    "/usr/bin/mailx"
  730. X  #    endif
  731. ! #    ifdef PTX
  732. ! #        define        DEFAULT_MAILER    "/usr/bin/mailx"
  733. X  #        ifndef USE_LONG_FILENAMES
  734. X  #            define    USE_LONG_FILENAMES
  735. X  #        endif
  736. X  #    endif
  737. X  #    ifdef RS6000
  738. X  #        define        DEFAULT_MAILER    "/usr/bin/mail"
  739. X  #        define        DEFAULT_PRINTER    "/bin/lp"
  740. X  #    endif
  741. X  #    ifdef sinix
  742. - #        define        DEFAULT_MAILER    "/bin/rmail"
  743. X  #        define        DEFAULT_PRINTER    "/bin/lpr"
  744. ! #        ifndef USE_LONG_FILENAMES
  745. ! #            define USE_LONG_FILENAMES
  746. ! #        endif
  747. X  #    endif
  748. X  #    ifdef SVR4
  749. X  #        define        POSIX_JOB_CONTROL
  750. - #        ifndef USE_LONG_FILENAMES
  751. - #            define    USE_LONG_FILENAMES
  752. - #        endif
  753. X  #    endif
  754. X  #    ifdef UNIXPC
  755. X  #        define        DEFAULT_MAILER    "/bin/rmail"
  756. --- 203,235 ----
  757. X  #        define USE_LONG_FILENAMES
  758. X  #    endif
  759. X  #else
  760. ! #    if defined(NCR) || defined(atthcx) || defined(HPUX) || defined(PTX) || \
  761. !        defined(sinix)
  762. X  #        define        DEFAULT_MAILER    "/usr/bin/mailx"
  763. X  #    endif
  764. ! #    if defined(PTX) || defined(RS6000) || defined(SVR4) || defined(sinix) || \
  765. !        defined(AUX)
  766. X  #        ifndef USE_LONG_FILENAMES
  767. X  #            define    USE_LONG_FILENAMES
  768. X  #        endif
  769. X  #    endif
  770. + #    ifdef M_XENIX
  771. + #        define        DEFAULT_EDITOR    "/bin/vi"
  772. + #        define        DEFAULT_MAILER    "/usr/bin/mail"
  773. + #        define        DEFAULT_MAILBOX    "/usr/spool/mail"
  774. + #    endif
  775. X  #    ifdef RS6000
  776. X  #        define        DEFAULT_MAILER    "/usr/bin/mail"
  777. X  #        define        DEFAULT_PRINTER    "/bin/lp"
  778. X  #    endif
  779. X  #    ifdef sinix
  780. X  #        define        DEFAULT_PRINTER    "/bin/lpr"
  781. ! #    endif
  782. ! #    ifdef sysV68
  783. ! #        define        DEFAULT_MAILER    "/bin/rmail"
  784. X  #    endif
  785. X  #    ifdef SVR4
  786. X  #        define        POSIX_JOB_CONTROL
  787. X  #    endif
  788. X  #    ifdef UNIXPC
  789. X  #        define        DEFAULT_MAILER    "/bin/rmail"
  790. ***************
  791. *** 268,279 ****
  792. X  #endif
  793. X  
  794. X  /*
  795. !  * Should active file be rereaf for new news & if so how often
  796. X   */
  797. X   
  798. ! #ifndef NO_RESYNC_ACTIVE_FILE
  799. ! #    ifndef RESYNC_ACTIVE_SECS
  800. ! #        define    RESYNC_ACTIVE_SECS    300    /* reread active every n secs */
  801. X  #    endif
  802. X  #endif
  803. X  
  804. --- 269,280 ----
  805. X  #endif
  806. X  
  807. X  /*
  808. !  * Should active file be reread for new news & if so how often
  809. X   */
  810. X   
  811. ! #ifndef NO_REREAD_ACTIVE_FILE
  812. ! #    ifndef REREAD_ACTIVE_FILE_SECS
  813. ! #        define    REREAD_ACTIVE_FILE_SECS    300    /* seconds */
  814. X  #    endif
  815. X  #endif
  816. X  
  817. ***************
  818. *** 286,301 ****
  819. --- 287,307 ----
  820. X  #    define        DEFAULT_ARTICLE_NUM    400    
  821. X  #    define        DEFAULT_KILL_NUM    10    
  822. X  #    define        DEFAULT_SAVE_NUM    10    
  823. + #    define        DEFAULT_SPOOLDIR_NUM    5    
  824. + #    define        DEFAULT_ACTIVE_SIZE_NUM    5    
  825. X  #else
  826. X  #    define        DEFAULT_ACTIVE_NUM    1800    
  827. X  #    define        DEFAULT_ARTICLE_NUM    1200    
  828. X  #    define        DEFAULT_KILL_NUM    30    
  829. X  #    define        DEFAULT_SAVE_NUM    30    
  830. + #    define        DEFAULT_SPOOLDIR_NUM    10    
  831. + #    define        DEFAULT_ACTIVE_SIZE_NUM    10    
  832. X  #endif
  833. X  
  834. X  #define        RCDIR            ".tin"
  835. X  #define        RCFILE            "tinrc"
  836. X  #define        INDEXDIR        ".index"
  837. + #define        ACTIVEDIR        ".active"
  838. X  #define        KILLFILE        "kill"
  839. X  #define        POSTFILE        "posted"
  840. X  #define        UNTHREADFILE    "unthread"
  841. ***************
  842. *** 390,400 ****
  843. X   */
  844. X   
  845. X  #define        SORT_BY_NOTHING            0        /* sort types on arts[] array */
  846. ! #define        SORT_BY_SUBJ_DESCEND    1
  847. X  #define        SORT_BY_SUBJ_ASCEND        2
  848. ! #define        SORT_BY_FROM_DESCEND    3
  849. X  #define        SORT_BY_FROM_ASCEND        4
  850. ! #define        SORT_BY_DATE_DESCEND    5
  851. X  #define        SORT_BY_DATE_ASCEND        6
  852. X  
  853. X  #define        SHOW_FROM_NONE            0
  854. --- 396,406 ----
  855. X   */
  856. X   
  857. X  #define        SORT_BY_NOTHING            0        /* sort types on arts[] array */
  858. ! #define        SORT_BY_SUBJ_DESCEND        1
  859. X  #define        SORT_BY_SUBJ_ASCEND        2
  860. ! #define        SORT_BY_FROM_DESCEND        3
  861. X  #define        SORT_BY_FROM_ASCEND        4
  862. ! #define        SORT_BY_DATE_DESCEND        5
  863. X  #define        SORT_BY_DATE_ASCEND        6
  864. X  
  865. X  #define        SHOW_FROM_NONE            0
  866. ***************
  867. *** 470,476 ****
  868. X  
  869. X  #define        ART_READ        0
  870. X  #define        ART_UNREAD        1
  871. ! #define        ART_WILL_RETURN    2
  872. X  
  873. X  /*
  874. X   * used by group_t & my_group[]
  875. --- 476,482 ----
  876. X  
  877. X  #define        ART_READ        0
  878. X  #define        ART_UNREAD        1
  879. ! #define        ART_WILL_RETURN        2
  880. X  
  881. X  /*
  882. X   * used by group_t & my_group[]
  883. ***************
  884. *** 477,483 ****
  885. X   */
  886. X   
  887. X  #define        UNSUBSCRIBED    0x01    /* haven't put in my_group[] yet */
  888. ! #define        SUBSCRIBED        0x02    /* subscribed to */
  889. X  
  890. X  /*
  891. X   * kill_type used in struct kill_t
  892. --- 483,489 ----
  893. X   */
  894. X   
  895. X  #define        UNSUBSCRIBED    0x01    /* haven't put in my_group[] yet */
  896. ! #define        SUBSCRIBED    0x02    /* subscribed to */
  897. X  
  898. X  /*
  899. X   * kill_type used in struct kill_t
  900. ***************
  901. *** 571,588 ****
  902. X   */
  903. X  
  904. X  struct attribute_t {
  905. !     char *server;            /* read group locally/via nntp server */
  906. !     char *maildir;            /* mail dir if other than ~/Mail */
  907. !     char *savedir;            /* save dir if other than ~/News */
  908. !     char *sigfile;            /* sig file if other than ~/.Sig */
  909. !     unsigned int read:1;        /* marked TRUE if group was entered during session */
  910. !     unsigned int showall:1;        /* 0 = only unread, 1 = all */
  911. !     unsigned int thread:1;        /* 0 = unthread, 1 = thread */
  912. !     unsigned int sortby:4;        /* 0 = none, 1 = , 2 = , 3 = , 4 = , */
  913. !     unsigned int author:4;        /* 0 = none, 1 = name, 2 = addr, 3 = both */
  914. !     unsigned int autosave:1;    /* 0 = none, 1 = save */
  915. !     unsigned int process:4;        /* 0 = none, 1 = shar, 2 = uudecode, 
  916. !                          3 = uud & list zoo, 4 = uud & ext zoo*/
  917. X  };
  918. X  
  919. X  /*
  920. --- 577,597 ----
  921. X   */
  922. X  
  923. X  struct attribute_t {
  924. !     char *maildir;                /* mail dir if other than ~/Mail */
  925. !     char *savedir;                /* save dir if other than ~/News */
  926. !     char *sigfile;                /* sig file if other than ~/.Sig */
  927. !     char *followup_to;            /* where posts should be redirected */
  928. !     unsigned int read_during_session:1;    /* marked TRUE if group entered during session */
  929. !     unsigned int auto_save:1;        /* 0=none, 1=save */
  930. !     unsigned int batch_save:1;        /* 0=none, 1=save -S/mail -M  */
  931. !     unsigned int show_only_unread:1;    /* 0=all, 1=only unread */
  932. !     unsigned int thread_arts:1;        /* 0=unthread, 1=thread */
  933. !     unsigned int show_author:4;        /* 0=none, 1=name, 2=addr, 3=both */
  934. !     unsigned int sort_art_type:4;        /* 0=none, 1=subj descend, 2=subj ascend, 
  935. !                            3=from descend, 4=from ascend,
  936. !                            5=date descend, 6=date ascend */
  937. !     unsigned int post_proc_type:4;        /* 0=none, 1=shar, 2=uudecode, 
  938. !                              3=uud & list zoo, 4=uud & ext zoo*/
  939. X  };
  940. X  
  941. X  /*
  942. ***************
  943. *** 596,602 ****
  944. X      long min;
  945. X      char moderated;
  946. X      int next;            /* next active entry in hash chain */
  947. !     int flag;
  948. X      struct attribute_t attribute;    /* per group attributes */ 
  949. X  };
  950. X  
  951. --- 605,612 ----
  952. X      long min;
  953. X      char moderated;
  954. X      int next;            /* next active entry in hash chain */
  955. !     int my_group;            /* subscribed/unsubscribed to group */
  956. !     int unread;            /* unread articles in group */
  957. X      struct attribute_t attribute;    /* per group attributes */ 
  958. X  };
  959. X  
  960. ***************
  961. *** 654,663 ****
  962. --- 664,686 ----
  963. X      char art_mark;    /* mark to use for this thread - not used for groups */
  964. X  };
  965. X  
  966. + /*
  967. +  * Used by spooldir command
  968. +  */
  969. +  
  970. X  struct spooldir_t {
  971. X      int state;
  972. X      char *name;
  973. X      char *comment;
  974. + };
  975. + /*
  976. +  * Used for auto-detecting changes in active file size on different news servers
  977. +  */
  978. +  
  979. + struct active_size_t {
  980. +     char *server;
  981. +     char *attribute;
  982. X  };
  983. X  
  984. X  /*
  985. Binary files ../1.14/tin.nrf and ./tin.nrf differ
  986. Only in .: tin.tar
  987. Files ../1.14/wildmat.3 and ./wildmat.3 are identical
  988. Files ../1.14/wildmat.c and ./wildmat.c are identical
  989. Files ../1.14/xindex.c and ./xindex.c are identical
  990. Files ../1.14/xuser.c and ./xuser.c are identical
  991. SHAR_EOF
  992. echo 'File tin-1.15.patch is complete' &&
  993. chmod 0644 tin-1.15.patch ||
  994. echo 'restore of tin-1.15.patch failed'
  995. Wc_c="`wc -c < 'tin-1.15.patch'`"
  996. test 386903 -eq "$Wc_c" ||
  997.     echo 'tin-1.15.patch: original size 386903, current size' "$Wc_c"
  998. rm -f _shar_wnt_.tmp
  999. fi
  1000. rm -f _shar_seq_.tmp
  1001. echo You have unpacked the last part
  1002. exit 0
  1003.  
  1004. --
  1005. NAME   Iain Lea 
  1006. EMAIL  iain%anl433.uucp@Germany.EU.net
  1007. SNAIL  Siemens AG, ANL A433SZ, Gruendlacher Str. 248, 8510 Fuerth, Germany.
  1008. PHONE  +49-911-3089-407 (work) +49-911-331963 (home) +49-911-3089-290 (FAX)  
  1009. exit 0 # Just in case...
  1010.