home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume29 / tin / patch02c < prev    next >
Text File  |  1992-04-04  |  52KB  |  1,909 lines

  1. Newsgroups: comp.sources.misc
  2. From: iain%anl433.uucp@germany.eu.net (Iain Lea)
  3. Subject:  v29i052:  tin - threaded full screen newsreader v1.1 PL2, Patch02c/4
  4. Message-ID: <1992Apr3.225948.7845@sparky.imd.sterling.com>
  5. X-Md4-Signature: 80e204d469db66e357e1ff55eb3f2c20
  6. Date: Fri, 3 Apr 1992 22:59:48 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: iain%anl433.uucp@germany.eu.net (Iain Lea)
  10. Posting-number: Volume 29, Issue 52
  11. Archive-name: tin/patch02c
  12. Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
  13. Patch-To: tin: Volume 29, Issue 19-30
  14.  
  15. #!/bin/sh
  16. # this is patch112.shar.03 (part 3 of tin)
  17. # do not concatenate these parts, unpack them in order with /bin/sh
  18. # file tin.patch112 continued
  19. #
  20. if test ! -r _shar_seq_.tmp; then
  21.     echo 'Please unpack part 1 first!'
  22.     exit 1
  23. fi
  24. (read Scheck
  25.  if test "$Scheck" != 3; then
  26.     echo Please unpack part "$Scheck" next!
  27.     exit 1
  28.  else
  29.     exit 0
  30.  fi
  31. ) < _shar_seq_.tmp || exit 1
  32. if test ! -f _shar_wnt_.tmp; then
  33.     echo 'x - still skipping tin.patch112'
  34. else
  35. echo 'x - continuing file tin.patch112'
  36. sed 's/^X//' << 'SHAR_EOF' >> 'tin.patch112' &&
  37. !         set_tin_uid_gid ();
  38. X          return FALSE;
  39. X      }
  40. X      chmod(nam, 0600);
  41. --- 576,584 ----
  42. X      
  43. X      wait_message (txt_mail_bug_report);
  44. X      
  45. X      sprintf (nam, "%s/.bugreport", homedir);
  46. X      if ((fp = fopen (nam, "w")) == NULL) {
  47. !         perror_message (txt_cannot_open, nam);
  48. X          return FALSE;
  49. X      }
  50. X      chmod(nam, 0600);
  51. ***************
  52. *** 551,557 ****
  53. X          start_line_offset++;
  54. X      }
  55. X  
  56. !     if ((fp_uname = popen ("uname -a", "r")) != NULL) {
  57. X          fprintf (fp, "\n");
  58. X          start_line_offset++;
  59. X          while (fgets (buf, sizeof (buf), fp_uname) != NULL) {
  60. --- 595,601 ----
  61. X          start_line_offset++;
  62. X      }
  63. X  
  64. !     if ((fp_uname = (FILE *) popen ("uname -a", "r")) != NULL) {
  65. X          fprintf (fp, "\n");
  66. X          start_line_offset++;
  67. X          while (fgets (buf, sizeof (buf), fp_uname) != NULL) {
  68. ***************
  69. *** 599,605 ****
  70. X          switch (ch) {
  71. X          case 'e':
  72. X              invoke_editor (nam);
  73. -             set_real_uid_gid ();
  74. X              break;
  75. X  
  76. X          case 'a':
  77. --- 643,648 ----
  78. ***************
  79. *** 606,612 ****
  80. X          case ESC:
  81. X              unlink (nam);
  82. X              clear_message ();
  83. -             set_tin_uid_gid ();
  84. X              return TRUE;
  85. X  
  86. X          case 's':
  87. --- 649,654 ----
  88. ***************
  89. *** 639,647 ****
  90. X      }
  91. X  
  92. X  mail_bug_report_done:
  93. -     set_real_uid_gid ();
  94. X      unlink (nam);
  95. -     set_tin_uid_gid ();
  96. X  
  97. X      return TRUE;
  98. X  }
  99. --- 681,687 ----
  100. ***************
  101. *** 662,673 ****
  102. X      
  103. X      wait_message (txt_reply_to_author);
  104. X  
  105. -     set_real_uid_gid ();
  106. X      sprintf (nam, "%s/.letter", homedir);
  107. X      if ((fp = fopen (nam, "w")) == NULL) {
  108. !         error_message (txt_cannot_open, nam);
  109. !         set_tin_uid_gid ();
  110. X          return (redraw_screen);
  111. X      }
  112. X      chmod (nam, 0600);
  113. --- 702,710 ----
  114. X      
  115. X      wait_message (txt_reply_to_author);
  116. X  
  117. X      sprintf (nam, "%s/.letter", homedir);
  118. X      if ((fp = fopen (nam, "w")) == NULL) {
  119. !         perror_message (txt_cannot_open, nam);
  120. X          return (redraw_screen);
  121. X      }
  122. X      chmod (nam, 0600);
  123. ***************
  124. *** 700,706 ****
  125. X          switch (ch) {
  126. X          case 'e':
  127. X              invoke_editor (nam);
  128. -             set_real_uid_gid ();
  129. X              redraw_screen = TRUE;
  130. X              break;
  131. X  
  132. --- 737,742 ----
  133. ***************
  134. *** 708,714 ****
  135. X          case ESC:
  136. X              unlink (nam);
  137. X              clear_message ();
  138. -             set_tin_uid_gid ();
  139. X              return (redraw_screen);
  140. X  
  141. X          case 's':
  142. --- 744,749 ----
  143. ***************
  144. *** 736,744 ****
  145. X      }
  146. X  
  147. X  mail_to_author_done:
  148. -     set_real_uid_gid ();
  149. X      unlink (nam);
  150. -     set_tin_uid_gid ();
  151. X  
  152. X      return (redraw_screen);
  153. X  }
  154. --- 771,777 ----
  155. ***************
  156. *** 761,767 ****
  157. X      *new_value = '\0';
  158. X  
  159. X      if ((fp = fopen (file, "r")) == NULL) {
  160. !         error_message (txt_cannot_open, file);
  161. X          return;
  162. X      }
  163. X  
  164. --- 794,800 ----
  165. X      *new_value = '\0';
  166. X  
  167. X      if ((fp = fopen (file, "r")) == NULL) {
  168. !         perror_message (txt_cannot_open, file);
  169. X          return;
  170. X      }
  171. X  
  172. ***************
  173. *** 817,828 ****
  174. X      
  175. X      clear_message ();
  176. X      
  177. -     set_real_uid_gid ();
  178. X      sprintf (cancel, "%s/.cancel", homedir);
  179. X      if ((fp = fopen (cancel, "w")) == NULL) {
  180. !         error_message (txt_cannot_open, cancel);
  181. !         set_tin_uid_gid ();
  182. X          return (redraw_screen);
  183. X      }
  184. X      chmod (cancel, 0600);
  185. --- 850,858 ----
  186. X      
  187. X      clear_message ();
  188. X      
  189. X      sprintf (cancel, "%s/.cancel", homedir);
  190. X      if ((fp = fopen (cancel, "w")) == NULL) {
  191. !         perror_message (txt_cannot_open, cancel);
  192. X          return (redraw_screen);
  193. X      }
  194. X      chmod (cancel, 0600);
  195. ***************
  196. *** 861,867 ****
  197. X          switch (ch) {
  198. X          case 'e':
  199. X              invoke_editor (cancel);
  200. -              set_real_uid_gid ();
  201. X              redraw_screen = TRUE;
  202. X              break;
  203. X  
  204. --- 891,896 ----
  205. ***************
  206. *** 869,875 ****
  207. X          case ESC:
  208. X              unlink (cancel);
  209. X              clear_message ();
  210. -             set_tin_uid_gid ();
  211. X              return (redraw_screen);
  212. X  
  213. X          case 'c':
  214. --- 898,903 ----
  215. ***************
  216. *** 885,893 ****
  217. X      }
  218. X  
  219. X  cancel_article_done:
  220. -     set_real_uid_gid ();
  221. X      unlink (cancel);
  222. -     set_tin_uid_gid ();
  223. X  
  224. X      return (redraw_screen);
  225. X  }
  226. --- 913,919 ----
  227. ***************
  228. *** 915,921 ****
  229. X      ret_code = invoke_cmd (buf);
  230. X  #endif /* NNTP_INEWS */
  231. X  
  232. -     set_real_uid_gid ();
  233. X      return (ret_code);
  234. X  }
  235. X  
  236. --- 941,946 ----
  237. ***************
  238. *** 926,931 ****
  239. --- 951,960 ----
  240. X  {
  241. X      FILE *sigf;
  242. X  
  243. + #ifdef NNTP_INEWS
  244. +     flag = TRUE;
  245. + #endif
  246. +     
  247. X      if ((sigf = fopen (signature, "r")) != NULL) {
  248. X          if (flag) {
  249. X              fprintf (fp, "\n--\n");
  250. Only in .: post.o
  251. diff -rcs ../111/prompt.c ./prompt.c
  252. *** ../111/prompt.c    Fri Mar 27 14:01:04 1992
  253. --- ./prompt.c    Thu Mar 26 15:05:40 1992
  254. ***************
  255. *** 28,34 ****
  256. --- 28,36 ----
  257. X      int num;
  258. X      int time_remaining;
  259. X  
  260. + #ifndef NO_RESYNC_ACTIVE_FILE
  261. X      time_remaining = alarm (0);
  262. + #endif
  263. X      
  264. X      clear_message ();
  265. X  
  266. ***************
  267. *** 43,49 ****
  268. --- 45,53 ----
  269. X  
  270. X      clear_message ();
  271. X  
  272. + #ifndef NO_RESYNC_ACTIVE_FILE
  273. X      alarm (time_remaining);
  274. + #endif
  275. X      
  276. X      return (num);
  277. X  }
  278. ***************
  279. *** 60,67 ****
  280. X  {
  281. X      char *p;
  282. X      int time_remaining;
  283. !     
  284. X      time_remaining = alarm (0);
  285. X  
  286. X      clear_message ();
  287. X  
  288. --- 64,73 ----
  289. X  {
  290. X      char *p;
  291. X      int time_remaining;
  292. ! #ifndef NO_RESYNC_ACTIVE_FILE
  293. X      time_remaining = alarm (0);
  294. + #endif
  295. X  
  296. X      clear_message ();
  297. X  
  298. ***************
  299. *** 68,81 ****
  300. X      if ((p = getline (prompt, FALSE, (char *) 0)) == (char *) 0) {
  301. X          buf[0] = '\0';
  302. X          clear_message ();
  303. X          alarm (time_remaining);
  304. X          return FALSE;
  305. X      }
  306. X      strcpy (buf, p);
  307. X      
  308. X      clear_message ();
  309. X      alarm (time_remaining);
  310. X      
  311. X      return TRUE;
  312. X  }
  313. --- 74,90 ----
  314. X      if ((p = getline (prompt, FALSE, (char *) 0)) == (char *) 0) {
  315. X          buf[0] = '\0';
  316. X          clear_message ();
  317. + #ifndef NO_RESYNC_ACTIVE_FILE
  318. X          alarm (time_remaining);
  319. + #endif
  320. X          return FALSE;
  321. X      }
  322. X      strcpy (buf, p);
  323. X      
  324. X      clear_message ();
  325. ! #ifndef NO_RESYNC_ACTIVE_FILE
  326. X      alarm (time_remaining);
  327. + #endif
  328. X      
  329. X      return TRUE;
  330. X  }
  331. ***************
  332. *** 93,110 ****
  333. X  {
  334. X      char *p;
  335. X      int time_remaining;
  336. !     
  337. X      time_remaining = alarm (0);
  338. X  
  339. X      MoveCursor (line, col);
  340. X  
  341. X      if ((p = getline ("", FALSE, var)) == (char *) 0) {
  342. X          alarm (time_remaining);
  343. X          return FALSE;
  344. X      }
  345. X      strcpy (var, p);
  346. X      alarm (time_remaining);
  347. X      
  348. X      return TRUE;
  349. X  }
  350. --- 102,123 ----
  351. X  {
  352. X      char *p;
  353. X      int time_remaining;
  354. ! #ifndef NO_RESYNC_ACTIVE_FILE
  355. X      time_remaining = alarm (0);
  356. + #endif
  357. X  
  358. X      MoveCursor (line, col);
  359. X  
  360. X      if ((p = getline ("", FALSE, var)) == (char *) 0) {
  361. + #ifndef NO_RESYNC_ACTIVE_FILE
  362. X          alarm (time_remaining);
  363. + #endif
  364. X          return FALSE;
  365. X      }
  366. X      strcpy (var, p);
  367. ! #ifndef NO_RESYNC_ACTIVE_FILE
  368. X      alarm (time_remaining);
  369. + #endif
  370. X      
  371. X      return TRUE;
  372. X  }
  373. ***************
  374. *** 117,124 ****
  375. X  {
  376. X      char ch;
  377. X      int time_remaining;
  378. !     
  379. X      time_remaining = alarm (0);
  380. X  
  381. X      MoveCursor (line, 0);
  382. X      CleartoEOLN ();
  383. --- 130,138 ----
  384. X  {
  385. X      char ch;
  386. X      int time_remaining;
  387. ! #ifndef NO_RESYNC_ACTIVE_FILE
  388. X      time_remaining = alarm (0);
  389. + #endif
  390. X  
  391. X      MoveCursor (line, 0);
  392. X      CleartoEOLN ();
  393. ***************
  394. *** 141,148 ****
  395. X          }
  396. X          fflush (stdout);
  397. X      }
  398. X      alarm (time_remaining);
  399. X  
  400. X      return (ch == 'y' ? TRUE : FALSE);
  401. X  }
  402. --- 155,163 ----
  403. X          }
  404. X          fflush (stdout);
  405. X      }
  406. ! #ifndef NO_RESYNC_ACTIVE_FILE
  407. X      alarm (time_remaining);
  408. + #endif
  409. X  
  410. X      return (ch == 'y' ? TRUE : FALSE);
  411. X  }
  412. ***************
  413. *** 157,164 ****
  414. X  {
  415. X      int ch, var_orig;
  416. X      int time_remaining;
  417. !     
  418. X      time_remaining = alarm (0);
  419. X  
  420. X      var_orig = *var;
  421. X  
  422. --- 172,180 ----
  423. X  {
  424. X      int ch, var_orig;
  425. X      int time_remaining;
  426. ! #ifndef NO_RESYNC_ACTIVE_FILE
  427. X      time_remaining = alarm (0);
  428. + #endif
  429. X  
  430. X      var_orig = *var;
  431. X  
  432. ***************
  433. *** 177,184 ****
  434. X          printf ("%s", (*var ? "ON " : "OFF"));
  435. X          fflush (stdout);
  436. X      }
  437. X      alarm (time_remaining);
  438. X  }
  439. X  
  440. X  
  441. --- 193,201 ----
  442. X          printf ("%s", (*var ? "ON " : "OFF"));
  443. X          fflush (stdout);
  444. X      }
  445. ! #ifndef NO_RESYNC_ACTIVE_FILE
  446. X      alarm (time_remaining);
  447. + #endif
  448. X  }
  449. X  
  450. X  
  451. ***************
  452. *** 186,198 ****
  453. X  {
  454. X      char ch;
  455. X      int time_remaining;
  456. !     
  457. X      time_remaining = alarm (0);
  458. X      
  459. X      info_message (txt_hit_any_key);
  460. X      ch = (char) ReadCh ();
  461. X      alarm (time_remaining);
  462. X  }
  463. X  
  464. X  
  465. --- 203,217 ----
  466. X  {
  467. X      char ch;
  468. X      int time_remaining;
  469. ! #ifndef NO_RESYNC_ACTIVE_FILE
  470. X      time_remaining = alarm (0);
  471. + #endif
  472. X      
  473. X      info_message (txt_hit_any_key);
  474. X      ch = (char) ReadCh ();
  475. ! #ifndef NO_RESYNC_ACTIVE_FILE
  476. X      alarm (time_remaining);
  477. + #endif
  478. X  }
  479. X  
  480. X  
  481. Only in .: prompt.o
  482. diff -rcs ../111/proto.h ./proto.h
  483. *** ../111/proto.h    Fri Mar 27 14:01:21 1992
  484. --- ./proto.h    Sat Mar 28 13:18:44 1992
  485. ***************
  486. *** 16,22 ****
  487. X  extern int parse_headers(int fd, struct article_t *h);
  488. X  extern void dump_index_file(char *group, int killed);
  489. X  extern int load_index_file(char *group_name);
  490. ! extern void find_index_file(char *group);
  491. X  extern void do_update(void);
  492. X  extern void reload_index_file(char *group, int killed);
  493. X  extern char *parse_date(char *date, char *str);
  494. --- 16,22 ----
  495. X  extern int parse_headers(int fd, struct article_t *h);
  496. X  extern void dump_index_file(char *group, int killed);
  497. X  extern int load_index_file(char *group_name);
  498. ! extern void find_index_file(char *group, char *group_path);
  499. X  extern void do_update(void);
  500. X  extern void reload_index_file(char *group, int killed);
  501. X  extern char *parse_date(char *date, char *str);
  502. ***************
  503. *** 124,129 ****
  504. --- 124,130 ----
  505. X  extern int mail_check(void);
  506. X  extern void parse_from(char *str, char *addr, char *name);
  507. X  extern long my_atol(char *s, int n);
  508. + extern int my_stricmp(char *p, char *q);
  509. X  extern char *eat_re(char *s);
  510. X  extern long hash_s(char *s);
  511. X  extern void my_strncpy(char *p, char *q, int n);
  512. ***************
  513. *** 183,188 ****
  514. --- 184,190 ----
  515. X  /* post.c */
  516. X  extern int user_posted_messages(void);
  517. X  extern void update_art_posted_file(char *group, char *subj);
  518. + extern int post_header_ok(char *article);
  519. X  extern int post_base(char *group, int *posted);
  520. X  extern int post_response(char *group, int respnum, int copy_text);
  521. X  extern int mail_to_someone(char *address, int confirm_to_mail);
  522. ***************
  523. *** 229,234 ****
  524. --- 231,237 ----
  525. X  extern void info_message(char *str);
  526. X  extern void wait_message(char *str);
  527. X  extern void error_message(char *template, char *str);
  528. + extern void perror_message(char *template, char *str);
  529. X  extern void clear_message(void);
  530. X  extern void center_line(int line, int inverse, char *str);
  531. X  extern void draw_arrow(int line);
  532. ***************
  533. *** 312,318 ****
  534. X  extern int parse_headers(/*int fd, struct article_t *h*/);
  535. X  extern void dump_index_file(/*char *group, int killed*/);
  536. X  extern int load_index_file(/*char *group_name*/);
  537. ! extern void find_index_file(/*char *group*/);
  538. X  extern void do_update(/*void*/);
  539. X  extern void reload_index_file(/*char *group, int killed*/);
  540. X  extern char *parse_date(/*char *date, char *str*/);
  541. --- 315,321 ----
  542. X  extern int parse_headers(/*int fd, struct article_t *h*/);
  543. X  extern void dump_index_file(/*char *group, int killed*/);
  544. X  extern int load_index_file(/*char *group_name*/);
  545. ! extern void find_index_file(/*char *group, char *group_path*/);
  546. X  extern void do_update(/*void*/);
  547. X  extern void reload_index_file(/*char *group, int killed*/);
  548. X  extern char *parse_date(/*char *date, char *str*/);
  549. ***************
  550. *** 420,425 ****
  551. --- 423,429 ----
  552. X  extern int mail_check(/*void*/);
  553. X  extern void parse_from(/*char *str, char *addr, char *name*/);
  554. X  extern long my_atol(/*char *s, int n*/);
  555. + extern int my_stricmp(/*char *p, char *q*/);
  556. X  extern char *eat_re(/*char *s*/);
  557. X  extern long hash_s(/*char *s*/);
  558. X  extern void my_strncpy(/*char *p, char *q, int n*/);
  559. ***************
  560. *** 479,484 ****
  561. --- 483,489 ----
  562. X  /* post.c */
  563. X  extern int user_posted_messages(/*void*/);
  564. X  extern void update_art_posted_file(/*char *group, char *subj*/);
  565. + extern int post_header_ok(/*char *article*/);
  566. X  extern int post_base(/*char *group, int *posted*/);
  567. X  extern int post_response(/*char *group, int respnum, int copy_text*/);
  568. X  extern int mail_to_someone(/*char *address, int confirm_to_mail*/);
  569. ***************
  570. *** 525,530 ****
  571. --- 530,536 ----
  572. X  extern void info_message(/*char *str*/);
  573. X  extern void wait_message(/*char *str*/);
  574. X  extern void error_message(/*char *template, char *str*/);
  575. + extern void perror_message(/*char *template, char *str*/);
  576. X  extern void clear_message(/*void*/);
  577. X  extern void center_line(/*int line, int inverse, char *str*/);
  578. X  extern void draw_arrow(/*int line*/);
  579. diff -rcs ../111/rcfile.c ./rcfile.c
  580. *** ../111/rcfile.c    Fri Mar 27 14:01:04 1992
  581. --- ./rcfile.c    Thu Mar 26 16:54:41 1992
  582. ***************
  583. *** 3,9 ****
  584. X   *  Module    : rcfile.c
  585. X   *  Author    : I.Lea
  586. X   *  Created   : 01-04-91
  587. !  *  Updated   : 13-03-92
  588. X   *  Notes     :
  589. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  590. X   *              You may  freely  copy or  redistribute  this software,
  591. --- 3,9 ----
  592. X   *  Module    : rcfile.c
  593. X   *  Author    : I.Lea
  594. X   *  Created   : 01-04-91
  595. !  *  Updated   : 26-03-92
  596. X   *  Notes     :
  597. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  598. X   *              You may  freely  copy or  redistribute  this software,
  599. ***************
  600. *** 35,42 ****
  601. X              if (buf[0] != '#') { 
  602. X                  if (strncmp (buf, "save_archive=", 13) == 0) {
  603. X                      save_archive_name = (strncmp (&buf[13], "ON", 2) == 0 ? TRUE : FALSE);
  604. !                 } else if (strncmp (buf, "save_separate=", 14) == 0) {
  605. !                     save_separate = (strncmp (&buf[14], "ON", 2) == 0 ? TRUE : FALSE);
  606. X                  } else if (strncmp (buf, "mark_saved_read=", 16) == 0) {
  607. X                      mark_saved_read = (strncmp (&buf[16], "ON", 2) == 0 ? TRUE : FALSE);
  608. X                  } else if (strncmp (buf, "kill_articles=", 14) == 0) {
  609. --- 35,42 ----
  610. X              if (buf[0] != '#') { 
  611. X                  if (strncmp (buf, "save_archive=", 13) == 0) {
  612. X                      save_archive_name = (strncmp (&buf[13], "ON", 2) == 0 ? TRUE : FALSE);
  613. !                 } else if (strncmp (buf, "start_editor_offset=", 20) == 0) {
  614. !                     start_editor_offset = (strncmp (&buf[20], "ON", 2) == 0 ? TRUE : FALSE);
  615. X                  } else if (strncmp (buf, "mark_saved_read=", 16) == 0) {
  616. X                      mark_saved_read = (strncmp (&buf[16], "ON", 2) == 0 ? TRUE : FALSE);
  617. X                  } else if (strncmp (buf, "kill_articles=", 14) == 0) {
  618. ***************
  619. *** 126,133 ****
  620. X  {
  621. X      FILE *fp;
  622. X  
  623. -     set_real_uid_gid ();
  624. -     
  625. X      if ((fp = fopen (rcfile, "w")) != NULL) {
  626. X          if (! cmd_line) {
  627. X              wait_message (txt_saving);
  628. --- 126,131 ----
  629. ***************
  630. *** 137,143 ****
  631. X          fprintf (fp, "save_archive=%s\n\n", (save_archive_name ? "ON" : "OFF"));
  632. X          fprintf (fp, "# if ON articles of a threads will be saved to separate files\n");
  633. X          fprintf (fp, "# otherwise the whole thread will be saved to one file\n");
  634. !         fprintf (fp, "save_separate=%s\n\n", (save_separate ? "ON" : "OFF"));
  635. X          fprintf (fp, "# if ON mark articles that are saved as read\n");
  636. X          fprintf (fp, "mark_saved_read=%s\n\n", (mark_saved_read ? "ON" : "OFF"));
  637. X          fprintf (fp, "# if ON use -> otherwise highlighted bar for selection\n");
  638. --- 135,141 ----
  639. X          fprintf (fp, "save_archive=%s\n\n", (save_archive_name ? "ON" : "OFF"));
  640. X          fprintf (fp, "# if ON articles of a threads will be saved to separate files\n");
  641. X          fprintf (fp, "# otherwise the whole thread will be saved to one file\n");
  642. !         fprintf (fp, "start_editor_offset=%s\n\n", (start_editor_offset ? "ON" : "OFF"));
  643. X          fprintf (fp, "# if ON mark articles that are saved as read\n");
  644. X          fprintf (fp, "mark_saved_read=%s\n\n", (mark_saved_read ? "ON" : "OFF"));
  645. X          fprintf (fp, "# if ON use -> otherwise highlighted bar for selection\n");
  646. ***************
  647. *** 183,189 ****
  648. X          fclose (fp);
  649. X          chmod (rcfile, 0600);
  650. X      }
  651. -     set_tin_uid_gid ();
  652. X  }
  653. X  
  654. X  /*
  655. --- 181,186 ----
  656. ***************
  657. *** 210,216 ****
  658. --- 207,217 ----
  659. X      if (do_sigtstp) {
  660. X  #ifdef POSIX_JOB_CONTROL
  661. X          sigemptyset (&rcfile_act.sa_mask);
  662. + #if defined(SA_RESTART)
  663. X          rcfile_act.sa_flags = SA_RESTART | SA_RESETHAND;
  664. + #else
  665. +         rcfile_act.sa_flags = 0;
  666. + #endif
  667. X          rcfile_act.sa_handler = SIG_DFL;
  668. X          sigaction (SIGTSTP, &rcfile_act, &old_act);
  669. X  #else
  670. ***************
  671. *** 231,237 ****
  672. --- 232,242 ----
  673. X          if (do_sigtstp) {
  674. X  #ifdef POSIX_JOB_CONTROL
  675. X              sigemptyset (&rcfile_act.sa_mask);
  676. + #if defined(SA_RESTART)
  677. X              rcfile_act.sa_flags = SA_RESTART | SA_RESETHAND;
  678. + #else
  679. +             rcfile_act.sa_flags = 0;
  680. + #endif
  681. X              rcfile_act.sa_handler = rcfile_suspend;
  682. X              sigaction (SIGTSTP, &rcfile_act, 0L);
  683. X  #else
  684. ***************
  685. *** 254,260 ****
  686. --- 259,269 ----
  687. X          if (do_sigtstp) {
  688. X  #ifdef POSIX_JOB_CONTROL
  689. X              sigemptyset (&rcfile_act.sa_mask);
  690. + #if defined(SA_RESTART)
  691. X              rcfile_act.sa_flags = SA_RESTART | SA_RESETHAND;
  692. + #else
  693. +             rcfile_act.sa_flags = 0;
  694. + #endif
  695. X              rcfile_act.sa_handler = SIG_IGN;
  696. X              sigaction (SIGTSTP, &rcfile_act, 0L);
  697. X  #else
  698. ***************
  699. *** 287,293 ****
  700. --- 296,306 ----
  701. X                  if (do_sigtstp) {
  702. X  #ifdef POSIX_JOB_CONTROL
  703. X                      sigemptyset (&rcfile_act.sa_mask);
  704. + #if defined(SA_RESTART)
  705. X                      rcfile_act.sa_flags = SA_RESTART | SA_RESETHAND;
  706. + #else
  707. +                     rcfile_act.sa_flags = 0;
  708. + #endif
  709. X                      rcfile_act.sa_handler = SIG_IGN;
  710. X                      sigaction (SIGTSTP, &old_act, 0L);
  711. X  #else
  712. ***************
  713. *** 302,310 ****
  714. X                      txt_help_autosave, txt_opt_autosave);
  715. X                  break;
  716. X  
  717. !             case 2:        /* save sperate */
  718. !                 prompt_on_off (INDEX_TOP, COL2, &save_separate, 
  719. !                     txt_help_save_separate, txt_opt_save_separate);
  720. X                  break;
  721. X              
  722. X              case 3:        /* mark saved articles read */
  723. --- 315,323 ----
  724. X                      txt_help_autosave, txt_opt_autosave);
  725. X                  break;
  726. X  
  727. !             case 2:        /* start editor with line offset */
  728. !                 prompt_on_off (INDEX_TOP, COL2, &start_editor_offset, 
  729. !                     txt_help_start_editor_offset, txt_opt_start_editor_offset);
  730. X                  break;
  731. X              
  732. X              case 3:        /* mark saved articles read */
  733. ***************
  734. *** 625,631 ****
  735. X      printf ("%s%s", txt_opt_thread_arts, (thread_arts ? "ON " : "OFF"));
  736. X  
  737. X      MoveCursor(INDEX_TOP, COL2);
  738. !     printf ("%s%s", txt_opt_save_separate, (save_separate ? "ON " : "OFF"));
  739. X      MoveCursor(INDEX_TOP+2, COL2);
  740. X      printf ("%s%s", txt_opt_draw_arrow, (draw_arrow_mark ? "ON " : "OFF"));
  741. X      MoveCursor(INDEX_TOP+4, COL2);
  742. --- 638,644 ----
  743. X      printf ("%s%s", txt_opt_thread_arts, (thread_arts ? "ON " : "OFF"));
  744. X  
  745. X      MoveCursor(INDEX_TOP, COL2);
  746. !     printf ("%s%s", txt_opt_start_editor_offset, (start_editor_offset ? "ON " : "OFF"));
  747. X      MoveCursor(INDEX_TOP+2, COL2);
  748. X      printf ("%s%s", txt_opt_draw_arrow, (draw_arrow_mark ? "ON " : "OFF"));
  749. X      MoveCursor(INDEX_TOP+4, COL2);
  750. Only in .: rcfile.o
  751. diff -rcs ../111/save.c ./save.c
  752. *** ../111/save.c    Fri Mar 27 14:01:09 1992
  753. --- ./save.c    Fri Mar 27 14:32:28 1992
  754. ***************
  755. *** 3,9 ****
  756. X   *  Module    : save.c
  757. X   *  Author    : I.Lea & R.Skrenta
  758. X   *  Created   : 01-04-91
  759. !  *  Updated   : 22-03-92
  760. X   *  Notes     :
  761. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  762. X   *              You may  freely  copy or  redistribute  this software,
  763. --- 3,9 ----
  764. X   *  Module    : save.c
  765. X   *  Author    : I.Lea & R.Skrenta
  766. X   *  Created   : 01-04-91
  767. !  *  Updated   : 27-03-92
  768. X   *  Notes     :
  769. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  770. X   *              You may  freely  copy or  redistribute  this software,
  771. ***************
  772. *** 99,105 ****
  773. X          case SAVE_ANY_NEWS:
  774. X              sprintf (logfile, "%s/log", rcdir);
  775. X              if ((fp_log = fopen (logfile, "w")) == NULL) {
  776. !                 error_message (txt_cannot_open, logfile);
  777. X                  fp_log = stdout;
  778. X                  verbose = FALSE;
  779. X                  log_opened = FALSE;
  780. --- 99,105 ----
  781. X          case SAVE_ANY_NEWS:
  782. X              sprintf (logfile, "%s/log", rcdir);
  783. X              if ((fp_log = fopen (logfile, "w")) == NULL) {
  784. !                 perror_message (txt_cannot_open, logfile);
  785. X                  fp_log = stdout;
  786. X                  verbose = FALSE;
  787. X                  log_opened = FALSE;
  788. ***************
  789. *** 168,174 ****
  790. X                          if ((fp = fopen (savefile, "w")) == NULL) {
  791. X                              fprintf (fp_log, txt_cannot_open, savefile);
  792. X                              if (verbose) {
  793. !                                 error_message (txt_cannot_open, savefile);
  794. X                              }
  795. X                              continue;
  796. X                          }
  797. --- 168,174 ----
  798. X                          if ((fp = fopen (savefile, "w")) == NULL) {
  799. X                              fprintf (fp_log, txt_cannot_open, savefile);
  800. X                              if (verbose) {
  801. !                                 perror_message (txt_cannot_open, savefile);
  802. X                              }
  803. X                              continue;
  804. X                          }
  805. ***************
  806. *** 292,303 ****
  807. X          return (ret_code);
  808. X      }
  809. X  
  810. -     set_real_uid_gid ();
  811. X      if ((fp = fopen (save_filename (i), "a+")) == NULL) {
  812. X          save[i].saved = FALSE;
  813. X          info_message (txt_art_not_saved);
  814. -         set_tin_uid_gid ();
  815. X          return (ret_code);
  816. X      }
  817. X  
  818. --- 292,300 ----
  819. ***************
  820. *** 305,311 ****
  821. X       fprintf (fp, "From %s %s", note_h_path, ctime (&epoch));
  822. X  
  823. X      if (fseek (note_fp, 0L, 0) == -1) {
  824. !         error_message ("fseek() error on [%s]", arts[respnum].subject);
  825. X      }
  826. X      copy_fp (note_fp, fp, (char *) 0);
  827. X      fputs ("\n", fp);
  828. --- 302,308 ----
  829. X       fprintf (fp, "From %s %s", note_h_path, ctime (&epoch));
  830. X  
  831. X      if (fseek (note_fp, 0L, 0) == -1) {
  832. !         perror_message ("fseek() error on [%s]", arts[respnum].subject);
  833. X      }
  834. X      copy_fp (note_fp, fp, (char *) 0);
  835. X      fputs ("\n", fp);
  836. ***************
  837. *** 314,321 ****
  838. X  
  839. X      save[i].saved = TRUE;
  840. X  
  841. -     set_tin_uid_gid ();
  842. X      if (filename == (char *) 0) {
  843. X          if (is_mailbox) {
  844. X              sprintf (save_art_info, txt_saved_to_mailbox, get_first_savefile ());
  845. --- 311,316 ----
  846. ***************
  847. *** 344,351 ****
  848. X      int i, ret_code = FALSE;
  849. X      long epoch;
  850. X  
  851. -     set_real_uid_gid ();
  852. X      for (i=0 ; i < save_num ; i++) {
  853. X          sprintf (msg, "%s%d", txt_saving, ++count);
  854. X          wait_message (msg);
  855. --- 339,344 ----
  856. ***************
  857. *** 360,366 ****
  858. X          ret_code = save_art_to_file (save[i].index, i, is_mailbox, buf);
  859. X          art_close ();            
  860. X      }
  861. -     set_tin_uid_gid ();
  862. X      
  863. X      first_savefile = get_first_savefile ();
  864. X  
  865. --- 353,358 ----
  866. ***************
  867. *** 373,385 ****
  868. X              if (save_num == 1) {
  869. X                  sprintf (save_thread_info, txt_art_saved_to, first_savefile);
  870. X              } else {
  871. !                 if (save_separate) {
  872. !                     sprintf (save_thread_info, txt_thread_saved_to_many,
  873. !                         first_savefile, get_last_savefile ());
  874. !                 } else {
  875. !                     sprintf (save_thread_info, txt_thread_saved_to,
  876. !                         first_savefile);
  877. !                 }
  878. X              }
  879. X              if (first_savefile != (char *) 0) {
  880. X                  free (first_savefile);
  881. --- 365,372 ----
  882. X              if (save_num == 1) {
  883. X                  sprintf (save_thread_info, txt_art_saved_to, first_savefile);
  884. X              } else {
  885. !                 sprintf (save_thread_info, txt_thread_saved_to_many,
  886. !                     first_savefile, get_last_savefile ());
  887. X              }
  888. X              if (first_savefile != (char *) 0) {
  889. X                  free (first_savefile);
  890. ***************
  891. *** 450,456 ****
  892. X      char *file;
  893. X      struct stat st;
  894. X  
  895. !     if (! save[i].is_mailbox && save_separate) {
  896. X          file = save_filename (i);
  897. X          if (stat(file, &st) != -1) {    
  898. X              sprintf (buf, txt_append_to_file, file); 
  899. --- 437,443 ----
  900. X      char *file;
  901. X      struct stat st;
  902. X  
  903. !     if (! save[i].is_mailbox) {
  904. X          file = save_filename (i);
  905. X          if (stat(file, &st) != -1) {    
  906. X              sprintf (buf, txt_append_to_file, file); 
  907. ***************
  908. *** 477,483 ****
  909. X  int create_path (path)
  910. X      char *path;
  911. X  {
  912. ! #ifdef INDEX_DAEMON
  913. X  
  914. X      char buf[LEN];
  915. X      char group[LEN];
  916. --- 464,470 ----
  917. X  int create_path (path)
  918. X      char *path;
  919. X  {
  920. ! #ifndef INDEX_DAEMON
  921. X  
  922. X      char buf[LEN];
  923. X      char group[LEN];
  924. ***************
  925. *** 551,557 ****
  926. X              buf[j+1] = '\0';
  927. X              if (stat (buf, &st) == -1) {
  928. X                  if (mkdir (buf, 0755) == -1) {
  929. !                     error_message ("Cannot create %s", buf);
  930. X                      return FALSE;
  931. X                  }
  932. X              }
  933. --- 538,544 ----
  934. X              buf[j+1] = '\0';
  935. X              if (stat (buf, &st) == -1) {
  936. X                  if (mkdir (buf, 0755) == -1) {
  937. !                     perror_message ("Cannot create %s", buf);
  938. X                      return FALSE;
  939. X                  }
  940. X              }
  941. ***************
  942. *** 696,712 ****
  943. X      char *p1;
  944. X      char *p2;
  945. X  {
  946. !     struct save_t *s1 = (struct save_t *)p1;
  947. !     struct save_t *s2 = (struct save_t *)p2;
  948. X  
  949. !     /* s1->subject less than s2->subject */
  950. !     if (strcmp (s1->subject, s2->subject) < 0) {
  951. !         return -1;
  952. X      }
  953. !     /* s1->subject greater than s2->subject */
  954. !     if (strcmp (s1->subject, s2->subject) > 0) {
  955. !         return 1;
  956. !     }
  957. X      return 0;
  958. X  }
  959. X  
  960. --- 683,719 ----
  961. X      char *p1;
  962. X      char *p2;
  963. X  {
  964. !     struct save_t *s1 = (struct save_t *) p1;
  965. !     struct save_t *s2 = (struct save_t *) p2;
  966. X  
  967. !     /*
  968. !      * Sort on Archive-name: part & patch otherwise Subject: 
  969. !      */
  970. !     if (s1->archive != (char *) 0) {
  971. !         if (s1->part != (char *) 0) {
  972. !             if (strcmp (s1->part, s2->part) < 0) {
  973. !                 return -1;
  974. !             }
  975. !             if (strcmp (s1->part, s2->part) > 0) {
  976. !                 return 1;
  977. !             }
  978. !         } else {
  979. !             if (strcmp (s1->patch, s2->patch) < 0) {
  980. !                 return -1;
  981. !             }
  982. !             if (strcmp (s1->patch, s2->patch) > 0) {
  983. !                 return 1;
  984. !             }
  985. !         }    
  986. !     } else {
  987. !         if (strcmp (s1->subject, s2->subject) < 0) {
  988. !             return -1;
  989. !         }
  990. !         if (strcmp (s1->subject, s2->subject) > 0) {
  991. !             return 1;
  992. !         }
  993. X      }
  994. !     
  995. X      return 0;
  996. X  }
  997. X  
  998. ***************
  999. *** 723,730 ****
  1000. X          return (filename);
  1001. X      }
  1002. X      
  1003. !     if (! save_separate || ! save_archive_name || (! save[i].part && ! save[i].patch)) {
  1004. !         if (! save_separate || save_num == 1) {
  1005. X              sprintf (filename, "%s/%s", save[i].dir, save[i].file);
  1006. X          } else {
  1007. X              sprintf (filename, "%s/%s.%02d", save[i].dir, save[i].file, i+1);
  1008. --- 730,737 ----
  1009. X          return (filename);
  1010. X      }
  1011. X      
  1012. !     if (! save_archive_name || (! save[i].part && ! save[i].patch)) {
  1013. !         if (save_num == 1) {
  1014. X              sprintf (filename, "%s/%s", save[i].dir, save[i].file);
  1015. X          } else {
  1016. X              sprintf (filename, "%s/%s.%02d", save[i].dir, save[i].file, i+1);
  1017. ***************
  1018. *** 780,786 ****
  1019. X                          }
  1020. X                      }
  1021. X                  } else {
  1022. !                     if (! save_separate || save_num == 1) {
  1023. X                          sprintf (file, "%s", save[i].file);
  1024. X                      } else {
  1025. X                          sprintf (file, "%s.%02d", save[i].file, i+1);
  1026. --- 787,793 ----
  1027. X                          }
  1028. X                      }
  1029. X                  } else {
  1030. !                     if (save_num == 1) {
  1031. X                          sprintf (file, "%s", save[i].file);
  1032. X                      } else {
  1033. X                          sprintf (file, "%s.%02d", save[i].file, i+1);
  1034. ***************
  1035. *** 821,827 ****
  1036. X                          }
  1037. X                      }
  1038. X                  } else {
  1039. !                     if (! save_separate || save_num == 1) {
  1040. X                          sprintf (file, "%s", save[i].file);
  1041. X                      } else {
  1042. X                          sprintf (file, "%s.%02d", save[i].file, i+1);
  1043. --- 828,834 ----
  1044. X                          }
  1045. X                      }
  1046. X                  } else {
  1047. !                     if (save_num == 1) {
  1048. X                          sprintf (file, "%s", save[i].file);
  1049. X                      } else {
  1050. X                          sprintf (file, "%s.%02d", save[i].file, i+1);
  1051. ***************
  1052. *** 841,848 ****
  1053. X      if (save_num) {
  1054. X          wait_message (txt_post_processing);
  1055. X  
  1056. -         set_real_uid_gid();
  1057. X          switch (proc_type_ch) {
  1058. X              case 's':
  1059. X                  post_process_sh ();
  1060. --- 848,853 ----
  1061. ***************
  1062. *** 897,903 ****
  1063. X      sprintf (file_out, "%s/tin.%05d", file_out_dir, process_id);
  1064. X      
  1065. X      if ((fp_out = fopen (file_out, "a+")) == NULL) {
  1066. !         error_message (txt_cannot_open, file_out);
  1067. X      }
  1068. X  
  1069. X  
  1070. --- 902,908 ----
  1071. X      sprintf (file_out, "%s/tin.%05d", file_out_dir, process_id);
  1072. X      
  1073. X      if ((fp_out = fopen (file_out, "a+")) == NULL) {
  1074. !         perror_message (txt_cannot_open, file_out);
  1075. X      }
  1076. X  
  1077. X  
  1078. ***************
  1079. *** 984,990 ****
  1080. X      
  1081. X      sprintf (buf, "cd %s; uudecode %s", file_out_dir, file_out); 
  1082. X      if (invoke_cmd (buf)) {
  1083. -         set_real_uid_gid ();
  1084. X          /*
  1085. X           *  sum file
  1086. X           */
  1087. --- 989,994 ----
  1088. ***************
  1089. *** 992,998 ****
  1090. X              sprintf (buf, "%s %s", DEFAULT_SUM, file); 
  1091. X              printf ("\r\n\r\nChecksum of %s...\r\n\r\n", file); 
  1092. X              fflush (stdout);
  1093. !             if ((fp_in = popen (buf, "r")) == NULL) {
  1094. X                  printf ("Cannot execute %s\r\n", buf); 
  1095. X                  fflush (stdout);
  1096. X              } else {
  1097. --- 996,1002 ----
  1098. X              sprintf (buf, "%s %s", DEFAULT_SUM, file); 
  1099. X              printf ("\r\n\r\nChecksum of %s...\r\n\r\n", file); 
  1100. X              fflush (stdout);
  1101. !             if ((fp_in = (FILE *) popen (buf, "r")) == NULL) {
  1102. X                  printf ("Cannot execute %s\r\n", buf); 
  1103. X                  fflush (stdout);
  1104. X              } else {
  1105. ***************
  1106. *** 1013,1020 ****
  1107. X          }
  1108. X      }
  1109. X  
  1110. -     set_real_uid_gid ();
  1111. X      if (pp > POST_PROC_UUDECODE) {
  1112. X          sprintf (buf, "*.%s", archiver[pp].ext); 
  1113. X          if ((file = get_archive_file (file_out_dir, buf)) != NULL) {
  1114. --- 1017,1022 ----
  1115. ***************
  1116. *** 1033,1042 ****
  1117. X                  file = (char *) 0;
  1118. X              }
  1119. X              if (! invoke_cmd (buf)) {
  1120. -                 set_real_uid_gid ();
  1121. X                  error_message ("Post processing failed", "");
  1122. X              }
  1123. -             set_real_uid_gid ();
  1124. X          }
  1125. X      }
  1126. X      delete_processed_files ();
  1127. --- 1035,1042 ----
  1128. ***************
  1129. *** 1122,1128 ****
  1130. X              fflush (stdout);
  1131. X              Raw (FALSE);
  1132. X              invoke_cmd (buf);
  1133. -             set_real_uid_gid ();
  1134. X              Raw (TRUE);
  1135. X              unlink (file_out);
  1136. X          }
  1137. --- 1122,1127 ----
  1138. ***************
  1139. *** 1143,1149 ****
  1140. X      
  1141. X      sprintf (buf, "ls -t %s/%s", dir, ext);
  1142. X  
  1143. !     if ((fp = popen (buf, "r")) == NULL) {
  1144. X          return (char *) 0;
  1145. X      }
  1146. X  
  1147. --- 1142,1148 ----
  1148. X      
  1149. X      sprintf (buf, "ls -t %s/%s", dir, ext);
  1150. X  
  1151. !     if ((fp = (FILE *) popen (buf, "r")) == NULL) {
  1152. X          return (char *) 0;
  1153. X      }
  1154. X  
  1155. Only in .: save.o
  1156. diff -rcs ../111/screen.c ./screen.c
  1157. *** ../111/screen.c    Fri Mar 27 14:01:10 1992
  1158. --- ./screen.c    Thu Mar 26 15:05:41 1992
  1159. ***************
  1160. *** 61,66 ****
  1161. --- 61,88 ----
  1162. X  }
  1163. X  
  1164. X  
  1165. + void perror_message (template, str)
  1166. +     char *template;
  1167. +     char *str;
  1168. + {
  1169. +     char str2[512];
  1170. +     clear_message ();      /* Clear any old messages hanging around */
  1171. +     
  1172. +     sprintf (str2, template, str);
  1173. +     perror (str2);
  1174. +     errno = 0;
  1175. +     if (cmd_line) {
  1176. +         fprintf (stderr, "\n");
  1177. +         fflush (stderr);
  1178. +     } else {
  1179. +         MoveCursor (LINES, 0);
  1180. +         sleep (2);
  1181. +     }
  1182. + }
  1183. X  void clear_message ()
  1184. X  {
  1185. X      if (! cmd_line) {
  1186. Only in .: screen.o
  1187. Files ../111/search.c and ./search.c are identical
  1188. Only in .: search.o
  1189. diff -rcs ../111/select.c ./select.c
  1190. *** ../111/select.c    Fri Mar 27 14:01:11 1992
  1191. --- ./select.c    Sun Mar 29 04:45:13 1992
  1192. ***************
  1193. *** 3,9 ****
  1194. X   *  Module    : select.c
  1195. X   *  Author    : I.Lea & R.Skrenta
  1196. X   *  Created   : 01-04-91
  1197. !  *  Updated   : 22-03-92
  1198. X   *  Notes     :
  1199. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1200. X   *              You may  freely  copy or  redistribute  this software,
  1201. --- 3,9 ----
  1202. X   *  Module    : select.c
  1203. X   *  Author    : I.Lea & R.Skrenta
  1204. X   *  Created   : 01-04-91
  1205. !  *  Updated   : 28-03-92
  1206. X   *  Notes     :
  1207. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1208. X   *              You may  freely  copy or  redistribute  this software,
  1209. ***************
  1210. *** 54,69 ****
  1211. X  #endif
  1212. X  
  1213. X      group_selection_page ();    /* display group selection page */
  1214. X      set_alarm_signal ();        /* set alarm signal for resync_active_file () */
  1215. X      
  1216. X      while (TRUE) {
  1217. X          resync_active_file ();    /* reread active file if alarm set */
  1218. X          num_of_killed_files = 0;
  1219. X          num_of_tagged_files = 0;
  1220. !         ch = (char) ReadCh();
  1221. X          resync_active_file ();    /* reread active file if alarm set */
  1222. X  
  1223. X          if (ch > '0' && ch <= '9') {
  1224. X              prompt_group_num (ch);
  1225. --- 54,71 ----
  1226. X  #endif
  1227. X  
  1228. X      group_selection_page ();    /* display group selection page */
  1229. X      set_alarm_signal ();        /* set alarm signal for resync_active_file () */
  1230. X      
  1231. X      while (TRUE) {
  1232. + #ifdef RESYNC_ACTIVE_FILE    
  1233. X          resync_active_file ();    /* reread active file if alarm set */
  1234. + #endif        
  1235. X          num_of_killed_files = 0;
  1236. X          num_of_tagged_files = 0;
  1237. !         ch = (char) ReadCh ();
  1238. ! #ifdef RESYNC_ACTIVE_FILE
  1239. X          resync_active_file ();    /* reread active file if alarm set */
  1240. + #endif
  1241. X  
  1242. X          if (ch > '0' && ch <= '9') {
  1243. X              prompt_group_num (ch);
  1244. ***************
  1245. *** 275,280 ****
  1246. --- 277,287 ----
  1247. X                      draw_group_arrow ();
  1248. X                  break;
  1249. X  
  1250. +             case ctrl('Y'):    /* yank active file to see if any new news */
  1251. +                 reread_active_file = TRUE;
  1252. +                 resync_active_file ();
  1253. +                 break;
  1254. +                 
  1255. X              case 'B':    /* bug/gripe/comment mailed to author */
  1256. X                  mail_bug_report ();
  1257. X  #ifndef USE_CLEARSCREEN
  1258. ***************
  1259. *** 339,348 ****
  1260. --- 346,359 ----
  1261. X                  break;
  1262. X  
  1263. X              case 'M':    /* options menu */
  1264. + #ifndef NO_RESYNC_ACTIVE_FILE
  1265. X                  time_remaining = alarm (0);
  1266. + #endif
  1267. X                  change_rcfile ("", TRUE);
  1268. X                  group_selection_page ();
  1269. + #ifndef NO_RESYNC_ACTIVE_FILE
  1270. X                  alarm (time_remaining);
  1271. + #endif
  1272. X                  break;
  1273. X  
  1274. X              case 'N':    /* goto next unread group */
  1275. Only in .: select.o
  1276. Files ../111/signal.c and ./signal.c are identical
  1277. Only in .: signal.o
  1278. Files ../111/thread.c and ./thread.c are identical
  1279. Only in .: thread.o
  1280. diff -rcs ../111/tin.1 ./tin.1
  1281. *** ../111/tin.1    Fri Mar 27 14:00:22 1992
  1282. --- ./tin.1    Sun Mar 29 12:16:20 1992
  1283. ***************
  1284. *** 17,23 ****
  1285. X  .if \n(mo=10 .ds mo October
  1286. X  .if \n(mo=11 .ds mo November
  1287. X  .if \n(mo=12 .ds mo December
  1288. ! .TH TIN 1 "Version 1.1 PL1" "" "LOCAL"
  1289. X  .ds ]W \*(mo \n(dy, 19\n(yr
  1290. X  .nh
  1291. X  .SH NAME
  1292. --- 17,23 ----
  1293. X  .if \n(mo=10 .ds mo October
  1294. X  .if \n(mo=11 .ds mo November
  1295. X  .if \n(mo=12 .ds mo December
  1296. ! .TH TIN 1 "Version 1.1 PL2" "" "LOCAL"
  1297. X  .ds ]W \*(mo \n(dy, 19\n(yr
  1298. X  .nh
  1299. X  .SH NAME
  1300. ***************
  1301. *** 316,321 ****
  1302. --- 316,325 ----
  1303. X  \fB^R\fP
  1304. X  Reset \fI$HOME/.newsrc\fP file.
  1305. X  .TP
  1306. + \fB^Y\fP
  1307. + Reread the active file to see if any new news has arrived since
  1308. + starting tin.
  1309. + .TP
  1310. X  \fB<CR>\fP
  1311. X  Read current group.
  1312. X  .TP
  1313. ***************
  1314. *** 718,728 ****
  1315. X  .TP 4
  1316. X  \fBAuto save\fP
  1317. X  Automatically save articles/threads by Archive-name: line in article
  1318. ! header. This is useful to set ON in conjunction with 'Save separate'.
  1319. X  .TP
  1320. ! \fBSave separate\fP
  1321. ! Save articles/threads to separate files. Set ON if saving source code.
  1322. ! Set OFF if saving a conversational thread.
  1323. X  .TP
  1324. X  \fBMark saved read\fP
  1325. X  This allows saved articles/threads to be automatically marked as
  1326. --- 722,733 ----
  1327. X  .TP 4
  1328. X  \fBAuto save\fP
  1329. X  Automatically save articles/threads by Archive-name: line in article
  1330. ! header and post process them if process type is not set to None.
  1331. X  .TP
  1332. ! \fBEditor offset\fP
  1333. ! Set ON if the editor used for posting, follow-ups and bug reports has
  1334. ! the capability of starting and positioning the cursor at a specified line
  1335. ! within a file.
  1336. X  .TP
  1337. X  \fBMark saved read\fP
  1338. X  This allows saved articles/threads to be automatically marked as
  1339. ***************
  1340. *** 1072,1080 ****
  1341. X  Steven Cogswell, Ned Danieley, Brent Ermlick, Carl Hage, Ed Hanway,
  1342. X  Torsten Homeyer, Nelson Kading, Fritz Kleeman, Karl-Koenig Koenigsson,
  1343. X  Kris Kugel, Hakan Lennestal, Clifford Luke, Michael Faurot, David MacKenzie, 
  1344. ! Bill Poitras, Jim Robinson, Nickolay Saukh, Rich Salz, John Sauter,
  1345. ! Bart Sears, Karl-Olav Serrander, Doug Sewell, Cliff Stanford,
  1346. ! Adri Verhoef, Cary Whitney
  1347. X  .PP
  1348. X  I wish to thank the following people for bug reports/comments:
  1349. X  
  1350. --- 1077,1085 ----
  1351. X  Steven Cogswell, Ned Danieley, Brent Ermlick, Carl Hage, Ed Hanway,
  1352. X  Torsten Homeyer, Nelson Kading, Fritz Kleeman, Karl-Koenig Koenigsson,
  1353. X  Kris Kugel, Hakan Lennestal, Clifford Luke, Michael Faurot, David MacKenzie, 
  1354. ! Bill Poitras, Jim Robinson, Stephen Roseman, Nickolay Saukh,
  1355. ! Rich Salz, John Sauter, Bart Sears, Karl-Olav Serrander, Doug Sewell,
  1356. ! Cliff Stanford, Adri Verhoef, Cary Whitney
  1357. X  .PP
  1358. X  I wish to thank the following people for bug reports/comments:
  1359. X  
  1360. ***************
  1361. *** 1082,1089 ****
  1362. X  Georg Biehler, Ian Brown, Andreas Brosig, Leila Burrell-Davis, Tom Czarnik,
  1363. X  David Donovan, Peter Dressler, Gerhard Ermer, Hugh Fader, Joachim Feld,
  1364. X  Paul Fox, Bernhard Gmelch, Viet Hoang, Andy Jackson, Joe Johnson, Cyrill Jung,
  1365. ! Hans-Juergen Knopp, Per Lindqvist, Bob Lukas, Phillip Molloy, Toni Metz,
  1366. ! Greg Miller, Klaus Neuberger, Otto Niesser, Reiner Oelhaf, Wolf Paul,
  1367. X  John Palkovic, Andrew Phillips, Ted Richards, Fredy Schwatz, Bernd Schwerin,
  1368. X  Klamer Schutte, Chris Smith, Daniel Smith, Steve Spearman, Hironobu Takahashi,
  1369. X  Sven Werner
  1370. --- 1087,1094 ----
  1371. X  Georg Biehler, Ian Brown, Andreas Brosig, Leila Burrell-Davis, Tom Czarnik,
  1372. X  David Donovan, Peter Dressler, Gerhard Ermer, Hugh Fader, Joachim Feld,
  1373. X  Paul Fox, Bernhard Gmelch, Viet Hoang, Andy Jackson, Joe Johnson, Cyrill Jung,
  1374. ! Hans-Juergen Knopp, Bernhard Kroenung, Per Lindqvist, Bob Lukas, Phillip Molloy,
  1375. ! Toni Metz, Greg Miller, Klaus Neuberger, Otto Niesser, Reiner Oelhaf, Wolf Paul,
  1376. X  John Palkovic, Andrew Phillips, Ted Richards, Fredy Schwatz, Bernd Schwerin,
  1377. X  Klamer Schutte, Chris Smith, Daniel Smith, Steve Spearman, Hironobu Takahashi,
  1378. X  Sven Werner
  1379. Only in .: tin.diff
  1380. diff -rcs ../111/tin.h ./tin.h
  1381. *** ../111/tin.h    Fri Mar 27 14:01:16 1992
  1382. --- ./tin.h    Sun Mar 29 12:33:05 1992
  1383. ***************
  1384. *** 3,9 ****
  1385. X   *  Module    : tin.h
  1386. X   *  Author    : I.Lea & R.Skrenta
  1387. X   *  Created   : 01-04-91
  1388. !  *  Updated   : 21-03-92
  1389. X   *  Notes     : #include files, #defines & struct's
  1390. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1391. X   *              You may  freely  copy or  redistribute  this software,
  1392. --- 3,9 ----
  1393. X   *  Module    : tin.h
  1394. X   *  Author    : I.Lea & R.Skrenta
  1395. X   *  Created   : 01-04-91
  1396. !  *  Updated   : 29-03-92
  1397. X   *  Notes     : #include files, #defines & struct's
  1398. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1399. X   *              You may  freely  copy or  redistribute  this software,
  1400. ***************
  1401. *** 16,24 ****
  1402. X  #include    <signal.h>
  1403. X  #include    <sys/types.h>
  1404. X  #include    <pwd.h>
  1405. - #if !defined(MINIX) && !defined(__convexc__)
  1406. - #    include    <memory.h>
  1407. - #endif
  1408. X  #include    <ctype.h>
  1409. X  #include    <time.h>
  1410. X  #include    <sys/stat.h>
  1411. --- 16,21 ----
  1412. ***************
  1413. *** 27,44 ****
  1414. X  #    include    <strings.h>
  1415. X  #    include    <fcntl.h>
  1416. X  #else
  1417. - #    include    <string.h>
  1418. X  #    ifndef MINIX
  1419. X  #        include    <malloc.h>
  1420. X  #    else
  1421. X  #        include    <stdlib.h>
  1422. X  #    endif
  1423. X  #endif
  1424. X  
  1425. X  #ifdef M_XENIX
  1426. X  #    include    <prototypes.h>
  1427. X  #endif
  1428. X  
  1429. X  /*
  1430. X   * Needed for resizing under an xterm
  1431. X   */
  1432. --- 24,49 ----
  1433. X  #    include    <strings.h>
  1434. X  #    include    <fcntl.h>
  1435. X  #else
  1436. X  #    ifndef MINIX
  1437. X  #        include    <malloc.h>
  1438. X  #    else
  1439. X  #        include    <stdlib.h>
  1440. X  #    endif
  1441. + #    include    <string.h>
  1442. X  #endif
  1443. X  
  1444. + #if !defined(MINIX) && !defined(__convexc__)
  1445. + #    include    <memory.h>
  1446. + #endif
  1447. X  #ifdef M_XENIX
  1448. X  #    include    <prototypes.h>
  1449. X  #endif
  1450. X  
  1451. + #ifdef SVR4
  1452. + #    include <locale.h>
  1453. + #endif
  1454. X  /*
  1455. X   * Needed for resizing under an xterm
  1456. X   */
  1457. ***************
  1458. *** 145,150 ****
  1459. --- 150,156 ----
  1460. X  #        define        DEFAULT_MAILER    "/usr/bin/mailx"
  1461. X  #    endif
  1462. X  #    ifdef RS6000
  1463. + #        define        DEFAULT_MAILER    "/usr/bin/mail"
  1464. X  #        define        DEFAULT_PRINTER    "/bin/lp"
  1465. X  #    endif
  1466. X  #    ifdef UNIXPC
  1467. ***************
  1468. *** 385,394 ****
  1469. X   *    article number in spool directory for group
  1470. X   *
  1471. X   *  article.thread:
  1472. !  *    initially -1
  1473. !  *    points to another arts[] (struct article_t): zero and up
  1474. X   *    -2 means article has expired (wasn't found in file search
  1475. X   *    of spool directory for the group)
  1476. X   *
  1477. X   *  article.inthread:
  1478. X   *    FALSE for the first article in a thread, TRUE for all
  1479. --- 391,400 ----
  1480. X   *    article number in spool directory for group
  1481. X   *
  1482. X   *  article.thread:
  1483. !  *    -1 initial default
  1484. X   *    -2 means article has expired (wasn't found in file search
  1485. X   *    of spool directory for the group)
  1486. +  *    >=0 points to another arts[] (struct article_t)
  1487. X   *
  1488. X   *  article.inthread:
  1489. X   *    FALSE for the first article in a thread, TRUE for all
  1490. diff -rcs ../111/tin.nrf ./tin.nrf
  1491. *** ../111/tin.nrf    Fri Mar 27 14:00:28 1992
  1492. --- ./tin.nrf    Sun Mar 29 16:57:22 1992
  1493. ***************
  1494. *** 314,326 ****
  1495. X  
  1496. X       ^^RR        Reset $_H_O_M_E/._n_e_w_s_r_c file.
  1497. X  
  1498. X       <<CCRR>>      Read current group.
  1499. X  
  1500. X       <<TTAABB>>     View next unread group.
  1501. X  
  1502. -      BB         Mail a bug report or comment to the author. This is the
  1503. -                best way of getting bugs fixed and features
  1504. -                added/changed.
  1505. X  
  1506. X  
  1507. X  
  1508. --- 314,326 ----
  1509. X  
  1510. X       ^^RR        Reset $_H_O_M_E/._n_e_w_s_r_c file.
  1511. X  
  1512. +      ^^YY        Reread the active file to see if any new news has arrived
  1513. +                since starting tin.
  1514. X       <<CCRR>>      Read current group.
  1515. X  
  1516. X       <<TTAABB>>     View next unread group.
  1517. X  
  1518. X  
  1519. X  
  1520. X  
  1521. ***************
  1522. *** 335,340 ****
  1523. --- 335,344 ----
  1524. X  
  1525. X  
  1526. X  
  1527. +      BB         Mail a bug report or comment to the author. This is the
  1528. +                best way of getting bugs fixed and features
  1529. +                added/changed.
  1530. X       cc         Mark current group as all read and goto next group in
  1531. X                 group selection list.
  1532. X  
  1533. ***************
  1534. *** 383,392 ****
  1535. X  
  1536. X       yy         The first time this command is called it will yank in all
  1537. X                 groups from /_u_s_r/_l_o_c_a_l/_n_e_w_s/_a_c_t_i_v_e that are not in
  1538. -                $_H_O_M_E/._n_e_w_s_r_c.  After any groups have been
  1539. -                subscribed/unsubscribed to, this command if pressed again
  1540. -                will reread $_H_O_M_E/._n_e_w_s_r_c and display only subscribed
  1541. -                groups.
  1542. X  
  1543. X  
  1544. X  
  1545. --- 387,392 ----
  1546. ***************
  1547. *** 401,406 ****
  1548. --- 401,411 ----
  1549. X  
  1550. X  
  1551. X  
  1552. +                $_H_O_M_E/._n_e_w_s_r_c.  After any groups have been
  1553. +                subscribed/unsubscribed to, this command if pressed again
  1554. +                will reread $_H_O_M_E/._n_e_w_s_r_c and display only subscribed
  1555. +                groups.
  1556. X       YY         Reread group list from $_H_O_M_E/._n_e_w_s_r_c file.
  1557. X  
  1558. X       zz         Mark all articles in the current group as unread.
  1559. ***************
  1560. *** 448,462 ****
  1561. X       HH         help screen of context sensitive help about group index
  1562. X                 level.
  1563. X  
  1564. -      II         Toggle inverse video.
  1565. X  
  1566. -      KK         Mark article/thread as read and advance to next unread
  1567. -                article/thread.
  1568. X  
  1569. X  
  1570. X  
  1571. X  NEWS-OS                       Release 4.1R                             7
  1572. X  
  1573. X  
  1574. --- 453,462 ----
  1575. ***************
  1576. *** 467,472 ****
  1577. --- 467,477 ----
  1578. X  
  1579. X  
  1580. X  
  1581. +      II         Toggle inverse video.
  1582. +      KK         Mark article/thread as read and advance to next unread
  1583. +                article/thread.
  1584. X       ll         List the author of each response in current thread and
  1585. X                 enter thread selection level.
  1586. X  
  1587. ***************
  1588. *** 515,528 ****
  1589. X  
  1590. X       zz         Mark current article as unread.
  1591. X  
  1592. -      ZZ         Mark current thread as unread.
  1593. X  
  1594. -      //         Search forward for specified subject.
  1595. X  
  1596. X  
  1597. X  8                             Release 4.1R                       NEWS-OS
  1598. X  
  1599. X  
  1600. --- 520,528 ----
  1601. ***************
  1602. *** 533,538 ****
  1603. --- 533,542 ----
  1604. X  
  1605. X  
  1606. X  
  1607. +      ZZ         Mark current thread as unread.
  1608. +      //         Search forward for specified subject.
  1609. X       ??         Search backward for specified subject.
  1610. X  
  1611. X       --         Show last message.
  1612. ***************
  1613. *** 582,594 ****
  1614. X  
  1615. X       <<CCRR>>      Goto next base article.
  1616. X  
  1617. -      <<TTAABB>>     Goto next unread article.
  1618. X  
  1619. -      aa         Author forward search.
  1620. X  
  1621. X  
  1622. X  NEWS-OS                       Release 4.1R                             9
  1623. X  
  1624. X  
  1625. --- 586,594 ----
  1626. ***************
  1627. *** 599,604 ****
  1628. --- 599,608 ----
  1629. X  
  1630. X  
  1631. X  
  1632. +      <<TTAABB>>     Goto next unread article.
  1633. +      aa         Author forward search.
  1634. X       AA         Author backward search.
  1635. X  
  1636. X       BB         Mail a bug report or comment to the author. This is the
  1637. ***************
  1638. *** 648,660 ****
  1639. X  
  1640. X       qq         Quit tin.
  1641. X  
  1642. -      rr         Reply through mail to author.
  1643. X  
  1644. -      RR         Reply through mail to author with a copy of the current
  1645. X  
  1646. X  
  1647. X  10                            Release 4.1R                       NEWS-OS
  1648. X  
  1649. X  
  1650. --- 652,660 ----
  1651. ***************
  1652. *** 665,670 ****
  1653. --- 665,673 ----
  1654. X  
  1655. X  
  1656. X  
  1657. +      rr         Reply through mail to author.
  1658. +      RR         Reply through mail to author with a copy of the current
  1659. X                 article included.
  1660. X  
  1661. X       ss         Save current article / thread / articles matching pattern
  1662. ***************
  1663. *** 704,726 ****
  1664. X  
  1665. X       AAuuttoo ssaavvee
  1666. X           Automatically save articles/threads by Archive-name: line in
  1667. !          article header. This is useful to set ON in conjunction with
  1668. !          'Save separate'.
  1669. X  
  1670. !      SSaavvee sseeppaarraattee
  1671. !          Save articles/threads to separate files. Set ON if saving
  1672. !          source code.  Set OFF if saving a conversational thread.
  1673. X  
  1674. X       MMaarrkk ssaavveedd rreeaadd
  1675. X           This allows saved articles/threads to be automatically marked
  1676. -          as having been read.
  1677. X  
  1678. -      KKiillll aarrttiicclleess
  1679. -          This allows the user to kill articles that match entries in the
  1680. X  
  1681. X  
  1682. X  
  1683. X  NEWS-OS                       Release 4.1R                            11
  1684. X  
  1685. X  
  1686. --- 707,726 ----
  1687. X  
  1688. X       AAuuttoo ssaavvee
  1689. X           Automatically save articles/threads by Archive-name: line in
  1690. !          article header and post process them if process type is not set
  1691. !          to None.
  1692. X  
  1693. !      EEddiittoorr ooffffsseett
  1694. !          Set ON if the editor used for posting, follow-ups and bug
  1695. !          reports has the capability of starting and positioning the
  1696. !          cursor at a specified line within a file.
  1697. X  
  1698. X       MMaarrkk ssaavveedd rreeaadd
  1699. X           This allows saved articles/threads to be automatically marked
  1700. X  
  1701. X  
  1702. X  
  1703. X  
  1704. X  NEWS-OS                       Release 4.1R                            11
  1705. X  
  1706. X  
  1707. ***************
  1708. *** 731,736 ****
  1709. --- 731,740 ----
  1710. X  
  1711. X  
  1712. X  
  1713. +          as having been read.
  1714. +      KKiillll aarrttiicclleess
  1715. +          This allows the user to kill articles that match entries in the
  1716. X           kill file $_H_O_M_E/._t_i_n/_k_i_l_l.
  1717. X  
  1718. X       DDrraaww aarrrrooww
  1719. ***************
  1720. *** 779,792 ****
  1721. X               -unpacking of multi-part shell archives.
  1722. X               -unpacking of multi-part uuencoded files.
  1723. X               -unpacking of multi-part uuencoded files that produce a
  1724. -               *.zoo archive whose contents is listed.
  1725. -              -unpacking of multi-part uuencoded files that produce a
  1726. -               *.zoo archive whose contents is extracted.
  1727. X  
  1728. X  
  1729. X  
  1730. X  
  1731. X  12                            Release 4.1R                       NEWS-OS
  1732. X  
  1733. X  
  1734. --- 783,792 ----
  1735. ***************
  1736. *** 797,802 ****
  1737. --- 797,806 ----
  1738. X  
  1739. X  
  1740. X  
  1741. +               *.zoo archive whose contents is listed.
  1742. +              -unpacking of multi-part uuencoded files that produce a
  1743. +               *.zoo archive whose contents is extracted.
  1744. X       SSoorrtt aarrttiicclleess bbyy
  1745. X           This specifies how articles should be sorted. The following
  1746. X           sort types are allowed:
  1747. ***************
  1748. *** 845,854 ****
  1749. X  
  1750. X       Use the 'w' command to post an article to a newsgroup. After
  1751. X       entering the post subject the default editor (ie. vi) or the editor
  1752. -      specified by the $VISUAL environment variable will be started and
  1753. -      the article can be entered. To crosspost articles simply add a
  1754. -      comma and the name of the newsgroup(s) to the end of the
  1755. -      Newsgroups: line at the beginning of the article. After saving and
  1756. X  
  1757. X  
  1758. X  
  1759. --- 849,854 ----
  1760. ***************
  1761. *** 863,868 ****
  1762. --- 863,872 ----
  1763. X  
  1764. X  
  1765. X  
  1766. +      specified by the $VISUAL environment variable will be started and
  1767. +      the article can be entered. To crosspost articles simply add a
  1768. +      comma and the name of the newsgroup(s) to the end of the
  1769. +      Newsgroups: line at the beginning of the article. After saving and
  1770. X       exiting the editor you are asked if you wish to a)bort posting the
  1771. X       article, e)dit the article again or p)ost the article to the
  1772. X       specified newsgroup(s).
  1773. ***************
  1774. *** 911,920 ****
  1775. X       parts etc).  A default process type can be set by the 'Process
  1776. X       type:' in the 'M' options menu.
  1777. X  
  1778. - AAUUTTOOMMAATTIICC MMAAIILLIINNGG AANNDD SSAAVVIINNGG NNEEWW NNEEWWSS
  1779. -      Tin allows new/unread news articles to be mailed (-M option)/saved
  1780. -      (-S option) in batch mode for later reading. Useful when going on
  1781. -      holiday and you don't want to return and find that expire has
  1782. X  
  1783. X  
  1784. X  
  1785. --- 915,920 ----
  1786. ***************
  1787. *** 929,934 ****
  1788. --- 929,938 ----
  1789. X  
  1790. X  
  1791. X  
  1792. + AAUUTTOOMMAATTIICC MMAAIILLIINNGG AANNDD SSAAVVIINNGG NNEEWW NNEEWWSS
  1793. +      Tin allows new/unread news articles to be mailed (-M option)/saved
  1794. +      (-S option) in batch mode for later reading. Useful when going on
  1795. +      holiday and you don't want to return and find that expire has
  1796. X       removed a whole load of unread articles. Best to run from crontab
  1797. X       everyday while away, after which you will be mailed a report of
  1798. X       which articles were mailed/saved from which newsgroups and the
  1799. ***************
  1800. *** 977,986 ****
  1801. X            specified and the file /_e_t_c/_n_n_t_p_s_e_r_v_e_r does not exist.
  1802. X  
  1803. X       OORRGGAANNIIZZAATTIIOONN
  1804. -           Set the mail header field Organization: to the contents of the
  1805. -           variable instead of the system default. This variable has
  1806. -           precedence over the file $_H_O_M_E/._t_i_n/_o_r_g_a_n_i_z_a_t_i_o_n that may also
  1807. -           contain an organization string.
  1808. X  
  1809. X  
  1810. X  
  1811. --- 981,986 ----
  1812. ***************
  1813. *** 995,1000 ****
  1814. --- 995,1005 ----
  1815. X  
  1816. X  
  1817. X  
  1818. +           Set the mail header field Organization: to the contents of the
  1819. +           variable instead of the system default. This variable has
  1820. +           precedence over the file $_H_O_M_E/._t_i_n/_o_r_g_a_n_i_z_a_t_i_o_n that may also
  1821. +           contain an organization string.
  1822. X       RREEPPLLYYTTOO
  1823. X            Set the mail header field Reply-To: to the return address
  1824. X            specified by the variable.  This is useful if the machine is
  1825. ***************
  1826. *** 1041,1056 ****
  1827. X       offer a default choice that the cursor is positioned on. By
  1828. X       pressing <CR> the default value is taken.
  1829. X  
  1830. -      When tin is run in an xterm window it will resize itself each time
  1831. -      the xterm is resized.
  1832. X  
  1833. -      Tin will reread the active file at set intervals to show any new
  1834. -      news.
  1835. X  
  1836. X  
  1837. X  
  1838. X  
  1839. X  16                            Release 4.1R                       NEWS-OS
  1840. X  
  1841. X  
  1842. --- 1046,1056 ----
  1843. ***************
  1844. *** 1061,1066 ****
  1845. --- 1061,1072 ----
  1846. X  
  1847. X  
  1848. X  
  1849. +      When tin is run in an xterm window it will resize itself each time
  1850. SHAR_EOF
  1851. true || echo 'restore of tin.patch112 failed'
  1852. fi
  1853. echo 'End of tin part 3'
  1854. echo 'File tin.patch112 is continued in part 4'
  1855. echo 4 > _shar_seq_.tmp
  1856. exit 0
  1857. -- 
  1858.  Dr. med. dipl.-math Dieter Becker           Tel.: (0 / +49) 6841 - 16 3046
  1859.  Medizinische Universitaets- und Poliklinik  Fax.: (0 / +49) 6841 - 16 3369
  1860.  Innere Medizin III                         
  1861.  D - 6650 Homburg / Saar                     Email: becker@med-in.uni-sb.de
  1862. exit 0 # Just in case...
  1863.