home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / alt / sources / 2522 < prev    next >
Encoding:
Internet Message Format  |  1992-11-15  |  60.7 KB

  1. Path: sparky!uunet!psgrain!percy!hfglobe!ichips!iWarp.intel.com|eff!sol.ctr.columbia.edu!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!agate!doc.ic.ac.uk!uknet!mcsun!Germany.EU.net!anl433!Iain.Lea
  2. From: Iain.Lea%anl433.uucp@Germany.EU.net (Iain Lea)
  3. Newsgroups: alt.sources
  4. Subject: TIN newsreader v1.1 PL7 (Patch 04/10)
  5. Message-ID: <1992Nov15.155116.20170@anl433.uucp>
  6. Date: 15 Nov 92 15:51:16 GMT
  7. Sender: news@anl433.uucp (Netnews Administrator)
  8. Reply-To: Iain.Lea%anl433.uucp@Germany.EU.net
  9. Followup-To: alt.sources.d
  10. Organization: ANL A433, Siemens AG., Germany.
  11. Lines: 2145
  12. X-Newsreader: TIN [version 1.1 PL7]
  13.  
  14. Submitted-by: Iain.Lea%anl433.uucp@Germany.EU.net (Iain Lea)
  15. Archive-name: tin-1.17/part04
  16.  
  17. #!/bin/sh
  18. # this is tin.shar.04 (part 4 of tin-1.17)
  19. # do not concatenate these parts, unpack them in order with /bin/sh
  20. # file tin-1.17.patch continued
  21. #
  22. if test ! -r _shar_seq_.tmp; then
  23.     echo 'Please unpack part 1 first!'
  24.     exit 1
  25. fi
  26. (read Scheck
  27.  if test "$Scheck" != 4; then
  28.     echo Please unpack part "$Scheck" next!
  29.     exit 1
  30.  else
  31.     exit 0
  32.  fi
  33. ) < _shar_seq_.tmp || exit 1
  34. if test ! -f _shar_wnt_.tmp; then
  35.     echo 'x - still skipping tin-1.17.patch'
  36. else
  37. echo 'x - continuing file tin-1.17.patch'
  38. sed 's/^X//' << 'SHAR_EOF' >> 'tin-1.17.patch' &&
  39. X--- 338,344 ----
  40. X                      find_base (my_group[cur_groupnum]);
  41. X                      index_point = find_new_pos (old_top, old_artnum, index_point);
  42. X                  }
  43. X!                 show_group_page ();
  44. X                  break;
  45. X  
  46. X              case ctrl('L'):        /* redraw screen */
  47. X***************
  48. X*** 352,358 ****
  49. X  #ifndef USE_CLEARSCREEN
  50. X                  ClearScreen ();
  51. X  #endif
  52. X!                 show_group_page (group);
  53. X                  break;
  54. X  
  55. X              case ctrl('N'):
  56. X--- 347,353 ----
  57. X  #ifndef USE_CLEARSCREEN
  58. X                  ClearScreen ();
  59. X  #endif
  60. X!                 show_group_page ();
  61. X                  break;
  62. X  
  63. X              case ctrl('N'):
  64. X***************
  65. X*** 362,373 ****
  66. X                      break;
  67. X                  }
  68. X                  if (index_point + 1 >= top_base) {
  69. X! #ifdef NO_LOOP_AROUND
  70. X!                     break;
  71. X! #else
  72. X                      if (0 < first_subj_on_screen) {
  73. X                          index_point = 0;
  74. X!                         show_group_page (group);
  75. X                      } else {
  76. X                          erase_subject_arrow ();
  77. X                          index_point = 0;
  78. X--- 357,368 ----
  79. X                      break;
  80. X                  }
  81. X                  if (index_point + 1 >= top_base) {
  82. X!                     if (_hp_glitch) {
  83. X!                         erase_subject_arrow ();
  84. X!                     }
  85. X                      if (0 < first_subj_on_screen) {
  86. X                          index_point = 0;
  87. X!                         show_group_page ();
  88. X                      } else {
  89. X                          erase_subject_arrow ();
  90. X                          index_point = 0;
  91. X***************
  92. X*** 374,380 ****
  93. X                          draw_subject_arrow ();
  94. X                      }
  95. X                      break;
  96. X- #endif                    
  97. X                  }
  98. X                  if (index_point + 1 >= last_subj_on_screen) {
  99. X  #ifndef USE_CLEARSCREEN
  100. X--- 369,374 ----
  101. X***************
  102. X*** 381,387 ****
  103. X                      erase_subject_arrow();
  104. X  #endif                    
  105. X                      index_point++;
  106. X!                     show_group_page (group);
  107. X                  } else {
  108. X                      erase_subject_arrow ();
  109. X                      index_point++;
  110. X--- 375,381 ----
  111. X                      erase_subject_arrow();
  112. X  #endif                    
  113. X                      index_point++;
  114. X!                     show_group_page ();
  115. X                  } else {
  116. X                      erase_subject_arrow ();
  117. X                      index_point++;
  118. X***************
  119. X*** 396,407 ****
  120. X                      break;
  121. X                  }    
  122. X                  if (index_point == 0) {
  123. X! #ifdef NO_LOOP_AROUND
  124. X!                     break;
  125. X! #else
  126. X                      if (top_base > last_subj_on_screen) {
  127. X                          index_point = top_base - 1;
  128. X!                         show_group_page (group);
  129. X                      } else {
  130. X                          erase_subject_arrow ();
  131. X                          index_point = top_base - 1;
  132. X--- 390,401 ----
  133. X                      break;
  134. X                  }    
  135. X                  if (index_point == 0) {
  136. X!                     if (_hp_glitch) {
  137. X!                         erase_subject_arrow ();
  138. X!                     }
  139. X                      if (top_base > last_subj_on_screen) {
  140. X                          index_point = top_base - 1;
  141. X!                         show_group_page ();
  142. X                      } else {
  143. X                          erase_subject_arrow ();
  144. X                          index_point = top_base - 1;
  145. X***************
  146. X*** 408,422 ****
  147. X                          draw_subject_arrow ();
  148. X                      }
  149. X                      break;
  150. X! #endif                    
  151. X                  }
  152. X                  if (index_point <= first_subj_on_screen) {
  153. X                      index_point--;
  154. X!                     show_group_page(group);
  155. X                  } else {
  156. X!                     erase_subject_arrow();
  157. X                      index_point--;
  158. X!                     draw_subject_arrow();
  159. X                  }
  160. X                  break;
  161. X  
  162. X--- 402,418 ----
  163. X                          draw_subject_arrow ();
  164. X                      }
  165. X                      break;
  166. X!                 }
  167. X!                 if (_hp_glitch) {
  168. X!                     erase_subject_arrow ();
  169. X                  }
  170. X                  if (index_point <= first_subj_on_screen) {
  171. X                      index_point--;
  172. X!                     show_group_page ();
  173. X                  } else {
  174. X!                     erase_subject_arrow ();
  175. X                      index_point--;
  176. X!                     draw_subject_arrow ();
  177. X                  }
  178. X                  break;
  179. X  
  180. X***************
  181. X*** 428,439 ****
  182. X                      break;
  183. X                  }
  184. X                  if (index_point == 0) {
  185. X! #ifdef NO_LOOP_AROUND
  186. X!                     break;
  187. X! #else
  188. X                      if (top_base > last_subj_on_screen) {
  189. X                          index_point = top_base - 1;
  190. X!                         show_group_page (group);
  191. X                      } else {
  192. X                          erase_subject_arrow ();
  193. X                          index_point = top_base - 1;
  194. X--- 424,435 ----
  195. X                      break;
  196. X                  }
  197. X                  if (index_point == 0) {
  198. X!                     if (_hp_glitch) {
  199. X!                         erase_subject_arrow ();
  200. X!                     }
  201. X                      if (top_base > last_subj_on_screen) {
  202. X                          index_point = top_base - 1;
  203. X!                         show_group_page ();
  204. X                      } else {
  205. X                          erase_subject_arrow ();
  206. X                          index_point = top_base - 1;
  207. X***************
  208. X*** 440,446 ****
  209. X                          draw_subject_arrow ();
  210. X                      }
  211. X                      break;
  212. X- #endif                    
  213. X                  }
  214. X  #ifndef USE_CLEARSCREEN
  215. X                  clear_message ();
  216. X--- 436,441 ----
  217. X***************
  218. X*** 457,463 ****
  219. X                  }
  220. X                  if (index_point < first_subj_on_screen
  221. X                  || index_point >= last_subj_on_screen)
  222. X!                     show_group_page (group);
  223. X                  else
  224. X                      draw_subject_arrow ();
  225. X                  break;
  226. X--- 452,458 ----
  227. X                  }
  228. X                  if (index_point < first_subj_on_screen
  229. X                  || index_point >= last_subj_on_screen)
  230. X!                     show_group_page ();
  231. X                  else
  232. X                      draw_subject_arrow ();
  233. X                  break;
  234. X***************
  235. X*** 476,487 ****
  236. X                      break;
  237. X  
  238. X                  index_point = show_page (n, &dummy, group, group_path);
  239. X!                 if (index_point < 0) {
  240. X!                     space_mode = FALSE;
  241. X!                     goto group_done;
  242. X                  }
  243. X-                 clear_note_area ();
  244. X-                 show_group_page (group);
  245. X                  break;
  246. X  
  247. X              case 'B':    /* bug/gripe/comment mailed to author */
  248. X--- 471,484 ----
  249. X                      break;
  250. X  
  251. X                  index_point = show_page (n, &dummy, group, group_path);
  252. X!                 if (index_point != -5) {
  253. X!                     if (index_point < 0) {
  254. X!                         space_mode = FALSE;
  255. X!                         goto group_done;
  256. X!                     }
  257. X!                     clear_note_area ();
  258. X!                     show_group_page ();
  259. X                  }
  260. X                  break;
  261. X  
  262. X              case 'B':    /* bug/gripe/comment mailed to author */
  263. X***************
  264. X*** 489,500 ****
  265. X  #ifndef USE_CLEARSCREEN
  266. X                  ClearScreen ();
  267. X  #endif
  268. X!                 show_group_page (group);
  269. X                  break;
  270. X                  
  271. X              case 'c':    /* catchup - mark all articles as read */
  272. X              case 'C':    /* catchup - and goto next unread group */
  273. X!                 if (! confirm_action || prompt_yn (LINES, txt_mark_all_read, 'y')) {
  274. X                      for (n = 0; n < top; n++) {
  275. X                          arts[n].unread = ART_READ;
  276. X                      }
  277. X--- 486,500 ----
  278. X  #ifndef USE_CLEARSCREEN
  279. X                  ClearScreen ();
  280. X  #endif
  281. X!                 show_group_page ();
  282. X                  break;
  283. X                  
  284. X              case 'c':    /* catchup - mark all articles as read */
  285. X              case 'C':    /* catchup - and goto next unread group */
  286. X! /*                 if (! top_base || ! confirm_action || prompt_yn (LINES, txt_mark_all_read, 'y')) {
  287. X! */
  288. X!                 if (! active[my_group[cur_groupnum]].unread || 
  289. X!                     ! confirm_action || prompt_yn (LINES, txt_mark_all_read, 'y')) {
  290. X                      for (n = 0; n < top; n++) {
  291. X                          arts[n].unread = ART_READ;
  292. X                      }
  293. X***************
  294. X*** 504,510 ****
  295. X                          }
  296. X                          goto group_done;
  297. X                      } else {
  298. X!                         goto tab_pressed;
  299. X                      }    
  300. X                  }
  301. X                  break;
  302. X--- 504,510 ----
  303. X                          }
  304. X                          goto group_done;
  305. X                      } else {
  306. X!                         goto group_tab_pressed;
  307. X                      }    
  308. X                  }
  309. X                  break;
  310. X***************
  311. X*** 511,517 ****
  312. X  
  313. X              case 'd':    /* toggle display of subject & subj/author */
  314. X                  toggle_subject_from ();
  315. X!                 show_group_page (group);
  316. X                  break;
  317. X  
  318. X              case 'g':    /* choose a new group by name */
  319. X--- 511,517 ----
  320. X  
  321. X              case 'd':    /* toggle display of subject & subj/author */
  322. X                  toggle_subject_from ();
  323. X!                 show_group_page ();
  324. X                  break;
  325. X  
  326. X              case 'g':    /* choose a new group by name */
  327. X***************
  328. X*** 525,536 ****
  329. X  
  330. X              case 'h':    /* help */
  331. X                  show_info_page (HELP_INFO, help_group, txt_index_page_com);
  332. X!                 show_group_page (group);
  333. X                  break;
  334. X  
  335. X              case 'I':    /* toggle inverse video */
  336. X                  toggle_inverse_video ();
  337. X!                 show_group_page (group);
  338. X                  break;
  339. X  
  340. X              case 'K':    /* mark rest of thread as read */
  341. X--- 525,536 ----
  342. X  
  343. X              case 'h':    /* help */
  344. X                  show_info_page (HELP_INFO, help_group, txt_index_page_com);
  345. X!                 show_group_page ();
  346. X                  break;
  347. X  
  348. X              case 'I':    /* toggle inverse video */
  349. X                  toggle_inverse_video ();
  350. X!                 show_group_page ();
  351. X                  break;
  352. X  
  353. X              case 'K':    /* mark rest of thread as read */
  354. X***************
  355. X*** 569,575 ****
  356. X  
  357. X                  if (n < first_subj_on_screen || n >= last_subj_on_screen) {
  358. X                      index_point = n;
  359. X!                     show_group_page (group);
  360. X                  } else {
  361. X                      erase_subject_arrow ();
  362. X                      index_point = n;
  363. X--- 569,575 ----
  364. X  
  365. X                  if (n < first_subj_on_screen || n >= last_subj_on_screen) {
  366. X                      index_point = n;
  367. X!                     show_group_page ();
  368. X                  } else {
  369. X                      erase_subject_arrow ();
  370. X                      index_point = n;
  371. X***************
  372. X*** 594,600 ****
  373. X                          goto group_done;
  374. X                      }
  375. X                      clear_note_area ();
  376. X!                     show_group_page (group);
  377. X                  }
  378. X                  break;    
  379. X  
  380. X--- 594,600 ----
  381. X                          goto group_done;
  382. X                      }
  383. X                      clear_note_area ();
  384. X!                     show_group_page ();
  385. X                  }
  386. X                  break;    
  387. X  
  388. X***************
  389. X*** 619,625 ****
  390. X                  }
  391. X                  set_subj_from_size (COLS);
  392. X                  index_point = find_new_pos (old_top, old_artnum, index_point);
  393. X!                 show_group_page (group);
  394. X                  break;
  395. X  
  396. X              case 'n':    /* goto next group */
  397. X--- 619,625 ----
  398. X                  }
  399. X                  set_subj_from_size (COLS);
  400. X                  index_point = find_new_pos (old_top, old_artnum, index_point);
  401. X!                 show_group_page ();
  402. X                  break;
  403. X  
  404. X              case 'n':    /* goto next group */
  405. X***************
  406. X*** 645,656 ****
  407. X                      info_message (txt_no_next_unread_art);
  408. X                  else {
  409. X                      index_point = show_page (n, &dummy, group, group_path);
  410. X!                     if (index_point < 0) {
  411. X!                         space_mode = pos_first_unread;
  412. X!                         goto group_done;
  413. X                      }
  414. X-                     clear_note_area ();
  415. X-                     show_group_page (group);
  416. X                  }
  417. X                  break;
  418. X  
  419. X--- 645,658 ----
  420. X                      info_message (txt_no_next_unread_art);
  421. X                  else {
  422. X                      index_point = show_page (n, &dummy, group, group_path);
  423. X!                     if (index_point != -5) {
  424. X!                         if (index_point < 0) {
  425. X!                             space_mode = pos_first_unread;
  426. X!                             goto group_done;
  427. X!                         }
  428. X!                         clear_note_area ();
  429. X!                         show_group_page ();
  430. X                      }
  431. X                  }
  432. X                  break;
  433. X  
  434. X***************
  435. X*** 684,695 ****
  436. X                      info_message(txt_no_prev_unread_art);
  437. X                  else {
  438. X                      index_point = show_page (n, &dummy, group, group_path);
  439. X!                     if (index_point < 0) {
  440. X!                         space_mode = pos_first_unread;
  441. X!                         goto group_done;
  442. X                      }
  443. X-                     clear_note_area ();
  444. X-                     show_group_page (group);
  445. X                  }
  446. X                  break;
  447. X  
  448. X--- 686,699 ----
  449. X                      info_message(txt_no_prev_unread_art);
  450. X                  else {
  451. X                      index_point = show_page (n, &dummy, group, group_path);
  452. X!                     if (index_point != -5) {
  453. X!                         if (index_point < 0) {
  454. X!                             space_mode = pos_first_unread;
  455. X!                             goto group_done;
  456. X!                         }
  457. X!                         clear_note_area ();
  458. X!                         show_group_page ();
  459. X                      }
  460. X                  }
  461. X                  break;
  462. X  
  463. X***************
  464. X*** 733,739 ****
  465. X                       index_point = n;
  466. X                   else if (top_base > 0)
  467. X                       index_point = top_base - 1;
  468. X!                  show_group_page (group);
  469. X                   break;
  470. X  
  471. X              case 's':    /* save regex pattern to file/s */
  472. X--- 737,743 ----
  473. X                       index_point = n;
  474. X                   else if (top_base > 0)
  475. X                       index_point = top_base - 1;
  476. X!                  show_group_page ();
  477. X                   break;
  478. X  
  479. X              case 's':    /* save regex pattern to file/s */
  480. X***************
  481. X*** 750,756 ****
  482. X                      if (active[my_group[cur_groupnum]].attribute.thread_arts) {
  483. X                          int i;
  484. X                          for (i = n; i != -1 && tagged; i = arts[i].thread) {
  485. X!                             if (!arts[i].tagged)
  486. X                                  tagged = FALSE;
  487. X                          }
  488. X                          if (tagged) {
  489. X--- 754,760 ----
  490. X                      if (active[my_group[cur_groupnum]].attribute.thread_arts) {
  491. X                          int i;
  492. X                          for (i = n; i != -1 && tagged; i = arts[i].thread) {
  493. X!                             if (! arts[i].tagged)
  494. X                                  tagged = FALSE;
  495. X                          }
  496. X                          if (tagged) {
  497. X***************
  498. X*** 776,782 ****
  499. X                              }
  500. X                          }
  501. X                      } else {
  502. X!                         if (tagged = arts[n].tagged) {
  503. X                              decr_tagged (arts[n].tagged);
  504. X                              --num_of_tagged_arts;
  505. X                              arts[n].tagged = 0;
  506. X--- 780,786 ----
  507. X                              }
  508. X                          }
  509. X                      } else {
  510. X!                         if (tagged == arts[n].tagged) {
  511. X                              decr_tagged (arts[n].tagged);
  512. X                              --num_of_tagged_arts;
  513. X                              arts[n].tagged = 0;
  514. X***************
  515. X*** 789,795 ****
  516. X                      bld_sline (index_point);
  517. X                      draw_sline (index_point, FALSE);
  518. X                      if (tagged)
  519. X!                         show_group_page(group);
  520. X                      if (index_point + 1 < top_base)
  521. X                          goto group_down;
  522. X                      draw_subject_arrow ();
  523. X--- 793,799 ----
  524. X                      bld_sline (index_point);
  525. X                      draw_sline (index_point, FALSE);
  526. X                      if (tagged)
  527. X!                         show_group_page ();
  528. X                      if (index_point + 1 < top_base)
  529. X                          goto group_down;
  530. X                      draw_subject_arrow ();
  531. X***************
  532. X*** 802,808 ****
  533. X                          !active[my_group[cur_groupnum]].attribute.thread_arts;
  534. X                      make_threads (TRUE);
  535. X                      find_base (my_group[cur_groupnum]);
  536. X!                     show_group_page (group);
  537. X                  }
  538. X                  break;
  539. X  
  540. X--- 806,812 ----
  541. X                          !active[my_group[cur_groupnum]].attribute.thread_arts;
  542. X                      make_threads (TRUE);
  543. X                      find_base (my_group[cur_groupnum]);
  544. X!                     show_group_page ();
  545. X                  }
  546. X                  break;
  547. X  
  548. X***************
  549. X*** 819,831 ****
  550. X  
  551. X              case 'w':    /* post an article */
  552. X                  if (post_article (group, &posted)) {
  553. X!                     show_group_page (group);
  554. X                  }
  555. X                  break;
  556. X  
  557. X              case 'W':    /* display messages posted by user */
  558. X                  if (user_posted_messages ()) {
  559. X!                     show_group_page (group);
  560. X                  }
  561. X                  break;
  562. X  
  563. X--- 823,835 ----
  564. X  
  565. X              case 'w':    /* post an article */
  566. X                  if (post_article (group, &posted)) {
  567. X!                     show_group_page ();
  568. X                  }
  569. X                  break;
  570. X  
  571. X              case 'W':    /* display messages posted by user */
  572. X                  if (user_posted_messages ()) {
  573. X!                     show_group_page ();
  574. X                  }
  575. X                  break;
  576. X  
  577. X***************
  578. X*** 979,985 ****
  579. X  
  580. X                  xflag = 1;
  581. X                  index_point = 0;
  582. X!                  show_group_page (group);
  583. X  
  584. X                  break;
  585. X  
  586. X--- 983,989 ----
  587. X  
  588. X                  xflag = 1;
  589. X                  index_point = 0;
  590. X!                  show_group_page ();
  591. X  
  592. X                  break;
  593. X  
  594. X***************
  595. X*** 1004,1010 ****
  596. X  
  597. X                  xflag = 0;
  598. X                  index_point = 0;    /* do we want this ? */
  599. X!                  show_group_page (group);
  600. X  
  601. X                  break;
  602. X                  
  603. X--- 1008,1014 ----
  604. X  
  605. X                  xflag = 0;
  606. X                  index_point = 0;    /* do we want this ? */
  607. X!                  show_group_page ();
  608. X  
  609. X                  break;
  610. X                  
  611. X***************
  612. X*** 1050,1057 ****
  613. X  }
  614. X  
  615. X  
  616. X! void show_group_page (group)
  617. X!     char *group;
  618. X  {
  619. X  #ifndef INDEX_DAEMON
  620. X  
  621. X--- 1054,1060 ----
  622. X  }
  623. X  
  624. X  
  625. X! void show_group_page ()
  626. X  {
  627. X  #ifndef INDEX_DAEMON
  628. X  
  629. X***************
  630. X*** 1176,1182 ****
  631. X          fputs ("  ", stdout);
  632. X      } else {
  633. X          if (_hp_glitch) {
  634. X!             CleartoEOLN ();
  635. X          }
  636. X          draw_sline(index_point, TRUE);
  637. X      }
  638. X--- 1179,1185 ----
  639. X          fputs ("  ", stdout);
  640. X      } else {
  641. X          if (_hp_glitch) {
  642. X!             EndInverse ();
  643. X          }
  644. X          draw_sline(index_point, TRUE);
  645. X      }
  646. X***************
  647. X*** 1211,1225 ****
  648. X  
  649. X      if (num >= first_subj_on_screen
  650. X      &&  num < last_subj_on_screen) {
  651. X!         erase_subject_arrow();
  652. X          index_point = num;
  653. X!         draw_subject_arrow();
  654. X      } else {
  655. X  #ifndef USE_CLEARSCREEN
  656. X!         erase_subject_arrow();
  657. X  #endif        
  658. X          index_point = num;
  659. X!         show_group_page(group);
  660. X      }
  661. X  }
  662. X  
  663. X--- 1214,1228 ----
  664. X  
  665. X      if (num >= first_subj_on_screen
  666. X      &&  num < last_subj_on_screen) {
  667. X!         erase_subject_arrow ();
  668. X          index_point = num;
  669. X!         draw_subject_arrow ();
  670. X      } else {
  671. X  #ifndef USE_CLEARSCREEN
  672. X!         erase_subject_arrow ();
  673. X  #endif        
  674. X          index_point = num;
  675. X!         show_group_page ();
  676. X      }
  677. X  }
  678. X  
  679. X***************
  680. X*** 1329,1339 ****
  681. X  void toggle_subject_from ()
  682. X  {
  683. X      int i;
  684. X! int tmp;
  685. X      
  686. X      i = my_group[cur_groupnum];
  687. X  
  688. X! tmp = show_author;
  689. X      
  690. X      if (active[i].attribute.show_author != SHOW_FROM_NONE) {
  691. X          if (show_author != SHOW_FROM_NONE) {
  692. X--- 1332,1342 ----
  693. X  void toggle_subject_from ()
  694. X  {
  695. X      int i;
  696. X!     int tmp;
  697. X      
  698. X      i = my_group[cur_groupnum];
  699. X  
  700. X!     tmp = show_author;
  701. X      
  702. X      if (active[i].attribute.show_author != SHOW_FROM_NONE) {
  703. X          if (show_author != SHOW_FROM_NONE) {
  704. X***************
  705. X*** 1349,1375 ****
  706. X          }
  707. X      }
  708. X  
  709. X- if (debug == 2) {
  710. X- sprintf (msg, "Show before=[%d]  after=[%d]", tmp, show_author);
  711. X- error_message (msg, "");
  712. X- }
  713. X- 
  714. X- #if 0
  715. X-     if (default_show_author != SHOW_FROM_NONE) {
  716. X-         if (show_author != SHOW_FROM_NONE) {
  717. X-             show_author = SHOW_FROM_NONE;
  718. X-         } else {
  719. X-             show_author = default_show_author;
  720. X-         }
  721. X-     } else {
  722. X-         if (show_author + 1 > SHOW_FROM_BOTH) {
  723. X-             show_author = SHOW_FROM_NONE;
  724. X-         } else {
  725. X-             show_author++;
  726. X-         }
  727. X-     }
  728. X- #endif
  729. X- 
  730. X      set_subj_from_size (COLS);
  731. X  }
  732. X  
  733. X--- 1352,1357 ----
  734. X***************
  735. X*** 1455,1464 ****
  736. X  
  737. X      j = INDEX2SNUM(i);
  738. X  
  739. X!     if (full) {
  740. X!         tlen = strlen (screen[j].col);
  741. X          s = screen[j].col;
  742. X          x = 0;
  743. X      } else {
  744. X          tlen  = 7;
  745. X          s = &screen[j].col[6];
  746. X--- 1437,1450 ----
  747. X  
  748. X      j = INDEX2SNUM(i);
  749. X  
  750. X!     if (full) {    
  751. X          s = screen[j].col;
  752. X+         tlen = strlen (s);
  753. X          x = 0;
  754. X+         if (slow_speed_terminal) {        
  755. X+             strip_line (s, tlen);
  756. X+             CleartoEOLN ();
  757. X+         }
  758. X      } else {
  759. X          tlen  = 7;
  760. X          s = &screen[j].col[6];
  761. X***************
  762. X*** 1491,1499 ****
  763. X  #ifndef INDEX_DAEMON
  764. X  
  765. X      char buf[PATH_LEN];
  766. X      register int i, art_cnt = 0;
  767. X      
  768. X!     if (active[my_group[cur_groupnum]].attribute.show_only_unread) {
  769. X          for (i = 0 ; i < top_base ; i++) {
  770. X              art_cnt += new_responses (i);
  771. X          }    
  772. X--- 1477,1488 ----
  773. X  #ifndef INDEX_DAEMON
  774. X  
  775. X      char buf[PATH_LEN];
  776. X+     int num;
  777. X      register int i, art_cnt = 0;
  778. X      
  779. X!     num = my_group[cur_groupnum];
  780. X!     
  781. X!     if (active[num].attribute.show_only_unread) {
  782. X          for (i = 0 ; i < top_base ; i++) {
  783. X              art_cnt += new_responses (i);
  784. X          }    
  785. X***************
  786. X*** 1505,1518 ****
  787. X          }        
  788. X      }
  789. X  
  790. X!     if (active[my_group[cur_groupnum]].attribute.thread_arts && default_thread_arts) {
  791. X!         sprintf (buf, "%s (%dT %dA %dK %dH)", 
  792. X!             active[my_group[cur_groupnum]].name, top_base, 
  793. X!             art_cnt, num_of_killed_arts, num_of_hot_arts);
  794. X      } else {
  795. X!         sprintf (buf, "%s (%dU %dK %dH)", 
  796. X!             active[my_group[cur_groupnum]].name,
  797. X!             art_cnt, num_of_killed_arts, num_of_hot_arts);
  798. X      }
  799. X  
  800. X      if (clear_title) {
  801. X--- 1494,1509 ----
  802. X          }        
  803. X      }
  804. X  
  805. X!     if (active[num].attribute.thread_arts && default_thread_arts) {
  806. X!         sprintf (buf, "%s (%dT %dA %dK %dH%s)", 
  807. X!             active[num].name, top_base, 
  808. X!             art_cnt, num_of_killed_arts, num_of_hot_arts,
  809. X!             (active[num].attribute.show_only_unread ? " R" : ""));
  810. X      } else {
  811. X!         sprintf (buf, "%s (%dU %dK %dH%s)", 
  812. X!             active[num].name,
  813. X!             art_cnt, num_of_killed_arts, num_of_hot_arts,
  814. X!             (active[num].attribute.show_only_unread ? " R" : ""));
  815. X      }
  816. X  
  817. X      if (clear_title) {
  818. XFiles ../1.16/hashstr.c and ./hashstr.c are identical
  819. Xdiff -rcs ../1.16/help.c ./help.c
  820. X*** ../1.16/help.c    Sun Nov 15 18:41:51 1992
  821. X--- ./help.c    Sun Nov 15 16:02:48 1992
  822. X***************
  823. X*** 3,9 ****
  824. X   *  Module    : help.c
  825. X   *  Author    : I.Lea
  826. X   *  Created   : 01-04-91
  827. X!  *  Updated   : 23-08-92
  828. X   *  Notes     :
  829. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  830. X   *              You may  freely  copy or  redistribute  this software,
  831. X--- 3,9 ----
  832. X   *  Module    : help.c
  833. X   *  Author    : I.Lea
  834. X   *  Created   : 01-04-91
  835. X!  *  Updated   : 27-09-92
  836. X   *  Notes     :
  837. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  838. X   *              You may  freely  copy or  redistribute  this software,
  839. X***************
  840. X*** 162,168 ****
  841. X      txt_help_a,
  842. X      txt_help_bug_report,
  843. X      txt_help_c,
  844. X!     txt_help_C,
  845. X      txt_help_p_d,
  846. X      txt_help_p_f,
  847. X      txt_help_p_g,
  848. X--- 162,169 ----
  849. X      txt_help_a,
  850. X      txt_help_bug_report,
  851. X      txt_help_c,
  852. X!     txt_help_cC,
  853. X!     txt_help_D,
  854. X      txt_help_p_d,
  855. X      txt_help_p_f,
  856. X      txt_help_p_g,
  857. Xdiff -rcs ../1.16/inews.c ./inews.c
  858. X*** ../1.16/inews.c    Sun Nov 15 18:41:51 1992
  859. X--- ./inews.c    Sun Nov 15 16:02:48 1992
  860. X***************
  861. X*** 3,9 ****
  862. X   *  Module    : inews.c
  863. X   *  Author    : I.Lea
  864. X   *  Created   : 17-03-92
  865. X!  *  Updated   : 05-09-92
  866. X   *  Notes     : NNTP builtin version of inews
  867. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  868. X   *              You may  freely  copy or  redistribute  this software,
  869. X--- 3,9 ----
  870. X   *  Module    : inews.c
  871. X   *  Author    : I.Lea
  872. X   *  Created   : 17-03-92
  873. X!  *  Updated   : 23-09-92
  874. X   *  Notes     : NNTP builtin version of inews
  875. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  876. X   *              You may  freely  copy or  redistribute  this software,
  877. X***************
  878. X*** 84,90 ****
  879. X      while (fgets (line, sizeof (line), fp) != NULL) {
  880. X          len = strlen (line);
  881. X          line[len-1] = '\0';
  882. X!         fprintf (ser_wr_fp, "%s\r\n", line);
  883. X      }
  884. X      
  885. X      put_server (".");
  886. X--- 84,90 ----
  887. X      while (fgets (line, sizeof (line), fp) != NULL) {
  888. X          len = strlen (line);
  889. X          line[len-1] = '\0';
  890. X!         fprintf (nntp_wr_fp, "%s\r\n", line);
  891. X      }
  892. X      
  893. X      put_server (".");
  894. X***************
  895. X*** 116,122 ****
  896. X  {
  897. X  #ifndef INDEX_DAEMON
  898. X  
  899. X!     char host[PATH_LEN];
  900. X      char nntp_inews_gateway[PATH_LEN];
  901. X      FILE *fp;
  902. X  
  903. X--- 116,122 ----
  904. X  {
  905. X  #ifndef INDEX_DAEMON
  906. X  
  907. X!     char *ptr, host[PATH_LEN];
  908. X      char nntp_inews_gateway[PATH_LEN];
  909. X      FILE *fp;
  910. X  
  911. X***************
  912. X*** 137,142 ****
  913. X--- 137,145 ----
  914. X              if ((fp = fopen (nntp_inews_gateway, "r")) != (FILE *) 0) {
  915. X                  if (fgets (host, sizeof (host), fp) != (char *) 0) {
  916. X                      strcpy (host_name, host);
  917. X+                     if (ptr = (char *) strchr (host_name, '\n')) {
  918. X+                         *ptr = '\0';
  919. X+                     }
  920. X                  }    
  921. X                  fclose (fp);
  922. X              }
  923. X***************
  924. X*** 188,194 ****
  925. X      
  926. X  #ifdef AMIGA
  927. X      ptr = (char *) get_val ("REALNAME", "Unknown");
  928. X!     my_strncpy (full_name, ptr, 128));
  929. X      strcpy (user_name, userid);
  930. X  #else        
  931. X      if ((ptr = (char *) getenv ("NAME")) != (char *) 0) {
  932. X--- 191,197 ----
  933. X      
  934. X  #ifdef AMIGA
  935. X      ptr = (char *) get_val ("REALNAME", "Unknown");
  936. X!     my_strncpy (full_name, ptr, 128);
  937. X      strcpy (user_name, userid);
  938. X  #else        
  939. X      if ((ptr = (char *) getenv ("NAME")) != (char *) 0) {
  940. Xdiff -rcs ../1.16/init.c ./init.c
  941. X*** ../1.16/init.c    Sun Nov 15 18:41:52 1992
  942. X--- ./init.c    Sun Nov 15 16:02:48 1992
  943. X***************
  944. X*** 3,9 ****
  945. X   *  Module    : init.c
  946. X   *  Author    : I.Lea
  947. X   *  Created   : 01-04-91
  948. X!  *  Updated   : 07-09-92
  949. X   *  Notes     :
  950. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  951. X   *              You may  freely  copy or  redistribute  this software,
  952. X--- 3,9 ----
  953. X   *  Module    : init.c
  954. X   *  Author    : I.Lea
  955. X   *  Created   : 01-04-91
  956. X!  *  Updated   : 07-11-92
  957. X   *  Notes     :
  958. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  959. X   *              You may  freely  copy or  redistribute  this software,
  960. X***************
  961. X*** 14,20 ****
  962. X  
  963. X  #include    "tin.h"
  964. X  
  965. X- char active_file[PATH_LEN];
  966. X  char active_times_file[PATH_LEN];
  967. X  char attributes_file[PATH_LEN];
  968. X  char add_addr[LEN];        /* address to add to rR reply to author with mail */
  969. X--- 14,19 ----
  970. X***************
  971. X*** 24,29 ****
  972. X--- 23,29 ----
  973. X  char cvers[LEN];
  974. X  char dead_article[PATH_LEN];    /* ~/dead.article file */
  975. X  char default_maildir[PATH_LEN];    /* mailbox dir where = saves are stored */
  976. X+ char default_organization[PATH_LEN];    /* Organization: */
  977. X  char default_post_newsgroups[PATH_LEN];
  978. X  char default_post_subject[PATH_LEN];
  979. X  char default_select_pattern[LEN];
  980. X***************
  981. X*** 34,40 ****
  982. X  char default_select_pattern[LEN];
  983. X  char delgroups[LEN];
  984. X  char homedir[PATH_LEN];
  985. X! char indexdir[PATH_LEN];
  986. X  char killfile[PATH_LEN];
  987. X  char killsubj[LEN];        /* contains Subject:'s not to be shown */
  988. X  char killfrom[LEN];        /* contains From:'s not to be shown */
  989. X--- 34,41 ----
  990. X  char default_select_pattern[LEN];
  991. X  char delgroups[LEN];
  992. X  char homedir[PATH_LEN];
  993. X! char index_maildir[PATH_LEN];
  994. X! char index_newsdir[PATH_LEN];
  995. X  char killfile[PATH_LEN];
  996. X  char killsubj[LEN];        /* contains Subject:'s not to be shown */
  997. X  char killfrom[LEN];        /* contains From:'s not to be shown */
  998. X***************
  999. X*** 41,61 ****
  1000. X  char lock_file[PATH_LEN];    /* contains name of index lock file */
  1001. X  char local_newsgroups_file[PATH_LEN];    /* local copy of NNTP newsgroups file */
  1002. X  char mail_news_user[LEN];    /* mail new news to this user address */
  1003. X  char mailbox[PATH_LEN];        /* system mailbox for each user */
  1004. X  char mailer[PATH_LEN];        /* mail program */
  1005. X! char my_org[LEN];        /* Organization: */
  1006. X  char my_distribution[LEN];    /* Distribution: */
  1007. X  char newsgroups_file[PATH_LEN];
  1008. X  char newsrc[PATH_LEN];
  1009. X  char newnewsrc[PATH_LEN];
  1010. X  char page_header[LEN];        /* page header of pgm name and version */
  1011. X  char postfile[PATH_LEN];
  1012. X! char printer[LEN];        /* printer program specified from tinrc */
  1013. X  char progname[PATH_LEN];    /* program name */
  1014. X  char quote_chars[PATH_LEN];    /* quote chars for posting/mails ": " */
  1015. X  char rcdir[PATH_LEN];
  1016. X  char rcfile[PATH_LEN];
  1017. X  char reply_to[LEN];        /* Reply-To: address */
  1018. X  char spooldir[PATH_LEN];    /* directory where news is */
  1019. X  char spooldir_alias[PATH_LEN];    /* alias of spooldir being used */
  1020. X  char subscriptions_file[PATH_LEN];
  1021. X--- 42,69 ----
  1022. X  char lock_file[PATH_LEN];    /* contains name of index lock file */
  1023. X  char local_newsgroups_file[PATH_LEN];    /* local copy of NNTP newsgroups file */
  1024. X  char mail_news_user[LEN];    /* mail new news to this user address */
  1025. X+ char mail_quote_format[PATH_LEN];
  1026. X+ char mail_active_file[PATH_LEN];
  1027. X  char mailbox[PATH_LEN];        /* system mailbox for each user */
  1028. X  char mailer[PATH_LEN];        /* mail program */
  1029. X! char motd_file[PATH_LEN];    /* news motd file for newsadmin purposes */
  1030. X! char motd_file_info[PATH_LEN];    /* date of last time news motd file read */
  1031. X  char my_distribution[LEN];    /* Distribution: */
  1032. X+ char news_active_file[PATH_LEN];
  1033. X+ char news_quote_format[PATH_LEN];
  1034. X+ char mailgroups_file[PATH_LEN];
  1035. X  char newsgroups_file[PATH_LEN];
  1036. X  char newsrc[PATH_LEN];
  1037. X  char newnewsrc[PATH_LEN];
  1038. X  char page_header[LEN];        /* page header of pgm name and version */
  1039. X  char postfile[PATH_LEN];
  1040. X! char default_printer[LEN];    /* printer program specified from tinrc */
  1041. X  char progname[PATH_LEN];    /* program name */
  1042. X  char quote_chars[PATH_LEN];    /* quote chars for posting/mails ": " */
  1043. X  char rcdir[PATH_LEN];
  1044. X  char rcfile[PATH_LEN];
  1045. X  char reply_to[LEN];        /* Reply-To: address */
  1046. X+ char save_active_file[PATH_LEN];
  1047. X  char spooldir[PATH_LEN];    /* directory where news is */
  1048. X  char spooldir_alias[PATH_LEN];    /* alias of spooldir being used */
  1049. X  char subscriptions_file[PATH_LEN];
  1050. X***************
  1051. X*** 88,93 ****
  1052. X--- 96,102 ----
  1053. X  int real_uid;
  1054. X  int real_umask;
  1055. X  int show_description;
  1056. X+ int slow_speed_terminal;
  1057. X  int start_editor_offset;
  1058. X  int tin_uid;
  1059. X  int tin_gid;
  1060. X***************
  1061. X*** 110,115 ****
  1062. X--- 119,126 ----
  1063. X  int draw_arrow_mark;        /* draw -> or highlighted bar */
  1064. X  int force_screen_redraw;    /* force screen redraw after external (shell) commands */
  1065. X  int full_page_scroll;        /* page half/full screen of articles/groups */
  1066. X+ int groupname_max_length;    /* max len of group names to display on screen */
  1067. X+ int use_keypad;            /* enables/disables scroll keys on supported terminals */
  1068. X  int killed_articles;        /* killed / auto-selected hot articles */
  1069. X  int mark_saved_read;        /* mark saved article/thread as read */
  1070. X  int num_of_hot_arts;
  1071. X***************
  1072. X*** 120,125 ****
  1073. X--- 131,137 ----
  1074. X  int default_post_proc_type;    /* type of post processing to be performed */
  1075. X  int post_article_and_exit;    /* quick post of an article then exit (elm like) */
  1076. X  int print_header;        /* print all of mail header or just Subject: & From lines */
  1077. X+ int purge_index_files;        /* stat all articles to see if they still exist */
  1078. X  int reread_active_file_secs;    /* reread active file interval in seconds */
  1079. X  int read_local_newsgroups_file;    /* read newsgroups file locally or via NNTP */
  1080. X  int mail_news;            /* mail all arts to specified user */
  1081. X***************
  1082. X*** 132,139 ****
  1083. X  int system_status;
  1084. X  int tab_after_X_selection;    /* set TRUE if you want auto TAB after X */
  1085. X  int update;            /* update index files only mode */
  1086. X  
  1087. X- 
  1088. X  struct passwd *myentry;
  1089. X  
  1090. X  
  1091. X--- 144,151 ----
  1092. X  int system_status;
  1093. X  int tab_after_X_selection;    /* set TRUE if you want auto TAB after X */
  1094. X  int update;            /* update index files only mode */
  1095. X+ int use_builtin_inews;
  1096. X  
  1097. X  struct passwd *myentry;
  1098. X  
  1099. X  
  1100. X***************
  1101. X*** 237,242 ****
  1102. X--- 249,256 ----
  1103. X  #endif
  1104. X      force_screen_redraw = FALSE;
  1105. X      full_page_scroll = TRUE;
  1106. X+     groupname_max_length = 132;
  1107. X+     use_keypad = FALSE;
  1108. X      killed_articles = FALSE;
  1109. X      mark_saved_read = TRUE;
  1110. X      num_of_hot_arts = 0;
  1111. X***************
  1112. X*** 245,253 ****
  1113. X      pos_first_unread = TRUE;
  1114. X      post_article_and_exit = FALSE;
  1115. X      print_header = FALSE;
  1116. X!     reread_active_file_secs = 0;
  1117. X      save_news = FALSE;
  1118. X! #ifdef USE_MMDF_MAILER
  1119. X      save_to_mmdf_mailbox = TRUE;
  1120. X  #else
  1121. X      save_to_mmdf_mailbox = FALSE;
  1122. X--- 259,268 ----
  1123. X      pos_first_unread = TRUE;
  1124. X      post_article_and_exit = FALSE;
  1125. X      print_header = FALSE;
  1126. X!     purge_index_files = FALSE;
  1127. X!     reread_active_file_secs = REREAD_ACTIVE_FILE_SECS;
  1128. X      save_news = FALSE;
  1129. X! #ifdef HAVE_MMDF_MAILER
  1130. X      save_to_mmdf_mailbox = TRUE;
  1131. X  #else
  1132. X      save_to_mmdf_mailbox = FALSE;
  1133. X***************
  1134. X*** 255,260 ****
  1135. X--- 270,276 ----
  1136. X      show_last_line_prev_page = FALSE;
  1137. X      show_description = TRUE;
  1138. X      show_only_unread_groups = FALSE;
  1139. X+     slow_speed_terminal = FALSE;
  1140. X  #ifdef AMIGA
  1141. X      start_editor_offset = FALSE;
  1142. X  #else    
  1143. X***************
  1144. X*** 268,273 ****
  1145. X--- 284,290 ----
  1146. X      check_for_new_newsgroups = TRUE;
  1147. X      update = FALSE;
  1148. X  #endif
  1149. X+     use_builtin_inews = TRUE;
  1150. X  
  1151. X      newsrc[0] = '\0';
  1152. X      
  1153. X***************
  1154. X*** 274,287 ****
  1155. X      killsubj[0] = '\0';
  1156. X      killfrom[0] = '\0';
  1157. X      
  1158. X      cmd_line_printer[0] = '\0';
  1159. X      default_author_search[0] = '\0';
  1160. X      default_goto_group[0] = '\0';
  1161. X      default_group_search[0] = '\0';
  1162. X-     default_subject_search[0] = '\0';
  1163. X-     default_art_search[0] = '\0';
  1164. X-     default_crosspost_group[0] = '\0';
  1165. X      default_mail_address[0] = '\0';
  1166. X      default_pipe_command[0] = '\0';
  1167. X      default_post_newsgroups[0] = '\0';
  1168. X      default_post_subject[0] = '\0';
  1169. X--- 291,307 ----
  1170. X      killsubj[0] = '\0';
  1171. X      killfrom[0] = '\0';
  1172. X      
  1173. X+     strncpy (mail_quote_format, txt_mail_quote, sizeof (mail_quote_format));
  1174. X+     strncpy (news_quote_format, txt_news_quote, sizeof (news_quote_format));
  1175. X+ 
  1176. X      cmd_line_printer[0] = '\0';
  1177. X+     default_art_search[0] = '\0';
  1178. X      default_author_search[0] = '\0';
  1179. X+     default_crosspost_group[0] = '\0';
  1180. X      default_goto_group[0] = '\0';
  1181. X      default_group_search[0] = '\0';
  1182. X      default_mail_address[0] = '\0';
  1183. X+     default_organization[0] = '\0';
  1184. X      default_pipe_command[0] = '\0';
  1185. X      default_post_newsgroups[0] = '\0';
  1186. X      default_post_subject[0] = '\0';
  1187. X***************
  1188. X*** 289,294 ****
  1189. X--- 309,315 ----
  1190. X      default_save_file[0] = '\0';
  1191. X      default_select_pattern[0] = '\0';
  1192. X      default_shell_command[0] = '\0';
  1193. X+     default_subject_search[0] = '\0';
  1194. X      proc_ch_default = 'n';
  1195. X  
  1196. X      /*
  1197. X***************
  1198. X*** 296,301 ****
  1199. X--- 317,326 ----
  1200. X       */
  1201. X      strcpy (spooldir_alias, "news");
  1202. X      strcpy (spooldir, SPOOLDIR);
  1203. X+     strcpy (mailer, get_val ("MAILER", DEFAULT_MAILER));
  1204. X+     strcpy (default_printer, DEFAULT_PRINTER);
  1205. X+     strcpy (quote_chars, DEFAULT_COMMENT);
  1206. X+     strcpy (bug_addr, BUG_REPORT_ADDRESS);
  1207. X  
  1208. X      set_tindir ();    
  1209. X  
  1210. X***************
  1211. X*** 307,339 ****
  1212. X       * on all UNIX systems.
  1213. X       */
  1214. X  
  1215. X!     joinpath (active_file, LIBDIR, "active");
  1216. X      joinpath (attributes_file, rcdir, "attributes");
  1217. X      joinpath (article, homedir, ".article");
  1218. X      joinpath (dead_article, homedir, "dead.article");
  1219. X      joinpath (delgroups, homedir, ".delgroups");
  1220. X      joinpath (mailbox, DEFAULT_MAILBOX, userid);
  1221. X!     joinpath (default_maildir, homedir, DEFAULT_MAILDIR);
  1222. X!     joinpath (default_savedir, homedir, "News");
  1223. X!     joinpath (default_sigfile, homedir, ".Sig");
  1224. X      joinpath (default_signature, homedir, ".signature");
  1225. X      joinpath (newsgroups_file, LIBDIR, NEWSGROUPS_FILE);
  1226. X!     joinpath (subscriptions_file, LIBDIR, "subscriptions");
  1227. X! 
  1228. X!     strcpy (mailer, get_val ("MAILER", DEFAULT_MAILER));
  1229. X!     strcpy (printer, DEFAULT_PRINTER);
  1230. X!     strcpy (quote_chars, DEFAULT_COMMENT);
  1231. X!     strcpy (spooldir, SPOOLDIR);
  1232. X!     strcpy (bug_addr, BUG_REPORT_ADDRESS);
  1233. X  
  1234. X  #ifdef INDEX_DAEMON
  1235. X!     strcpy (lock_file, LOCK_FILE);    
  1236. X!     strcpy (newsrc, active_file);    /* default so all groups are indexed */
  1237. X!     joinpath (indexdir, spooldir, ".index");
  1238. X      joinpath (active_times_file, rcdir, "active.times");
  1239. X  
  1240. X!     if (stat (indexdir, &sb) == -1) {
  1241. X!         mkdir (indexdir, 0777);
  1242. X      }
  1243. X  #else
  1244. X  #    ifdef HAVE_LONG_FILENAMES
  1245. X--- 332,362 ----
  1246. X       * on all UNIX systems.
  1247. X       */
  1248. X  
  1249. X!     joinpath (mail_active_file, rcdir, ACTIVE_MAIL);
  1250. X!     joinpath (save_active_file, rcdir, ACTIVE_SAVE);
  1251. X!     joinpath (news_active_file, LIBDIR, "active");
  1252. X      joinpath (attributes_file, rcdir, "attributes");
  1253. X      joinpath (article, homedir, ".article");
  1254. X      joinpath (dead_article, homedir, "dead.article");
  1255. X      joinpath (delgroups, homedir, ".delgroups");
  1256. X      joinpath (mailbox, DEFAULT_MAILBOX, userid);
  1257. X!     joinpath (default_maildir, "~", DEFAULT_MAILDIR);
  1258. X!     joinpath (default_savedir, "~", DEFAULT_SAVEDIR);
  1259. X!     joinpath (default_sigfile, "~", ".Sig");
  1260. X      joinpath (default_signature, homedir, ".signature");
  1261. X+     joinpath (motd_file, LIBDIR, MOTD_FILE);
  1262. X+     joinpath (mailgroups_file, rcdir, MAILGROUPS_FILE);
  1263. X      joinpath (newsgroups_file, LIBDIR, NEWSGROUPS_FILE);
  1264. X!     joinpath (subscriptions_file, LIBDIR, SUBSCRIPTIONS_FILE);
  1265. X  
  1266. X  #ifdef INDEX_DAEMON
  1267. X!     joinpath  (lock_file, TMPDIR, LOCK_FILE);    
  1268. X!     strcpy (newsrc, news_active_file);    /* default so all groups are indexed */
  1269. X      joinpath (active_times_file, rcdir, "active.times");
  1270. X+     joinpath (index_newsdir, get_val ("TIN_INDEX", spooldir), INDEX_NEWSDIR);
  1271. X  
  1272. X!     if (stat (index_newsdir, &sb) == -1) {
  1273. X!         mkdir (index_newsdir, 0777);
  1274. X      }
  1275. X  #else
  1276. X  #    ifdef HAVE_LONG_FILENAMES
  1277. X***************
  1278. X*** 347,361 ****
  1279. X          mkdir (rcdir, 0755);
  1280. X      }
  1281. X      if (tin_uid != real_uid) {
  1282. X!         joinpath (indexdir, spooldir, ".index");
  1283. X  
  1284. X          set_tin_uid_gid ();
  1285. X!         if (stat (indexdir, &sb) == -1) {
  1286. X!             mkdir (indexdir, 0777);
  1287. X          }
  1288. X          set_real_uid_gid ();
  1289. X!     } else if (stat (indexdir, &sb) == -1) {
  1290. X!         mkdir (indexdir, 0755);
  1291. X      }
  1292. X      if (stat (postfile, &sb) == -1) {
  1293. X          if ((fp = fopen (postfile, "w")) != NULL) {
  1294. X--- 370,384 ----
  1295. X          mkdir (rcdir, 0755);
  1296. X      }
  1297. X      if (tin_uid != real_uid) {
  1298. X!         joinpath (index_newsdir, get_val ("TIN_INDEX", spooldir), INDEX_NEWSDIR);
  1299. X  
  1300. X          set_tin_uid_gid ();
  1301. X!         if (stat (index_newsdir, &sb) == -1) {
  1302. X!             mkdir (index_newsdir, 0777);
  1303. X          }
  1304. X          set_real_uid_gid ();
  1305. X!     } else if (stat (index_newsdir, &sb) == -1) {
  1306. X!         mkdir (index_newsdir, 0755);
  1307. X      }
  1308. X      if (stat (postfile, &sb) == -1) {
  1309. X          if ((fp = fopen (postfile, "w")) != NULL) {
  1310. X***************
  1311. X*** 363,373 ****
  1312. X          }
  1313. X      }
  1314. X  
  1315. X      read_rcfile ();
  1316. X  
  1317. X  #endif /* INDEX_DAEMON */    
  1318. X  
  1319. X!     if (stat (active_file, &sb) >= 0)
  1320. X          goto got_active;
  1321. X  
  1322. X      /*
  1323. X--- 386,399 ----
  1324. X          }
  1325. X      }
  1326. X  
  1327. X+     /*
  1328. X+      * Read user config file ~/.tin/tinrc
  1329. X+      */
  1330. X      read_rcfile ();
  1331. X  
  1332. X  #endif /* INDEX_DAEMON */    
  1333. X  
  1334. X!     if (stat (news_active_file, &sb) >= 0)
  1335. X          goto got_active;
  1336. X  
  1337. X      /*
  1338. X***************
  1339. X*** 375,398 ****
  1340. X       *  of the likely places if it's not where LIBDIR says it is.
  1341. X       */
  1342. X  
  1343. X!     strcpy (active_file, "/usr/lib/news/active");
  1344. X!     if (stat (active_file, &sb) >= 0)
  1345. X          goto got_active;
  1346. X  
  1347. X!     strcpy (active_file, "/usr/local/lib/news/active");
  1348. X!     if (stat (active_file, &sb) >= 0)
  1349. X          goto got_active;
  1350. X  
  1351. X!     strcpy (active_file, "/usr/public/lib/news/active");
  1352. X!     if (stat (active_file, &sb) >= 0)
  1353. X          goto got_active;
  1354. X  
  1355. X      /*
  1356. X       *  Oh well. Revert to what LIBDIR says it is to produce a useful
  1357. X!      *  error message when read_active_file () fails later.
  1358. X       */
  1359. X  
  1360. X!     joinpath (active_file, LIBDIR, "active");
  1361. X  
  1362. X  got_active:
  1363. X  
  1364. X--- 401,424 ----
  1365. X       *  of the likely places if it's not where LIBDIR says it is.
  1366. X       */
  1367. X  
  1368. X!     strcpy (news_active_file, "/usr/lib/news/active");
  1369. X!     if (stat (news_active_file, &sb) >= 0)
  1370. X          goto got_active;
  1371. X  
  1372. X!     strcpy (news_active_file, "/usr/local/lib/news/active");
  1373. X!     if (stat (news_active_file, &sb) >= 0)
  1374. X          goto got_active;
  1375. X  
  1376. X!     strcpy (news_active_file, "/usr/public/lib/news/active");
  1377. X!     if (stat (news_active_file, &sb) >= 0)
  1378. X          goto got_active;
  1379. X  
  1380. X      /*
  1381. X       *  Oh well. Revert to what LIBDIR says it is to produce a useful
  1382. X!      *  error message when read_news_active_file () fails later.
  1383. X       */
  1384. X  
  1385. X!     joinpath (news_active_file, LIBDIR, "active");
  1386. X  
  1387. X  got_active:
  1388. X  
  1389. X***************
  1390. X*** 399,411 ****
  1391. X      /*
  1392. X       *  check enviroment for ORGANIZATION / NEWSORG
  1393. X       */
  1394. X-     my_org[0] = '\0';
  1395. X  #ifdef apollo
  1396. X      if ((p = (char *) getenv ("NEWSORG")) != NULL) {
  1397. X  #else    
  1398. X      if ((p = (char *) getenv ("ORGANIZATION")) != NULL) {
  1399. X  #endif
  1400. X!         my_strncpy (my_org, p, sizeof (my_org));
  1401. X          goto got_org;
  1402. X      }
  1403. X  
  1404. X--- 425,436 ----
  1405. X      /*
  1406. X       *  check enviroment for ORGANIZATION / NEWSORG
  1407. X       */
  1408. X  #ifdef apollo
  1409. X      if ((p = (char *) getenv ("NEWSORG")) != NULL) {
  1410. X  #else    
  1411. X      if ((p = (char *) getenv ("ORGANIZATION")) != NULL) {
  1412. X  #endif
  1413. X!         my_strncpy (default_organization, p, sizeof (default_organization));
  1414. X          goto got_org;
  1415. X      }
  1416. X  
  1417. X***************
  1418. X*** 446,453 ****
  1419. X  #endif    /* AMIGA */
  1420. X  
  1421. X      if (fp != NULL) {
  1422. X!         if (fgets (my_org, sizeof (my_org), fp) != NULL) {
  1423. X!             for (p = my_org; *p && *p != '\n'; p++)
  1424. X                  continue;
  1425. X              *p = '\0';
  1426. X          }
  1427. X--- 471,478 ----
  1428. X  #endif    /* AMIGA */
  1429. X  
  1430. X      if (fp != NULL) {
  1431. X!         if (fgets (default_organization, sizeof (default_organization), fp) != NULL) {
  1432. X!             for (p = default_organization; *p && *p != '\n'; p++)
  1433. X                  continue;
  1434. X              *p = '\0';
  1435. X          }
  1436. X***************
  1437. X*** 536,541 ****
  1438. X--- 561,567 ----
  1439. X      
  1440. X      joinpath (rcdir, homedir, RCDIR);
  1441. X      if (stat (rcdir, &sb) == -1) {
  1442. X+         created_rcdir = TRUE;
  1443. X          mkdir (rcdir, 0755);
  1444. X      }
  1445. X  
  1446. X***************
  1447. X*** 553,559 ****
  1448. X--- 579,587 ----
  1449. X  
  1450. X          spooldir_is_active = FALSE;
  1451. X          reread_active_file = FALSE;
  1452. X+ #ifndef DONT_REREAD_ACTIVE_FILE
  1453. X          alarm (0);
  1454. X+ #endif        
  1455. X      } else {
  1456. X          joinpath (rcfile, rcdir, RCFILE);
  1457. X          joinpath (killfile, rcdir, KILLFILE);
  1458. X***************
  1459. X*** 569,577 ****
  1460. X      read_local_newsgroups_file = FALSE;
  1461. X      joinpath (local_newsgroups_file, rcdir, NEWSGROUPS_FILE);
  1462. X  
  1463. X!     joinpath (indexdir, rcdir, INDEXDIR);
  1464. X!     if (stat (indexdir, &sb) == -1) {
  1465. X!         mkdir (indexdir, 0755);
  1466. X      }
  1467. X  }
  1468. X  
  1469. X--- 597,609 ----
  1470. X      read_local_newsgroups_file = FALSE;
  1471. X      joinpath (local_newsgroups_file, rcdir, NEWSGROUPS_FILE);
  1472. X  
  1473. X!     joinpath (index_maildir, rcdir, INDEX_MAILDIR);
  1474. X!     joinpath (index_newsdir, rcdir, INDEX_NEWSDIR);
  1475. X!     if (stat (index_maildir, &sb) == -1) {
  1476. X!         mkdir (index_maildir, 0755);
  1477. X!     }
  1478. X!     if (stat (index_newsdir, &sb) == -1) {
  1479. X!         mkdir (index_newsdir, 0755);
  1480. X      }
  1481. X  }
  1482. X  
  1483. X***************
  1484. X*** 578,592 ****
  1485. X  
  1486. X  int create_mail_save_dirs ()
  1487. X  {
  1488. X      int created = FALSE;
  1489. X      struct stat sb;
  1490. X!     
  1491. X!     if (stat (default_maildir, &sb) == -1) {
  1492. X!         mkdir (default_maildir, 0755);
  1493. X          created = TRUE;
  1494. X      }
  1495. X!     if (stat (default_savedir, &sb) == -1) {
  1496. X!         mkdir (default_savedir, 0755);
  1497. X          created = TRUE;
  1498. X      }
  1499. X      
  1500. X--- 610,635 ----
  1501. X  
  1502. X  int create_mail_save_dirs ()
  1503. X  {
  1504. X+     char path[PATH_LEN];
  1505. X      int created = FALSE;
  1506. X      struct stat sb;
  1507. X! 
  1508. X!         
  1509. X!     if (strfpath (default_maildir, path, sizeof (path), 
  1510. X!         homedir, (char *) 0, (char *) 0, (char *) 0)) {
  1511. X!         joinpath (path, homedir, DEFAULT_MAILDIR);
  1512. X!     }
  1513. X!     if (stat (path, &sb) == -1) {
  1514. X!         mkdir (path, 0755);
  1515. X          created = TRUE;
  1516. X      }
  1517. X! 
  1518. X!     if (strfpath (default_savedir, path, sizeof (path), 
  1519. X!         homedir, (char *) 0, (char *) 0, (char *) 0)) {
  1520. X!         joinpath (path, homedir, DEFAULT_SAVEDIR);
  1521. X!     }
  1522. X!     if (stat (path, &sb) == -1) {
  1523. X!         mkdir (path, 0755);
  1524. X          created = TRUE;
  1525. X      }
  1526. X      
  1527. XFiles ../1.16/kill and ./kill are identical
  1528. XFiles ../1.16/kill.c and ./kill.c are identical
  1529. Xdiff -rcs ../1.16/lang.c ./lang.c
  1530. X*** ../1.16/lang.c    Sun Nov 15 18:41:54 1992
  1531. X--- ./lang.c    Sun Nov 15 16:02:48 1992
  1532. X***************
  1533. X*** 3,9 ****
  1534. X   *  Module    : lang.c
  1535. X   *  Author    : I.Lea
  1536. X   *  Created   : 01-04-91
  1537. X!  *  Updated   : 11-09-92
  1538. X   *  Notes     :
  1539. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  1540. X   *              You may  freely  copy or  redistribute  this software,
  1541. X--- 3,9 ----
  1542. X   *  Module    : lang.c
  1543. X   *  Author    : I.Lea
  1544. X   *  Created   : 01-04-91
  1545. X!  *  Updated   : 14-11-92
  1546. X   *  Notes     :
  1547. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  1548. X   *              You may  freely  copy or  redistribute  this software,
  1549. X***************
  1550. X*** 18,27 ****
  1551. X   
  1552. X  char txt_subscribe_to_new_group[] = "Subscribe to new group %s (y/n/q) [%c]: ";
  1553. X  char txt_delete_bogus_group[] = "Remove bogus group %s (y/n/q) [%c]: ";
  1554. X! char txt_reading_active_file[] = "Reading active file...";
  1555. X  char txt_reading_attributes_file[] = "Reading attributes file...";
  1556. X  char txt_writing_attributes_file[] = "Writing attributes file...";
  1557. X  char txt_reading_newsgroups_file[] = "Reading newsgroups file...";
  1558. X  
  1559. X  /*
  1560. X   *  art.c
  1561. X--- 18,29 ----
  1562. X   
  1563. X  char txt_subscribe_to_new_group[] = "Subscribe to new group %s (y/n/q) [%c]: ";
  1564. X  char txt_delete_bogus_group[] = "Remove bogus group %s (y/n/q) [%c]: ";
  1565. X! char txt_reading_news_active_file[] = "Reading news active file...";
  1566. X! char txt_reading_mail_active_file[] = "Reading mail active file...";
  1567. X  char txt_reading_attributes_file[] = "Reading attributes file...";
  1568. X  char txt_writing_attributes_file[] = "Writing attributes file...";
  1569. X  char txt_reading_newsgroups_file[] = "Reading newsgroups file...";
  1570. X+ char txt_reading_mailgroups_file[] = "Reading mailgroups file...";
  1571. X  
  1572. X  /*
  1573. X   *  art.c
  1574. X***************
  1575. X*** 28,36 ****
  1576. X   */
  1577. X  
  1578. X  char txt_group[] = "Group %s...";
  1579. X  char txt_cannot_open_art[] = "Can't open article %s: ";
  1580. X! char txt_indexing[] = "Indexing %s...";
  1581. X! char txt_indexing_num[] = "Indexing %s...%4d";
  1582. X  char txt_corrupt_index[] = "Index file %s corrupted. error %d on article %d";
  1583. X  char txt_checking_for_news[] = "Checking for news...";
  1584. X  char txt_there_is_no_news[] = "There is no news\n";
  1585. X--- 30,38 ----
  1586. X   */
  1587. X  
  1588. X  char txt_group[] = "Group %s...";
  1589. X+ char txt_purge[] = "Purging %s...";
  1590. X  char txt_cannot_open_art[] = "Can't open article %s: ";
  1591. X! char txt_indexing_num[] = "Indexing %s (press 'q' to quit)...%4d/%d";
  1592. X  char txt_corrupt_index[] = "Index file %s corrupted. error %d on article %d";
  1593. X  char txt_checking_for_news[] = "Checking for news...";
  1594. X  char txt_there_is_no_news[] = "There is no news\n";
  1595. X***************
  1596. X*** 37,42 ****
  1597. X--- 39,45 ----
  1598. X  char txt_killing_arts[] = "Selecting articles...";
  1599. X  char txt_unkilling_arts[] = "Unselecting articles...";
  1600. X  char txt_catchup_update_info[] = "%s %d group(s) in %ld seconds\n";
  1601. X+ char txt_abort_indexing[] = "Do you want to abort indexing group? (y/n): ";
  1602. X  
  1603. X  /*
  1604. X   *  feed.c
  1605. X***************
  1606. X*** 43,50 ****
  1607. X   */
  1608. X  
  1609. X  char txt_art_thread_regex_tag[] = " a)rticle, t)hread, h)ot, p)attern, T)agged articles, q)uit: ";
  1610. X! char txt_post_process_type[] = "Process n)one, s)har, u)udecode, U)udecode & zoo, q)uit: ";
  1611. X! #ifdef NO_REGEX 
  1612. X  char txt_feed_pattern[] = "Enter pattern [%s]> ";
  1613. X  #else
  1614. X  char txt_feed_pattern[] = "Enter regex pattern [%s]> ";
  1615. X--- 46,57 ----
  1616. X   */
  1617. X  
  1618. X  char txt_art_thread_regex_tag[] = " a)rticle, t)hread, h)ot, p)attern, T)agged articles, q)uit: ";
  1619. X! #ifdef AMIGA
  1620. X! char txt_post_process_type[] = "Process n)one, s)har, u)ud, l)ist lha, e)xt lha, L)ist zip, E)xt zip, q)uit: ";
  1621. X! #else
  1622. X! char txt_post_process_type[] = "Process n)one, s)har, u)ud, l)ist zoo, e)xt zoo, L)ist zip, E)xt zip, q)uit: ";
  1623. X! #endif
  1624. X! #ifdef NO_REGEX
  1625. X  char txt_feed_pattern[] = "Enter pattern [%s]> ";
  1626. X  #else
  1627. X  char txt_feed_pattern[] = "Enter regex pattern [%s]> ";
  1628. X***************
  1629. X*** 51,57 ****
  1630. X  #endif
  1631. X  char txt_no_command[] = "No command";
  1632. X  char txt_piping[] = "Piping...";
  1633. X! char txt_no_piping_enabled[] = "Piping not enabled. Recompile without -DNO_PIPING.";
  1634. X  char txt_saved[] = "-- %d Article(s) saved --";
  1635. X  
  1636. X  /*
  1637. X--- 58,64 ----
  1638. X  #endif
  1639. X  char txt_no_command[] = "No command";
  1640. X  char txt_piping[] = "Piping...";
  1641. X! char txt_piping_not_enabled[] = "Piping not enabled. Recompile without -DNO_PIPING.";
  1642. X  char txt_saved[] = "-- %d Article(s) saved --";
  1643. X  
  1644. X  /*
  1645. X***************
  1646. X*** 223,229 ****
  1647. X  char txt_out_of_memory[] = "%s: out of memory";
  1648. X  char txt_rename_error[] = "Error: rename %s to %s";
  1649. X  char txt_shell_escape[] = "Enter shell command [%s]> ";
  1650. X! char txt_ispell_define_not_compiled[] = "Interactive spellchecker not enabled. Recompile with -DUSE_ISPELL.";
  1651. X  
  1652. X  /*
  1653. X   *  newsrc.c
  1654. X--- 230,236 ----
  1655. X  char txt_out_of_memory[] = "%s: out of memory";
  1656. X  char txt_rename_error[] = "Error: rename %s to %s";
  1657. X  char txt_shell_escape[] = "Enter shell command [%s]> ";
  1658. X! char txt_ispell_define_not_compiled[] = "Interactive spellchecker not enabled. Recompile with -DHAVE_ISPELL.";
  1659. X  
  1660. X  /*
  1661. X   *  newsrc.c
  1662. X***************
  1663. X*** 237,242 ****
  1664. X--- 244,250 ----
  1665. X   */
  1666. X   
  1667. X  char txt_connecting[] = "Connecting to %s...";
  1668. X+ char txt_reconnecting[] = "Reconnecting to %s...";
  1669. X  char txt_cannot_get_nntp_server_name[] = "Cannot find NNTP server name";
  1670. X  char txt_server_name_in_file_env_var[] = "Put the server name in the file %s,\nor set the environment variable NNTPSERVER";
  1671. X  char txt_failed_to_connect_to_server[] = "Failed to connect to NNTP server %s. Exiting...";
  1672. X***************
  1673. X*** 245,250 ****
  1674. X--- 253,259 ----
  1675. X  char txt_stuff_nntp_cannot_open[] = "stuff_nntp: can't open %s: ";
  1676. X  char txt_nntp_to_fp_cannot_reopen[] = "nntp_to_fp: can't reopen %s: ";
  1677. X  char txt_nntp_to_fd_cannot_reopen[] = "nntp_to_fd: can't reopen %s: ";
  1678. X+ char txt_nntp_authorization_failed[] = "NNTP authorization password not found for %s";
  1679. X  
  1680. X  /*
  1681. X   *  page.c
  1682. X***************
  1683. X*** 276,283 ****
  1684. X  char txt_help_p_tab[] = "<TAB>    Goto next unread article\r\n";
  1685. X  char txt_help_b[] = "b<SPACE> Back (<SPACE>=forward) a page\r\n";
  1686. X  char txt_help_bug[] = "B        Mail bug/comment to %s\r\n";
  1687. X! char txt_help_p_f[] = "fF       Post (F=copy text) a followup\r\n";
  1688. X! char txt_help_C[] = "C        Cancel current article that must have been posted by you\r\n";
  1689. X  char txt_help_ctrl_h[] = "^H       Show articles header\r\n";
  1690. X  char txt_help_h[] = "h        Command help\r\n";
  1691. X  char txt_help_i[] = "q        Return to previous level\r\n";
  1692. X--- 285,292 ----
  1693. X  char txt_help_p_tab[] = "<TAB>    Goto next unread article\r\n";
  1694. X  char txt_help_b[] = "b<SPACE> Back (<SPACE>=forward) a page\r\n";
  1695. X  char txt_help_bug[] = "B        Mail bug/comment to %s\r\n";
  1696. X! char txt_help_p_f[] = "fF       Post (f=copy text) a followup\r\n";
  1697. X! char txt_help_D[] = "D        Delete current article that must have been posted by you\r\n";
  1698. X  char txt_help_ctrl_h[] = "^H       Show articles header\r\n";
  1699. X  char txt_help_h[] = "h        Command help\r\n";
  1700. X  char txt_help_i[] = "q        Return to previous level\r\n";
  1701. X***************
  1702. X*** 287,293 ****
  1703. X  char txt_help_p_n[] = "nN       Goto to the next (N=unread) article\r\n";
  1704. X  char txt_help_o[] = "o        Output article/thread/hot/pattern/tagged articles to printer\r\n";
  1705. X  char txt_help_p_p[] = "pP       Goto the previous (P=unread) article\r\n";
  1706. X! char txt_help_p_r[] = "rR       Reply through mail (R=copy text) to author\r\n";
  1707. X  char txt_help_p_s[] = "s        Save article/thread/hot/pattern/tagged articles to file\r\n";
  1708. X  char txt_help_p_z[] = "zZ       Mark article (Z=thread) as unread\r\n";
  1709. X  char txt_help_p_ctrl_r[] = "^R$      Redisplay first ($=last) page of article\r\n";
  1710. X--- 296,302 ----
  1711. X  char txt_help_p_n[] = "nN       Goto to the next (N=unread) article\r\n";
  1712. X  char txt_help_o[] = "o        Output article/thread/hot/pattern/tagged articles to printer\r\n";
  1713. X  char txt_help_p_p[] = "pP       Goto the previous (P=unread) article\r\n";
  1714. X! char txt_help_p_r[] = "rR       Reply through mail (r=copy text) to author\r\n";
  1715. X  char txt_help_p_s[] = "s        Save article/thread/hot/pattern/tagged articles to file\r\n";
  1716. X  char txt_help_p_z[] = "zZ       Mark article (Z=thread) as unread\r\n";
  1717. X  char txt_help_p_ctrl_r[] = "^R$      Redisplay first ($=last) page of article\r\n";
  1718. X***************
  1719. X*** 301,318 ****
  1720. X  char txt_help_p_tilda[] = "~        Undo all selections in thread\r\n";
  1721. X  char txt_mail_art_to[] = "Mail article(s) to [%.*s]> ";
  1722. X  char txt_no_mail_address[] = "No mail address";
  1723. X  char txt_quit_edit_ispell_send[] = "q)uit, e)dit, i)spell, s)end";
  1724. X! char txt_quit_edit_send[] = "q)uit, e)dit, i)spell, s)end";
  1725. X! char txt_quit_edit_cancel[] = "q)uit, e)dit, c)ancel";
  1726. X  char txt_mailing_to[] = "Mailing to %s...";
  1727. X  char txt_mailed[] = "-- %d Article(s) mailed --";
  1728. X  char txt_command_failed_s[] = "Command failed: %s\n";
  1729. X! char txt_in_art_you_write[] = "In article %s you wrote:\n";
  1730. X  char txt_resp_to_poster[] = "Responses have been directed to the poster. Post anyway? (y/n): ";
  1731. X  char txt_resp_redirect[] = "Responses have been directed to the following newsgroups";
  1732. X  char txt_continue[] = "Continue? (y/n): ";
  1733. X! char txt_writes[] = "%s wrote:\n";
  1734. X! char txt_writes_name[] = "%s (%s) wrote:\n";
  1735. X  char txt_save_filename[] = "Save filename [%s]> ";
  1736. X  char txt_art_not_saved[] = "Article not saved";
  1737. X  char txt_no_filename[] = "No filename";
  1738. X--- 310,327 ----
  1739. X  char txt_help_p_tilda[] = "~        Undo all selections in thread\r\n";
  1740. X  char txt_mail_art_to[] = "Mail article(s) to [%.*s]> ";
  1741. X  char txt_no_mail_address[] = "No mail address";
  1742. X+ char txt_no_responses[] = "No responses";
  1743. X  char txt_quit_edit_ispell_send[] = "q)uit, e)dit, i)spell, s)end";
  1744. X! char txt_quit_edit_send[] = "q)uit, e)dit, s)end";
  1745. X! char txt_quit_edit_delete[] = "q)uit, e)dit, d)elete";
  1746. X  char txt_mailing_to[] = "Mailing to %s...";
  1747. X  char txt_mailed[] = "-- %d Article(s) mailed --";
  1748. X  char txt_command_failed_s[] = "Command failed: %s\n";
  1749. X! char txt_mail_quote[] = "In article %M you wrote:";
  1750. X  char txt_resp_to_poster[] = "Responses have been directed to the poster. Post anyway? (y/n): ";
  1751. X  char txt_resp_redirect[] = "Responses have been directed to the following newsgroups";
  1752. X  char txt_continue[] = "Continue? (y/n): ";
  1753. X! char txt_news_quote[] = "%F wrote:";
  1754. X  char txt_save_filename[] = "Save filename [%s]> ";
  1755. X  char txt_art_not_saved[] = "Article not saved";
  1756. X  char txt_no_filename[] = "No filename";
  1757. X***************
  1758. X*** 338,349 ****
  1759. X  char txt_crosspost_group[] = "Crosspost article(s) to group(s) [%s]> ";
  1760. X  char txt_no_group[] = "No group";
  1761. X  char txt_crosspost_an_article[] = "Crossposting article...";
  1762. X! char txt_mail_bug_report_confirm[] = "Mail bug report to %s%s? (y/n): ";
  1763. X  char txt_reply_to_author[] = "Reply to author...";
  1764. X  char txt_no_blank_line[] = "No blank line found after header information. q)uit, e)dit: ";
  1765. X! char txt_cancelling[] = "Cancelling article...";
  1766. X! char txt_art_cancelled[] = "Article cancelled";
  1767. X! char txt_art_cannot_cancel[] = "Article cannot be cancelled";
  1768. X  char txt_quit_edit_xpost[] = "q)uit, e)dit, p)ost [%.*s]: %c";
  1769. X  
  1770. X  /*
  1771. X--- 347,358 ----
  1772. X  char txt_crosspost_group[] = "Crosspost article(s) to group(s) [%s]> ";
  1773. X  char txt_no_group[] = "No group";
  1774. X  char txt_crosspost_an_article[] = "Crossposting article...";
  1775. X! char txt_mail_bug_report_confirm[] = "Mail BUG REPORT to %s%s? (y/n): ";
  1776. X  char txt_reply_to_author[] = "Reply to author...";
  1777. X  char txt_no_blank_line[] = "No blank line found after header information. q)uit, e)dit: ";
  1778. X! char txt_deleting_art[] = "Deleting article...";
  1779. X! char txt_art_deleted[] = "Article deleted";
  1780. X! char txt_art_cannot_delete[] = "Article cannot be deleted";
  1781. X  char txt_quit_edit_xpost[] = "q)uit, e)dit, p)ost [%.*s]: %c";
  1782. X  
  1783. X  /*
  1784. X***************
  1785. X*** 351,356 ****
  1786. X--- 360,366 ----
  1787. X   */
  1788. X  
  1789. X  char txt_hit_any_key[] = "-- Press any key to continue --";
  1790. X+ char txt_cmdline_hit_any_key[] = "Press any key to continue...";
  1791. X  
  1792. X  /*
  1793. X   *  rcfile.c
  1794. X***************
  1795. X*** 382,389 ****
  1796. X--- 392,406 ----
  1797. X  char txt_post_process_none[] = "None";
  1798. X  char txt_post_process_sh[] = "Shell archive";
  1799. X  char txt_post_process_uudecode[] = "Uudecode";
  1800. X+ #ifdef AMIGA
  1801. X+ char txt_post_process_uud_lst_zoo[] = "Uudecode & list lharc archive";
  1802. X+ char txt_post_process_uud_ext_zoo[] = "Uudecode & extract lharc archive";
  1803. X+ #else
  1804. X  char txt_post_process_uud_lst_zoo[] = "Uudecode & list zoo archive";
  1805. X  char txt_post_process_uud_ext_zoo[] = "Uudecode & extract zoo archive";
  1806. X+ #endif
  1807. X+ char txt_post_process_uud_lst_zip[] = "Uudecode & list zip archive";
  1808. X+ char txt_post_process_uud_ext_zip[] = "Uudecode & extract zip archive";
  1809. X  char txt_sort_by_nothing[] = "Nothing";
  1810. X  char txt_sort_by_subj_descend[] = "Subject: field (descending)";
  1811. X  char txt_sort_by_subj_ascend[] = "Subject: field (ascending)";
  1812. X***************
  1813. X*** 422,427 ****
  1814. X--- 439,445 ----
  1815. X  char txt_extracting_shar[] ="\r\nExtracting %s...\r\n";
  1816. X  char txt_delete_processed_files[] = "Delete saved files that have been post processed? (y/n): ";
  1817. X  char txt_post_processing_failed[] = "Post processing failed";
  1818. X+ char txt_testing_archive[] = "\r\n\r\nTesting %s archive...\r\n"; 
  1819. X  char txt_listing_archive[] = "\r\n\r\nListing %s archive...\r\n"; 
  1820. X  char txt_extracting_archive[] = "\r\n\r\nExtracting %s archive...\r\n";
  1821. X  char txt_checksum_of_file[] = "\r\n\r\nChecksum of %s...\r\n\r\n"; 
  1822. X***************
  1823. X*** 436,441 ****
  1824. X--- 454,461 ----
  1825. X   *  select.c
  1826. X   */
  1827. X  
  1828. X+ char txt_reading_all_groups[] = "Reading all groups...";
  1829. X+ char txt_reading_new_groups[] = "Reading unread groups...";
  1830. X  char txt_moving[] = "Moving %s...";
  1831. X  #ifdef NO_REGEX
  1832. X  char txt_subscribe_pattern[] = "Enter subscribe pattern> ";
  1833. XOnly in .: mail.c
  1834. Xdiff -rcs ../1.16/main.c ./main.c
  1835. X*** ../1.16/main.c    Sun Nov 15 18:41:54 1992
  1836. X--- ./main.c    Sun Nov 15 16:02:48 1992
  1837. X***************
  1838. X*** 3,9 ****
  1839. X   *  Module    : main.c
  1840. X   *  Author    : I.Lea & R.Skrenta
  1841. X   *  Created   : 01-04-91
  1842. X!  *  Updated   : 13-09-92
  1843. X   *  Notes     :
  1844. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1845. X   *              You may  freely  copy or  redistribute  this software,
  1846. X--- 3,9 ----
  1847. X   *  Module    : main.c
  1848. X   *  Author    : I.Lea & R.Skrenta
  1849. X   *  Created   : 01-04-91
  1850. X!  *  Updated   : 07-11-92
  1851. X   *  Notes     :
  1852. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1853. X   *              You may  freely  copy or  redistribute  this software,
  1854. X***************
  1855. X*** 14,21 ****
  1856. X  
  1857. X  #include    "tin.h"
  1858. X  
  1859. X  /*
  1860. X!  * OK lets start the ball rolling...
  1861. X   */
  1862. X   
  1863. X  void main (argc, argv)
  1864. X--- 14,26 ----
  1865. X  
  1866. X  #include    "tin.h"
  1867. X  
  1868. X+ 
  1869. X+ static char **cmdargs;
  1870. X+ static int num_cmdargs;
  1871. X+ static int max_cmdargs;
  1872. X+ 
  1873. X  /*
  1874. X!  *  OK lets start the ball rolling...
  1875. X   */
  1876. X   
  1877. X  void main (argc, argv)
  1878. X***************
  1879. X*** 38,44 ****
  1880. X      read_news_via_nntp = TRUE;
  1881. X  #else
  1882. X      /* 
  1883. X!      * rtin/cdtin so read news remotely via NNTP 
  1884. X       */
  1885. X      if (progname[0] == 'r' || (progname[0] == 'c' && progname[1] == 'd' )) {
  1886. X  #        ifdef NNTP_ABLE            
  1887. X--- 43,49 ----
  1888. X      read_news_via_nntp = TRUE;
  1889. X  #else
  1890. X      /* 
  1891. X!      *  rtin/cdtin so read news remotely via NNTP 
  1892. X       */
  1893. X      if (progname[0] == 'r' || (progname[0] == 'c' && progname[1] == 'd' )) {
  1894. X  #        ifdef NNTP_ABLE            
  1895. X***************
  1896. X*** 51,57 ****
  1897. X  #endif
  1898. X  
  1899. X      /*
  1900. X!      * set up initial array sizes, char *'s: homedir, newsrc, etc. 
  1901. X       */
  1902. X      init_alloc ();
  1903. X      hash_init ();
  1904. X--- 56,62 ----
  1905. X  #endif
  1906. X  
  1907. X      /*
  1908. X!      *  Set up initial array sizes, char *'s: homedir, newsrc, etc. 
  1909. X       */
  1910. X      init_alloc ();
  1911. X      hash_init ();
  1912. X***************
  1913. X*** 58,64 ****
  1914. X      init_selfinfo ();
  1915. X  
  1916. X      /*
  1917. X!      * process envargs & command line options
  1918. X       */
  1919. X      read_cmd_line_options (argc, argv);
  1920. X      if (update_fork || (update && verbose) || !update) {
  1921. X--- 63,69 ----
  1922. X      init_selfinfo ();
  1923. X  
  1924. X      /*
  1925. X!      *  Process envargs & command line options
  1926. X       */
  1927. X      read_cmd_line_options (argc, argv);
  1928. X      if (update_fork || (update && verbose) || !update) {
  1929. X***************
  1930. X*** 66,87 ****
  1931. X      }
  1932. X  
  1933. X      /*
  1934. X!      *  if specified connect to (cdrom pseudo) nntp server
  1935. X       */
  1936. X      nntp_open ();
  1937. X  
  1938. X      /*
  1939. X!      *  log username info to local/central logfile (NNTP XUSER)
  1940. X       */
  1941. X      log_user ();
  1942. X  
  1943. X      /*
  1944. X!      *  load the active file into active[]
  1945. X       */
  1946. X!     read_active_file ();
  1947. X  
  1948. X      /*
  1949. X!      *  load the group specific attributes file into active[]
  1950. X       */
  1951. X      read_attributes_file ();
  1952. X  
  1953. X--- 71,98 ----
  1954. X      }
  1955. X  
  1956. X      /*
  1957. X!      *  If specified connect to (cdrom pseudo) nntp server
  1958. X       */
  1959. X      nntp_open ();
  1960. X  
  1961. X      /*
  1962. X!      *  Log username info to local/central logfile (NNTP XUSER)
  1963. X       */
  1964. X      log_user ();
  1965. X  
  1966. X      /*
  1967. X!      *  Read message of the day file from newsadmin
  1968. X!      */
  1969. X!     read_motd_file ();
  1970. X! 
  1971. X!     /*
  1972. X!      *  Load the mail & news active files into active[]
  1973. X       */
  1974. X!     read_mail_active_file ();
  1975. X!     read_news_active_file ();
  1976. X  
  1977. X      /*
  1978. X!      *  Load the group specific attributes file into active[]
  1979. X       */
  1980. X      read_attributes_file ();
  1981. X  
  1982. X***************
  1983. X*** 95,102 ****
  1984. X      }
  1985. X      
  1986. X      /*
  1987. X!      * read text descriptions for each group from LIBDIR/newsgroups
  1988. X       */
  1989. X      read_newsgroups_file ();
  1990. X      debug_print_active ();
  1991. X      
  1992. X--- 106,115 ----
  1993. X      }
  1994. X      
  1995. X      /*
  1996. X!      *  Read text descriptions for mail & news groups from 
  1997. X!      *  ~/.tin/mailgroups & LIBDIR/newsgroups respectively
  1998. X       */
  1999. X+     read_mailgroups_file ();
  2000. X      read_newsgroups_file ();
  2001. X      debug_print_active ();
  2002. X      
  2003. X***************
  2004. X*** 104,121 ****
  2005. X          write_rcfile ();
  2006. X      }    
  2007. X  
  2008. X!     if (optind < argc) {
  2009. X!         while (optind < argc) {
  2010. X!             for (i = 0 ; i < num_active ; i++) {
  2011. X!                 if (wildmat (active[i].name, argv[optind])) {        
  2012. X!                     if (add_group (active[i].name, TRUE) < 0) {
  2013. X!                         error_message (txt_not_in_active_file, active[i].name);
  2014. X!                     }
  2015. X!                 }    
  2016. X!             }    
  2017. X!             optind++;
  2018. X!         }
  2019. X!     } else {
  2020. X          backup_newsrc ();
  2021. X          read_newsrc (TRUE);
  2022. X          toggle_my_groups (show_only_unread_groups, "");
  2023. X--- 117,123 ----
  2024. X          write_rcfile ();
  2025. X      }    
  2026. X  
  2027. X!     if (! read_cmd_line_groups ()) {
  2028. X          backup_newsrc ();
  2029. X          read_newsrc (TRUE);
  2030. X          toggle_my_groups (show_only_unread_groups, "");
  2031. X***************
  2032. X*** 122,169 ****
  2033. X      }
  2034. X  
  2035. X      /*
  2036. X!      *  read in users kill/auto-select (hot) file
  2037. X       */
  2038. X      killed_articles = read_kill_file ();
  2039. X      
  2040. X      /*
  2041. X!      *  check/start if any new/unread articles
  2042. X       */
  2043. X      start_groupnum = check_for_any_new_news (check_any_unread, start_any_unread);
  2044. X  
  2045. X      /*
  2046. X!      *  mail any new articles to specified user
  2047. X       *  or
  2048. X!      *  save any new articles to savedir structure for later reading
  2049. X       */
  2050. X      save_or_mail_new_news ();
  2051. X      
  2052. X      /*
  2053. X!      *  update index files
  2054. X       */
  2055. X      update_index_files ();
  2056. X      
  2057. X      if (! InitScreen ()) {
  2058. X          error_message (txt_screen_init_failed, progname);
  2059. X          exit (1);
  2060. X      }
  2061. X- 
  2062. X-     /*
  2063. X-      * Set up screen and switch to raw mode
  2064. X-      */
  2065. X      setup_screen ();
  2066. X  
  2067. X      /*
  2068. X!      *  if first time print welcome screen and auto-subscribe
  2069. X       *  to groups specified in /usr/lib/news/subscribe locally
  2070. X       *  or via NNTP if reading news remotely (LIST SUBSCRIBE)
  2071. X       */
  2072. X!     if (created_rcdir && update == FALSE) {
  2073. X          show_intro_page ();
  2074. X      }
  2075. X      
  2076. X      /*
  2077. X!      * main work loop
  2078. X       */
  2079. X      selection_index (start_groupnum);
  2080. X  }
  2081. X--- 124,170 ----
  2082. X      }
  2083. X  
  2084. X      /*
  2085. X!      *  Read in users kill/auto-select (hot) file
  2086. X       */
  2087. X      killed_articles = read_kill_file ();
  2088. X      
  2089. X      /*
  2090. X!      *  Check/start if any new/unread articles
  2091. X       */
  2092. X      start_groupnum = check_for_any_new_news (check_any_unread, start_any_unread);
  2093. X  
  2094. X      /*
  2095. X!      *  Mail any new articles to specified user
  2096. X       *  or
  2097. X!      *  Save any new articles to savedir structure for later reading
  2098. X       */
  2099. X      save_or_mail_new_news ();
  2100. X      
  2101. X      /*
  2102. X!      *  Update index files
  2103. X       */
  2104. X      update_index_files ();
  2105. X      
  2106. X+     /*
  2107. X+      *  Set up screen and switch to raw mode
  2108. X+      */
  2109. X      if (! InitScreen ()) {
  2110. X          error_message (txt_screen_init_failed, progname);
  2111. X          exit (1);
  2112. X      }
  2113. X      setup_screen ();
  2114. X  
  2115. X      /*
  2116. X!      *  If first time print welcome screen and auto-subscribe
  2117. X       *  to groups specified in /usr/lib/news/subscribe locally
  2118. X       *  or via NNTP if reading news remotely (LIST SUBSCRIBE)
  2119. X       */
  2120. X!     if (created_rcdir && !update) {
  2121. X          show_intro_page ();
  2122. X      }
  2123. X      
  2124. X      /*
  2125. X!      *  Work loop
  2126. X       */
  2127. X      selection_index (start_groupnum);
  2128. X  }
  2129. X***************
  2130. X*** 181,189 ****
  2131. X      envargs (&argc, &argv, "TINRC");
  2132. X      
  2133. X  #ifdef INDEX_DAEMON
  2134. X!     while ((ch = getopt (argc, argv, "D:f:hI:vV")) != EOF) {
  2135. X  #else
  2136. X!     while ((ch = getopt (argc, argv, "cD:f:hHI:m:M:p:qrRs:SuUvVwzZ")) != EOF) {
  2137. X  #endif
  2138. X          switch (ch) {
  2139. X              case 'c':
  2140. X--- 182,190 ----
  2141. X      envargs (&argc, &argv, "TINRC");
  2142. X      
  2143. X  #ifdef INDEX_DAEMON
  2144. X!     while ((ch = getopt (argc, argv, "D:f:hI:PvV")) != EOF) {
  2145. X  #else
  2146. X!     while ((ch = getopt (argc, argv, "cD:f:hHI:m:M:p:PqrRs:SuUvVwzZ")) != EOF) {
  2147. SHAR_EOF
  2148. true || echo 'restore of tin-1.17.patch failed'
  2149. fi
  2150. echo 'End of tin-1.17 part 4'
  2151. echo 'File tin-1.17.patch is continued in part 5'
  2152. echo 5 > _shar_seq_.tmp
  2153. exit 0
  2154.  
  2155. --
  2156. NAMES  Iain Lea    Iain.Lea%anl433.uucp@Germany.EU.net
  2157. SNAIL  Siemens AG, ANL A433SZ, Gruendlacher Str. 248, 8510 Fuerth, Germany.
  2158. PHONE  +49-911-3089-407 (work) +49-911-331963 (home) +49-911-3089-290 (FAX)  
  2159.