home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume26 / tin / patch06d < prev    next >
Encoding:
Text File  |  1991-11-29  |  53.9 KB  |  1,966 lines

  1. Newsgroups: comp.sources.misc
  2. From: iain@estevax.uucp (Iain J. Lea)
  3. Subject:  v26i079:  tin - threaded full screen newsreader, Patch06d/5
  4. Message-ID: <1991Nov30.024029.14622@sparky.imd.sterling.com>
  5. X-Md4-Signature: 171c995778b4a5f43ff66adea0984741
  6. Date: Sat, 30 Nov 1991 02:40:29 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: iain@estevax.uucp (Iain J. Lea)
  10. Posting-number: Volume 26, Issue 79
  11. Archive-name: tin/patch06d
  12. Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
  13. Patch-To: tin: Volume 23, Issue 15-23
  14.  
  15. #!/bin/sh
  16. # this is patch06.shar.04 (part 4 of tin)
  17. # do not concatenate these parts, unpack them in order with /bin/sh
  18. # file tin.patch06 continued
  19. #
  20. if touch 2>&1 | fgrep '[-amc]' > /dev/null
  21.  then TOUCH=touch
  22.  else TOUCH=true
  23. fi
  24. if test ! -r shar3_seq_.tmp; then
  25.     echo "Please unpack part 1 first!"
  26.     exit 1
  27. fi
  28. (read Scheck
  29.  if test "$Scheck" != 4; then
  30.     echo "Please unpack part $Scheck next!"
  31.     exit 1
  32.  else
  33.     exit 0
  34.  fi
  35. ) < shar3_seq_.tmp || exit 1
  36. echo "x - Continuing file tin.patch06"
  37. sed 's/^X//' << 'SHAR_EOF' >> tin.patch06 &&
  38. X!         if (inverse) {
  39. X!             StartInverse ();
  40. X!         }
  41. X      }
  42. X      printf ("%s", str);
  43. X      fflush (stdout);
  44. X!     if (inverse && RawState ()) {
  45. X          EndInverse ();
  46. X      }
  47. X  }
  48. Xdiff -rcs ../105/search.c ./search.c
  49. X*** ../105/search.c    Tue Oct  8 19:29:35 1991
  50. X--- ./search.c    Tue Oct 29 20:34:38 1991
  51. X***************
  52. X*** 3,9 ****
  53. X   *  Module    : search.c
  54. X   *  Author    : R.Skrenta / I.Lea
  55. X   *  Created   : 01-04-91
  56. X!  *  Updated   : 26-08-91
  57. X   *  Release   : 1.0
  58. X   *  Notes     :
  59. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  60. X--- 3,9 ----
  61. X   *  Module    : search.c
  62. X   *  Author    : R.Skrenta / I.Lea
  63. X   *  Created   : 01-04-91
  64. X!  *  Updated   : 29-10-91
  65. X   *  Release   : 1.0
  66. X   *  Notes     :
  67. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  68. X***************
  69. X*** 47,55 ****
  70. X  {
  71. X      char buf[LEN];
  72. X      char buf2[LEN];
  73. X!     int i;
  74. X  
  75. X!     clear_message();
  76. X  
  77. X      if (forward) {
  78. X          sprintf (buf2, txt_author_search_forwards, author_search_string);
  79. X--- 47,55 ----
  80. X  {
  81. X      char buf[LEN];
  82. X      char buf2[LEN];
  83. X!     int i, patlen;
  84. X  
  85. X!     clear_message ();
  86. X  
  87. X      if (forward) {
  88. X          sprintf (buf2, txt_author_search_forwards, author_search_string);
  89. X***************
  90. X*** 56,62 ****
  91. X      } else {
  92. X          sprintf (buf2, txt_author_search_backwards, author_search_string);
  93. X      }
  94. X- 
  95. X      
  96. X      if (! parse_string (buf2, buf)) {
  97. X          return -1;
  98. X--- 56,61 ----
  99. X***************
  100. X*** 75,103 ****
  101. X  
  102. X      wait_message (txt_searching);
  103. X  
  104. X!     make_lower(author_search_string, buf);
  105. X  
  106. X      i = current_art;
  107. X  
  108. X      do {
  109. X          if (forward) {
  110. X!             i = next_response(i);
  111. X              if (i < 0)
  112. X                  i = 0;
  113. X          } else {
  114. X!             i = prev_response(i);
  115. X              if (i < 0)
  116. X                  i = top - 1;
  117. X          }
  118. X  
  119. X!         make_lower(arts[i].from, buf2);
  120. X!         if (str_str (buf2, buf) != 0) {
  121. X              clear_message ();
  122. X              return i;
  123. X          }
  124. X      } while (i != current_art);
  125. X  
  126. X!     info_message(txt_no_match);
  127. X      return -1;
  128. X  }
  129. X  
  130. X--- 74,110 ----
  131. X  
  132. X      wait_message (txt_searching);
  133. X  
  134. X!     make_lower (author_search_string, buf);
  135. X  
  136. X+     patlen = strlen (author_search_string);
  137. X+ 
  138. X      i = current_art;
  139. X  
  140. X      do {
  141. X          if (forward) {
  142. X!             i = next_response (i);
  143. X              if (i < 0)
  144. X                  i = 0;
  145. X          } else {
  146. X!             i = prev_response (i);
  147. X              if (i < 0)
  148. X                  i = top - 1;
  149. X          }
  150. X  
  151. X!         if (arts[i].name == (char *) 0) {
  152. X!             make_lower (arts[i].from, buf2);
  153. X!         } else {
  154. X!             sprintf (msg, "%s (%s)", arts[i].from, arts[i].name);
  155. X!             make_lower (msg, buf2);
  156. X!         }
  157. X! 
  158. X!         if (str_str (buf2, buf, patlen) != 0) {
  159. X              clear_message ();
  160. X              return i;
  161. X          }
  162. X      } while (i != current_art);
  163. X  
  164. X!     info_message (txt_no_match);
  165. X      return -1;
  166. X  }
  167. X  
  168. X***************
  169. X*** 110,118 ****
  170. X  {
  171. X      char buf[LEN];
  172. X      char buf2[LEN];
  173. X!     int i;
  174. X  
  175. X!     clear_message();
  176. X  
  177. X      if (forward) {
  178. X          sprintf (buf2, txt_search_forwards, group_search_string);
  179. X--- 117,125 ----
  180. X  {
  181. X      char buf[LEN];
  182. X      char buf2[LEN];
  183. X!     int i, patlen;
  184. X  
  185. X!     clear_message ();
  186. X  
  187. X      if (forward) {
  188. X          sprintf (buf2, txt_search_forwards, group_search_string);
  189. X***************
  190. X*** 137,146 ****
  191. X  
  192. X      wait_message (txt_searching);
  193. X  
  194. X!     i = cur_groupnum;
  195. X  
  196. X!     make_lower(group_search_string, buf);
  197. X  
  198. X      do {
  199. X          if (forward)
  200. X              i++;
  201. X--- 144,155 ----
  202. X  
  203. X      wait_message (txt_searching);
  204. X  
  205. X!     make_lower (group_search_string, buf);
  206. X  
  207. X!     patlen = strlen (group_search_string);
  208. X  
  209. X+     i = cur_groupnum;
  210. X+ 
  211. X      do {
  212. X          if (forward)
  213. X              i++;
  214. X***************
  215. X*** 152,174 ****
  216. X          if (i < 0)
  217. X              i = local_top - 1;
  218. X  
  219. X!         make_lower(active[my_group[i]].name, buf2);
  220. X!         if (str_str (buf2, buf) != 0) {
  221. X              if (i >= first_group_on_screen
  222. X              &&  i < last_group_on_screen) {
  223. X                  clear_message ();
  224. X!                 erase_group_arrow();
  225. X                  cur_groupnum = i;
  226. X!                 draw_group_arrow();
  227. X              } else {
  228. X                  cur_groupnum = i;
  229. X!                 group_selection_page();
  230. X              }
  231. X              return;
  232. X          }
  233. X      } while (i != cur_groupnum);
  234. X  
  235. X!     info_message(txt_no_match);
  236. X  }
  237. X  
  238. X  /*
  239. X--- 161,184 ----
  240. X          if (i < 0)
  241. X              i = local_top - 1;
  242. X  
  243. X!         make_lower (active[my_group[i]].name, buf2);
  244. X! 
  245. X!         if (str_str (buf2, buf, patlen) != 0) {
  246. X              if (i >= first_group_on_screen
  247. X              &&  i < last_group_on_screen) {
  248. X                  clear_message ();
  249. X!                 erase_group_arrow ();
  250. X                  cur_groupnum = i;
  251. X!                 draw_group_arrow ();
  252. X              } else {
  253. X                  cur_groupnum = i;
  254. X!                 group_selection_page ();
  255. X              }
  256. X              return;
  257. X          }
  258. X      } while (i != cur_groupnum);
  259. X  
  260. X!     info_message (txt_no_match);
  261. X  }
  262. X  
  263. X  /*
  264. X***************
  265. X*** 181,187 ****
  266. X  {
  267. X      char buf[LEN];
  268. X      char buf2[LEN];
  269. X!     int i, j;
  270. X  
  271. X      if (index_point < 0) {
  272. X          info_message (txt_no_arts);
  273. X--- 191,197 ----
  274. X  {
  275. X      char buf[LEN];
  276. X      char buf2[LEN];
  277. X!     int i, j, patlen;
  278. X  
  279. X      if (index_point < 0) {
  280. X          info_message (txt_no_arts);
  281. X***************
  282. X*** 188,194 ****
  283. X          return;
  284. X      }
  285. X      
  286. X!     clear_message();
  287. X  
  288. X      if (forward) {
  289. X          sprintf (buf2, txt_search_forwards, subject_search_string);
  290. X--- 198,204 ----
  291. X          return;
  292. X      }
  293. X      
  294. X!     clear_message ();
  295. X  
  296. X      if (forward) {
  297. X          sprintf (buf2, txt_search_forwards, subject_search_string);
  298. X***************
  299. X*** 213,222 ****
  300. X  
  301. X      wait_message (txt_searching);
  302. X  
  303. X!     i = index_point;
  304. X  
  305. X!     make_lower(subject_search_string, buf);
  306. X  
  307. X      do {
  308. X          if (forward)
  309. X              i++;
  310. X--- 223,234 ----
  311. X  
  312. X      wait_message (txt_searching);
  313. X  
  314. X!     make_lower (subject_search_string, buf);
  315. X  
  316. X!     patlen = strlen (subject_search_string);
  317. X  
  318. X+     i = index_point;
  319. X+ 
  320. X      do {
  321. X          if (forward)
  322. X              i++;
  323. X***************
  324. X*** 229,251 ****
  325. X              i = top_base - 1;
  326. X  
  327. X          j = (int) base[i];
  328. X!         make_lower(arts[j].subject, buf2);
  329. X!         if (str_str (buf2, buf) != 0) {
  330. X              if (i >= first_subj_on_screen
  331. X                  &&  i < last_subj_on_screen) {
  332. X                  clear_message ();
  333. X!                 erase_subject_arrow();
  334. X                  index_point = i;
  335. X!                 draw_subject_arrow();
  336. X              } else {
  337. X                  index_point = i;
  338. X!                 show_group_page(group);
  339. X              }
  340. X              return;
  341. X          }
  342. X      } while (i != index_point);
  343. X  
  344. X!     info_message(txt_no_match);
  345. X  }
  346. X  
  347. X  /*
  348. X--- 241,265 ----
  349. X              i = top_base - 1;
  350. X  
  351. X          j = (int) base[i];
  352. X! 
  353. X!         make_lower (arts[j].subject, buf2);
  354. X! 
  355. X!         if (str_str (buf2, buf, patlen) != 0) {
  356. X              if (i >= first_subj_on_screen
  357. X                  &&  i < last_subj_on_screen) {
  358. X                  clear_message ();
  359. X!                 erase_subject_arrow ();
  360. X                  index_point = i;
  361. X!                 draw_subject_arrow ();
  362. X              } else {
  363. X                  index_point = i;
  364. X!                 show_group_page (group);
  365. X              }
  366. X              return;
  367. X          }
  368. X      } while (i != index_point);
  369. X  
  370. X!     info_message (txt_no_match);
  371. X  }
  372. X  
  373. X  /*
  374. X***************
  375. X*** 261,267 ****
  376. X      char pattern[LEN];
  377. X      char *p, *q;
  378. X      int ctrl_L;
  379. X!     int i, j;
  380. X      int orig_note_end;
  381. X      int orig_note_page;
  382. X  
  383. X--- 275,281 ----
  384. X      char pattern[LEN];
  385. X      char *p, *q;
  386. X      int ctrl_L;
  387. X!     int i, j, patlen;
  388. X      int orig_note_end;
  389. X      int orig_note_page;
  390. X  
  391. X***************
  392. X*** 288,301 ****
  393. X          }
  394. X      }
  395. X  
  396. X      make_lower (art_search_string, pattern);
  397. X      /*
  398. X       *  save current position in article
  399. X       */
  400. X      orig_note_end = note_end;
  401. X      orig_note_page = note_page;
  402. X- 
  403. X-     wait_message (txt_searching);
  404. X      
  405. X      while (! note_end) {
  406. X          note_line = 1;
  407. X--- 302,318 ----
  408. X          }
  409. X      }
  410. X  
  411. X+     wait_message (txt_searching);
  412. X+     
  413. X      make_lower (art_search_string, pattern);
  414. X+ 
  415. X+     patlen = strlen (art_search_string);
  416. X+ 
  417. X      /*
  418. X       *  save current position in article
  419. X       */
  420. X      orig_note_end = note_end;
  421. X      orig_note_page = note_page;
  422. X      
  423. X      while (! note_end) {
  424. X          note_line = 1;
  425. X***************
  426. X*** 307,313 ****
  427. X              note_line += 2;
  428. X          }
  429. X          while (note_line < LINES) {
  430. X!             if (fgets(buf, sizeof buf, note_fp) == NULL) {
  431. X                  note_end = TRUE;
  432. X                  break;
  433. X              }
  434. X--- 324,330 ----
  435. X              note_line += 2;
  436. X          }
  437. X          while (note_line < LINES) {
  438. X!             if (fgets (buf, sizeof buf, note_fp) == NULL) {
  439. X                  note_end = TRUE;
  440. X                  break;
  441. X              }
  442. X***************
  443. X*** 335,343 ****
  444. X              }
  445. X              *q = '\0';
  446. X  
  447. X!             make_lower(buf2, string);
  448. X  
  449. X!             if (str_str (string, pattern) != 0) {
  450. X                  fseek (note_fp, note_mark[note_page], 0);
  451. X                  return TRUE;
  452. X              }
  453. X--- 352,360 ----
  454. X              }
  455. X              *q = '\0';
  456. X  
  457. X!             make_lower (buf2, string);
  458. X  
  459. X!             if (str_str (string, pattern, patlen) != 0) {
  460. X                  fseek (note_fp, note_mark[note_page], 0);
  461. X                  return TRUE;
  462. X              }
  463. X***************
  464. X*** 349,355 ****
  465. X              }
  466. X          }
  467. X          if (! note_end) {
  468. X!             note_mark[++note_page] = ftell(note_fp);
  469. X          }
  470. X      }
  471. X  
  472. X--- 366,372 ----
  473. X              }
  474. X          }
  475. X          if (! note_end) {
  476. X!             note_mark[++note_page] = ftell (note_fp);
  477. X          }
  478. X      }
  479. X  
  480. X***************
  481. X*** 364,381 ****
  482. X   * ANSI C strstr () - Use Boyer-Moore algorithm. Downloaded from net.
  483. X   */
  484. X   
  485. X! char *str_str (text, pattern)
  486. X      char *text;
  487. X      char *pattern;
  488. X  {
  489. X      register unsigned char *p, *t;
  490. X      register int i, p1, j, *delta;
  491. X      int deltaspace[256];
  492. X-     int patlen;
  493. X      int textlen;
  494. X  
  495. X!     textlen= strlen (text);
  496. X!     patlen = strlen (pattern);
  497. X  
  498. X      /* algorithm fails if pattern is empty */
  499. X      if ((p1 = patlen) == 0)
  500. X--- 381,397 ----
  501. X   * ANSI C strstr () - Use Boyer-Moore algorithm. Downloaded from net.
  502. X   */
  503. X   
  504. X! char *str_str (text, pattern, patlen)
  505. X      char *text;
  506. X      char *pattern;
  507. X+     int patlen;
  508. X  {
  509. X      register unsigned char *p, *t;
  510. X      register int i, p1, j, *delta;
  511. X      int deltaspace[256];
  512. X      int textlen;
  513. X  
  514. X!     textlen = strlen (text);
  515. X  
  516. X      /* algorithm fails if pattern is empty */
  517. X      if ((p1 = patlen) == 0)
  518. Xdiff -rcs ../105/select.c ./select.c
  519. X*** ../105/select.c    Wed Oct  9 10:33:21 1991
  520. X--- ./select.c    Fri Oct 25 20:29:17 1991
  521. X***************
  522. X*** 3,9 ****
  523. X   *  Module    : select.c
  524. X   *  Author    : R.Skrenta / I.Lea
  525. X   *  Created   : 01-04-91
  526. X!  *  Updated   : 09-10-91
  527. X   *  Release   : 1.0
  528. X   *  Notes     :
  529. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  530. X--- 3,9 ----
  531. X   *  Module    : select.c
  532. X   *  Author    : R.Skrenta / I.Lea
  533. X   *  Created   : 01-04-91
  534. X!  *  Updated   : 25-10-91
  535. X   *  Release   : 1.0
  536. X   *  Notes     :
  537. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  538. X***************
  539. X*** 16,27 ****
  540. X  #include    "tin.h"
  541. X  
  542. X  
  543. X- extern int index_point;
  544. X  extern char cvers[LEN];
  545. X  
  546. X  int first_group_on_screen;
  547. X  int last_group_on_screen;
  548. X- int cur_groupnum = 0;
  549. X  int reread_active_file = TRUE;
  550. X  int space_mode;
  551. X  
  552. X--- 16,27 ----
  553. X  #include    "tin.h"
  554. X  
  555. X  
  556. X  extern char cvers[LEN];
  557. X+ extern int index_point;
  558. X  
  559. X+ int cur_groupnum = 0;
  560. X  int first_group_on_screen;
  561. X  int last_group_on_screen;
  562. X  int reread_active_file = TRUE;
  563. X  int space_mode;
  564. X  
  565. X***************
  566. X*** 29,38 ****
  567. X  void selection_index (start_groupnum)
  568. X      int start_groupnum;
  569. X  {
  570. X      char ch;
  571. X      int i, n;
  572. X      int subscribe_num;
  573. X-     char buf[LEN];
  574. X  
  575. X      cur_groupnum = start_groupnum;
  576. X      
  577. X--- 29,40 ----
  578. X  void selection_index (start_groupnum)
  579. X      int start_groupnum;
  580. X  {
  581. X+     char buf[LEN];
  582. X      char ch;
  583. X      int i, n;
  584. X+     int patlen;
  585. X+     int scroll_lines;
  586. X      int subscribe_num;
  587. X  
  588. X      cur_groupnum = start_groupnum;
  589. X      
  590. X***************
  591. X*** 133,148 ****
  592. X              case ctrl('D'):        /* vi style */
  593. X              case ctrl('V'):        /* emacs style */
  594. X  select_page_down:
  595. X                  erase_group_arrow ();
  596. X!                 cur_groupnum += NOTESLINES / 2;
  597. X!                 if (cur_groupnum >= local_top)
  598. X!                     cur_groupnum = local_top - 1;
  599. X  
  600. X                  if (cur_groupnum <= first_group_on_screen
  601. X                  ||  cur_groupnum >= last_group_on_screen)
  602. X!                     group_selection_page();
  603. X                  else
  604. X!                     draw_group_arrow();
  605. X                  break;
  606. X  
  607. X              case ctrl('K'):
  608. X--- 135,161 ----
  609. X              case ctrl('D'):        /* vi style */
  610. X              case ctrl('V'):        /* emacs style */
  611. X  select_page_down:
  612. X+                 if (local_top == 0) {
  613. X+                     break;
  614. X+                 }
  615. X+                 if (cur_groupnum == local_top - 1) {
  616. X+                     break;
  617. X+                 }
  618. X                  erase_group_arrow ();
  619. X!                 scroll_lines = (full_page_scroll ? NOTESLINES : NOTESLINES / 2);
  620. X!                 cur_groupnum = ((cur_groupnum + scroll_lines) / scroll_lines) * scroll_lines;
  621. X!                 if (cur_groupnum >= local_top) {
  622. X!                     cur_groupnum = (local_top / scroll_lines) * scroll_lines;
  623. X!                     if (cur_groupnum < local_top - 1) {
  624. X!                         cur_groupnum = local_top - 1;
  625. X!                     }
  626. X!                 }
  627. X  
  628. X                  if (cur_groupnum <= first_group_on_screen
  629. X                  ||  cur_groupnum >= last_group_on_screen)
  630. X!                     group_selection_page ();
  631. X                  else
  632. X!                     draw_group_arrow ();
  633. X                  break;
  634. X  
  635. X              case ctrl('K'):
  636. X***************
  637. X*** 172,178 ****
  638. X                  break;
  639. X  
  640. X              case ctrl('L'):        /* redraw */
  641. X-             case 't':
  642. X  #ifndef USE_CLEARSCREEN
  643. X                  ClearScreen ();
  644. X  #endif
  645. X--- 185,190 ----
  646. X***************
  647. X*** 182,190 ****
  648. X              case ctrl('N'):        /* line down */
  649. X              case 'j':
  650. X  select_down:
  651. X!                 if (cur_groupnum + 1 >= local_top)
  652. X                      break;
  653. X! 
  654. X                  if (cur_groupnum + 1 >= last_group_on_screen) {
  655. X  #ifndef USE_CLEARSCREEN
  656. X                      erase_group_arrow();
  657. X--- 194,202 ----
  658. X              case ctrl('N'):        /* line down */
  659. X              case 'j':
  660. X  select_down:
  661. X!                 if (cur_groupnum + 1 >= local_top) {
  662. X                      break;
  663. X!                 }
  664. X                  if (cur_groupnum + 1 >= last_group_on_screen) {
  665. X  #ifndef USE_CLEARSCREEN
  666. X                      erase_group_arrow();
  667. X***************
  668. X*** 201,209 ****
  669. X              case ctrl('P'):        /* line up */
  670. X              case 'k':
  671. X  select_up:
  672. X!                 if (!cur_groupnum)
  673. X                      break;
  674. X! 
  675. X                  if (cur_groupnum <= first_group_on_screen) {
  676. X                      cur_groupnum--;
  677. X                      group_selection_page();
  678. X--- 213,221 ----
  679. X              case ctrl('P'):        /* line up */
  680. X              case 'k':
  681. X  select_up:
  682. X!                 if (cur_groupnum == 0) {
  683. X                      break;
  684. X!                 }
  685. X                  if (cur_groupnum <= first_group_on_screen) {
  686. X                      cur_groupnum--;
  687. X                      group_selection_page();
  688. X***************
  689. X*** 225,239 ****
  690. X              case ctrl('U'):        /* page up */
  691. X              case 'b':
  692. X  select_page_up:
  693. X!                 erase_group_arrow();
  694. X!                 cur_groupnum -= NOTESLINES / 2;
  695. X!                 if (cur_groupnum < 0)
  696. X                      cur_groupnum = 0;
  697. X                  if (cur_groupnum < first_group_on_screen
  698. X                  ||  cur_groupnum >= last_group_on_screen)
  699. X!                     group_selection_page();
  700. X                  else
  701. X!                     draw_group_arrow();
  702. X                  break;
  703. X  
  704. X              case 'B':    /* bug/gripe/comment mailed to author */
  705. X--- 237,263 ----
  706. X              case ctrl('U'):        /* page up */
  707. X              case 'b':
  708. X  select_page_up:
  709. X!                 if (local_top == 0) {
  710. X!                     break;
  711. X!                 }
  712. X!                 if (cur_groupnum == 0) {
  713. X!                     break;
  714. X!                 }
  715. X!                 erase_group_arrow ();
  716. X!                 scroll_lines = (full_page_scroll ? NOTESLINES : NOTESLINES / 2);
  717. X!                 if ((n = cur_groupnum % scroll_lines) > 0) {
  718. X!                     cur_groupnum = cur_groupnum - n;
  719. X!                 } else {
  720. X!                     cur_groupnum = ((cur_groupnum - scroll_lines) / scroll_lines) * scroll_lines;
  721. X!                 }
  722. X!                 if (cur_groupnum < 0) {
  723. X                      cur_groupnum = 0;
  724. X+                 }
  725. X                  if (cur_groupnum < first_group_on_screen
  726. X                  ||  cur_groupnum >= last_group_on_screen)
  727. X!                     group_selection_page ();
  728. X                  else
  729. X!                     draw_group_arrow ();
  730. X                  break;
  731. X  
  732. X              case 'B':    /* bug/gripe/comment mailed to author */
  733. X***************
  734. X*** 339,347 ****
  735. X              case 'S':    /* subscribe to groups matching pattern */
  736. X                  if (parse_string (txt_subscribe_pattern, buf) && buf[0]) {
  737. X                      wait_message (txt_subscribing);
  738. X                      for (subscribe_num=0, i=0 ; i < local_top ; i++) {
  739. X  #ifdef DONT_USE_REGEX 
  740. X!                         if (str_str (active[my_group[i]].name, buf)) {
  741. X  #else        
  742. X                          if (wildmat (active[my_group[i]].name, buf)) {
  743. X  #endif        
  744. X--- 363,372 ----
  745. X              case 'S':    /* subscribe to groups matching pattern */
  746. X                  if (parse_string (txt_subscribe_pattern, buf) && buf[0]) {
  747. X                      wait_message (txt_subscribing);
  748. X+                     patlen = strlen (buf);
  749. X                      for (subscribe_num=0, i=0 ; i < local_top ; i++) {
  750. X  #ifdef DONT_USE_REGEX 
  751. X!                         if (str_str (active[my_group[i]].name, buf, patlen)) {
  752. X  #else        
  753. X                          if (wildmat (active[my_group[i]].name, buf)) {
  754. X  #endif        
  755. X***************
  756. X*** 390,398 ****
  757. X              case 'U':    /* unsubscribe to groups matching pattern */
  758. X                  if (parse_string (txt_unsubscribe_pattern, buf) && buf[0]) {    
  759. X                      wait_message (txt_unsubscribing);
  760. X                      for (subscribe_num=0, i=0 ; i < local_top ; i++) {        
  761. X  #ifdef DONT_USE_REGEX 
  762. X!                         if (str_str (active[my_group[i]].name, buf)) {
  763. X  #else        
  764. X                          if (wildmat (active[my_group[i]].name, buf)) {
  765. X  #endif        
  766. X--- 415,424 ----
  767. X              case 'U':    /* unsubscribe to groups matching pattern */
  768. X                  if (parse_string (txt_unsubscribe_pattern, buf) && buf[0]) {    
  769. X                      wait_message (txt_unsubscribing);
  770. X+                     patlen = strlen (buf);    
  771. X                      for (subscribe_num=0, i=0 ; i < local_top ; i++) {        
  772. X  #ifdef DONT_USE_REGEX 
  773. X!                         if (str_str (active[my_group[i]].name, buf, patlen)) {
  774. X  #else        
  775. X                          if (wildmat (active[my_group[i]].name, buf)) {
  776. X  #endif        
  777. X***************
  778. X*** 562,589 ****
  779. X  
  780. X      MoveCursor (INDEX_TOP, 0);
  781. X  
  782. X!     first_group_on_screen = (cur_groupnum / NOTESLINES) * NOTESLINES;
  783. X  
  784. X      last_group_on_screen = first_group_on_screen + NOTESLINES;
  785. X!     if (last_group_on_screen >= local_top)
  786. X          last_group_on_screen = local_top;
  787. X  
  788. X      for (j=0, i = first_group_on_screen; i < last_group_on_screen; i++,j++) {
  789. X          switch (unread[i]) {
  790. X              case -2:
  791. X!                 sprintf (new, "?   ");
  792. X                  break;
  793. X  
  794. X              case -1:
  795. X!                 sprintf (new, "-   ");
  796. X                  break;
  797. X  
  798. X              case 0:
  799. X!                 sprintf (new, "    ");
  800. X                  break;
  801. X  
  802. X              default:
  803. X!                 sprintf (new, "%-4d", unread[i]);
  804. X          }
  805. X          
  806. X          n = my_group[i];
  807. X--- 588,643 ----
  808. X  
  809. X      MoveCursor (INDEX_TOP, 0);
  810. X  
  811. X!     if (cur_groupnum >= local_top) {
  812. X!         cur_groupnum = local_top - 1;
  813. X!     }
  814. X!  
  815. X!     if (NOTESLINES <= 0) {
  816. X!         first_group_on_screen = 0;
  817. X!     } else {
  818. X!         first_group_on_screen = (cur_groupnum / NOTESLINES) * NOTESLINES;
  819. X!         if (first_group_on_screen < 0) {
  820. X!             first_group_on_screen = 0;
  821. X!         }
  822. X!     }
  823. X  
  824. X      last_group_on_screen = first_group_on_screen + NOTESLINES;
  825. X! 
  826. X!     if (last_group_on_screen >= local_top) {
  827. X          last_group_on_screen = local_top;
  828. X+         first_group_on_screen = (cur_groupnum / NOTESLINES) * NOTESLINES;
  829. X  
  830. X+         if (first_group_on_screen == last_group_on_screen ||
  831. X+             first_group_on_screen < 0) {
  832. X+             if (first_group_on_screen < 0) {
  833. X+                 first_group_on_screen = 0;
  834. X+             } else {
  835. X+                 first_group_on_screen = last_group_on_screen - NOTESLINES;    
  836. X+             }
  837. X+         }    
  838. X+     }
  839. X+ 
  840. X+     if (local_top == 0) {
  841. X+         first_group_on_screen = 0;
  842. X+         last_group_on_screen = 0;
  843. X+     }
  844. X+ 
  845. X      for (j=0, i = first_group_on_screen; i < last_group_on_screen; i++,j++) {
  846. X          switch (unread[i]) {
  847. X              case -2:
  848. X!                 sprintf (new, "?    ");
  849. X                  break;
  850. X  
  851. X              case -1:
  852. X!                 sprintf (new, "-    ");
  853. X                  break;
  854. X  
  855. X              case 0:
  856. X!                 sprintf (new, "     ");
  857. X                  break;
  858. X  
  859. X              default:
  860. X!                 sprintf (new, "%-5d", unread[i]);
  861. X          }
  862. X          
  863. X          n = my_group[i];
  864. Xdiff -rcs ../105/signal.c ./signal.c
  865. X*** ../105/signal.c    Tue Oct 15 09:41:42 1991
  866. X--- ./signal.c    Thu Oct 31 08:03:52 1991
  867. X***************
  868. X*** 3,9 ****
  869. X   *  Module    : signal.c
  870. X   *  Author    : R.Skrenta / I.Lea
  871. X   *  Created   : 01-04-91
  872. X!  *  Updated   : 15-10-91
  873. X   *  Release   : 1.0
  874. X   *  Notes     : signal handlers for different modes and window resizing
  875. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  876. X--- 3,9 ----
  877. X   *  Module    : signal.c
  878. X   *  Author    : R.Skrenta / I.Lea
  879. X   *  Created   : 01-04-91
  880. X!  *  Updated   : 29-10-91
  881. X   *  Release   : 1.0
  882. X   *  Notes     : signal handlers for different modes and window resizing
  883. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  884. X***************
  885. X*** 46,52 ****
  886. X       
  887. X      signal (SIGPIPE, SIG_IGN);
  888. X  
  889. X! #ifdef SIGTSTP
  890. X      {
  891. X          void (*ptr)();
  892. X          ptr = signal (SIGTSTP, SIG_DFL);
  893. X--- 46,52 ----
  894. X       
  895. X      signal (SIGPIPE, SIG_IGN);
  896. X  
  897. X! #if defined(SIGTSTP) && ! defined(MINIX)
  898. X      {
  899. X          void (*ptr)();
  900. X          ptr = signal (SIGTSTP, SIG_DFL);
  901. X***************
  902. X*** 129,135 ****
  903. X  
  904. X      init_screen_array (TRUE);        /* allocate screen array for resize */
  905. X  
  906. X!     max_subj = (*num_cols / 2) - 2;
  907. X      max_from = (*num_cols - max_subj) - 17;
  908. X      RIGHT_POS = *num_cols - 18;
  909. X      MORE_POS  = *num_cols - 15;
  910. X--- 129,139 ----
  911. X  
  912. X      init_screen_array (TRUE);        /* allocate screen array for resize */
  913. X  
  914. X!     if (show_author == SHOW_FROM_ADDR || show_author == SHOW_FROM_BOTH) {
  915. X!         max_subj = (*num_cols / 2) - 2;
  916. X!     } else {
  917. X!         max_subj = (*num_cols / 2) + 5;
  918. X!     }
  919. X      max_from = (*num_cols - max_subj) - 17;
  920. X      RIGHT_POS = *num_cols - 18;
  921. X      MORE_POS  = *num_cols - 15;
  922. Xdiff -rcs ../105/tin.1 ./tin.1
  923. X*** ../105/tin.1    Tue Oct 15 09:44:26 1991
  924. X--- ./tin.1    Mon Nov  4 19:12:57 1991
  925. X***************
  926. X*** 1,4 ****
  927. X! .TH TIN 1 "Version 1.0 PL5"
  928. X  .SH NAME
  929. X  tin \- Visual threaded Usenet news reader
  930. X  .SH SYNOPSIS
  931. X--- 1,4 ----
  932. X! .TH TIN 1 "Version 1.0 PL6"
  933. X  .SH NAME
  934. X  tin \- Visual threaded Usenet news reader
  935. X  .SH SYNOPSIS
  936. X***************
  937. X*** 13,24 ****
  938. X  Tin has three newsreading levels:
  939. X  the newsgroup selection page, the group index page and the article viewer.
  940. X  Use the 'h' (help) command to view a list of the commands available at a
  941. X! particular level, or the 'H' command to view context sensitive help.
  942. X  .PP
  943. X  On startup Tin will show a list of the newsgroups found in \fI$HOME/.newsrc\fP.
  944. X  An arrow '->' or highlighted bar will point to the first newsgroup.
  945. X! Move to a group by using the terminal arrow keys (ansi/at386/vt100 only) or
  946. X! 'j' and 'k'. Use PgUp/PgDn (ansi/at386/vt100 only) or Ctrl-U and Ctrl-D to
  947. X  page up/down. Enter a newsgroup by pressing RETURN.
  948. X  .PP
  949. X  The TAB key may be used to advance to the next newsgroup with unread articles
  950. X--- 13,24 ----
  951. X  Tin has three newsreading levels:
  952. X  the newsgroup selection page, the group index page and the article viewer.
  953. X  Use the 'h' (help) command to view a list of the commands available at a
  954. X! particular level.
  955. X  .PP
  956. X  On startup Tin will show a list of the newsgroups found in \fI$HOME/.newsrc\fP.
  957. X  An arrow '->' or highlighted bar will point to the first newsgroup.
  958. X! Move to a group by using the terminal arrow keys (ansi/at386/vt100 only) or 'j'
  959. X! and 'k'. Use PgUp/PgDn (ansi/at386/vt100 only) or Ctrl-U and Ctrl-D to
  960. X  page up/down. Enter a newsgroup by pressing RETURN.
  961. X  .PP
  962. X  The TAB key may be used to advance to the next newsgroup with unread articles
  963. X***************
  964. X*** 33,54 ****
  965. X  save articles to directory. Default is \fI$HOME/News\fP.
  966. X  .TP
  967. X  \fB-f file\fP
  968. X! Use the indicated file in place of \fI$HOME/.newsrc\fP.
  969. X  .TP
  970. X  \fB-h\fP
  971. X  help.
  972. X  .TP
  973. X! \fB-m file\fP
  974. X! mail program to use for sending mail. Default is \fI/usr/ucb/mail\fP.
  975. X! .TP
  976. X! \fB-M dir\fP
  977. X  mailbox directory to use. Default is \fI$HOME/Mail\fP.
  978. X  .TP
  979. X  \fB-n\fP
  980. X  notify the user of any new newsgroups since last session.
  981. X  .TP
  982. X  \fB-p file\fP
  983. X! print program with options. Default is \fI/usr/ucb/lpr\fP.
  984. X  .TP
  985. X  \fB-r\fP
  986. X  read news remotely from the default NNTP server specified in the
  987. X--- 33,55 ----
  988. X  save articles to directory. Default is \fI$HOME/News\fP.
  989. X  .TP
  990. X  \fB-f file\fP
  991. X! Use the specified file in place of \fI$HOME/.newsrc\fP.
  992. X  .TP
  993. X  \fB-h\fP
  994. X  help.
  995. X  .TP
  996. X! \fB-m dir\fP
  997. X  mailbox directory to use. Default is \fI$HOME/Mail\fP.
  998. X  .TP
  999. X+ \fB-M user\fP
  1000. X+ same as -S option, but instead of saving news to \fI$HOME/<savedir>\fP it
  1001. X+ is mailed to the specified user address. 
  1002. X+ .TP
  1003. X  \fB-n\fP
  1004. X  notify the user of any new newsgroups since last session.
  1005. X  .TP
  1006. X  \fB-p file\fP
  1007. X! print program with options.\fP.
  1008. X  .TP
  1009. X  \fB-r\fP
  1010. X  read news remotely from the default NNTP server specified in the
  1011. X***************
  1012. X*** 55,60 ****
  1013. X--- 56,64 ----
  1014. X  environment variable NNTPSERVER or contained in the file
  1015. X  \fI/etc/nntpserver\fP.
  1016. X  .TP
  1017. X+ \fB-R\fP
  1018. X+ read news saved by -S option.
  1019. X+ .TP
  1020. X  \fB-s dir\fP
  1021. X  spool directory where news is stored. Default is \fI/usr/spool/news\fP.
  1022. X  .TP
  1023. X***************
  1024. X*** 71,77 ****
  1025. X  you only want to save a few groups it would be best to backup your
  1026. X  full \fI$HOME/.newsrc\fP and create a new one that only contains the
  1027. X  groups you want to save. Saved news can be read later by starting tin
  1028. X! with the -s <savedir> option.
  1029. X  .TP
  1030. X  \fB-u\fP
  1031. X  create/update index files for every group in \fI$HOME/.newsrc\fP or
  1032. X--- 75,81 ----
  1033. X  you only want to save a few groups it would be best to backup your
  1034. X  full \fI$HOME/.newsrc\fP and create a new one that only contains the
  1035. X  groups you want to save. Saved news can be read later by starting tin
  1036. X! with the -R option.
  1037. X  .TP
  1038. X  \fB-u\fP
  1039. X  create/update index files for every group in \fI$HOME/.newsrc\fP or
  1040. X***************
  1041. X*** 82,88 ****
  1042. X  in the foreground.
  1043. X  .TP
  1044. X  \fB-v\fP
  1045. X! verbose mode for -c -u and -Z options.
  1046. X  .TP
  1047. X  \fB-z\fP
  1048. X  only start tin if there is any new/unread news. If there is news tin
  1049. X--- 86,92 ----
  1050. X  in the foreground.
  1051. X  .TP
  1052. X  \fB-v\fP
  1053. X! verbose mode for -c -M -S -u and -Z options.
  1054. X  .TP
  1055. X  \fB-z\fP
  1056. X  only start tin if there is any new/unread news. If there is news tin
  1057. X***************
  1058. X*** 160,166 ****
  1059. X  <Selection Num> <Unread> <Responses> <Subject> <Author>
  1060. X  .ti -.5i
  1061. X  i.e.,
  1062. X! 1    +    3    Bnews sources?        iain@estevax
  1063. X  2        1    This question has        ether@net
  1064. X  .ti -.5i
  1065. X  or
  1066. X--- 164,170 ----
  1067. X  <Selection Num> <Unread> <Responses> <Subject> <Author>
  1068. X  .ti -.5i
  1069. X  i.e.,
  1070. X! 1    +    3    Bnews sources?        iain@estevax.uucp
  1071. X  2        1    This question has        ether@net
  1072. X  .ti -.5i
  1073. X  or
  1074. X***************
  1075. X*** 189,195 ****
  1076. X  .ta \w'24 Jul 15:20:03 GMT   'u +\w'Bnews sources?   'u
  1077. X  24 Jul 15:20:03 GMT    alt.sources    Thread 1 of 2
  1078. X  Article 452    Bnews sources?    3 responses
  1079. X! iain@estevax        Siemens AG, Germany
  1080. X  
  1081. X  <Article boby>
  1082. X  .in -.5i
  1083. X--- 193,199 ----
  1084. X  .ta \w'24 Jul 15:20:03 GMT   'u +\w'Bnews sources?   'u
  1085. X  24 Jul 15:20:03 GMT    alt.sources    Thread 1 of 2
  1086. X  Article 452    Bnews sources?    3 responses
  1087. X! iain@estevax.uucp        Organization name
  1088. X  
  1089. X  <Article boby>
  1090. X  .in -.5i
  1091. X***************
  1092. X*** 587,597 ****
  1093. X  file \fI$HOME/.tin/kill\fP. Use <SPACE> to toggle ON/OFF and <CR>
  1094. X  to set.
  1095. X  .TP
  1096. X- \fBShow Author\fP
  1097. X- If set ON the Subject: & From: (author) lines from the articles header
  1098. X- are displayed. If set OFF longer Subject: lines are displayed. Use
  1099. X- <SPACE> to toggle ON/OFF and <CR> to set.
  1100. X- .TP
  1101. X  \fBDraw arrow\fP
  1102. X  Allows groups/articles to be selected by an arrow '->' if set ON or
  1103. X  by an highlighted bar if set OFF. Use <SPACE> to toggle ON/OFF and
  1104. X--- 591,596 ----
  1105. X***************
  1106. X*** 607,612 ****
  1107. X--- 606,639 ----
  1108. X  upon entering a newsgroup with unread news. Use <SPACE> to toggle
  1109. X  ON/OFF and <CR> to set.
  1110. X  .TP
  1111. X+ \fBScroll full page\fP
  1112. X+ If set ON scrolling of groups/articles will be a full page at a time,
  1113. X+ otherwise half a page at a time. Use <SPACE> to toggle ON/OFF and <CR>
  1114. X+ to set.
  1115. X+ .TP
  1116. X+ \fBCatchup on quit\fP
  1117. X+ If set ON the user is asked when quitting if all groups read during the
  1118. X+ current session should be marked read. Use <SPACE> to toggle ON/OFF
  1119. X+ and <CR> to set.
  1120. X+ .TP
  1121. X+ \fBThread articles\fP
  1122. X+ If set ON articles will be threaded in all groups (default), otherwise
  1123. X+ articles will be shown unthreaded. If set ON but certain user specified
  1124. X+ groups are in \fI$HOME/.tin/unthread\fP, the specified groups will be
  1125. X+ unthreaded and the rest will be threaded. Use <SPACE> to toggle ON/OFF
  1126. X+ and <CR> to set.
  1127. X+ .TP
  1128. X+ \fBShow only unread\fP
  1129. X+ If set ON show only new/unread articles, otherwise show all articles.
  1130. X+ Use <SPACE> to toggle ON/OFF and <CR> to set.
  1131. X+ .TP
  1132. X+ \fBShow Author\fP
  1133. X+ If set 'None' only the Subject: line will be displayed. If set 'Addr'
  1134. X+ Subject: line & the address part of the From: line are displayed. If
  1135. X+ set 'Name' Subject: line & the authors full name part of the From:
  1136. X+ line are displayed. If set 'Both' Subject: line & all of the From: line
  1137. X+ are displayed. Use <SPACE> to toggle the required type and <CR> to set.
  1138. X+ .TP
  1139. X  \fBProcess type\fP
  1140. X  This specifies the default type of post processing to perform on saved
  1141. X  articles. The following types of processing are allowed:
  1142. X***************
  1143. X*** 623,631 ****
  1144. X  .ti -\w'\(em'u
  1145. X  \(emunpacking of multi-part uuencoded files that produce a *.zoo archive
  1146. X  whose contents is extracted.
  1147. X- .ti -\w'\(em'u
  1148. X- \(emunpacking of multi-part patches for use by \fIpatch\fP and applying
  1149. X- them to specified source files.
  1150. X  .in -.5i
  1151. X  Use <SPACE> to toggle the required type and <CR> to set.
  1152. X  .TP
  1153. X--- 650,655 ----
  1154. X***************
  1155. X*** 741,747 ****
  1156. X  .nf
  1157. X  NAME   Iain Lea
  1158. X  EMAIL  iain@estevax.uucp    ...!unido!estevax!iain
  1159. X! SNAIL  Siemens AG, ANL 433SZ, 8510 Fuerth-Bislohe, Germany
  1160. X  PHONE  +49-911-331963 (home)  +49-911-3089-407 (work)
  1161. X  .fi
  1162. X  .RE
  1163. X--- 765,771 ----
  1164. X  .nf
  1165. X  NAME   Iain Lea
  1166. X  EMAIL  iain@estevax.uucp    ...!unido!estevax!iain
  1167. X! SNAIL  Bruecken Strasse 12, 8500 Nuernberg, Germany
  1168. X  PHONE  +49-911-331963 (home)  +49-911-3089-407 (work)
  1169. X  .fi
  1170. X  .RE
  1171. X***************
  1172. X*** 812,818 ****
  1173. X  .SH FILES
  1174. X  .nf
  1175. X  .ta \w'\fI$HOME/.tin/organization\fP   'u
  1176. X! \fI$HOME/.newsrc\fP    newgroups subscribed to.
  1177. X  \fI$HOME/.tin/tinrc\fP    options.
  1178. X  \fI$HOME/.tin/.index\fP    newsgroup index files directory.
  1179. X  \fI$HOME/.tin/add_address\fP    address to add to when replying through mail.
  1180. X--- 836,842 ----
  1181. X  .SH FILES
  1182. X  .nf
  1183. X  .ta \w'\fI$HOME/.tin/organization\fP   'u
  1184. X! \fI$HOME/.newsrc\fP    subscribed to newgroups.
  1185. X  \fI$HOME/.tin/tinrc\fP    options.
  1186. X  \fI$HOME/.tin/.index\fP    newsgroup index files directory.
  1187. X  \fI$HOME/.tin/add_address\fP    address to add to when replying through mail.
  1188. X***************
  1189. X*** 847,853 ****
  1190. X  .SH HISTORY
  1191. X  Based on the tass newsreader that was developed by Rich Skrenta and posted
  1192. X  to alt.sources in March 1991. Tass was itself heavily infleuenced by NOTES
  1193. X! which was developed at the University of Illinois in the 1970's.
  1194. X  .SH CREDITS
  1195. X  .TP
  1196. X  Rich Skrenta
  1197. X--- 871,891 ----
  1198. X  .SH HISTORY
  1199. X  Based on the tass newsreader that was developed by Rich Skrenta and posted
  1200. X  to alt.sources in March 1991. Tass was itself heavily infleuenced by NOTES
  1201. X! which was developed at the University of Illinois in the late 1970's.
  1202. X! .PP
  1203. X! Tin v1.00 (full distribution) was posted in 8 parts to alt.sources on 23 Aug 1991.
  1204. X! .PP
  1205. X! Tin v1.0 PL1 (full distribution) was posted in 8 parts to alt.sources on 03 Sep 1991.
  1206. X! .PP
  1207. X! Tin v1.0 PL2 (full distribution) was posted in 9 parts to alt.sources on 24 Sep 1991.
  1208. X! .PP
  1209. X! Tin v1.0 PL3 (patch) was posted in 4 parts to alt.sources on 30 Sep 1991.
  1210. X! .PP
  1211. X! Tin v1.0 PL4 (patch) was posted in 2 parts to alt.sources on 02 Oct 1991.
  1212. X! .PP
  1213. X! Tin v1.0 PL5 (patch) was posted in 4 parts to alt.sources on 17 Oct 1991.
  1214. X! .PP
  1215. X! Tin v1.0 PL6 (patch) was posted in 5 parts to alt.sources on 04 Nov 1991.
  1216. X  .SH CREDITS
  1217. X  .TP
  1218. X  Rich Skrenta
  1219. X***************
  1220. X*** 854,860 ****
  1221. X  author of tass v3.2 which this newsreader used as its base.
  1222. X  .TP
  1223. X  Syd Weinstein
  1224. X! curses.c is taken from the elm mailreader
  1225. X  .TP
  1226. X  Rich Salz
  1227. X  author of wildmat.c pattern matching routines.
  1228. X--- 892,898 ----
  1229. X  author of tass v3.2 which this newsreader used as its base.
  1230. X  .TP
  1231. X  Syd Weinstein
  1232. X! curses.c is taken from the elm mailreader.
  1233. X  .TP
  1234. X  Rich Salz
  1235. X  author of wildmat.c pattern matching routines.
  1236. X***************
  1237. X*** 864,883 ****
  1238. X  .PP
  1239. X  I wish to thank the following people for supplying patchs:
  1240. X  
  1241. X! Anton Aylward, Carl Hage, Ed Hanway, Karl-Koenig Koenigsson, Kris Kugel,
  1242. X! Hakan Lennestal, Clifford Luke, Bill Poitras,  Nickolay Saukh, Rich Salz,
  1243. X! Bart Sears, Karl-Olav Serrander, Doug Sewell, Cliff Stanford, Adri Verhoef,
  1244. X! Cary Whitney
  1245. X  .PP
  1246. X  I wish to thank the following people for bug reports/comments:
  1247. X  
  1248. X! Klaus Arzig, Reiner Balling, Volker Beyer, Roger Binns, Georg Biehler,
  1249. X! Ian Brown, Andreas Brosig, David Donovan, Peter Dressler, Gerhard Ermer,
  1250. X! Hugh Fader, Joachim Feld, Paul Fox, Bernhard Gmelch, Viet Hoang, 
  1251. X! Torsten Homeyer, Andy Jackson, Joe Johnson, Cyrill Jung, Hans-Juergen
  1252. X! Knopp, Bob Lukas, Phillip Molloy, Toni Metz, Greg Miller, Klaus Neuberger,
  1253. X! Otto Niesser, Reiner Oelhaf, Wolf Paul, Fredy Schwatz, Bernd Schwerin,
  1254. X! Klamer Schutte, Chris Smith, Steve Spearman
  1255. X  .SH AUTHOR
  1256. X  .TP
  1257. X  Iain Lea
  1258. X--- 902,922 ----
  1259. X  .PP
  1260. X  I wish to thank the following people for supplying patchs:
  1261. X  
  1262. X! Anton Aylward, Ned Danieley, Brent Ermlick, Carl Hage, Ed Hanway,
  1263. X! Karl-Koenig Koenigsson, Kris Kugel, Hakan Lennestal, Clifford Luke,
  1264. X! Bill Poitras, Nickolay Saukh, Rich Salz, Bart Sears, Karl-Olav Serrander,
  1265. X! Doug Sewell, Cliff Stanford, Adri Verhoef, Cary Whitney
  1266. X  .PP
  1267. X  I wish to thank the following people for bug reports/comments:
  1268. X  
  1269. X! Klaus Arzig, Scott Babb, Reiner Balling, Volker Beyer, Roger Binns, Georg Biehler,
  1270. X! Ian Brown, Andreas Brosig, Steven Cogswell, Tom Czarnik, David Donovan,
  1271. X! Peter Dressler, Gerhard Ermer, Hugh Fader, Joachim Feld, Paul Fox,
  1272. X! Bernhard Gmelch, Viet Hoang, Torsten Homeyer, Andy Jackson, Joe Johnson,
  1273. X! Cyrill Jung, Hans-Juergen Knopp, Bob Lukas, Phillip Molloy, Toni Metz,
  1274. X! Greg Miller, Klaus Neuberger, Otto Niesser, Reiner Oelhaf, Wolf Paul,
  1275. X! Andrew Phillips, Ted Richards, Fredy Schwatz, Bernd Schwerin, Klamer Schutte,
  1276. X! Chris Smith, Steve Spearman, Hironobu Takahashi, Sven Werner
  1277. X  .SH AUTHOR
  1278. X  .TP
  1279. X  Iain Lea
  1280. XOnly in .: tin.diff
  1281. Xdiff -rcs ../105/tin.h ./tin.h
  1282. X*** ../105/tin.h    Thu Oct 10 20:25:10 1991
  1283. X--- ./tin.h    Thu Oct 31 13:42:35 1991
  1284. X***************
  1285. X*** 3,9 ****
  1286. X   *  Module    : tin.h
  1287. X   *  Author    : R.Skrenta / I.Lea
  1288. X   *  Created   : 01-04-91
  1289. X!  *  Updated   : 10-10-91
  1290. X   *  Release   : 1.0
  1291. X   *  Notes     :
  1292. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1293. X--- 3,9 ----
  1294. X   *  Module    : tin.h
  1295. X   *  Author    : R.Skrenta / I.Lea
  1296. X   *  Created   : 01-04-91
  1297. X!  *  Updated   : 31-10-91
  1298. X   *  Release   : 1.0
  1299. X   *  Notes     :
  1300. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1301. X***************
  1302. X*** 15,23 ****
  1303. X  
  1304. X  #include    <stdio.h>
  1305. X  #include    <signal.h>
  1306. X- #include    <pwd.h>
  1307. X  #include    <sys/types.h>
  1308. X! #include    <memory.h>
  1309. X  #include    <ctype.h>
  1310. X  #include    <time.h>
  1311. X  #include    <sys/stat.h>
  1312. X--- 15,25 ----
  1313. X  
  1314. X  #include    <stdio.h>
  1315. X  #include    <signal.h>
  1316. X  #include    <sys/types.h>
  1317. X! #include    <pwd.h>
  1318. X! #ifndef MINIX
  1319. X! #    include    <memory.h>
  1320. X! #endif
  1321. X  #include    <ctype.h>
  1322. X  #include    <time.h>
  1323. X  #include    <sys/stat.h>
  1324. X***************
  1325. X*** 26,32 ****
  1326. X  #    include    <strings.h>
  1327. X  #else
  1328. X  #    include    <string.h>
  1329. X! #    include    <malloc.h>
  1330. X  #endif
  1331. X  
  1332. X  #ifdef SCO_UNIX
  1333. X--- 28,38 ----
  1334. X  #    include    <strings.h>
  1335. X  #else
  1336. X  #    include    <string.h>
  1337. X! #    ifndef MINIX
  1338. X! #        include    <malloc.h>
  1339. X! #    else
  1340. X! #        include    <stdlib.h>
  1341. X! #    endif
  1342. X  #endif
  1343. X  
  1344. X  #ifdef SCO_UNIX
  1345. X***************
  1346. X*** 52,57 ****
  1347. X--- 58,66 ----
  1348. X  #ifndef LIBDIR
  1349. X  #    define        LIBDIR        "/usr/lib/news"
  1350. X  #endif
  1351. X+ #ifndef INDEWSDIR
  1352. X+ #    define        INEWSDIR    LIBDIR
  1353. X+ #endif
  1354. X  
  1355. X  #define        RCDIR            ".tin"
  1356. X  #define        RCFILE            "tinrc"
  1357. X***************
  1358. X*** 67,73 ****
  1359. X  #    define        DEFAULT_EDITOR    "/usr/ucb/vi"
  1360. X  #    define        DEFAULT_MAILER    "/bin/rmail"
  1361. X  #    define        DEFAULT_MAILBOX    "/usr/spool/mail"
  1362. X! #    define        DEFAULT_PRINTER    "/usr/ucb/lpr"
  1363. X  #    define        DEFAULT_SUM        "sum"
  1364. X  #    ifndef USE_LONG_FILENAMES
  1365. X  #        define USE_LONG_FILENAMES
  1366. X--- 76,86 ----
  1367. X  #    define        DEFAULT_EDITOR    "/usr/ucb/vi"
  1368. X  #    define        DEFAULT_MAILER    "/bin/rmail"
  1369. X  #    define        DEFAULT_MAILBOX    "/usr/spool/mail"
  1370. X! #    ifdef SINIX
  1371. X! #        define        DEFAULT_PRINTER    "/bin/lpr"
  1372. X! #    else
  1373. X! #        define        DEFAULT_PRINTER    "/usr/ucb/lpr"
  1374. X! #    endif
  1375. X  #    define        DEFAULT_SUM        "sum"
  1376. X  #    ifndef USE_LONG_FILENAMES
  1377. X  #        define USE_LONG_FILENAMES
  1378. X***************
  1379. X*** 98,105 ****
  1380. X  #    define        DEFAULT_SUM        "sum -r"
  1381. X  #endif
  1382. X  
  1383. X! #define        DEFAULT_ACTIVE_NUM    100        /* initial size of active array */
  1384. X! #define        DEFAULT_ARTICLE_NUM    400        /* initial size of art array */ 
  1385. X  #define        DEFAULT_KILL_NUM    10        /* initial size of kill array */ 
  1386. X  #define        DEFAULT_SAVE_NUM    10        /* initial size of save array */ 
  1387. X  
  1388. X--- 111,118 ----
  1389. X  #    define        DEFAULT_SUM        "sum -r"
  1390. X  #endif
  1391. X  
  1392. X! #define        DEFAULT_ACTIVE_NUM    400        /* initial size of active array */
  1393. X! #define        DEFAULT_ARTICLE_NUM    200        /* initial size of art array */ 
  1394. X  #define        DEFAULT_KILL_NUM    10        /* initial size of kill array */ 
  1395. X  #define        DEFAULT_SAVE_NUM    10        /* initial size of save array */ 
  1396. X  
  1397. X***************
  1398. X*** 136,146 ****
  1399. X  
  1400. X  
  1401. X  #ifdef USE_INVERSE_HACK
  1402. X! #    define        BLANK_SELECT_COLS        59
  1403. X  #    define        BLANK_GROUP_COLS        2
  1404. X  #    define        BLANK_PAGE_COLS            2
  1405. X  #else
  1406. X! #    define        BLANK_SELECT_COLS        57
  1407. X  #    define        BLANK_GROUP_COLS        0
  1408. X  #    define        BLANK_PAGE_COLS            0
  1409. X  #endif
  1410. X--- 149,159 ----
  1411. X  
  1412. X  
  1413. X  #ifdef USE_INVERSE_HACK
  1414. X! #    define        BLANK_SELECT_COLS        60
  1415. X  #    define        BLANK_GROUP_COLS        2
  1416. X  #    define        BLANK_PAGE_COLS            2
  1417. X  #else
  1418. X! #    define        BLANK_SELECT_COLS        58
  1419. X  #    define        BLANK_GROUP_COLS        0
  1420. X  #    define        BLANK_PAGE_COLS            0
  1421. X  #endif
  1422. X***************
  1423. X*** 157,168 ****
  1424. X  #define        SORT_BY_DATE_DESCEND    5
  1425. X  #define        SORT_BY_DATE_ASCEND        6
  1426. X  
  1427. X  #define        HELP_INFO                0
  1428. X  #define        POST_INFO                1
  1429. X  
  1430. X  #define        CHECK_ANY_NEWS            0
  1431. X  #define        START_ANY_NEWS            1
  1432. X! #define        SAVE_ANY_NEWS            2
  1433. X  
  1434. X  extern int sort_art_type;
  1435. X  
  1436. X--- 170,187 ----
  1437. X  #define        SORT_BY_DATE_DESCEND    5
  1438. X  #define        SORT_BY_DATE_ASCEND        6
  1439. X  
  1440. X+ #define        SHOW_FROM_NONE            0
  1441. X+ #define        SHOW_FROM_ADDR            1
  1442. X+ #define        SHOW_FROM_NAME            2
  1443. X+ #define        SHOW_FROM_BOTH            3
  1444. X+ 
  1445. X  #define        HELP_INFO                0
  1446. X  #define        POST_INFO                1
  1447. X  
  1448. X  #define        CHECK_ANY_NEWS            0
  1449. X  #define        START_ANY_NEWS            1
  1450. X! #define        MAIL_ANY_NEWS            2
  1451. X! #define        SAVE_ANY_NEWS            3
  1452. X  
  1453. X  extern int sort_art_type;
  1454. X  
  1455. X***************
  1456. X*** 178,187 ****
  1457. X  
  1458. X  
  1459. X  #define        ESC        27
  1460. X! #ifdef BSD
  1461. X! #define        CR        '\r'
  1462. X  #else
  1463. X! #define        CR        10
  1464. X  #endif
  1465. X  
  1466. X  /*
  1467. X--- 197,206 ----
  1468. X  
  1469. X  
  1470. X  #define        ESC        27
  1471. X! #if defined(BSD) || defined(MINIX)
  1472. X! #    define        CR        '\r'
  1473. X  #else
  1474. X! #    define        CR        10
  1475. X  #endif
  1476. X  
  1477. X  /*
  1478. X***************
  1479. X*** 209,215 ****
  1480. X  struct header {
  1481. X      long artnum;
  1482. X      char *subject;    /* Subject: line from mail header */
  1483. X!     char *from;        /* From: line from mail header */
  1484. X      int thread;
  1485. X      int inthread;
  1486. X      int unread;        /* 0 = read, 1 = unread, 2 = will return */
  1487. X--- 228,235 ----
  1488. X  struct header {
  1489. X      long artnum;
  1490. X      char *subject;    /* Subject: line from mail header */
  1491. X!     char *from;        /* From: line from mail header (address) */
  1492. X!     char *name;        /* From: line from mail header (full name) */
  1493. X      int thread;
  1494. X      int inthread;
  1495. X      int unread;        /* 0 = read, 1 = unread, 2 = will return */
  1496. X***************
  1497. X*** 234,240 ****
  1498. X   *    FALSE for the first article in a thread, TRUE for all
  1499. X   *    following articles in thread
  1500. X   *
  1501. X!  *  header.read:
  1502. X   *    boolean, has this article been read or not
  1503. X   *
  1504. X   *  header.date
  1505. X--- 254,260 ----
  1506. X   *    FALSE for the first article in a thread, TRUE for all
  1507. X   *    following articles in thread
  1508. X   *
  1509. X!  *  header.unread:
  1510. X   *    boolean, has this article been read or not
  1511. X   *
  1512. X   *  header.date
  1513. X***************
  1514. X*** 295,301 ****
  1515. X  #define POST_PROC_UUDECODE        2
  1516. X  #define POST_PROC_UUD_LST_ZOO    3
  1517. X  #define POST_PROC_UUD_EXT_ZOO    4
  1518. X- #define POST_PROC_PATCH            5
  1519. X  
  1520. X  struct save_t {
  1521. X      char *subject;
  1522. X--- 315,320 ----
  1523. X***************
  1524. X*** 329,446 ****
  1525. X  
  1526. X  #ifdef POSIX_JOB_CONTROL
  1527. X  extern struct sigaction art_act;
  1528. X- extern struct sigaction kill_act;
  1529. X  extern struct sigaction group_act;
  1530. X  extern struct sigaction main_act;
  1531. X  extern struct sigaction page_act;
  1532. X  extern struct sigaction select_act;
  1533. X  extern struct sigaction rcfile_act;
  1534. X- extern struct sigaction old_act;
  1535. X  #endif
  1536. X  
  1537. X! #ifdef USE_NNTP
  1538. X! extern int can_post;    /* open.c */
  1539. X! #endif
  1540. X! 
  1541. X! extern int debug;
  1542. X! extern int active_num;
  1543. X! extern int article_num;
  1544. X! extern int start_line_offset;
  1545. X! 
  1546. X! extern int read_news_via_nntp;
  1547. X! extern char nntp_server[LEN];
  1548. X! extern int top;
  1549. X! extern struct header *arts;
  1550. X! extern long *base;
  1551. X! extern int max_art;
  1552. X! 
  1553. X! extern int index_file_killed;
  1554. X! extern int save_separate;
  1555. X! extern int save_archive_name;
  1556. X! extern int show_author;
  1557. X! extern int draw_arrow_mark;
  1558. X! extern int kill_articles;
  1559. X! extern int mark_saved_read;
  1560. X! extern int post_proc_type;
  1561. X! extern int default_printer;
  1562. X! extern int print_header;
  1563. X! extern int pos_first_unread;
  1564. X! extern int num_of_tagged_files;
  1565. X! extern int compiled_with_nntp;
  1566. X! extern int save_news;
  1567. X! extern int thread_arts;
  1568. X! 
  1569. X! extern char rcdir[LEN];
  1570. X! extern char rcfile[LEN];
  1571. X! extern char indexdir[LEN];
  1572. X! extern char killfile[LEN];
  1573. X! extern char postfile[LEN];
  1574. X! 
  1575. X! extern char msg[LEN];
  1576. X! extern char userid[LEN];
  1577. X! extern char homedir[LEN];
  1578. X  extern char add_addr[LEN];
  1579. X  extern char bug_addr[LEN];
  1580. X- extern char txt_help_bug_report[LEN];
  1581. X- extern char reply_to[LEN];
  1582. X- extern char my_org[LEN];
  1583. X- extern char active_file[LEN];
  1584. X- extern char newsrc[LEN];
  1585. X- extern char newnewsrc[LEN];
  1586. X- extern char delgroups[LEN];
  1587. X- 
  1588. X- extern char *version;
  1589. X  extern char cvers[LEN];
  1590. X- extern char progname[LEN];
  1591. X- extern char article[LEN];
  1592. X  extern char dead_article[LEN];
  1593. X- extern char mailer[LEN];
  1594. X- extern char printer[LEN];
  1595. X- extern char spooldir[LEN];
  1596. X- extern char savedir[LEN];
  1597. X- extern char maildir[LEN];
  1598. X- extern char mailbox[LEN];
  1599. X- extern char page_header[LEN];
  1600. X- extern char signature[LEN];
  1601. X- extern char sig[LEN];
  1602. X- extern char killsubj[LEN];
  1603. X- extern char killfrom[LEN];
  1604. X- extern char author_search_string[LEN];
  1605. X- extern char group_search_string[LEN];
  1606. X- extern char subject_search_string[LEN];
  1607. X- extern char art_search_string[LEN];
  1608. X  extern char default_mail_address[LEN];
  1609. X  extern char default_pipe_command[LEN];
  1610. X  extern char default_regex_pattern[LEN];
  1611. X  extern char default_save_file[LEN];
  1612. X  extern char default_shell_command[LEN];
  1613. X! extern char default_post_subject[LEN];
  1614. X  extern char proc_ch_default;                /* set in change_rcfile () */
  1615. X  
  1616. X! extern char *help_select[];
  1617. X! extern char *help_group[];
  1618. X! extern char *help_page[];
  1619. X  
  1620. X- extern int top_base;
  1621. X  extern int LINES, COLS;
  1622. X- extern int group_hash[TABLE_SIZE];
  1623. X- extern int num_active;
  1624. X- extern struct group_ent *active;
  1625. X  extern int *my_group;
  1626. X  extern int *unread;
  1627. X! extern int max_active;
  1628. X! 
  1629. X! extern int local_top;
  1630. X  extern int catchup;
  1631. X! extern int update;
  1632. X! extern int verbose;
  1633. X  extern int inverse_okay;
  1634. X! 
  1635. X! extern int tin_uid;
  1636. X! extern int tin_gid;
  1637. X! extern int real_uid;
  1638. X! extern int real_gid;
  1639. X  extern int local_index;
  1640. X  
  1641. X  #ifdef SIGTSTP
  1642. X  extern int do_sigtstp;
  1643. X--- 348,463 ----
  1644. X  
  1645. X  #ifdef POSIX_JOB_CONTROL
  1646. X  extern struct sigaction art_act;
  1647. X  extern struct sigaction group_act;
  1648. X+ extern struct sigaction kill_act;
  1649. X  extern struct sigaction main_act;
  1650. X+ extern struct sigaction old_act;
  1651. X  extern struct sigaction page_act;
  1652. X+ extern struct sigaction rcfile_act;
  1653. X  extern struct sigaction select_act;
  1654. X  extern struct sigaction rcfile_act;
  1655. X  #endif
  1656. X  
  1657. X! extern char *help_group[];
  1658. X! extern char *help_page[];
  1659. X! extern char *help_select[];
  1660. X! extern char *version;
  1661. X! extern char active_file[LEN];
  1662. X  extern char add_addr[LEN];
  1663. X+ extern char art_search_string[LEN];
  1664. X+ extern char article[LEN];
  1665. X+ extern char author_search_string[LEN];
  1666. X  extern char bug_addr[LEN];
  1667. X  extern char cvers[LEN];
  1668. X  extern char dead_article[LEN];
  1669. X  extern char default_mail_address[LEN];
  1670. X  extern char default_pipe_command[LEN];
  1671. X+ extern char default_post_subject[LEN];
  1672. X  extern char default_regex_pattern[LEN];
  1673. X  extern char default_save_file[LEN];
  1674. X  extern char default_shell_command[LEN];
  1675. X! extern char delgroups[LEN];
  1676. X! extern char group_search_string[LEN];
  1677. X! extern char homedir[LEN];
  1678. X! extern char indexdir[LEN];
  1679. X! extern char killfile[LEN];
  1680. X! extern char killfrom[LEN];
  1681. X! extern char killsubj[LEN];
  1682. X! extern char mail_news_user[LEN];
  1683. X! extern char mailbox[LEN];
  1684. X! extern char maildir[LEN];
  1685. X! extern char mailer[LEN];
  1686. X! extern char msg[LEN];
  1687. X! extern char my_org[LEN];
  1688. X! extern char newnewsrc[LEN];
  1689. X! extern char newsrc[LEN];
  1690. X! extern char nntp_server[LEN];
  1691. X! extern char page_header[LEN];
  1692. X! extern char postfile[LEN];
  1693. X! extern char printer[LEN];
  1694. X  extern char proc_ch_default;                /* set in change_rcfile () */
  1695. X+ extern char progname[LEN];
  1696. X+ extern char rcdir[LEN];
  1697. X+ extern char rcfile[LEN];
  1698. X+ extern char reply_to[LEN];
  1699. X+ extern char savedir[LEN];
  1700. X+ extern char sig[LEN];
  1701. X+ extern char signature[LEN];
  1702. X+ extern char spooldir[LEN];
  1703. X+ extern char subject_search_string[LEN];
  1704. X+ extern char txt_help_bug_report[LEN];
  1705. X+ extern char userid[LEN];
  1706. X  
  1707. X! #ifdef USE_NNTP
  1708. X! extern int can_post;    /* open.c */
  1709. X! #endif
  1710. X  
  1711. X  extern int LINES, COLS;
  1712. X  extern int *my_group;
  1713. X  extern int *unread;
  1714. X! extern int active_num;
  1715. X! extern int article_num;
  1716. X  extern int catchup;
  1717. X! extern int catchup_read_groups;
  1718. X! extern int compiled_with_nntp;
  1719. X! extern int debug;
  1720. X! extern int default_printer;
  1721. X! extern int draw_arrow_mark;
  1722. X! extern int full_page_scroll;
  1723. X! extern int group_hash[TABLE_SIZE];
  1724. X! extern int index_file_killed;
  1725. X  extern int inverse_okay;
  1726. X! extern int kill_articles;
  1727. X  extern int local_index;
  1728. X+ extern int local_top;
  1729. X+ extern int mail_news;
  1730. X+ extern int mark_saved_read;
  1731. X+ extern int max_active;
  1732. X+ extern int max_art;
  1733. X+ extern int num_active;
  1734. X+ extern int num_of_tagged_files;
  1735. X+ extern int pos_first_unread;
  1736. X+ extern int post_proc_type;
  1737. X+ extern int print_header;
  1738. X+ extern int read_news_via_nntp;
  1739. X+ extern int real_gid;
  1740. X+ extern int real_uid;
  1741. X+ extern int save_archive_name;
  1742. X+ extern int save_news;
  1743. X+ extern int save_separate;
  1744. X+ extern int show_author;
  1745. X+ extern int show_only_unread;
  1746. X+ extern int start_line_offset;
  1747. X+ extern int thread_arts;
  1748. X+ extern int tin_gid;
  1749. X+ extern int tin_uid;
  1750. X+ extern int top;
  1751. X+ extern int top_base;
  1752. X+ extern int update;
  1753. X+ extern int verbose;
  1754. X+ extern long *base;
  1755. X+ extern struct group_ent *active;
  1756. X+ extern struct header *arts;
  1757. X  
  1758. X  #ifdef SIGTSTP
  1759. X  extern int do_sigtstp;
  1760. Xdiff -rcs ../105/tin.nrf ./tin.nrf
  1761. X*** ../105/tin.nrf    Wed Oct 16 20:07:30 1991
  1762. X--- ./tin.nrf    Mon Nov  4 19:13:29 1991
  1763. X***************
  1764. X*** 1,7 ****
  1765. X  
  1766. X  
  1767. X  
  1768. X!      Version 1.0 PL5                                                 TIN(1)
  1769. X  
  1770. X  
  1771. X  
  1772. X--- 1,7 ----
  1773. X  
  1774. X  
  1775. X  
  1776. X!      Version 1.0 PL6                                                 TIN(1)
  1777. X  
  1778. X  
  1779. X  
  1780. X***************
  1781. X*** 19,31 ****
  1782. X            Tin has three newsreading levels: the newsgroup selection page,
  1783. X            the group index page and the article viewer.  Use the 'h' (help)
  1784. X            command to view a list of the commands available at a particular
  1785. X!           level, or the 'H' command to view context sensitive help.
  1786. X  
  1787. X            On startup Tin will show a list of the newsgroups found in
  1788. X            $_H_O_M_E/._n_e_w_s_r_c.  An arrow '->' or highlighted bar will point to
  1789. X            the first newsgroup.  Move to a group by using the terminal arrow
  1790. X!           keys (ansi/at386/vt100 only) or page up/down. Enter a newsgroup
  1791. X!           by pressing RETURN.
  1792. X  
  1793. X            The TAB key may be used to advance to the next newsgroup with
  1794. X            unread articles and enter it.
  1795. X--- 19,32 ----
  1796. X            Tin has three newsreading levels: the newsgroup selection page,
  1797. X            the group index page and the article viewer.  Use the 'h' (help)
  1798. X            command to view a list of the commands available at a particular
  1799. X!           level.
  1800. X  
  1801. X            On startup Tin will show a list of the newsgroups found in
  1802. X            $_H_O_M_E/._n_e_w_s_r_c.  An arrow '->' or highlighted bar will point to
  1803. X            the first newsgroup.  Move to a group by using the terminal arrow
  1804. X!           keys (ansi/at386/vt100 only) or 'j' and 'k'. Use PgUp/PgDn
  1805. X!           (ansi/at386/vt100 only) or Ctrl-U and Ctrl-D to page up/down.
  1806. X!           Enter a newsgroup by pressing RETURN.
  1807. X  
  1808. X            The TAB key may be used to advance to the next newsgroup with
  1809. X            unread articles and enter it.
  1810. X***************
  1811. X*** 38,63 ****
  1812. X  
  1813. X            -d dir    save articles to directory. Default is $_H_O_M_E/_N_e_w_s.
  1814. X  
  1815. X!           -f file   Use the indicated file in place of $_H_O_M_E/._n_e_w_s_r_c.
  1816. X  
  1817. X            -h        help.
  1818. X  
  1819. X!           -m file   mail program to use for sending mail. Default is
  1820. X!                     /_u_s_r/_u_c_b/_m_a_i_l.
  1821. X  
  1822. X!           -M dir    mailbox directory to use. Default is $_H_O_M_E/_M_a_i_l.
  1823. X  
  1824. X            -n        notify the user of any new newsgroups since last ses-
  1825. X                      sion.
  1826. X  
  1827. X!           -p file   print program with options. Default is /_u_s_r/_u_c_b/_l_p_r.
  1828. X  
  1829. X            -r        read news remotely from the default NNTP server speci-
  1830. X                      fied in the environment variable NNTPSERVER or con-
  1831. X                      tained in the file /_e_t_c/_n_n_t_p_s_e_r_v_e_r.
  1832. X  
  1833. X-           -s dir    spool directory where news is stored. Default is
  1834. X-                     /_u_s_r/_s_p_o_o_l/_n_e_w_s.
  1835. X  
  1836. X  
  1837. X                                                                            1
  1838. X--- 39,63 ----
  1839. X  
  1840. X            -d dir    save articles to directory. Default is $_H_O_M_E/_N_e_w_s.
  1841. X  
  1842. X!           -f file   Use the specified file in place of $_H_O_M_E/._n_e_w_s_r_c.
  1843. X  
  1844. X            -h        help.
  1845. X  
  1846. X!           -m dir    mailbox directory to use. Default is $_H_O_M_E/_M_a_i_l.
  1847. X  
  1848. X!           -M user   same as -S option, but instead of saving news to
  1849. X!                     $_H_O_M_E/<_s_a_v_e_d_i_r> it is mailed to the specified user
  1850. X!                     address.
  1851. X  
  1852. X            -n        notify the user of any new newsgroups since last ses-
  1853. X                      sion.
  1854. X  
  1855. X!           -p file   print program with options..
  1856. X  
  1857. X            -r        read news remotely from the default NNTP server speci-
  1858. X                      fied in the environment variable NNTPSERVER or con-
  1859. X                      tained in the file /_e_t_c/_n_n_t_p_s_e_r_v_e_r.
  1860. X  
  1861. X  
  1862. X  
  1863. X                                                                            1
  1864. X***************
  1865. X*** 67,75 ****
  1866. X  
  1867. X  
  1868. X  
  1869. X!      TIN(1)                                                 Version 1.0 PL5
  1870. X  
  1871. X  
  1872. X            -S        save news articles for later reading. Useful when going
  1873. X                      on holiday and you don't want to return and find that
  1874. X                      expire has removed a whole load of unread articles.
  1875. X--- 67,80 ----
  1876. X  
  1877. X  
  1878. X  
  1879. X!      TIN(1)                                                 Version 1.0 PL6
  1880. X  
  1881. X  
  1882. X+           -R        read news saved by -S option.
  1883. X+ 
  1884. X+           -s dir    spool directory where news is stored. Default is
  1885. X+                     /_u_s_r/_s_p_o_o_l/_n_e_w_s.
  1886. X+ 
  1887. X            -S        save news articles for later reading. Useful when going
  1888. X                      on holiday and you don't want to return and find that
  1889. X                      expire has removed a whole load of unread articles.
  1890. X***************
  1891. X*** 85,91 ****
  1892. X                      save a few groups it would be best to backup your full
  1893. X                      $_H_O_M_E/._n_e_w_s_r_c and create a new one that only contains
  1894. X                      the groups you want to save. Saved news can be read
  1895. X!                     later by starting tin with the -s <savedir> option.
  1896. X  
  1897. X            -u        create/update index files for every group in
  1898. X                      $_H_O_M_E/._n_e_w_s_r_c or file specified by -f option.
  1899. X--- 90,96 ----
  1900. X                      save a few groups it would be best to backup your full
  1901. X                      $_H_O_M_E/._n_e_w_s_r_c and create a new one that only contains
  1902. X                      the groups you want to save. Saved news can be read
  1903. X!                     later by starting tin with the -R option.
  1904. X  
  1905. X            -u        create/update index files for every group in
  1906. X                      $_H_O_M_E/._n_e_w_s_r_c or file specified by -f option.
  1907. X***************
  1908. X*** 93,99 ****
  1909. X            -U        start tin in the background to update index files while
  1910. X                      reading news in the foreground.
  1911. X  
  1912. X!           -v        verbose mode for -c -u and -Z options.
  1913. X  
  1914. X            -z        only start tin if there is any new/unread news. If
  1915. X                      there is news tin will position cursor at first group
  1916. X--- 98,104 ----
  1917. X            -U        start tin in the background to update index files while
  1918. X                      reading news in the foreground.
  1919. X  
  1920. X!           -v        verbose mode for -c -M -S -u and -Z options.
  1921. X  
  1922. X            -z        only start tin if there is any new/unread news. If
  1923. X                      there is news tin will position cursor at first group
  1924. X***************
  1925. X*** 119,131 ****
  1926. X  
  1927. X            Entering a group the first time tends to be slow because the
  1928. X            index file must be built from scratch.  Subsequent readings of a
  1929. X-           group will cause Tin to incrementally update the index file,
  1930. X-           adding or removing entries as new articles come in or as news
  1931. X-           expires. If reading news remotely indexing will be somewhat
  1932. X-           slower because the articles must be retrieved via the NNTP.
  1933. X  
  1934. X  
  1935. X- 
  1936. X       2
  1937. X  
  1938. X  
  1939. X--- 124,131 ----
  1940. X***************
  1941. X*** 133,141 ****
  1942. X  
  1943. X  
  1944. X  
  1945. X!      Version 1.0 PL5                                                 TIN(1)
  1946. X  
  1947. X  
  1948. X            A good way to keep Tin index files current is to run tin -u from
  1949. SHAR_EOF
  1950. echo "End of tin part 4"
  1951. echo "File tin.patch06 is continued in part 5"
  1952. echo "5" > shar3_seq_.tmp
  1953. exit 0
  1954.  
  1955. -- 
  1956.  Dr. med. dipl.-math Dieter Becker           Tel.: (0 / +49) 6841 - 16 3046
  1957.  Medizinische Universitaets- und Poliklinik  Fax.: (0 / +49) 6841 - 16 3369
  1958.  Innere Medizin III                         
  1959.  D - 6650 Homburg / Saar                     Email: becker@med-in.uni-sb.de
  1960. exit 0 # Just in case...
  1961. -- 
  1962. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1963. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1964. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1965. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1966.