home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume23 / tin / patch03c < prev    next >
Text File  |  1991-10-19  |  50KB  |  2,048 lines

  1. Newsgroups: comp.sources.misc
  2. From: iain@norisc.siemens.de (Iain J. Lea)
  3. Subject:  v23i080:  tin - threaded full screen newsreader, Patch03c/4
  4. Message-ID: <1991Oct20.032037.24702@sparky.imd.sterling.com>
  5. X-Md4-Signature: 96b736eade70fe8cd1ac730e55c84e21
  6. Date: Sun, 20 Oct 1991 03:20:37 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: iain@norisc.siemens.de (Iain J. Lea)
  10. Posting-number: Volume 23, Issue 80
  11. Archive-name: tin/patch03c
  12. Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
  13. Patch-To: tin: Volume 23, Issue 15-23
  14.  
  15. #!/bin/sh
  16. # this is tin.patch.03 (part 3 of tin1.0)
  17. # do not concatenate these parts, unpack them in order with /bin/sh
  18. # file tin.patch03 continued
  19. #
  20. if touch 2>&1 | fgrep '[-amc]' > /dev/null
  21.  then TOUCH=touch
  22.  else TOUCH=true
  23. fi
  24. if test ! -r shar3_seq_.tmp; then
  25.     echo "Please unpack part 1 first!"
  26.     exit 1
  27. fi
  28. (read Scheck
  29.  if test "$Scheck" != 3; then
  30.     echo "Please unpack part $Scheck next!"
  31.     exit 1
  32.  else
  33.     exit 0
  34.  fi
  35. ) < shar3_seq_.tmp || exit 1
  36. echo "x - Continuing file tin.patch03"
  37. sed 's/^X//' << 'SHAR_EOF' >> tin.patch03 &&
  38. X          case -1:
  39. X!             fprintf (stderr, txt_failed_to_connect_to_server, server);
  40. X              exit (1);
  41. X  
  42. X          default:
  43. X***************
  44. X*** 144,150 ****
  45. X      char *group_path;
  46. X      long art;
  47. X  {
  48. X!     char buf[LEN+1];
  49. X      struct stat sb;
  50. X      extern long note_size;
  51. X  
  52. X--- 147,153 ----
  53. X      char *group_path;
  54. X      long art;
  55. X  {
  56. X!     char buf[LEN];
  57. X      struct stat sb;
  58. X      extern long note_size;
  59. X  
  60. X***************
  61. X*** 178,184 ****
  62. X      char *group_path;
  63. X      long art;
  64. X  {
  65. X!     char buf[LEN+1];
  66. X  
  67. X      if (read_news_via_nntp) {
  68. X  #ifdef USE_NNTP    
  69. X--- 181,187 ----
  70. X      char *group_path;
  71. X      long art;
  72. X  {
  73. X!     char buf[LEN];
  74. X  
  75. X      if (read_news_via_nntp) {
  76. X  #ifdef USE_NNTP    
  77. X***************
  78. X*** 227,233 ****
  79. X      char *group;
  80. X      char *group_path;
  81. X  {
  82. X!     char buf[LEN+1];
  83. X  #ifdef USE_NNTP
  84. X      char line[NNTP_STRLEN];
  85. X  #endif
  86. X--- 230,236 ----
  87. X      char *group;
  88. X      char *group_path;
  89. X  {
  90. X!     char buf[LEN];
  91. X  #ifdef USE_NNTP
  92. X      char line[NNTP_STRLEN];
  93. X  #endif
  94. X***************
  95. X*** 283,289 ****
  96. X                  }
  97. X              }
  98. X              closedir (d);
  99. X!             qsort ((char *) base, top_base, sizeof(long), base_comp);
  100. X          }
  101. X      }
  102. X  }
  103. X--- 286,292 ----
  104. X                  }
  105. X              }
  106. X              closedir (d);
  107. X!             qsort ((char *) base, top_base, sizeof (long), base_comp);
  108. X          }
  109. X      }
  110. X  }
  111. X***************
  112. X*** 353,359 ****
  113. X  
  114. X  FILE *nntp_to_fp ()
  115. X  {
  116. X!     char fnam[LEN+1];
  117. X      FILE *fp;
  118. X  
  119. X      if (! stuff_nntp (fnam))
  120. X--- 356,362 ----
  121. X  
  122. X  FILE *nntp_to_fp ()
  123. X  {
  124. X!     char fnam[LEN];
  125. X      FILE *fp;
  126. X  
  127. X      if (! stuff_nntp (fnam))
  128. X***************
  129. X*** 371,377 ****
  130. X  int nntp_to_fd ()
  131. X  {
  132. X  #ifdef USE_NNTP
  133. X!     char fnam[LEN+1];
  134. X      int fd;
  135. X  
  136. X      if (! stuff_nntp (fnam))
  137. X--- 374,380 ----
  138. X  int nntp_to_fd ()
  139. X  {
  140. X  #ifdef USE_NNTP
  141. X!     char fnam[LEN];
  142. X      int fd;
  143. X  
  144. X      if (! stuff_nntp (fnam))
  145. Xdiff -rcs 102/page.c 103/page.c
  146. X*** 102/page.c    Tue Sep 24 08:23:51 1991
  147. X--- 103/page.c    Mon Sep 30 18:45:06 1991
  148. X***************
  149. X*** 3,9 ****
  150. X   *  Module    : page.c
  151. X   *  Author    : R.Skrenta / I.Lea
  152. X   *  Created   : 01-04-91
  153. X!  *  Updated   : 16-09-91
  154. X   *  Release   : 1.0
  155. X   *  Notes     :
  156. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  157. X--- 3,9 ----
  158. X   *  Module    : page.c
  159. X   *  Author    : R.Skrenta / I.Lea
  160. X   *  Created   : 01-04-91
  161. X!  *  Updated   : 30-09-91
  162. X   *  Release   : 1.0
  163. X   *  Notes     :
  164. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  165. X***************
  166. X*** 19,49 ****
  167. X  
  168. X  extern int cur_groupnum;
  169. X  
  170. X! char note_h_path[LEN+1];            /* Path:    */
  171. X! char note_h_date[LEN+1];            /* Date:    */
  172. X! char note_h_subj[LEN+1];            /* Subject:    */
  173. X! char note_h_from[LEN+1];            /* From:    */
  174. X! char note_h_org[LEN+1];                /* Organization: */
  175. X! char note_h_newsgroups[LEN+1];        /* Newsgroups:    */
  176. X! char note_h_messageid[LEN+1];        /* Message-ID:    */
  177. X! char note_h_distrib[LEN+1];            /* Distribution: */
  178. X! char note_h_followup[LEN+1];        /* Followup-To: */
  179. X  
  180. X  char note_full_name[100];
  181. X  char note_from_addr[100];
  182. X  char *glob_page_group;
  183. X  
  184. X! FILE *note_fp;                /* the body of the current article */
  185. X  
  186. X  int    note_line;
  187. X  int    note_page;                    /* what page we're on */
  188. X  int    note_end;                    /* we're done showing this article */
  189. X  int    rotate;                        /* 0=normal, 13=rot13 decode */
  190. X! int last_resp;        /* current & previous article for - command */
  191. X  int this_resp;
  192. X  int glob_respnum;
  193. X  
  194. X! long    note_mark[MAX_PAGES];    /* ftells on beginnings of pages */
  195. X  long note_size;                    /* stat size in bytes of article */
  196. X  
  197. X  
  198. X--- 19,49 ----
  199. X  
  200. X  extern int cur_groupnum;
  201. X  
  202. X! char note_h_path[LEN];            /* Path:    */
  203. X! char note_h_date[LEN];            /* Date:    */
  204. X! char note_h_subj[LEN];            /* Subject:    */
  205. X! char note_h_from[LEN];            /* From:    */
  206. X! char note_h_org[LEN];            /* Organization: */
  207. X! char note_h_newsgroups[LEN];    /* Newsgroups:    */
  208. X! char note_h_messageid[LEN];        /* Message-ID:    */
  209. X! char note_h_distrib[LEN];        /* Distribution: */
  210. X! char note_h_followup[LEN];        /* Followup-To: */
  211. X  
  212. X  char note_full_name[100];
  213. X  char note_from_addr[100];
  214. X  char *glob_page_group;
  215. X  
  216. X! FILE *note_fp;                    /* the body of the current article */
  217. X  
  218. X  int    note_line;
  219. X  int    note_page;                    /* what page we're on */
  220. X  int    note_end;                    /* we're done showing this article */
  221. X  int    rotate;                        /* 0=normal, 13=rot13 decode */
  222. X! int last_resp;                    /* current & previous article for - command */
  223. X  int this_resp;
  224. X  int glob_respnum;
  225. X  
  226. X! long note_mark[MAX_PAGES];        /* ftells on beginnings of pages */
  227. X  long note_size;                    /* stat size in bytes of article */
  228. X  
  229. X  
  230. X***************
  231. X*** 55,63 ****
  232. X      char ch;
  233. X      int i, n;
  234. X      int kill_state = NO_KILLING;
  235. X-     int old_artnum;
  236. X      int old_sort_art_type = sort_art_type;
  237. X      int old_top;
  238. X      long art;
  239. X  
  240. X  restart:
  241. X--- 55,63 ----
  242. X      char ch;
  243. X      int i, n;
  244. X      int kill_state = NO_KILLING;
  245. X      int old_sort_art_type = sort_art_type;
  246. X      int old_top;
  247. X+     long old_artnum;
  248. X      long art;
  249. X  
  250. X  restart:
  251. X***************
  252. X*** 123,128 ****
  253. X--- 123,129 ----
  254. X  
  255. X                  case 'I':        /* ansi  PgUp */
  256. X                  case 'V':        /* at386 PgUp */
  257. X+                 case 'v':        /* emacs style */
  258. X                      goto page_up;
  259. X  
  260. X                  case 'H':        /* at386 Home */
  261. X***************
  262. X*** 143,149 ****
  263. X              case 'G':    /* 'less' compatible */
  264. X  end_of_article:            
  265. X                  if (show_last_page ()) {
  266. X!                     show_note_page(respnum, group);
  267. X                  }
  268. X                  break;
  269. X  
  270. X--- 144,150 ----
  271. X              case 'G':    /* 'less' compatible */
  272. X  end_of_article:            
  273. X                  if (show_last_page ()) {
  274. X!                     show_note_page (respnum, group);
  275. X                  }
  276. X                  break;
  277. X  
  278. X***************
  279. X*** 186,193 ****
  280. X                  }
  281. X                  break;
  282. X  
  283. X!             case ctrl('D'):
  284. X!             case ' ':     /* next page or response */
  285. X  page_down:
  286. X                  if (note_page == NOTE_UNAVAIL) {
  287. X                      n = next_response (respnum);
  288. X--- 187,195 ----
  289. X                  }
  290. X                  break;
  291. X  
  292. X!             case ' ':             /* next page or response */
  293. X!             case ctrl('D'):        /* vi style */
  294. X!             case ctrl('V'):        /* emacs style */
  295. X  page_down:
  296. X                  if (note_page == NOTE_UNAVAIL) {
  297. X                      n = next_response (respnum);
  298. X***************
  299. X*** 603,618 ****
  300. X      int respnum;
  301. X      char *group;
  302. X  {
  303. X!     char buf[LEN+1];
  304. X      char buf2[LEN+50];
  305. X      char *p, *q;
  306. X      int i, j;
  307. X      int ctrl_L;        /* form feed character detected */
  308. X  
  309. X-     ClearScreen();
  310. X- 
  311. X      note_line = 1;
  312. X  
  313. X      if (note_page == 0)
  314. X          show_first_header (respnum, group);
  315. X      else
  316. X--- 605,627 ----
  317. X      int respnum;
  318. X      char *group;
  319. X  {
  320. X!     char buf[LEN];
  321. X      char buf2[LEN+50];
  322. X      char *p, *q;
  323. X      int i, j;
  324. X      int ctrl_L;        /* form feed character detected */
  325. X+     long tmp_pos;
  326. X+     ClearScreen ();
  327. X  
  328. X      note_line = 1;
  329. X  
  330. X+     if (note_size == 0L) {
  331. X+         tmp_pos = ftell (note_fp);
  332. X+         fseek (note_fp, 0L, 2);            /* goto end of article */
  333. X+         note_size = ftell (note_fp);
  334. X+         fseek (note_fp, tmp_pos, 0);    /* goto old position */
  335. X+     }
  336. X+     
  337. X      if (note_page == 0)
  338. X          show_first_header (respnum, group);
  339. X      else
  340. X***************
  341. X*** 684,691 ****
  342. X          }
  343. X      }
  344. X  
  345. X!     note_mark[++note_page] = ftell(note_fp);
  346. X  
  347. X      if (note_end) {
  348. X          MoveCursor (LINES, MORE_POS-(5+BLANK_PAGE_COLS));
  349. X          StartInverse ();    
  350. X--- 693,704 ----
  351. X          }
  352. X      }
  353. X  
  354. X!     note_mark[++note_page] = ftell (note_fp);
  355. X  
  356. X+     if (note_mark[note_page] == note_size) {
  357. X+         note_end = TRUE;
  358. X+     }
  359. X+ 
  360. X      if (note_end) {
  361. X          MoveCursor (LINES, MORE_POS-(5+BLANK_PAGE_COLS));
  362. X          StartInverse ();    
  363. X***************
  364. X*** 699,705 ****
  365. X          EndInverse ();
  366. X      } else {
  367. X          if (note_size > 0) {
  368. X!             draw_percent_mark ((int) note_mark[note_page], note_size);
  369. X          } else {
  370. X              MoveCursor (LINES, MORE_POS-BLANK_PAGE_COLS);
  371. X              StartInverse ();    
  372. X--- 712,718 ----
  373. X          EndInverse ();
  374. X      } else {
  375. X          if (note_size > 0) {
  376. X!             draw_percent_mark ((int) note_mark[note_page], (int) note_size);
  377. X          } else {
  378. X              MoveCursor (LINES, MORE_POS-BLANK_PAGE_COLS);
  379. X              StartInverse ();    
  380. X***************
  381. X*** 718,725 ****
  382. X  {
  383. X      int whichresp;
  384. X      int x_resp;
  385. X!     char buf[LEN+1];
  386. X!     char tmp[LEN+1];
  387. X      int pos, i;
  388. X      int n;
  389. X  
  390. X--- 731,738 ----
  391. X  {
  392. X      int whichresp;
  393. X      int x_resp;
  394. X!     char buf[LEN];
  395. X!     char tmp[LEN];
  396. X      int pos, i;
  397. X      int n;
  398. X  
  399. X***************
  400. X*** 803,809 ****
  401. X  {
  402. X      int whichresp;
  403. X      int whichbase;
  404. X!     char buf[LEN+1];
  405. X  
  406. X      whichresp = which_resp (respnum);
  407. X      whichbase = which_base (respnum);
  408. X--- 816,822 ----
  409. X  {
  410. X      int whichresp;
  411. X      int whichbase;
  412. X!     char buf[LEN];
  413. X  
  414. X      whichresp = which_resp (respnum);
  415. X      whichbase = which_base (respnum);
  416. X***************
  417. X*** 824,830 ****
  418. X              note_page + 1,
  419. X              note_h_subj);
  420. X  
  421. X!     buf[COLS] = '\0';
  422. X      printf("%s\r\n\r\n", buf);
  423. X  
  424. X      note_line += 2;
  425. X--- 837,843 ----
  426. X              note_page + 1,
  427. X              note_h_subj);
  428. X  
  429. X!     buf[COLS-1] = '\0';
  430. X      printf("%s\r\n\r\n", buf);
  431. X  
  432. X      note_line += 2;
  433. X***************
  434. X*** 939,945 ****
  435. X  {
  436. X      int j;
  437. X  
  438. X!     j = base[i];
  439. X  
  440. X      while (n-- && arts[j].thread >= 0) {
  441. X          j = arts[j].thread;
  442. X--- 952,958 ----
  443. X  {
  444. X      int j;
  445. X  
  446. X!     j = (int) base[i];
  447. X  
  448. X      while (n-- && arts[j].thread >= 0) {
  449. X          j = arts[j].thread;
  450. X***************
  451. X*** 1027,1033 ****
  452. X      if (i >= top_base)
  453. X          return -1;
  454. X  
  455. X!     return base[i];
  456. X  }
  457. X  
  458. X  
  459. X--- 1040,1046 ----
  460. X      if (i >= top_base)
  461. X          return -1;
  462. X  
  463. X!     return (int) base[i];
  464. X  }
  465. X  
  466. X  
  467. X***************
  468. X*** 1045,1051 ****
  469. X      if (i >= top_base)
  470. X          return -1;
  471. X  
  472. X!     return base[i];
  473. X  }
  474. X  
  475. X  
  476. X--- 1058,1064 ----
  477. X      if (i >= top_base)
  478. X          return -1;
  479. X  
  480. X!     return (int) base[i];
  481. X  }
  482. X  
  483. X  
  484. X***************
  485. X*** 1083,1098 ****
  486. X  
  487. X  int show_last_page ()
  488. X  {
  489. X!     char buf[LEN+1];
  490. X      char buf2[LEN+50];
  491. X      char *p, *q;
  492. X      int ctrl_L;        /* form feed character detected */
  493. X      int i, j;
  494. X      
  495. X      if (note_end) {
  496. X          return FALSE;
  497. X      }
  498. X  
  499. X      while (! note_end) {
  500. X          note_line = 1;
  501. X          ctrl_L = FALSE;
  502. X--- 1096,1119 ----
  503. X  
  504. X  int show_last_page ()
  505. X  {
  506. X!     char buf[LEN];
  507. X      char buf2[LEN+50];
  508. X      char *p, *q;
  509. X      int ctrl_L;        /* form feed character detected */
  510. X      int i, j;
  511. X+     long tmp_pos;
  512. X      
  513. X      if (note_end) {
  514. X          return FALSE;
  515. X      }
  516. X  
  517. X+     if (note_size == 0L) {
  518. X+         tmp_pos = ftell (note_fp);
  519. X+         fseek (note_fp, 0L, 2);            /* goto end of article */
  520. X+         note_size = ftell (note_fp);
  521. X+         fseek (note_fp, tmp_pos, 0);    /* goto old position */
  522. X+     }
  523. X+ 
  524. X      while (! note_end) {
  525. X          note_line = 1;
  526. X          ctrl_L = FALSE;
  527. X***************
  528. X*** 1103,1109 ****
  529. X              note_line += 2;
  530. X          }
  531. X          while (note_line < LINES) {
  532. X!             if (fgets(buf, sizeof buf, note_fp) == NULL) {
  533. X                  note_end = TRUE;
  534. X                  break;
  535. X              }
  536. X--- 1124,1130 ----
  537. X              note_line += 2;
  538. X          }
  539. X          while (note_line < LINES) {
  540. X!             if (fgets (buf, sizeof buf, note_fp) == NULL) {
  541. X                  note_end = TRUE;
  542. X                  break;
  543. X              }
  544. X***************
  545. X*** 1136,1142 ****
  546. X                  break;
  547. X              }
  548. X          }
  549. X!         if (! note_end) {
  550. X              note_mark[++note_page] = ftell(note_fp);
  551. X          }
  552. X      }
  553. X--- 1157,1167 ----
  554. X                  break;
  555. X              }
  556. X          }
  557. X!         if (note_mark[note_page] == note_size) {
  558. X!             note_end = TRUE;
  559. X!             note_page--;
  560. X!             break;
  561. X!         } else if (! note_end) {
  562. X              note_mark[++note_page] = ftell(note_fp);
  563. X          }
  564. X      }
  565. Xdiff -rcs 102/patchlevel.h 103/patchlevel.h
  566. X*** 102/patchlevel.h    Mon Sep 23 17:55:40 1991
  567. X--- 103/patchlevel.h    Mon Sep 30 07:58:07 1991
  568. X***************
  569. X*** 1 ****
  570. X! #define PATCHLEVEL    2
  571. X--- 1 ----
  572. X! #define PATCHLEVEL    3
  573. Xdiff -rcs 102/post.c 103/post.c
  574. X*** 102/post.c    Mon Sep 23 17:55:40 1991
  575. X--- 103/post.c    Mon Sep 30 18:19:01 1991
  576. X***************
  577. X*** 3,9 ****
  578. X   *  Module    : post.c
  579. X   *  Author    : I.Lea
  580. X   *  Created   : 01-04-91
  581. X!  *  Updated   : 22-09-91
  582. X   *  Release   : 1.0
  583. X   *  Notes     : mailing/posting/replying/followup & cancel article routines
  584. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  585. X--- 3,9 ----
  586. X   *  Module    : post.c
  587. X   *  Author    : I.Lea
  588. X   *  Created   : 01-04-91
  589. X!  *  Updated   : 30-09-91
  590. X   *  Release   : 1.0
  591. X   *  Notes     : mailing/posting/replying/followup & cancel article routines
  592. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  593. X***************
  594. X*** 15,26 ****
  595. X  
  596. X  #include    "tin.h"
  597. X  
  598. X! extern char note_h_distrib[LEN+1];        /* Distribution: */
  599. X! extern char note_h_followup[LEN+1];        /* Followup-To: */
  600. X! extern char note_h_from[LEN+1];            /* From:    */
  601. X! extern char note_h_messageid[LEN+1];    /* Message-ID:    */
  602. X! extern char note_h_newsgroups[LEN+1];    /* Newsgroups:    */
  603. X! extern char note_h_subj[LEN+1];            /* Subject:    */
  604. X  
  605. X  extern char note_from_addr[100];
  606. X  extern char note_full_name[100];
  607. X--- 15,26 ----
  608. X  
  609. X  #include    "tin.h"
  610. X  
  611. X! extern char note_h_distrib[LEN];        /* Distribution: */
  612. X! extern char note_h_followup[LEN];        /* Followup-To: */
  613. X! extern char note_h_from[LEN];            /* From:    */
  614. X! extern char note_h_messageid[LEN];        /* Message-ID:    */
  615. X! extern char note_h_newsgroups[LEN];        /* Newsgroups:    */
  616. X! extern char note_h_subj[LEN];            /* Subject:    */
  617. X  
  618. X  extern char note_from_addr[100];
  619. X  extern char note_full_name[100];
  620. X***************
  621. X*** 55,61 ****
  622. X              return FALSE;
  623. X          }
  624. X          rewind (fp);
  625. X!         posted = (struct posted_t *) my_malloc ((no_of_lines+1) * sizeof (struct posted_t));
  626. X          for (i=0 ; fgets (buf, sizeof (buf), fp) != NULL ; i++) {
  627. X              for (j=0 ; buf[j] != '|' && buf[j] != '\n' ; j++) {
  628. X                  posted[i].date[j] = buf[j];        /* posted date */
  629. X--- 55,61 ----
  630. X              return FALSE;
  631. X          }
  632. X          rewind (fp);
  633. X!         posted = (struct posted_t *) my_malloc ((unsigned) (no_of_lines+1) * sizeof (struct posted_t));
  634. X          for (i=0 ; fgets (buf, sizeof (buf), fp) != NULL ; i++) {
  635. X              for (j=0 ; buf[j] != '|' && buf[j] != '\n' ; j++) {
  636. X                  posted[i].date[j] = buf[j];        /* posted date */
  637. X***************
  638. X*** 90,96 ****
  639. X          fclose (fp);
  640. X          set_tin_uid_gid ();
  641. X  
  642. X!         show_info_page (POST_INFO, (char *) 0, txt_post_history_menu);
  643. X          return TRUE;
  644. X      }
  645. X  }
  646. X--- 90,100 ----
  647. X          fclose (fp);
  648. X          set_tin_uid_gid ();
  649. X  
  650. X!         show_info_page (POST_INFO, (char **) 0, txt_post_history_menu);
  651. X!         if (posted != (struct posted_t *) 0) {
  652. X!             free (posted);
  653. X!             posted = (struct posted_t *) 0;
  654. X!         }
  655. X          return TRUE;
  656. X      }
  657. X  }
  658. X***************
  659. X*** 100,107 ****
  660. X      char *group;
  661. X      char *subj;
  662. X  {
  663. X!     char buf[LEN+1];
  664. X!     char tmp_post[LEN+1];
  665. X      FILE *fp, *tmp_fp;
  666. X      long epoch;
  667. X      struct tm *tm;
  668. X--- 104,111 ----
  669. X      char *group;
  670. X      char *subj;
  671. X  {
  672. X!     char buf[LEN];
  673. X!     char tmp_post[LEN];
  674. X      FILE *fp, *tmp_fp;
  675. X      long epoch;
  676. X      struct tm *tm;
  677. X***************
  678. X*** 141,148 ****
  679. X      FILE *fp;
  680. X      char ch;
  681. X      char ch_default = 'p';
  682. X!     char subj[LEN+1];
  683. X!     char buf[LEN+1];
  684. X      int redraw_screen = FALSE;
  685. X  
  686. X      start_line_offset = 4;
  687. X--- 145,152 ----
  688. X      FILE *fp;
  689. X      char ch;
  690. X      char ch_default = 'p';
  691. X!     char subj[LEN];
  692. X!     char buf[LEN];
  693. X      int redraw_screen = FALSE;
  694. X  
  695. X      start_line_offset = 4;
  696. X***************
  697. X*** 240,250 ****
  698. X      FILE *fp;
  699. X      char ch, *ptr;
  700. X      char ch_default = 'p';
  701. X!     char buf[LEN+1];
  702. X      int redraw_screen = FALSE;
  703. X  
  704. X      start_line_offset = 4;
  705. X  
  706. X      if (*note_h_followup && strcmp (note_h_followup, "poster") == 0) {
  707. X          clear_message ();
  708. X          if (! prompt_yn (LINES, txt_resp_to_poster, 'y')) {
  709. X--- 244,256 ----
  710. X      FILE *fp;
  711. X      char ch, *ptr;
  712. X      char ch_default = 'p';
  713. X!     char buf[LEN];
  714. X      int redraw_screen = FALSE;
  715. X  
  716. X      start_line_offset = 4;
  717. X  
  718. X+     wait_message ("Post a followup...");
  719. X+     
  720. X      if (*note_h_followup && strcmp (note_h_followup, "poster") == 0) {
  721. X          clear_message ();
  722. X          if (! prompt_yn (LINES, txt_resp_to_poster, 'y')) {
  723. X***************
  724. X*** 379,386 ****
  725. X  {
  726. X      char nam[100];
  727. X      char ch, ch_default = 's';
  728. X!     char buf[LEN+1];
  729. X!     char mail_to[LEN+1];
  730. X      FILE *fp;
  731. X      int redraw_screen = FALSE;
  732. X  
  733. X--- 385,392 ----
  734. X  {
  735. X      char nam[100];
  736. X      char ch, ch_default = 's';
  737. X!     char buf[LEN];
  738. X!     char mail_to[LEN];
  739. X      FILE *fp;
  740. X      int redraw_screen = FALSE;
  741. X  
  742. X***************
  743. X*** 477,487 ****
  744. X      FILE *fp;
  745. X      char ch;
  746. X      char ch_default = 's';
  747. X!     char buf[LEN+1];
  748. X!     char mail_to[LEN+1];
  749. X  
  750. X      start_line_offset = 5;
  751. X      
  752. X      set_real_uid_gid ();
  753. X  
  754. X      sprintf (nam, "%s/.bugreport", homedir);
  755. X--- 483,495 ----
  756. X      FILE *fp;
  757. X      char ch;
  758. X      char ch_default = 's';
  759. X!     char buf[LEN];
  760. X!     char mail_to[LEN];
  761. X  
  762. X      start_line_offset = 5;
  763. X      
  764. X+     wait_message ("Mail bug report...");
  765. X+     
  766. X      set_real_uid_gid ();
  767. X  
  768. X      sprintf (nam, "%s/.bugreport", homedir);
  769. X***************
  770. X*** 559,567 ****
  771. X  int mail_to_author (copy_text)
  772. X      int copy_text;
  773. X  {
  774. X!     char buf[LEN+1];
  775. X      char nam[100];
  776. X!     char mail_to[LEN+1];
  777. X      char ch, ch_default = 's';
  778. X      FILE *fp;
  779. X      int redraw_screen = FALSE;
  780. X--- 567,575 ----
  781. X  int mail_to_author (copy_text)
  782. X      int copy_text;
  783. X  {
  784. X!     char buf[LEN];
  785. X      char nam[100];
  786. X!     char mail_to[LEN];
  787. X      char ch, ch_default = 's';
  788. X      FILE *fp;
  789. X      int redraw_screen = FALSE;
  790. X***************
  791. X*** 568,573 ****
  792. X--- 576,583 ----
  793. X  
  794. X      start_line_offset = 4;
  795. X      
  796. X+     wait_message ("Reply to author...");
  797. X+ 
  798. X      set_real_uid_gid ();
  799. X  
  800. X      sprintf (nam, "%s/.letter", homedir);
  801. X***************
  802. X*** 655,663 ****
  803. X      char *mail_to;
  804. X  {
  805. X      FILE *fp;
  806. X!     char buf[LEN+1];
  807. X!     char buf2[LEN+1];
  808. X!     char new_mail_to[LEN+1];
  809. X      char *p;
  810. X  
  811. X      *new_mail_to = '\0';
  812. X--- 665,673 ----
  813. X      char *mail_to;
  814. X  {
  815. X      FILE *fp;
  816. X!     char buf[LEN];
  817. X!     char buf2[LEN];
  818. X!     char new_mail_to[LEN];
  819. X      char *p;
  820. X  
  821. X      *new_mail_to = '\0';
  822. XFiles 102/prompt.c and 103/prompt.c are identical
  823. Xdiff -rcs 102/proto.h 103/proto.h
  824. X*** 102/proto.h    Tue Sep 24 08:17:42 1991
  825. X--- 103/proto.h    Mon Sep 30 07:58:07 1991
  826. X***************
  827. X*** 17,23 ****
  828. X  int load_index(void);
  829. X  void find_local_index(char *group);
  830. X  void do_update(void);
  831. X! void save_any_news(void);
  832. X  void reload_index_file(char *group, int killed);
  833. X  char *parse_date(char *date, char *str);
  834. X  int artnum_comp(char *p1, char *p2);
  835. X--- 17,23 ----
  836. X  int load_index(void);
  837. X  void find_local_index(char *group);
  838. X  void do_update(void);
  839. X! int check_start_save_any_news(int check_start_save);
  840. X  void reload_index_file(char *group, int killed);
  841. X  char *parse_date(char *date, char *str);
  842. X  int artnum_comp(char *p1, char *p2);
  843. X***************
  844. X*** 102,107 ****
  845. X--- 102,108 ----
  846. X  void shell_escape(void);
  847. X  void tin_done(int ret);
  848. X  int read_active(void);
  849. X+ void mark_unthreaded_groups(void);
  850. X  int backup_active(int create);
  851. X  void add_signature(FILE *fp, int flag);
  852. X  long hash_groupname(char *buf);
  853. X***************
  854. X*** 220,226 ****
  855. X  char *str_str(char *text, char *pattern);
  856. X  void make_lower(char *s, char *t);
  857. X  /* select.c */
  858. X! void selection_index(void);
  859. X  void group_selection_page(void);
  860. X  int prompt_group_num(int ch);
  861. X  void erase_group_arrow(void);
  862. X--- 221,227 ----
  863. X  char *str_str(char *text, char *pattern);
  864. X  void make_lower(char *s, char *t);
  865. X  /* select.c */
  866. X! void selection_index(int start_groupnum);
  867. X  void group_selection_page(void);
  868. X  int prompt_group_num(int ch);
  869. X  void erase_group_arrow(void);
  870. X***************
  871. X*** 269,275 ****
  872. X  int load_index(/*void*/);
  873. X  void find_local_index(/*char *group*/);
  874. X  void do_update(/*void*/);
  875. X! void save_any_news(/*void*/);
  876. X  void reload_index_file(/*char *group, int killed*/);
  877. X  char *parse_date(/*char *date, char *str*/);
  878. X  int artnum_comp(/*char *p1, char *p2*/);
  879. X--- 270,276 ----
  880. X  int load_index(/*void*/);
  881. X  void find_local_index(/*char *group*/);
  882. X  void do_update(/*void*/);
  883. X! int check_start_save_any_news(/*int check_start_save*/);
  884. X  void reload_index_file(/*char *group, int killed*/);
  885. X  char *parse_date(/*char *date, char *str*/);
  886. X  int artnum_comp(/*char *p1, char *p2*/);
  887. X***************
  888. X*** 354,359 ****
  889. X--- 355,361 ----
  890. X  void shell_escape(/*void*/);
  891. X  void tin_done(/*int ret*/);
  892. X  int read_active(/*void*/);
  893. X+ void mark_unthreaded_groups(/*void*/);
  894. X  int backup_active(/*int create*/);
  895. X  void add_signature(/*FILE *fp, int flag*/);
  896. X  long hash_groupname(/*char *buf*/);
  897. X***************
  898. X*** 472,478 ****
  899. X  char *str_str(/*char *text, char *pattern*/);
  900. X  void make_lower(/*char *s, char *t*/);
  901. X  /* select.c */
  902. X! void selection_index(/*void*/);
  903. X  void group_selection_page(/*void*/);
  904. X  int prompt_group_num(/*int ch*/);
  905. X  void erase_group_arrow(/*void*/);
  906. X--- 474,480 ----
  907. X  char *str_str(/*char *text, char *pattern*/);
  908. X  void make_lower(/*char *s, char *t*/);
  909. X  /* select.c */
  910. X! void selection_index(/*int start_groupnum*/);
  911. X  void group_selection_page(/*void*/);
  912. X  int prompt_group_num(/*int ch*/);
  913. X  void erase_group_arrow(/*void*/);
  914. Xdiff -rcs 102/rcfile.c 103/rcfile.c
  915. X*** 102/rcfile.c    Mon Sep 23 17:55:40 1991
  916. X--- 103/rcfile.c    Mon Sep 30 12:39:57 1991
  917. X***************
  918. X*** 3,9 ****
  919. X   *  Module    : rcfile.c
  920. X   *  Author    : I.Lea
  921. X   *  Created   : 01-04-91
  922. X!  *  Updated   : 16-09-91
  923. X   *  Release   : 1.0
  924. X   *  Notes     :
  925. X   *  Copyright : (c) Copyright 1991 by Iain Lea
  926. X--- 3,9 ----
  927. X   *  Module    : rcfile.c
  928. X   *  Author    : I.Lea
  929. X   *  Created   : 01-04-91
  930. X!  *  Updated   : 29-09-91
  931. X   *  Release   : 1.0
  932. X   *  Notes     :
  933. X   *  Copyright : (c) Copyright 1991 by Iain Lea
  934. X***************
  935. X*** 17,23 ****
  936. X  
  937. X  #define COL2    COLS/2
  938. X  
  939. X! extern char index_file[LEN+1];
  940. X  
  941. X  /*
  942. X   *  read_rcfile - read defaults from ~/.tin/tinrc
  943. X--- 17,23 ----
  944. X  
  945. X  #define COL2    COLS/2
  946. X  
  947. X! extern char index_file[LEN];
  948. X  
  949. X  /*
  950. X   *  read_rcfile - read defaults from ~/.tin/tinrc
  951. X***************
  952. X*** 25,31 ****
  953. X  
  954. X  int read_rcfile ()
  955. X  {
  956. X!     char buf[LEN+1];
  957. X      FILE *fp;
  958. X  
  959. X      if ((fp = fopen (rcfile, "r")) != NULL) {
  960. X--- 25,31 ----
  961. X  
  962. X  int read_rcfile ()
  963. X  {
  964. X!     char buf[LEN];
  965. X      FILE *fp;
  966. X  
  967. X      if ((fp = fopen (rcfile, "r")) != NULL) {
  968. X***************
  969. X*** 50,55 ****
  970. X--- 50,57 ----
  971. X                      print_header = (strncmp (&buf[13], "ON", 2) == 0 ? TRUE : FALSE);
  972. X                  } else if (strncmp (buf, "pos_first_unread=", 17) == 0) {
  973. X                      pos_first_unread = (strncmp (&buf[17], "ON", 2) == 0 ? TRUE : FALSE);
  974. X+                 } else if (strncmp (buf, "thread_articles=", 16) == 0) {
  975. X+                     thread_arts = (strncmp (&buf[16], "ON", 2) == 0 ? TRUE : FALSE);
  976. X                  } else if (strncmp (buf, "post_process_type=", 18) == 0) {
  977. X                      post_proc_type = atoi (&buf[18]);
  978. X                      switch (post_proc_type) {
  979. X***************
  980. X*** 143,148 ****
  981. X--- 145,152 ----
  982. X          fprintf (fp, "# type of post processing to perform after saving articles.\n");
  983. X          fprintf (fp, "# 0) none 1) shar 2) uudecode 3) uud & list zoo 4) uud & extract zoo 5) patch.\n");
  984. X          fprintf (fp, "post_process_type=%d\n\n", post_proc_type);
  985. X+         fprintf (fp, "# if ON and group not in ~/.tin/unthread articles will be threaded.\n");
  986. X+         fprintf (fp, "thread_articles=%s\n\n", (thread_arts ? "ON" : "OFF"));
  987. X          fprintf (fp, "# sort articles by 0) nothing 1) Subject (descending) 2) Subject (ascending)\n");
  988. X          fprintf (fp, "# 3) From (descend) 4) From (ascend) 5) Date (descend) 6) Date (ascend)\n");
  989. X          fprintf (fp, "sort_article_type=%d\n\n", sort_art_type);
  990. X***************
  991. X*** 152,158 ****
  992. X          fprintf (fp, "maildir=%s\n\n", maildir);    
  993. X          fprintf (fp, "# (-p) print program with parameters used to print articles/threads\n");
  994. X          fprintf (fp, "printer=%s\n\n", printer);
  995. X!         fprintf (fp, "# (-S) directory where news is spooled\n");
  996. X          fprintf (fp, "spooldir=%s\n\n", spooldir);
  997. X  
  998. X          fprintf (fp, "# .signature file used for replies, followups\n");
  999. X--- 156,162 ----
  1000. X          fprintf (fp, "maildir=%s\n\n", maildir);    
  1001. X          fprintf (fp, "# (-p) print program with parameters used to print articles/threads\n");
  1002. X          fprintf (fp, "printer=%s\n\n", printer);
  1003. X!         fprintf (fp, "# (-s) directory where news is spooled\n");
  1004. X          fprintf (fp, "spooldir=%s\n\n", spooldir);
  1005. X  
  1006. X          fprintf (fp, "# .signature file used for replies, followups\n");
  1007. X***************
  1008. X*** 556,562 ****
  1009. X      int col;
  1010. X      char *var;
  1011. X  {
  1012. X!     char buf[LEN+1];
  1013. X      char ch;
  1014. X      int len;
  1015. X      int i;
  1016. X--- 560,566 ----
  1017. X      int col;
  1018. X      char *var;
  1019. X  {
  1020. X!     char buf[LEN];
  1021. X      char ch;
  1022. X      int len;
  1023. X      int i;
  1024. X***************
  1025. X*** 610,616 ****
  1026. X      int col;
  1027. X      char *str;
  1028. X  {
  1029. X!     char buf[LEN+1];
  1030. X      
  1031. X      if (str[0] == '~') {
  1032. X          if (strlen (str) == 1) {
  1033. X--- 614,620 ----
  1034. X      int col;
  1035. X      char *str;
  1036. X  {
  1037. X!     char buf[LEN];
  1038. X      
  1039. X      if (str[0] == '~') {
  1040. X          if (strlen (str) == 1) {
  1041. Xdiff -rcs 102/save.c 103/save.c
  1042. X*** 102/save.c    Mon Sep 23 17:55:40 1991
  1043. X--- 103/save.c    Mon Sep 30 12:40:22 1991
  1044. X***************
  1045. X*** 47,54 ****
  1046. X  };
  1047. X  
  1048. X  extern char *glob_group;
  1049. X! extern char note_h_path[LEN+1];    /* Path:    */
  1050. X! extern char note_h_date[LEN+1];    /* Date:    */
  1051. X  extern FILE    *note_fp;            /* the body of the current article */
  1052. X  extern int index_point;
  1053. X  extern int note_end;
  1054. X--- 47,54 ----
  1055. X  };
  1056. X  
  1057. X  extern char *glob_group;
  1058. X! extern char note_h_path[LEN];    /* Path:    */
  1059. X! extern char note_h_date[LEN];    /* Date:    */
  1060. X  extern FILE    *note_fp;            /* the body of the current article */
  1061. X  extern int index_point;
  1062. X  extern int note_end;
  1063. X***************
  1064. X*** 62,69 ****
  1065. X      int mailbox;
  1066. X      char *filename;
  1067. X  {
  1068. X!     char file[LEN+1];
  1069. X!     char save_art_info[LEN+1];
  1070. X      FILE *fp;
  1071. X      int is_mailbox = FALSE;
  1072. X      int i = 0, ret_code = FALSE;
  1073. X--- 62,69 ----
  1074. X      int mailbox;
  1075. X      char *filename;
  1076. X  {
  1077. X!     char file[LEN];
  1078. X!     char save_art_info[LEN];
  1079. X      FILE *fp;
  1080. X      int is_mailbox = FALSE;
  1081. X      int i = 0, ret_code = FALSE;
  1082. X***************
  1083. X*** 91,101 ****
  1084. X          set_tin_uid_gid ();
  1085. X          return (ret_code);
  1086. X      }
  1087. X! 
  1088. X      if (! filename) {
  1089. X          wait_message (txt_saving);
  1090. X      }
  1091. X!     
  1092. X      fprintf(fp, "From %s %s\n", note_h_path, note_h_date);
  1093. X  
  1094. X      if (fseek(note_fp, 0L, 0) == -1) {
  1095. X--- 91,101 ----
  1096. X          set_tin_uid_gid ();
  1097. X          return (ret_code);
  1098. X      }
  1099. X! /*
  1100. X      if (! filename) {
  1101. X          wait_message (txt_saving);
  1102. X      }
  1103. X! */    
  1104. X      fprintf(fp, "From %s %s\n", note_h_path, note_h_date);
  1105. X  
  1106. X      if (fseek(note_fp, 0L, 0) == -1) {
  1107. X***************
  1108. X*** 130,136 ****
  1109. X      int is_mailbox;
  1110. X      char *group_path;
  1111. X  {
  1112. X!     char save_thread_info[LEN+1];
  1113. X      char *first_savefile;
  1114. X      FILE *fp;
  1115. X      int count = 0;
  1116. X--- 130,136 ----
  1117. X      int is_mailbox;
  1118. X      char *group_path;
  1119. X  {
  1120. X!     char save_thread_info[LEN];
  1121. X      char *first_savefile;
  1122. X      FILE *fp;
  1123. X      int count = 0;
  1124. X***************
  1125. X*** 199,207 ****
  1126. X      int is_mailbox;
  1127. X      char *group_path;
  1128. X  {
  1129. X!     char buf[LEN+1];
  1130. X!     char buf2[LEN+1];
  1131. X!     char mailbox[LEN+1];
  1132. X      int i, ret_code;     
  1133. X      
  1134. X      for (i=0 ; i < save_num ; i++) {
  1135. X--- 199,207 ----
  1136. X      int is_mailbox;
  1137. X      char *group_path;
  1138. X  {
  1139. X!     char buf[LEN];
  1140. X!     char buf2[LEN];
  1141. X!     char mailbox[LEN];
  1142. X      int i, ret_code;     
  1143. X      
  1144. X      for (i=0 ; i < save_num ; i++) {
  1145. X***************
  1146. X*** 238,244 ****
  1147. X  int append_to_existing_file (i)
  1148. X      int i;
  1149. X  {
  1150. X!     char buf[LEN+1];
  1151. X      char *file;
  1152. X      struct stat st;
  1153. X  
  1154. X--- 238,244 ----
  1155. X  int append_to_existing_file (i)
  1156. X      int i;
  1157. X  {
  1158. X!     char buf[LEN];
  1159. X      char *file;
  1160. X      struct stat st;
  1161. X  
  1162. X***************
  1163. X*** 333,339 ****
  1164. X  int create_sub_dir (i)
  1165. X      int i;
  1166. X  {
  1167. X!     char dir[LEN+1];
  1168. X      struct stat st;
  1169. X  
  1170. X      if (! save[i].is_mailbox && save[i].archive) {
  1171. X--- 333,339 ----
  1172. X  int create_sub_dir (i)
  1173. X      int i;
  1174. X  {
  1175. X!     char dir[LEN];
  1176. X      struct stat st;
  1177. X  
  1178. X      if (! save[i].is_mailbox && save[i].archive) {
  1179. X***************
  1180. X*** 361,368 ****
  1181. X      int is_mailbox;
  1182. X      char *path;
  1183. X  {
  1184. X!     char dir[LEN+1];
  1185. X!     char file[LEN+1];
  1186. X      int i;
  1187. X      
  1188. X      dir[0] = '\0';
  1189. X--- 361,368 ----
  1190. X      int is_mailbox;
  1191. X      char *path;
  1192. X  {
  1193. X!     char dir[LEN];
  1194. X!     char file[LEN];
  1195. X      int i;
  1196. X      
  1197. X      dir[0] = '\0';
  1198. X***************
  1199. X*** 630,639 ****
  1200. X  void post_process_uud (pp)
  1201. X      int pp;
  1202. X  {
  1203. X!     char s[LEN+1], t[LEN+1], u[LEN+1];
  1204. X!     char buf[LEN+1], *file;
  1205. X!     char file_out[LEN+1];
  1206. X!     char file_out_dir[LEN+1];
  1207. X      FILE *fp_in, *fp_out;
  1208. X      int i, state = INITIAL;
  1209. X      int file_size = 0;
  1210. X--- 630,639 ----
  1211. X  void post_process_uud (pp)
  1212. X      int pp;
  1213. X  {
  1214. X!     char s[LEN], t[LEN], u[LEN];
  1215. X!     char buf[LEN], *file;
  1216. X!     char file_out[LEN];
  1217. X!     char file_out_dir[LEN];
  1218. X      FILE *fp_in, *fp_out;
  1219. X      int i, state = INITIAL;
  1220. X      int file_size = 0;
  1221. X***************
  1222. X*** 800,809 ****
  1223. X   
  1224. X  void post_process_sh ()
  1225. X  {
  1226. X!     char buf[LEN+1];
  1227. X!     char file_in[LEN+1];
  1228. X!     char file_out[LEN+1];
  1229. X!     char file_out_dir[LEN+1];
  1230. X      char *ptr1, *ptr2;
  1231. X      FILE *fp_in, *fp_out;
  1232. X      int found_header;
  1233. X--- 800,809 ----
  1234. X   
  1235. X  void post_process_sh ()
  1236. X  {
  1237. X!     char buf[LEN];
  1238. X!     char file_in[LEN];
  1239. X!     char file_out[LEN];
  1240. X!     char file_out_dir[LEN];
  1241. X      char *ptr1, *ptr2;
  1242. X      FILE *fp_in, *fp_out;
  1243. X      int found_header;
  1244. X***************
  1245. X*** 877,883 ****
  1246. X      char *dir;
  1247. X      char *ext;
  1248. X  {
  1249. X!     char buf[LEN+1];
  1250. X      char *file = NULL;
  1251. X      FILE *fp;
  1252. X      
  1253. X--- 877,883 ----
  1254. X      char *dir;
  1255. X      char *ext;
  1256. X  {
  1257. X!     char buf[LEN];
  1258. X      char *file = NULL;
  1259. X      FILE *fp;
  1260. X      
  1261. Xdiff -rcs 102/screen.c 103/screen.c
  1262. X*** 102/screen.c    Mon Sep 23 17:55:40 1991
  1263. X--- 103/screen.c    Mon Sep 30 18:47:54 1991
  1264. X***************
  1265. X*** 17,49 ****
  1266. X  
  1267. X  extern int errno;
  1268. X  
  1269. X! char msg[LEN+1];
  1270. X  struct screen_t *screen;
  1271. X  
  1272. X  
  1273. X! void info_message (msg)
  1274. X!     char *msg;
  1275. X  {
  1276. X!     clear_message();      /* Clear any old messages hanging around */
  1277. X!     center_line(LINES, FALSE, msg);  /* center the message at screen bottom  */
  1278. X      MoveCursor(LINES, 0);
  1279. X  }
  1280. X  
  1281. X  
  1282. X! void wait_message (msg)
  1283. X!     char *msg;
  1284. X  {
  1285. X      if (RawState ()) {
  1286. X          clear_message();      /* Clear any old messages hanging around */
  1287. X      }
  1288. X!     printf ("%s", msg);
  1289. X      fflush (stdout);
  1290. X  }
  1291. X  
  1292. X  
  1293. X! void error_message (template, msg)
  1294. X      char *template;
  1295. X!     char *msg;
  1296. X  {
  1297. X      errno = 0;
  1298. X  
  1299. X--- 17,49 ----
  1300. X  
  1301. X  extern int errno;
  1302. X  
  1303. X! char msg[LEN];
  1304. X  struct screen_t *screen;
  1305. X  
  1306. X  
  1307. X! void info_message (str)
  1308. X!     char *str;
  1309. X  {
  1310. X!     clear_message();                /* Clear any old messages hanging around */
  1311. X!     center_line(LINES, FALSE, str);    /* center the message at screen bottom */
  1312. X      MoveCursor(LINES, 0);
  1313. X  }
  1314. X  
  1315. X  
  1316. X! void wait_message (str)
  1317. X!     char *str;
  1318. X  {
  1319. X      if (RawState ()) {
  1320. X          clear_message();      /* Clear any old messages hanging around */
  1321. X      }
  1322. X!     printf ("%s", str);
  1323. X      fflush (stdout);
  1324. X  }
  1325. X  
  1326. X  
  1327. X! void error_message (template, str)
  1328. X      char *template;
  1329. X!     char *str;
  1330. X  {
  1331. X      errno = 0;
  1332. X  
  1333. X***************
  1334. X*** 51,57 ****
  1335. X          clear_message ();      /* Clear any old messages hanging around */
  1336. X      }
  1337. X      
  1338. X!     fprintf (stderr, template, msg);
  1339. X      fflush (stderr);
  1340. X  
  1341. X      if (update == FALSE && RawState ()) {
  1342. X--- 51,57 ----
  1343. X          clear_message ();      /* Clear any old messages hanging around */
  1344. X      }
  1345. X      
  1346. X!     fprintf (stderr, template, str);
  1347. X      fflush (stderr);
  1348. X  
  1349. X      if (update == FALSE && RawState ()) {
  1350. Xdiff -rcs 102/search.c 103/search.c
  1351. X*** 102/search.c    Mon Sep 23 17:55:41 1991
  1352. X--- 103/search.c    Mon Sep 30 18:50:35 1991
  1353. X***************
  1354. X*** 31,40 ****
  1355. X   * last search patterns
  1356. X   */
  1357. X  
  1358. X! char author_search_string[LEN+1];
  1359. X! char group_search_string[LEN+1];
  1360. X! char subject_search_string[LEN+1];
  1361. X! char art_search_string[LEN+1];
  1362. X  
  1363. X  
  1364. X  /*
  1365. X--- 31,40 ----
  1366. X   * last search patterns
  1367. X   */
  1368. X  
  1369. X! char author_search_string[LEN];
  1370. X! char group_search_string[LEN];
  1371. X! char subject_search_string[LEN];
  1372. X! char art_search_string[LEN];
  1373. X  
  1374. X  
  1375. X  /*
  1376. X***************
  1377. X*** 45,52 ****
  1378. X      int current_art;
  1379. X      int forward;
  1380. X  {
  1381. X!     char buf[LEN+1];
  1382. X!     char buf2[LEN+1];
  1383. X      int i;
  1384. X  
  1385. X      clear_message();
  1386. X--- 45,52 ----
  1387. X      int current_art;
  1388. X      int forward;
  1389. X  {
  1390. X!     char buf[LEN];
  1391. X!     char buf2[LEN];
  1392. X      int i;
  1393. X  
  1394. X      clear_message();
  1395. X***************
  1396. X*** 108,115 ****
  1397. X  void search_group (forward)
  1398. X      int forward;
  1399. X  {
  1400. X!     char buf[LEN+1];
  1401. X!     char buf2[LEN+1];
  1402. X      int i;
  1403. X  
  1404. X      clear_message();
  1405. X--- 108,115 ----
  1406. X  void search_group (forward)
  1407. X      int forward;
  1408. X  {
  1409. X!     char buf[LEN];
  1410. X!     char buf2[LEN];
  1411. X      int i;
  1412. X  
  1413. X      clear_message();
  1414. X***************
  1415. X*** 179,186 ****
  1416. X      int forward;
  1417. X      char *group;
  1418. X  {
  1419. X!     char buf[LEN+1];
  1420. X!     char buf2[LEN+1];
  1421. X      int i, j;
  1422. X  
  1423. X      if (index_point < 0) {
  1424. X--- 179,186 ----
  1425. X      int forward;
  1426. X      char *group;
  1427. X  {
  1428. X!     char buf[LEN];
  1429. X!     char buf2[LEN];
  1430. X      int i, j;
  1431. X  
  1432. X      if (index_point < 0) {
  1433. X***************
  1434. X*** 228,234 ****
  1435. X          if (i < 0)
  1436. X              i = top_base - 1;
  1437. X  
  1438. X!         j = base[i];
  1439. X          make_lower(arts[j].subject, buf2);
  1440. X          if (str_str (buf2, buf) != 0) {
  1441. X              if (i >= first_subj_on_screen
  1442. X--- 228,234 ----
  1443. X          if (i < 0)
  1444. X              i = top_base - 1;
  1445. X  
  1446. X!         j = (int) base[i];
  1447. X          make_lower(arts[j].subject, buf2);
  1448. X          if (str_str (buf2, buf) != 0) {
  1449. X              if (i >= first_subj_on_screen
  1450. X***************
  1451. X*** 255,264 ****
  1452. X  int search_article (forward)
  1453. X      int forward;
  1454. X  {
  1455. X!     char buf[LEN+1];
  1456. X!     char buf2[LEN+1];
  1457. X!     char string[LEN+1];
  1458. X!     char pattern[LEN+1];
  1459. X      char *p, *q;
  1460. X      int ctrl_L;
  1461. X      int i, j;
  1462. X--- 255,264 ----
  1463. X  int search_article (forward)
  1464. X      int forward;
  1465. X  {
  1466. X!     char buf[LEN];
  1467. X!     char buf2[LEN];
  1468. X!     char string[LEN];
  1469. X!     char pattern[LEN];
  1470. X      char *p, *q;
  1471. X      int ctrl_L;
  1472. X      int i, j;
  1473. Xdiff -rcs 102/select.c 103/select.c
  1474. X*** 102/select.c    Mon Sep 23 17:55:41 1991
  1475. X--- 103/select.c    Mon Sep 30 18:49:10 1991
  1476. X***************
  1477. X*** 3,9 ****
  1478. X   *  Module    : select.c
  1479. X   *  Author    : R.Skrenta / I.Lea
  1480. X   *  Created   : 01-04-91
  1481. X!  *  Updated   : 22-09-91
  1482. X   *  Release   : 1.0
  1483. X   *  Notes     :
  1484. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1485. X--- 3,9 ----
  1486. X   *  Module    : select.c
  1487. X   *  Author    : R.Skrenta / I.Lea
  1488. X   *  Created   : 01-04-91
  1489. X!  *  Updated   : 29-09-91
  1490. X   *  Release   : 1.0
  1491. X   *  Notes     :
  1492. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1493. X***************
  1494. X*** 17,23 ****
  1495. X  
  1496. X  
  1497. X  extern int index_point;
  1498. X! extern char cvers[LEN+1];
  1499. X  
  1500. X  int first_group_on_screen;
  1501. X  int last_group_on_screen;
  1502. X--- 17,23 ----
  1503. X  
  1504. X  
  1505. X  extern int index_point;
  1506. X! extern char cvers[LEN];
  1507. X  
  1508. X  int first_group_on_screen;
  1509. X  int last_group_on_screen;
  1510. X***************
  1511. X*** 26,38 ****
  1512. X  int space_mode;
  1513. X  
  1514. X  
  1515. X! void selection_index()
  1516. X  {
  1517. X      char ch;
  1518. X      int i, n;
  1519. X      int subscribe_num;
  1520. X!     char buf[LEN+1];
  1521. X  
  1522. X  #ifndef USE_CLEARSCREEN
  1523. X      ClearScreen();
  1524. X  #endif
  1525. X--- 26,43 ----
  1526. X  int space_mode;
  1527. X  
  1528. X  
  1529. X! void selection_index (start_groupnum)
  1530. X!     int start_groupnum;
  1531. X  {
  1532. X      char ch;
  1533. X      int i, n;
  1534. X      int subscribe_num;
  1535. X!     char buf[LEN];
  1536. X  
  1537. X+     cur_groupnum = start_groupnum;
  1538. X+     
  1539. X+     mail_setup ();        /* record mailbox size for "you have mail" */
  1540. X+ 
  1541. X  #ifndef USE_CLEARSCREEN
  1542. X      ClearScreen();
  1543. X  #endif
  1544. X***************
  1545. X*** 87,128 ****
  1546. X                  break;
  1547. X  
  1548. X              case 27:    /* (ESC) common arrow keys */
  1549. X!                 ch = ReadCh();
  1550. X                  if (ch == '[' || ch == 'O')
  1551. X                      ch = ReadCh();
  1552. X                  switch (ch) {
  1553. X!                 case 'A':
  1554. X!                 case 'D':
  1555. X!                 case 'i':
  1556. X!                     goto select_up;
  1557. X  
  1558. X!                 case 'B':
  1559. X!                 case 'C':
  1560. X!                     goto select_down;
  1561. X  
  1562. X!                 case 'G':        /* ansi  PgDn */
  1563. X!                 case 'U':        /* at386 PgDn */
  1564. X!                     goto select_page_down;
  1565. X  
  1566. X!                 case 'I':        /* ansi  PgUp */
  1567. X!                 case 'V':        /* at386 PgUp */
  1568. X!                     goto select_page_up;
  1569. X  
  1570. X!                 case 'H':        /* at386  Home */
  1571. X!                     if (cur_groupnum != 0) {
  1572. X!                         cur_groupnum = 0;
  1573. X!                         group_selection_page ();
  1574. X!                     }
  1575. X!                     break;
  1576. X                      
  1577. X!                 case 'F':        /* ansi  End */
  1578. X!                 case 'Y':        /* at386  End */
  1579. X!                     goto end_of_list;
  1580. X                  }
  1581. X                  break;
  1582. X  
  1583. X!             case ctrl('D'):        /* page down */
  1584. X!             case ' ':
  1585. X  select_page_down:
  1586. X                  erase_group_arrow ();
  1587. X                  cur_groupnum += NOTESLINES / 2;
  1588. X--- 92,135 ----
  1589. X                  break;
  1590. X  
  1591. X              case 27:    /* (ESC) common arrow keys */
  1592. X!                 ch = ReadCh ();
  1593. X                  if (ch == '[' || ch == 'O')
  1594. X                      ch = ReadCh();
  1595. X                  switch (ch) {
  1596. X!                     case 'A':
  1597. X!                     case 'D':
  1598. X!                     case 'i':
  1599. X!                         goto select_up;
  1600. X  
  1601. X!                     case 'B':
  1602. X!                     case 'C':
  1603. X!                         goto select_down;
  1604. X  
  1605. X!                     case 'G':        /* ansi  PgDn */
  1606. X!                     case 'U':        /* at386 PgDn */
  1607. X!                         goto select_page_down;
  1608. X  
  1609. X!                     case 'I':        /* ansi  PgUp */
  1610. X!                     case 'V':        /* at386 PgUp */
  1611. X!                     case 'v':        /* emacs style */
  1612. X!                         goto select_page_up;
  1613. X  
  1614. X!                     case 'H':        /* at386  Home */
  1615. X!                         if (cur_groupnum != 0) {
  1616. X!                             cur_groupnum = 0;
  1617. X!                             group_selection_page ();
  1618. X!                         }
  1619. X!                         break;
  1620. X                      
  1621. X!                     case 'F':        /* ansi  End */
  1622. X!                     case 'Y':        /* at386  End */
  1623. X!                         goto end_of_list;
  1624. X                  }
  1625. X                  break;
  1626. X  
  1627. X!             case ' ':            /* page down */
  1628. X!             case ctrl('D'):        /* vi style */
  1629. X!             case ctrl('V'):        /* emacs style */
  1630. X  select_page_down:
  1631. X                  erase_group_arrow ();
  1632. X                  cur_groupnum += NOTESLINES / 2;
  1633. X***************
  1634. X*** 646,652 ****
  1635. X  
  1636. X  int choose_new_group ()
  1637. X  {
  1638. X!     char buf[LEN+1];
  1639. X      char *p;
  1640. X      int ret;
  1641. X  
  1642. X--- 653,659 ----
  1643. X  
  1644. X  int choose_new_group ()
  1645. X  {
  1646. X!     char buf[LEN];
  1647. X      char *p;
  1648. X      int ret;
  1649. X  
  1650. X***************
  1651. X*** 746,753 ****
  1652. X      char *group;
  1653. X      int default_num;
  1654. X  {
  1655. X!     char buf[LEN+1];
  1656. X!     char pos[LEN+1];
  1657. X      int pos_num = 0;
  1658. X  
  1659. X      sprintf (buf, txt_newsgroup_position, group);
  1660. X--- 753,760 ----
  1661. X      char *group;
  1662. X      int default_num;
  1663. X  {
  1664. X!     char buf[LEN];
  1665. X!     char pos[LEN];
  1666. X      int pos_num = 0;
  1667. X  
  1668. X      sprintf (buf, txt_newsgroup_position, group);
  1669. X***************
  1670. X*** 848,883 ****
  1671. X          group_selection_page ();
  1672. X      }
  1673. X  }
  1674. X- 
  1675. X- #ifdef TEST
  1676. X-                     do {
  1677. X-                         n = my_group[cur_groupnum];
  1678. X-                         if (active[n].min <= active[n].max) {
  1679. X-                             group_page (active[n].name);
  1680. X-                         } else {
  1681. X-                             if (cur_groupnum > n) {    /* next group */ 
  1682. X-                                 n = my_group[cur_groupnum];
  1683. X-                                 while (active[n].min <= active[n].max) {
  1684. X-                                     cur_groupnum++;
  1685. X-                                     if (cur_groupnum >= local_top) {
  1686. X-                                         cur_groupnum = local_top - 1;
  1687. X-                                         index_point = -1;
  1688. X-                                         break;
  1689. X-                                     }
  1690. X-                                     n = my_group[cur_groupnum];
  1691. X-                                 }
  1692. X-                             } else {    /* previous group */
  1693. X-                                 n = my_group[cur_groupnum];
  1694. X-                                 while (active[n].min <= active[n].max) {
  1695. X-                                     cur_groupnum--;
  1696. X-                                     if (cur_groupnum < 0) {
  1697. X-                                         cur_groupnum = 0;
  1698. X-                                         index_point = -1;
  1699. X-                                         break;
  1700. X-                                     }
  1701. X-                                     n = my_group[cur_groupnum];
  1702. X-                                 }
  1703. X-                             }
  1704. X-                         }
  1705. X-                     } while (index_point == -3);
  1706. X- #endif
  1707. X--- 855,857 ----
  1708. Xdiff -rcs 102/signal.c 103/signal.c
  1709. X*** 102/signal.c    Mon Sep 23 17:55:41 1991
  1710. X--- 103/signal.c    Mon Sep 30 18:50:23 1991
  1711. X***************
  1712. X*** 3,9 ****
  1713. X   *  Module    : signal.c
  1714. X   *  Author    : R.Skrenta / I.Lea
  1715. X   *  Created   : 01-04-91
  1716. X!  *  Updated   : 10-09-91
  1717. X   *  Release   : 1.0
  1718. X   *  Notes     : signal handlers for different modes and window resizing
  1719. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1720. X--- 3,9 ----
  1721. X   *  Module    : signal.c
  1722. X   *  Author    : R.Skrenta / I.Lea
  1723. X   *  Created   : 01-04-91
  1724. X!  *  Updated   : 29-09-91
  1725. X   *  Release   : 1.0
  1726. X   *  Notes     : signal handlers for different modes and window resizing
  1727. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1728. X***************
  1729. X*** 27,32 ****
  1730. X--- 27,33 ----
  1731. X  #ifdef POSIX_JOB_CONTROL
  1732. X  struct sigaction art_act;
  1733. X  struct sigaction group_act;
  1734. X+ struct sigaction kill_act;
  1735. X  struct sigaction main_act;
  1736. X  struct sigaction page_act;
  1737. X  struct sigaction rcfile_act;
  1738. X***************
  1739. X*** 37,43 ****
  1740. X  
  1741. X  void set_signal_handlers ()
  1742. X  {
  1743. X-     signal (SIGINT, signal_handler);        /* ctrl-C */
  1744. X      signal (SIGQUIT, signal_handler);        /* ctrl-\ */
  1745. X      signal (SIGILL, signal_handler);
  1746. X      signal (SIGBUS, signal_handler);
  1747. X--- 38,43 ----
  1748. X***************
  1749. X*** 212,218 ****
  1750. X  {
  1751. X  
  1752. X      Raw (FALSE);
  1753. X-     putchar ('\n');
  1754. X  
  1755. X  #ifdef POSIX_JOB_CONTROL
  1756. X      sigsetmask(0);
  1757. X--- 212,217 ----
  1758. Xdiff -rcs 102/tin.1 103/tin.1
  1759. X*** 102/tin.1    Tue Sep 24 08:54:12 1991
  1760. X--- 103/tin.1    Mon Sep 30 14:53:29 1991
  1761. X***************
  1762. X*** 1,4 ****
  1763. X! .TH TIN 1 "Version 1.0 PL2"
  1764. X  .SH NAME
  1765. X  tin \- Visual threaded Usenet news reader
  1766. X  .SH SYNOPSIS
  1767. X--- 1,4 ----
  1768. X! .TH TIN 1 "Version 1.0 PL3"
  1769. X  .SH NAME
  1770. X  tin \- Visual threaded Usenet news reader
  1771. X  .SH SYNOPSIS
  1772. X***************
  1773. X*** 82,90 ****
  1774. X  in the foreground.
  1775. X  .TP
  1776. X  \fB-v\fP
  1777. X! create/update index files for every group in \fI$HOME/.newsrc\fP or
  1778. X! file specified by -f option. Each group name is printed to stdout as
  1779. X! it is updated.
  1780. X  .PP
  1781. X  Tin can also dynamically change its options by the 'M' menu command.
  1782. X  Any changes are written to \fI$HOME/.tin/tinrc\fP.
  1783. X--- 82,99 ----
  1784. X  in the foreground.
  1785. X  .TP
  1786. X  \fB-v\fP
  1787. X! verbose mode for -c -u and -Z options.
  1788. X! .TP
  1789. X! \fB-z\fP
  1790. X! only start tin if there is any new/unread news. If there is news tin
  1791. X! will position cursor at first group with unread news. Useful for putting
  1792. X! in login file.
  1793. X! .TP
  1794. X! \fB-Z\fP
  1795. X! check if there is any new/unread news and exit with appropiate status.
  1796. X! If -v option is specified the number of unread articles in each group
  1797. X! is printed. An exit code 0 indicates no news, 1 that an error occurred
  1798. X! and 2 that new/unread news exists. Useful for writing scripts.
  1799. X  .PP
  1800. X  Tin can also dynamically change its options by the 'M' menu command.
  1801. X  Any changes are written to \fI$HOME/.tin/tinrc\fP.
  1802. X***************
  1803. X*** 121,129 ****
  1804. X  Tin has three separate levels of operation: Selection Group level, Group level
  1805. X  and Article level.
  1806. X  .PP
  1807. X! At the Selection Group level the newsgroups are displayed on the left
  1808. X! of the screen with the number of unread articles displayed on the same
  1809. X! line in the middle of the screen.
  1810. X  .RS
  1811. X  .nf
  1812. X  .in +.5i
  1813. X--- 130,139 ----
  1814. X  Tin has three separate levels of operation: Selection Group level, Group level
  1815. X  and Article level.
  1816. X  .PP
  1817. X! At the Selection Group level the title displays the number of subscribed
  1818. X! groups. The newsgroups are displayed on the left of the screen with the
  1819. X! number of unread articles displayed on the same line in the middle of
  1820. X! the screen.
  1821. X  .RS
  1822. X  .nf
  1823. X  .in +.5i
  1824. X***************
  1825. X*** 138,148 ****
  1826. X  .fi
  1827. X  .RE
  1828. X  .PP
  1829. X! At the Group level the following formats are possible:
  1830. X  .RS
  1831. X  .nf
  1832. X  .in +.5i
  1833. X! .ta +\w'1  'u +\w'+    'u +\w'This question has   'u +\w'1    'u
  1834. X  <Selection Num> <Unread> <Responses> <Subject> <Author>
  1835. X  .ti -.5i
  1836. X  i.e.,
  1837. X--- 148,162 ----
  1838. X  .fi
  1839. X  .RE
  1840. X  .PP
  1841. X! At the Group level the title contains the name of the group, the number
  1842. X! of conversation threads and total number of articles i.e., alt.sources (7 23).
  1843. X! If the group has been setup not to thread articles (i.e., alt.sources
  1844. X! is in \fI$(HOME)/.tin/unthread\fP) the title will be alt.sources (U 23).
  1845. X! There are two possible display formats as shown below:
  1846. X  .RS
  1847. X  .nf
  1848. X  .in +.5i
  1849. X! .ta +\w'1  'u  +\w'+    +\w'This question has   'u +\w'1 
  1850. X  <Selection Num> <Unread> <Responses> <Subject> <Author>
  1851. X  .ti -.5i
  1852. X  i.e.,
  1853. X***************
  1854. X*** 728,734 ****
  1855. X  NAME   Iain Lea
  1856. X  EMAIL  iain@estevax.uucp    ...!unido!estevax!iain
  1857. X  SNAIL  Siemens AG, ANL 433SZ, 8510 Fuerth-Bislohe, Germany
  1858. X! PHONE  +49-911-331963 (home)  +49-911-895-3853 (work)
  1859. X  .fi
  1860. X  .RE
  1861. X  .SH "ENVIROMENT VARIABLES"
  1862. X--- 742,748 ----
  1863. X  NAME   Iain Lea
  1864. X  EMAIL  iain@estevax.uucp    ...!unido!estevax!iain
  1865. X  SNAIL  Siemens AG, ANL 433SZ, 8510 Fuerth-Bislohe, Germany
  1866. X! PHONE  +49-911-331963 (home)  +49-911-3089-407 (work)
  1867. X  .fi
  1868. X  .RE
  1869. X  .SH "ENVIROMENT VARIABLES"
  1870. X***************
  1871. X*** 801,813 ****
  1872. X  \fI$HOME/.newsrc\fP    newgroups subscribed to.
  1873. X  \fI$HOME/.tin/tinrc\fP    options.
  1874. X  \fI$HOME/.tin/.index\fP    newsgroup index files directory.
  1875. X! \fI$HOME/.tin/kill\fP    kill file.
  1876. X! \fI$HOME/.tin/posted\fP    history of articles posted by user.
  1877. X  \fI$HOME/.tin/active\fP    used by -n option for notifying user of new groups.
  1878. X  \fI$HOME/.tin/organization\fP    string to replace default organization.
  1879. X  \fI$HOME/.tin/reply_to\fP    host address to use in Reply-To: mail header.
  1880. X! \fI$HOME/.tin/add_address\fP    address to add to when replying through mail.
  1881. X! \fI$HOME/.tin/bug_address\fP    address to send bug reports to.
  1882. X  \fI$HOME/.signature\fP    signature.
  1883. X  \fI$HOME/.Sig\fP    signature.
  1884. X  .fi
  1885. X--- 815,828 ----
  1886. X  \fI$HOME/.newsrc\fP    newgroups subscribed to.
  1887. X  \fI$HOME/.tin/tinrc\fP    options.
  1888. X  \fI$HOME/.tin/.index\fP    newsgroup index files directory.
  1889. X! \fI$HOME/.tin/add_address\fP    address to add to when replying through mail.
  1890. X  \fI$HOME/.tin/active\fP    used by -n option for notifying user of new groups.
  1891. X+ \fI$HOME/.tin/bug_address\fP    address to send bug reports to.
  1892. X+ \fI$HOME/.tin/kill\fP    kill file.
  1893. X  \fI$HOME/.tin/organization\fP    string to replace default organization.
  1894. X+ \fI$HOME/.tin/posted\fP    history of articles posted by user.
  1895. X  \fI$HOME/.tin/reply_to\fP    host address to use in Reply-To: mail header.
  1896. X! \fI$HOME/.tin/unthread\fP    contains groups that are not to be threaded.
  1897. X  \fI$HOME/.signature\fP    signature.
  1898. X  \fI$HOME/.Sig\fP    signature.
  1899. X  .fi
  1900. X***************
  1901. X*** 846,851 ****
  1902. X--- 861,878 ----
  1903. X  .TP
  1904. X  Chris Smith
  1905. X  author of multi-part uudecode routine.
  1906. X+ .PP
  1907. X+ I wish to thank the following people for bug reports/patchs and comments:
  1908. X+ 
  1909. X+ Klaus Arzig, Anton Aylward, Reiner Balling, Volker Beyer, Roger Binns,
  1910. X+ Georg Biehler, Andreas Brosig, Peter Dressler, Gerhard Ermer, Hugh Fader,
  1911. X+ Joachim Feld, Bernhard Gmelch, Viet Hoang, Torsten Homeyer, Andy Jackson,
  1912. X+ Joe Johnson, Cyrill Jung, Karl-Koenig Koenigsson, Hans-Juergen Knopp,
  1913. X+ Hakan Lennestal, Bob Lukas, Clifford Luke, Phillip Molloy, Toni Metz,
  1914. X+ Greg Miller, Klaus Neuberger, Otto Niesser, Wolf Paul, Nickolay Saukh,
  1915. X+ Rich Salz, Fredy Schwatz, Bernd Schwerin, Klamer Schutte, Karl-Olav
  1916. X+ Serrander, Chris Smith, Steve Spearman, Cliff Stanford, Adri Verhoef,
  1917. X+ Cary Whitney
  1918. X  .SH AUTHOR
  1919. X  .TP
  1920. X  Iain Lea
  1921. Xdiff -rcs 102/tin.h 103/tin.h
  1922. X*** 102/tin.h    Tue Sep 24 14:02:10 1991
  1923. X--- 103/tin.h    Mon Sep 30 12:42:08 1991
  1924. X***************
  1925. X*** 3,9 ****
  1926. X   *  Module    : tin.h
  1927. X   *  Author    : R.Skrenta / I.Lea
  1928. X   *  Created   : 01-04-91
  1929. X!  *  Updated   : 24-09-91
  1930. X   *  Release   : 1.0
  1931. X   *  Notes     :
  1932. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1933. X--- 3,9 ----
  1934. X   *  Module    : tin.h
  1935. X   *  Author    : R.Skrenta / I.Lea
  1936. X   *  Created   : 01-04-91
  1937. X!  *  Updated   : 29-09-91
  1938. X   *  Release   : 1.0
  1939. X   *  Notes     :
  1940. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1941. X***************
  1942. X*** 61,66 ****
  1943. X--- 61,67 ----
  1944. X  #define        INDEXDIR        ".index"
  1945. X  #define        KILLFILE        "kill"
  1946. X  #define        POSTFILE        "posted"
  1947. X+ #define        UNTHREADFILE    "unthread"
  1948. X  
  1949. X  #define        DEFAULT_SHELL    "/bin/sh"
  1950. X  #define        DEFAULT_MAILDIR    "Mail"
  1951. X***************
  1952. X*** 109,114 ****
  1953. X--- 110,118 ----
  1954. X  #endif
  1955. X  
  1956. X  #define        DEFAULT_COMMENT    ": "    /* used when by follow-ups & replys */
  1957. X+ #ifndef     UNREAD_ART_MARK
  1958. X+ #define        UNREAD_ART_MARK    '+'        /* used to show that an art is unread */
  1959. X+ #endif
  1960. X  
  1961. X  /*
  1962. X   *  used by feed.c - feed_articles()
  1963. X***************
  1964. X*** 146,154 ****
  1965. X  #define        SORT_BY_DATE_DESCEND    5
  1966. X  #define        SORT_BY_DATE_ASCEND        6
  1967. X  
  1968. X! #define        HELP_INFO    0     
  1969. X! #define        POST_INFO    1     
  1970. X  
  1971. X  extern int sort_art_type;
  1972. X  
  1973. X  extern int NOTESLINES;
  1974. X--- 150,162 ----
  1975. X  #define        SORT_BY_DATE_DESCEND    5
  1976. X  #define        SORT_BY_DATE_ASCEND        6
  1977. X  
  1978. X! #define        HELP_INFO                0
  1979. X! #define        POST_INFO                1
  1980. X  
  1981. X+ #define        CHECK_ANY_NEWS            0
  1982. X+ #define        START_ANY_NEWS            1
  1983. X+ #define        SAVE_ANY_NEWS            2
  1984. X+ 
  1985. X  extern int sort_art_type;
  1986. X  
  1987. X  extern int NOTESLINES;
  1988. X***************
  1989. X*** 242,247 ****
  1990. X--- 250,257 ----
  1991. X      long min;
  1992. X      int next;        /* next active entry in hash chain */
  1993. X      int flag;
  1994. X+     int read;        /* marked TRUE if group was entered during session */
  1995. X+     int thread;        /* marked FALSE if group is not to be threaded */
  1996. X  };
  1997. X  
  1998. X  #define        NOTGOT            0x01    /* haven't put in my_group yet */
  1999. X***************
  2000. X*** 301,306 ****
  2001. X--- 311,317 ----
  2002. X  
  2003. X  #ifdef POSIX_JOB_CONTROL
  2004. X  extern struct sigaction art_act;
  2005. X+ extern struct sigaction kill_act;
  2006. X  extern struct sigaction group_act;
  2007. X  extern struct sigaction main_act;
  2008. X  extern struct sigaction page_act;
  2009. X***************
  2010. X*** 315,321 ****
  2011. X  extern int start_line_offset;
  2012. X  
  2013. X  extern int read_news_via_nntp;
  2014. X! extern char nntp_server[LEN+1];
  2015. X  extern int top;
  2016. X  extern struct header *arts;
  2017. X  extern long *base;
  2018. X--- 326,332 ----
  2019. X  extern int start_line_offset;
  2020. X  
  2021. X  extern int read_news_via_nntp;
  2022. X! extern char nntp_server[LEN];
  2023. X  extern int top;
  2024. X  extern struct header *arts;
  2025. X  extern long *base;
  2026. X***************
  2027. X*** 335,384 ****
  2028. X  extern int num_of_tagged_files;
  2029. X  extern int compiled_with_nntp;
  2030. X  extern int save_news;
  2031. X  
  2032. X! extern char rcdir[LEN+1];
  2033. X! extern char rcfile[LEN+1];
  2034. X! extern char indexdir[LEN+1];
  2035. X! extern char killfile[LEN+1];
  2036. SHAR_EOF
  2037. echo "End of tin1.0 part 3"
  2038. echo "File tin.patch03 is continued in part 4"
  2039. echo "4" > shar3_seq_.tmp
  2040. exit 0
  2041.  
  2042. exit 0 # Just in case...
  2043. -- 
  2044. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  2045. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  2046. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  2047. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  2048.