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

  1. Newsgroups: comp.sources.misc
  2. From: iain@estevax.uucp (Iain J. Lea)
  3. Subject:  v26i081:  tin - threaded full screen newsreader, Patch07a/2
  4. Message-ID: <csm-v26i081=tin.204224@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 0fb3bafcdc69f53d9a7c96b8e2fcc021
  6. Date: Sat, 30 Nov 1991 02:43:00 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: iain@estevax.uucp (Iain J. Lea)
  10. Posting-number: Volume 26, Issue 81
  11. Archive-name: tin/patch07a
  12. Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
  13. Patch-To: tin: Volume 23, Issue 15-23
  14.  
  15. This is version 1.0 PL7 (patchlevel 7) of the tin newsreader.
  16.  
  17. NOTE: This patch has not been as heavily tested on different machines
  18.       and OS's as I would have liked. On my main development machine
  19.       everything in this patch works OK. Your mileage may vary.
  20.       Therefore please make a copy of your PL6 code before applying
  21.       the following patch.
  22.  
  23. NOTE: The index file format has changed as an extra field (full name)
  24.       has been added.
  25.       BEFORE RUNNING PL6/PL7 DELETE ALL OLD INDEX FILES IN ~/.tin/.index
  26.  
  27. NOTE: PLEASE READ THE MAN PAGE tin.1 BEFORE SENDING A BUG REPORT/COMMENT.
  28.  
  29. Major improvements over tin 1.0 PL6 are the following:
  30.  
  31. o Fixed an indexing (error 11) bug introduced in PL6.
  32.  
  33. o Added code to read 4th field of active file.
  34.  
  35. o Small fixes.
  36.  
  37. For more bugs fixes, other changes & additions read the CHANGES & TODO files.
  38.  
  39. #!/bin/sh
  40. # This is tin, a shell archive (shar 3.24)
  41. # made 11/07/1991 18:27 UTC by iain@estevax.uucp
  42. # Source directory /rna/iain/tin/107
  43. #
  44. # existing files WILL be overwritten
  45. #
  46. # This is part 1 of a multipart archive                                    
  47. # do not concatenate these parts, unpack them in order with /bin/sh        
  48. #
  49. # This shar contains:
  50. # length  mode       name
  51. # ------ ---------- ------------------------------------------
  52. #  55873 -rw------- tin.patch07
  53. #
  54. if touch 2>&1 | fgrep '[-amc]' > /dev/null
  55.  then TOUCH=touch
  56.  else TOUCH=true
  57. fi
  58. if test -r shar3_seq_.tmp; then
  59.     echo "Must unpack archives in sequence!"
  60.     next=`cat shar3_seq_.tmp`; echo "Please unpack part $next next"
  61.     exit 1
  62. fi
  63. # ============= tin.patch07 ==============
  64. echo "x - extracting tin.patch07 (Text)"
  65. sed 's/^X//' << 'SHAR_EOF' > tin.patch07 &&
  66. Xdiff -rcs ../106/CHANGES ./CHANGES
  67. X*** ../106/CHANGES    Mon Nov  4 18:14:01 1991
  68. X--- ./CHANGES    Thu Nov  7 07:36:49 1991
  69. X***************
  70. X*** 1,3 ****
  71. X--- 1,30 ----
  72. X+ CHANGES tin v1.0 PL6 -> tin 1.0 PL7
  73. X+ -----------------------------------
  74. X+ 
  75. X+ 1)  iain@estevax.uucp (Iain Lea)
  76. X+     ADD. lang.c lag.h help.c - added help line for shell escape command.
  77. X+ 
  78. X+ 2)  iain@estevax.uucp (Iain Lea)
  79. X+     ADD. misc.c - added code to read_active() to read 4th field of active file.
  80. X+ 
  81. X+ 3)  iain@estevax.uucp (Iain Lea)
  82. X+     BUG. Major BooBoo when indexing caused error 11 in index scheme.
  83. X+     FIX. art.c - 3 line patch to check if name should same as from field.
  84. X+ 
  85. X+ 4)  john@iti.org (John Sauter)
  86. X+     BUG. The Date: field was not parsed correctly in parse_date(). It assumes
  87. X+          dates in the form - "10 Nov 91 16:50:12 GMT", but there are other
  88. X+          formats.
  89. X+     FIX. art.c - applied the supplied patch. Thanx for the patch.
  90. X+ 
  91. X+ 5)  john@iti.org (John Sauter)
  92. X+     BUG. Sort order is reversed from what I would expect.
  93. X+     FIX. art.c - applied the supplied patch. Thanx for the patch.
  94. X+ 
  95. X+ 6)  iain@estevax.uucp (Iain Lea)
  96. X+     BUG. Article(s) saved/mailed never displayed at article level.
  97. X+     FIX. feed.c - only do a clear_message() if piping articles at art level.
  98. X+ 
  99. X  CHANGES tin v1.0 PL5 -> tin 1.0 PL6
  100. X  -----------------------------------
  101. X  
  102. Xdiff -rcs ../106/MANIFEST ./MANIFEST
  103. X*** ../106/MANIFEST    Mon Nov  4 19:13:32 1991
  104. X--- ./MANIFEST    Thu Nov  7 19:26:51 1991
  105. X***************
  106. X*** 1,40 ****
  107. X! MANIFEST for tin newsreader (Mon Nov  4 19:13:30 MET 1991)
  108. X  ----------------------------------------------------------
  109. X!     4057 README
  110. X!    27968 CHANGES
  111. X      2291 TODO
  112. X       530 UPDATE_INDEX
  113. X!    10905 Makefile
  114. X!    29528 tin.1
  115. X      2247 wildmat.3
  116. X!    39218 tin.nrf
  117. X!    10754 tin.h
  118. X!    10196 lang.h
  119. X      3720 nntp.h
  120. X!    17743 proto.h
  121. X!       21 patchlevel.h
  122. X!    29913 art.c
  123. X      6944 curses.c
  124. X!     3170 debug.c
  125. X!    12187 feed.c
  126. X!    21400 group.c
  127. X      2620 hashstr.c
  128. X!     5227 help.c
  129. X     11241 kill.c
  130. X!    18912 lang.c
  131. X!     8945 main.c
  132. X      6241 memory.c
  133. X!    25183 misc.c
  134. X     19753 newsrc.c
  135. X      7180 open.c
  136. X!    24844 page.c
  137. X!    17973 post.c
  138. X      4687 prompt.c
  139. X     20698 rcfile.c
  140. X     19945 save.c
  141. X      2244 screen.c
  142. X      8185 search.c
  143. X!    20520 select.c
  144. X      7940 signal.c
  145. X      4749 wildmat.c
  146. X!   469879 total
  147. X--- 1,39 ----
  148. X! MANIFEST for tin newsreader (Thu Nov  7 19:26:49 MET 1991)
  149. X  ----------------------------------------------------------
  150. X!     3692 README
  151. X!    29042 CHANGES
  152. X      2291 TODO
  153. X       530 UPDATE_INDEX
  154. X!    10964 Makefile
  155. X!    29541 tin.1
  156. X      2247 wildmat.3
  157. X!    39230 tin.nrf
  158. X!    11088 tin.h
  159. X!    10283 lang.h
  160. X      3720 nntp.h
  161. X!    17799 proto.h
  162. X!    29683 art.c
  163. X      6944 curses.c
  164. X!     3208 debug.c
  165. X!    12188 feed.c
  166. X!    21483 group.c
  167. X      2620 hashstr.c
  168. X!     5384 help.c
  169. X     11241 kill.c
  170. X!    19089 lang.c
  171. X!     8921 main.c
  172. X      6241 memory.c
  173. X!    25378 misc.c
  174. X     19753 newsrc.c
  175. X      7180 open.c
  176. X!    24928 page.c
  177. X!    18731 post.c
  178. X      4687 prompt.c
  179. X     20698 rcfile.c
  180. X     19945 save.c
  181. X      2244 screen.c
  182. X      8185 search.c
  183. X!    20671 select.c
  184. X      7940 signal.c
  185. X      4749 wildmat.c
  186. X!   472518 total
  187. Xdiff -rcs ../106/Makefile ./Makefile
  188. X*** ../106/Makefile    Mon Nov  4 19:11:30 1991
  189. X--- ./Makefile    Thu Nov  7 19:26:36 1991
  190. X***************
  191. X*** 64,69 ****
  192. X--- 64,72 ----
  193. X  #    1) stops percentage being shown at bottom of select and group menus.
  194. X  #    2) stops group being written to screen as it is subscribed/unsubscribed.
  195. X  #
  196. X+ #  -D NO_SHELL_ESCAPE
  197. X+ #    Do not allow shell escapes.
  198. X+ #
  199. X  
  200. X  # name of executable file
  201. X  #
  202. X***************
  203. X*** 71,77 ****
  204. X  
  205. X  BINDIR = /usr/local/bin
  206. X  MANDIR = /usr/man/man1
  207. X! #BINDIR = /piez/iain/bin
  208. X  #BINDIR = /usr0g/iain/bin
  209. X  #MANDIR = .
  210. X  
  211. X--- 74,80 ----
  212. X  
  213. X  BINDIR = /usr/local/bin
  214. X  MANDIR = /usr/man/man1
  215. X! #BINDIR = /rna/iain/bin
  216. X  #BINDIR = /usr0g/iain/bin
  217. X  #MANDIR = .
  218. X  
  219. X***************
  220. X*** 78,85 ****
  221. X  STRIP = strip
  222. X  ROFF = + drf -F Helvetica -man3 
  223. X  PRINT= -Pps0
  224. X! BASE_VER = ../105
  225. X! PATCH_VER = 06
  226. X  
  227. X  HFILES    =    tin.h lang.h nntp.h proto.h patchlevel.h
  228. X  
  229. X--- 81,88 ----
  230. X  STRIP = strip
  231. X  ROFF = + drf -F Helvetica -man3 
  232. X  PRINT= -Pps0
  233. X! BASE_VER = ../106
  234. X! PATCH_VER = 07
  235. X  
  236. X  HFILES    =    tin.h lang.h nntp.h proto.h patchlevel.h
  237. X  
  238. X***************
  239. X*** 239,245 ****
  240. X      @-rm $(BINDIR)/r$(EXE)
  241. X      @ln $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  242. X      @su news -c "chmod 4755 $(BINDIR)/$(EXE)"
  243. X!     @su news -c "chmod 755 $(BINDIR)/r$(EXE)"
  244. X      @ls -l $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  245. X      @cp $(EXE).1 $(MANDIR)
  246. X  
  247. X--- 242,248 ----
  248. X      @-rm $(BINDIR)/r$(EXE)
  249. X      @ln $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  250. X      @su news -c "chmod 4755 $(BINDIR)/$(EXE)"
  251. X!     @su news -c "chmod 4755 $(BINDIR)/r$(EXE)"
  252. X      @ls -l $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  253. X      @cp $(EXE).1 $(MANDIR)
  254. X  
  255. X***************
  256. X*** 292,298 ****
  257. X      @make diff
  258. X      @echo "Generating patch against $(BASE_VER)..."
  259. X      @-mv $(EXE).diff $(EXE).patch$(PATCH_VER)
  260. X!     @shar -a -n $(EXE) -s iain@estevax.uucp -L55 -o patch$(PATCH_VER).shar $(EXE).patch$(PATCH_VER)
  261. X      @ls -l patch$(PATCH_VER).shar*
  262. X  
  263. X  tar:
  264. X--- 295,301 ----
  265. X      @make diff
  266. X      @echo "Generating patch against $(BASE_VER)..."
  267. X      @-mv $(EXE).diff $(EXE).patch$(PATCH_VER)
  268. X!     @shar -a -n $(EXE) -s iain@estevax.uucp -L50 -o patch$(PATCH_VER).shar $(EXE).patch$(PATCH_VER)
  269. X      @ls -l patch$(PATCH_VER).shar*
  270. X  
  271. X  tar:
  272. X***************
  273. X*** 320,326 ****
  274. X  
  275. X  clean:
  276. X      @echo "Cleaning..."
  277. X!     @-'rm' -rf $(OBJECTS) #* $(EXE).diff*
  278. X  
  279. X  clobber:
  280. X      @echo "Clobbering..."
  281. X--- 323,329 ----
  282. X  
  283. X  clean:
  284. X      @echo "Cleaning..."
  285. X!     @-'rm' -rf $(OBJECTS) '#*' $(EXE).diff*
  286. X  
  287. X  clobber:
  288. X      @echo "Clobbering..."
  289. Xdiff -rcs ../106/README ./README
  290. X*** ../106/README    Mon Nov  4 18:04:28 1991
  291. X--- ./README    Thu Nov  7 19:18:17 1991
  292. X***************
  293. X*** 1,34 ****
  294. X! This is version 1.0 PL6 (patchlevel 6) of the tin newsreader.
  295. X  
  296. X  NOTE: This patch has not been as heavily tested on different machines
  297. X        and OS's as I would have liked. On my main development machine
  298. X        everything in this patch works OK. Your mileage may vary.
  299. X!       Therefore please make a copy of your PL5 code before applying
  300. X        the following patch.
  301. X  
  302. X  NOTE: The index file format has changed as an extra field (full name)
  303. X        has been added.
  304. X!       BEFORE RUNNING PL6 DELETE ALL OLD INDEX FILES IN ~/.tin/.index
  305. X  
  306. X  NOTE: PLEASE READ THE MAN PAGE tin.1 BEFORE SENDING A BUG REPORT/COMMENT.
  307. X  
  308. X! Major improvements over tin 1.0 PL5 are the following:
  309. X  
  310. X! o  Added support for Minix 386.
  311. X  
  312. X! o  Can now display From: line address part/full name/both format.
  313. X  
  314. X! o  Displays all articles/only unread articles. Configurable by M options menu.
  315. X!    NOTE: This is a little flakey and will be improved on in the next patch.
  316. X  
  317. X- o  Scroll half/full page of groups/articles. Configurable by M options menu.
  318. X- 
  319. X- o  Thread/unthread all groups. Configurable by M options menu.
  320. X- 
  321. X- o  Added -M option to mail new news to specified user.
  322. X- 
  323. X- o  Fixed (I hope) scrolling in Sun cmdtool windows when invoking a shell.
  324. X- 
  325. X  For more bugs fixes, other changes & additions read the CHANGES & TODO files.
  326. X  
  327. X  I am still looking for people to send me ideas/comments & bug reports.
  328. X--- 1,25 ----
  329. X! This is version 1.0 PL7 (patchlevel 7) of the tin newsreader.
  330. X  
  331. X  NOTE: This patch has not been as heavily tested on different machines
  332. X        and OS's as I would have liked. On my main development machine
  333. X        everything in this patch works OK. Your mileage may vary.
  334. X!       Therefore please make a copy of your PL6 code before applying
  335. X        the following patch.
  336. X  
  337. X  NOTE: The index file format has changed as an extra field (full name)
  338. X        has been added.
  339. X!       BEFORE RUNNING PL6/PL7 DELETE ALL OLD INDEX FILES IN ~/.tin/.index
  340. X  
  341. X  NOTE: PLEASE READ THE MAN PAGE tin.1 BEFORE SENDING A BUG REPORT/COMMENT.
  342. X  
  343. X! Major improvements over tin 1.0 PL6 are the following:
  344. X  
  345. X! o Fixed an indexing (error 11) bug introduced in PL6.
  346. X  
  347. X! o Added code to read 4th field of active file.
  348. X  
  349. X! o Small fixes.
  350. X  
  351. X  For more bugs fixes, other changes & additions read the CHANGES & TODO files.
  352. X  
  353. X  I am still looking for people to send me ideas/comments & bug reports.
  354. X***************
  355. X*** 75,80 ****
  356. X--- 66,72 ----
  357. X      18) SNI MX300 & Sinix 5.22
  358. X      19) NCR Tower & SysV
  359. X      20) 386 PC & Minix 386
  360. X+     21) SNI MX500 & Sinix 5.24
  361. X          
  362. X  Credits
  363. X  -------
  364. X***************
  365. X*** 90,97 ****
  366. X  
  367. X  Anton Aylward, Ned Danieley, Brent Ermlick, Carl Hage, Ed Hanway,
  368. X  Karl-Koenig Koenigsson, Kris Kugel, Hakan Lennestal, Clifford Luke,
  369. X! Bill Poitras, Nickolay Saukh, Rich Salz, Bart Sears, Karl-Olav Serrander,
  370. X! Doug Sewell, Cliff Stanford, Adri Verhoef, Cary Whitney
  371. X  
  372. X  I wish to thank the following people for bug reports/comments:
  373. X  
  374. X--- 82,89 ----
  375. X  
  376. X  Anton Aylward, Ned Danieley, Brent Ermlick, Carl Hage, Ed Hanway,
  377. X  Karl-Koenig Koenigsson, Kris Kugel, Hakan Lennestal, Clifford Luke,
  378. X! Bill Poitras, Nickolay Saukh, Rich Salz, John Sauter, Bart Sears,
  379. X! Karl-Olav Serrander, Doug Sewell, Cliff Stanford, Adri Verhoef, Cary Whitney
  380. X  
  381. X  I wish to thank the following people for bug reports/comments:
  382. X  
  383. XFiles ../106/TODO and ./TODO are identical
  384. XFiles ../106/UPDATE_INDEX and ./UPDATE_INDEX are identical
  385. Xdiff -rcs ../106/art.c ./art.c
  386. X*** ../106/art.c    Mon Nov  4 18:41:45 1991
  387. X--- ./art.c    Thu Nov  7 07:37:22 1991
  388. X***************
  389. X*** 3,9 ****
  390. X   *  Module    : art.c
  391. X   *  Author    : R.Skrenta / I.Lea
  392. X   *  Created   : 01-04-91
  393. X!  *  Updated   : 04-11-91
  394. X   *  Release   : 1.0
  395. X   *  Notes     :
  396. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  397. X--- 3,9 ----
  398. X   *  Module    : art.c
  399. X   *  Author    : R.Skrenta / I.Lea
  400. X   *  Created   : 01-04-91
  401. X!  *  Updated   : 07-11-91
  402. X   *  Release   : 1.0
  403. X   *  Notes     :
  404. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  405. X***************
  406. X*** 738,748 ****
  407. X  
  408. X          if (buf[0] == '%') {
  409. X              n = atoi (&buf[1]);
  410. X!             if (n >= top || n < 0) {
  411. X                  error = 11;
  412. X                  goto corrupt_index;
  413. X              }
  414. X!             arts[top].name = arts[n].name;
  415. X          } else if (buf[0] == ' ') {
  416. X              for (p = &buf[1];  *p && *p != '\n'; p++)
  417. X                  continue;
  418. X--- 738,752 ----
  419. X  
  420. X          if (buf[0] == '%') {
  421. X              n = atoi (&buf[1]);
  422. X!             if (n > top || n < 0) {
  423. X                  error = 11;
  424. X                  goto corrupt_index;
  425. X              }
  426. X!             if (n == top) {        /* no full name so .name = .from */
  427. X!                 arts[top].name = arts[top].from;
  428. X!             } else {
  429. X!                 arts[top].name = arts[n].name;
  430. X!             }
  431. X          } else if (buf[0] == ' ') {
  432. X              for (p = &buf[1];  *p && *p != '\n'; p++)
  433. X                  continue;
  434. X***************
  435. X*** 1198,1204 ****
  436. X  }
  437. X  
  438. X  /*
  439. X!  * convert date from "24 Jul 91 12:59:59" to "910724125959"
  440. X   */
  441. X  
  442. X  char *parse_date (date, str)
  443. X--- 1202,1211 ----
  444. X  }
  445. X  
  446. X  /*
  447. X!  * convert date from ctime format to sortable format
  448. X!  * "24 Jul 91 12:59:59", "Mon, 24 Jul 91 12:59:59" and
  449. X!  * "Mon, 24 Jul 1991 12:59:59" are parsed and produce
  450. X!  * output of the form "910724125959"
  451. X   */
  452. X  
  453. X  char *parse_date (date, str)
  454. X***************
  455. X*** 1206,1220 ****
  456. X      char *str;
  457. X  {
  458. X      char buf[4];
  459. X!     int i = 3;
  460. X  
  461. X!     if (date[1] == ' ') {    /* ie. "2 Aug..." instead of "12 Aug... */
  462. X          str[4] = '0';        /* day */
  463. X!         str[5] = date[0];
  464. X!         i = 2;
  465. X      } else {
  466. X!         str[4] = date[0];        /* day */
  467. X!         str[5] = date[1];
  468. X      }
  469. X      
  470. X      buf[0] = date[i++];        /* month in Jan,Feb,.. form */
  471. X--- 1213,1233 ----
  472. X      char *str;
  473. X  {
  474. X      char buf[4];
  475. X!     int i = 0;
  476. X  
  477. X!     /* Check for extraneous day-of-week at start of date */
  478. X!     while (isalpha(date[i]) || date[i] == ',' || date[i] == ' ') {
  479. X!         i++;
  480. X!     }
  481. X!     
  482. X!     if (date[i+1] == ' ') {    /* ie. "2 Aug..." instead of "12 Aug... */
  483. X          str[4] = '0';        /* day */
  484. X!         str[5] = date[i++];
  485. X!         i++;
  486. X      } else {
  487. X!         str[4] = date[i++];        /* day */
  488. X!         str[5] = date[i++];
  489. X!         i++;
  490. X      }
  491. X      
  492. X      buf[0] = date[i++];        /* month in Jan,Feb,.. form */
  493. X***************
  494. X*** 1226,1231 ****
  495. X--- 1239,1248 ----
  496. X      
  497. X      str[0] = date[i++];        /* year */
  498. X      str[1] = date[i++];
  499. X+     if (isdigit(date[i])) {         /* 19xx format */
  500. X+         str[0] = date[i++];
  501. X+         str[1] = date[i++];
  502. X+     }
  503. X      
  504. X      i++;
  505. X      
  506. X***************
  507. X*** 1315,1329 ****
  508. X      struct header *s1 = (struct header *) p1;
  509. X      struct header *s2 = (struct header *) p2;
  510. X  
  511. X!     /* s1->subject less than s2->subject */
  512. X!     if (strcmp (s1->subject, s2->subject) < 0) {
  513. X!         return (sort_art_type == SORT_BY_SUBJ_DESCEND ? -1 : 1);
  514. X!     }
  515. X!     /* s1->subject greater than s2->subject */
  516. X!     if (strcmp (s1->subject, s2->subject) > 0) {
  517. X!         return (sort_art_type == SORT_BY_SUBJ_DESCEND ? 1 : -1);
  518. X!     }
  519. X!     return 0;
  520. X  }
  521. X  
  522. X  
  523. X--- 1332,1341 ----
  524. X      struct header *s1 = (struct header *) p1;
  525. X      struct header *s2 = (struct header *) p2;
  526. X  
  527. X!     /* return result of strcmp (reversed for descending) */
  528. X!     return (sort_art_type == SORT_BY_SUBJ_ASCEND 
  529. X!             ? strcmp (s1->subject, s2->subject) 
  530. X!             : strcmp (s2->subject, s1->subject));
  531. X  }
  532. X  
  533. X  
  534. X***************
  535. X*** 1334,1359 ****
  536. X      struct header *s1 = (struct header *) p1;
  537. X      struct header *s2 = (struct header *) p2;
  538. X  
  539. X!     if (show_author == SHOW_FROM_NAME) {
  540. X!         /* s1->name less than s2->name */
  541. X!         if (strcmp (s1->name, s2->name) < 0) {
  542. X!             return (sort_art_type == SORT_BY_FROM_DESCEND ? -1 : 1);
  543. X!         }
  544. X!         /* s1->name greater than s2->name */
  545. X!         if (strcmp (s1->name, s2->name) > 0) {
  546. X!             return (sort_art_type == SORT_BY_FROM_DESCEND ? 1 : -1);
  547. X!         }
  548. X!     } else {    /* SHOW_FROM_ADDR */
  549. X!         /* s1->from less than s2->from */
  550. X!         if (strcmp (s1->from, s2->from) < 0) {
  551. X!             return (sort_art_type == SORT_BY_FROM_DESCEND ? -1 : 1);
  552. X!         }
  553. X!         /* s1->from greater than s2->from */
  554. X!         if (strcmp (s1->from, s2->from) > 0) {
  555. X!             return (sort_art_type == SORT_BY_FROM_DESCEND ? 1 : -1);
  556. X!         }
  557. X!     }
  558. X!     return 0;
  559. X  }
  560. X  
  561. X  
  562. X--- 1346,1355 ----
  563. X      struct header *s1 = (struct header *) p1;
  564. X      struct header *s2 = (struct header *) p2;
  565. X  
  566. X!     /* return result of strcmp (reversed for descending) */
  567. X!     return (sort_art_type == SORT_BY_FROM_ASCEND 
  568. X!             ? strcmp (s1->from, s2->from) 
  569. X!             : strcmp (s2->from, s1->from));
  570. X  }
  571. X  
  572. X  
  573. X***************
  574. X*** 1363,1378 ****
  575. X  {
  576. X      struct header *s1 = (struct header *) p1;
  577. X      struct header *s2 = (struct header *) p2;
  578. X! 
  579. X!     /* s1->date less than s2->date */
  580. X!     if (strcmp (s1->date, s2->date) < 0) {
  581. X!         return (sort_art_type == SORT_BY_DATE_DESCEND ? -1 : 1);
  582. X!     }
  583. X!     /* s1->date greater than s2->date */
  584. X!     if (strcmp (s1->date, s2->date) > 0) {
  585. X!         return (sort_art_type == SORT_BY_DATE_DESCEND ? 1 : -1);
  586. X!     }
  587. X!     return 0;
  588. X  }
  589. X  
  590. X  
  591. X--- 1359,1368 ----
  592. X  {
  593. X      struct header *s1 = (struct header *) p1;
  594. X      struct header *s2 = (struct header *) p2;
  595. X!     /* return result of strcmp (reversed for descending) */
  596. X!     return (sort_art_type == SORT_BY_DATE_ASCEND 
  597. X!             ? strcmp (s1->date, s2->date) 
  598. X!             : strcmp (s2->date, s1->date));
  599. X  }
  600. X  
  601. X  
  602. XFiles ../106/curses.c and ./curses.c are identical
  603. Xdiff -rcs ../106/debug.c ./debug.c
  604. X*** ../106/debug.c    Mon Nov  4 15:03:25 1991
  605. X--- ./debug.c    Wed Nov  6 14:20:29 1991
  606. X***************
  607. X*** 3,9 ****
  608. X   *  Module    : debug.c
  609. X   *  Author    : I.Lea
  610. X   *  Created   : 01-04-91
  611. X!  *  Updated   : 04-11-91
  612. X   *  Release   : 1.0
  613. X   *  Notes     : debug routines
  614. X   *  Copyright : (c) Copyright 1991 by Iain Lea
  615. X--- 3,9 ----
  616. X   *  Module    : debug.c
  617. X   *  Author    : I.Lea
  618. X   *  Created   : 01-04-91
  619. X!  *  Updated   : 06-11-91
  620. X   *  Release   : 1.0
  621. X   *  Notes     : debug routines
  622. X   *  Copyright : (c) Copyright 1991 by Iain Lea
  623. X***************
  624. X*** 121,128 ****
  625. X  
  626. X      if ((fp = fopen ("/tmp/ACTIVE","w")) != NULL) {
  627. X          for (i = 0; i < num_active; i++) {    /* for each group */
  628. X!             fprintf (fp, "[%4d]=[%-28s] max=[%4ld] min=[%4ld] nxt=[%4d] flag=[%d] read=[%d] thread=[%d]\n",
  629. X!                 i, active[i].name, active[i].max, active[i].min, active[i].next, active[i].flag, active[i].read, active[i].thread);
  630. X          }
  631. X          fflush (fp);
  632. X          fclose (fp);
  633. X--- 121,130 ----
  634. X  
  635. X      if ((fp = fopen ("/tmp/ACTIVE","w")) != NULL) {
  636. X          for (i = 0; i < num_active; i++) {    /* for each group */
  637. X!             fprintf (fp, "[%4d]=[%-28s] max=[%4ld] min=[%4ld] mod=[%c] nxt=[%4d] flag=[%d] read=[%d] thread=[%d]\n",
  638. X!                 i, active[i].name, active[i].max, active[i].min,
  639. X!                 active[i].moderated, active[i].next, active[i].flag,
  640. X!                 active[i].read, active[i].thread);
  641. X          }
  642. X          fflush (fp);
  643. X          fclose (fp);
  644. X***************
  645. X*** 143,149 ****
  646. X  
  647. X      if ((fp = fopen (LOG_USER_FILE, "a+")) != NULL) {
  648. X          my_strncpy (buf, myentry->pw_gecos, 32);
  649. X!         fprintf (fp, "%s%d: %-32s (%-8s) %s", version, PATCHLEVEL,
  650. X                  buf, myentry->pw_name, ctime (&epoch));
  651. X          fclose (fp);
  652. X          chmod (LOG_USER_FILE, 0666);
  653. X--- 145,151 ----
  654. X  
  655. X      if ((fp = fopen (LOG_USER_FILE, "a+")) != NULL) {
  656. X          my_strncpy (buf, myentry->pw_gecos, 32);
  657. X!         fprintf (fp, "%s%d: %-32s (%-8s) %s", VERSION, PATCHLEVEL,
  658. X                  buf, myentry->pw_name, ctime (&epoch));
  659. X          fclose (fp);
  660. X          chmod (LOG_USER_FILE, 0666);
  661. Xdiff -rcs ../106/feed.c ./feed.c
  662. X*** ../106/feed.c    Tue Oct 29 19:17:51 1991
  663. X--- ./feed.c    Thu Nov  7 07:20:20 1991
  664. X***************
  665. X*** 242,248 ****
  666. X                  case FEED_PRINT:
  667. X                      wait_message (txt_printing);
  668. X                      if (print_header) {
  669. X!                         fseek(note_fp, 0L, 0);
  670. X                      } else {
  671. X                          fprintf (fp, "From: %s (%s)\n",
  672. X                              arts[respnum].from,arts[respnum].name);
  673. X--- 242,248 ----
  674. X                  case FEED_PRINT:
  675. X                      wait_message (txt_printing);
  676. X                      if (print_header) {
  677. X!                         fseek (note_fp, 0L, 0);
  678. X                      } else {
  679. X                          fprintf (fp, "From: %s (%s)\n",
  680. X                              arts[respnum].from,arts[respnum].name);
  681. X***************
  682. X*** 250,256 ****
  683. X                          fprintf (fp, "Date: %s\n\n", note_h_date);
  684. X                          fseek (note_fp, note_mark[0], 0);
  685. X                      }
  686. X!                     copy_fp(note_fp, fp, "");
  687. X                      pclose (fp);        
  688. X                      break;
  689. X                  case FEED_SAVE:
  690. X--- 250,256 ----
  691. X                          fprintf (fp, "Date: %s\n\n", note_h_date);
  692. X                          fseek (note_fp, note_mark[0], 0);
  693. X                      }
  694. X!                     copy_fp (note_fp, fp, "");
  695. X                      pclose (fp);        
  696. X                      break;
  697. X                  case FEED_SAVE:
  698. X***************
  699. X*** 456,462 ****
  700. X                  redraw_page (respnum, glob_group);
  701. X              }
  702. X          } else {
  703. X!             if (function != FEED_PRINT) {
  704. X                  clear_message ();
  705. X              }
  706. X          }
  707. X--- 456,462 ----
  708. X                  redraw_page (respnum, glob_group);
  709. X              }
  710. X          } else {
  711. X!             if (function == FEED_PIPE) {
  712. X                  clear_message ();
  713. X              }
  714. X          }
  715. Xdiff -rcs ../106/group.c ./group.c
  716. X*** ../106/group.c    Mon Nov  4 18:11:09 1991
  717. X--- ./group.c    Wed Nov  6 14:21:57 1991
  718. X***************
  719. X*** 35,45 ****
  720. X      char *p;
  721. X      int flag, i, n;
  722. X      int kill_state;
  723. X-     long old_artnum;
  724. X      int old_top;
  725. X      int sav_groupnum;
  726. X      int scroll_lines;
  727. X      int thread_marked_unread = FALSE;
  728. X  
  729. X      active[my_group[cur_groupnum]].read = TRUE;
  730. X  
  731. X--- 35,46 ----
  732. X      char *p;
  733. X      int flag, i, n;
  734. X      int kill_state;
  735. X      int old_top;
  736. X+     int posted;
  737. X      int sav_groupnum;
  738. X      int scroll_lines;
  739. X      int thread_marked_unread = FALSE;
  740. X+     long old_artnum;
  741. X  
  742. X      active[my_group[cur_groupnum]].read = TRUE;
  743. X  
  744. X***************
  745. X*** 89,98 ****
  746. X--- 90,101 ----
  747. X          if (ch > '0' && ch <= '9') {    /* 0 goes to basenote */
  748. X              prompt_subject_num(ch, group);
  749. X          } else switch (ch) {
  750. X+ #ifndef NO_SHELL_ESCAPE
  751. X              case '!':
  752. X                  shell_escape ();
  753. X                  show_group_page (group);
  754. X                  break;
  755. X+ #endif
  756. X  
  757. X              case '$':    /* show last page of articles */
  758. X  end_of_list:            
  759. X***************
  760. X*** 577,587 ****
  761. X                      break;
  762. X                  }
  763. X  #endif
  764. X!                 if (post_base (group)) {
  765. X!                     update_newsrc (group, my_group[cur_groupnum], FALSE);
  766. X!                     index_group (group, group_path);
  767. X!                     read_newsrc_line (group);
  768. X!                     index_point = top_base - 1;
  769. X                      show_group_page (group);
  770. X                  }
  771. X                  break;
  772. X--- 580,592 ----
  773. X                      break;
  774. X                  }
  775. X  #endif
  776. X!                 if (post_base (group, &posted)) {
  777. X!                     if (posted) {
  778. X!                         update_newsrc (group, my_group[cur_groupnum], FALSE);
  779. X!                         index_group (group, group_path);
  780. X!                         read_newsrc_line (group);
  781. X!                         index_point = top_base - 1;
  782. X!                     }
  783. X                      show_group_page (group);
  784. X                  }
  785. X                  break;
  786. XFiles ../106/hashstr.c and ./hashstr.c are identical
  787. Xdiff -rcs ../106/help.c ./help.c
  788. X*** ../106/help.c    Fri Oct 18 09:41:33 1991
  789. X--- ./help.c    Wed Nov  6 14:23:46 1991
  790. X***************
  791. X*** 3,9 ****
  792. X   *  Module    : help.c
  793. X   *  Author    : R.Skrenta / I.Lea
  794. X   *  Created   : 01-04-91
  795. X!  *  Updated   : 18-09-91
  796. X   *  Release   : 1.0
  797. X   *  Notes     :
  798. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  799. X--- 3,9 ----
  800. X   *  Module    : help.c
  801. X   *  Author    : R.Skrenta / I.Lea
  802. X   *  Created   : 01-04-91
  803. X!  *  Updated   : 06-11-91
  804. X   *  Release   : 1.0
  805. X   *  Notes     :
  806. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  807. X***************
  808. X*** 33,38 ****
  809. X--- 33,39 ----
  810. X      txt_help_I,
  811. X      txt_help_m,
  812. X      txt_help_M,
  813. X+     txt_help_n,
  814. X      txt_help_q,
  815. X      txt_help_s,
  816. X      txt_help_S,
  817. X***************
  818. X*** 43,48 ****
  819. X--- 44,52 ----
  820. X      txt_help_g_dollar,
  821. X      txt_help_g_z,
  822. X      txt_help_g_search,
  823. X+ #ifndef NO_SHELL_ESCAPE
  824. X+     txt_help_shell,
  825. X+ #endif
  826. X      (char *) 0
  827. X  };
  828. X  
  829. X***************
  830. X*** 77,82 ****
  831. X--- 81,89 ----
  832. X      txt_help_W,
  833. X      txt_help_p_z,
  834. X      txt_help_i_search,
  835. X+ #ifndef NO_SHELL_ESCAPE
  836. X+     txt_help_shell,
  837. X+ #endif
  838. X      txt_help_dash,
  839. X      txt_help_pipe,
  840. X      (char *) 0
  841. X***************
  842. X*** 118,123 ****
  843. X--- 125,133 ----
  844. X      txt_help_W,
  845. X      txt_help_p_z,
  846. X      txt_help_p_search,
  847. X+ #ifndef NO_SHELL_ESCAPE
  848. X+     txt_help_shell,
  849. X+ #endif
  850. X      txt_help_dash,
  851. X      txt_help_pipe,
  852. X      txt_help_thread,
  853. XFiles ../106/kill.c and ./kill.c are identical
  854. Xdiff -rcs ../106/lang.c ./lang.c
  855. X*** ../106/lang.c    Thu Oct 31 09:10:16 1991
  856. X--- ./lang.c    Wed Nov  6 14:24:21 1991
  857. X***************
  858. X*** 3,9 ****
  859. X   *  Module    : lang.c
  860. X   *  Author    : R.Skrenta / I.Lea
  861. X   *  Created   : 01-04-91
  862. X!  *  Updated   : 31-10-91
  863. X   *  Release   : 1.0
  864. X   *  Notes     :
  865. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  866. X--- 3,9 ----
  867. X   *  Module    : lang.c
  868. X   *  Author    : R.Skrenta / I.Lea
  869. X   *  Created   : 01-04-91
  870. X!  *  Updated   : 06-11-91
  871. X   *  Release   : 1.0
  872. X   *  Notes     :
  873. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  874. X***************
  875. X*** 84,90 ****
  876. X  char txt_help_ctrl_l[] = "^L       Redraw page\r\n";
  877. X  char txt_help_ctrl_d[] = "^D^U     Down (^U=up) a page\r\n";
  878. X  char txt_help_i_cr[] = "<CR>     Read current article\r\n";
  879. X! char txt_help_i_tab[] = "<TAB>    View next unread article or group\r\n";
  880. X  char txt_help_m[] = "m        Move current group within group selection list\r\n";
  881. X  char txt_help_M[] = "M        Menu of configurable options\r\n";
  882. X  char txt_help_a[] = "aA       Author forward (A=backward) search\r\n";
  883. X--- 84,90 ----
  884. X  char txt_help_ctrl_l[] = "^L       Redraw page\r\n";
  885. X  char txt_help_ctrl_d[] = "^D^U     Down (^U=up) a page\r\n";
  886. X  char txt_help_i_cr[] = "<CR>     Read current article\r\n";
  887. X! char txt_help_i_tab[] = "<TAB>    Goto next unread article or group\r\n";
  888. X  char txt_help_m[] = "m        Move current group within group selection list\r\n";
  889. X  char txt_help_M[] = "M        Menu of configurable options\r\n";
  890. X  char txt_help_a[] = "aA       Author forward (A=backward) search\r\n";
  891. X***************
  892. X*** 106,111 ****
  893. X--- 106,114 ----
  894. X  char txt_help_w[] = "w        Post an article to current group\r\n";
  895. X  char txt_help_i_search[] = "/?       Subject forward (?=backward) search\r\n";
  896. X  char txt_help_thread[] = "<>       Goto first (>=last) article in current thread";
  897. X+ #ifndef NO_SHELL_ESCAPE
  898. X+ char txt_help_shell[] = "!        Shell escape\r\n";
  899. X+ #endif
  900. X  char txt_help_dash[] = "-        Show last message\r\n";
  901. X  #ifdef DONT_USE_REGEX 
  902. X  char txt_save_pattern[] = "Enter save pattern [%s]> ";
  903. X***************
  904. X*** 150,156 ****
  905. X  
  906. X  char txt_not_in_active_file[] = "Group %s not found in active file";
  907. X  char txt_screen_init_failed[] = "%s: Screen initialization failed";
  908. X! char txt_bad_active_file[] = "Active file corrupt";
  909. X  
  910. X  /*
  911. X   *  misc.c
  912. X--- 153,159 ----
  913. X  
  914. X  char txt_not_in_active_file[] = "Group %s not found in active file";
  915. X  char txt_screen_init_failed[] = "%s: Screen initialization failed";
  916. X! char txt_bad_active_file[] = "Active file corrupt - %s";
  917. X  
  918. X  /*
  919. X   *  misc.c
  920. X***************
  921. X*** 200,206 ****
  922. X  char txt_help_p_0[] = "0        Read the base article in current thread\r\n";
  923. X  char txt_help_p_4[] = "4        Read response 4 in current thread\r\n";
  924. X  char txt_help_p_cr[] = "<CR>     Goto to next thread\r\n";
  925. X! char txt_help_p_tab[] = "<TAB>    Advance to next page or unread article\r\n";
  926. X  char txt_help_b[] = "b<SPACE> Back (<SPACE>=forward) a page\r\n";
  927. X  char txt_help_bug[] = "B        Mail bug/gripe/comment to %s\r\n";
  928. X  char txt_help_p_f[] = "fF       Post (F=copy text) a followup\r\n";
  929. X--- 203,209 ----
  930. X  char txt_help_p_0[] = "0        Read the base article in current thread\r\n";
  931. X  char txt_help_p_4[] = "4        Read response 4 in current thread\r\n";
  932. X  char txt_help_p_cr[] = "<CR>     Goto to next thread\r\n";
  933. X! char txt_help_p_tab[] = "<TAB>    Goto next page or unread article\r\n";
  934. X  char txt_help_b[] = "b<SPACE> Back (<SPACE>=forward) a page\r\n";
  935. X  char txt_help_bug[] = "B        Mail bug/gripe/comment to %s\r\n";
  936. X  char txt_help_p_f[] = "fF       Post (F=copy text) a followup\r\n";
  937. X***************
  938. X*** 371,378 ****
  939. X  char txt_help_g_ctrl_r[] = "^R       Reset .newsrc\r\n";
  940. X  char txt_help_g_ctrl_k[] = "^KZ      Delete (Z=undelete) group from .newsrc\r\n";
  941. X  char txt_help_g_cr[] = "<CR>     Read current group\r\n";
  942. X- char txt_help_g_tab[] = "<TAB>    View next unread group\r\n";
  943. X  char txt_help_g_c[] = "c        Mark group as all read\r\n";
  944. X  char txt_help_W[] = "W        List articles posted by user\r\n";
  945. X  char txt_help_g_z[] = "z        Mark current group as unread\r\n";
  946. X  char txt_help_g_y[] = "y        Yank in groups that are not in the .newsrc\r\n";
  947. X--- 374,382 ----
  948. X  char txt_help_g_ctrl_r[] = "^R       Reset .newsrc\r\n";
  949. X  char txt_help_g_ctrl_k[] = "^KZ      Delete (Z=undelete) group from .newsrc\r\n";
  950. X  char txt_help_g_cr[] = "<CR>     Read current group\r\n";
  951. X  char txt_help_g_c[] = "c        Mark group as all read\r\n";
  952. X+ char txt_help_g_tab[] =   "n<TAB>   Goto next group with unread news and enter it\r\n";
  953. X+ char txt_help_n[] = "N        Goto next group with unread news\r\n";
  954. X  char txt_help_W[] = "W        List articles posted by user\r\n";
  955. X  char txt_help_g_z[] = "z        Mark current group as unread\r\n";
  956. X  char txt_help_g_y[] = "y        Yank in groups that are not in the .newsrc\r\n";
  957. Xdiff -rcs ../106/lang.h ./lang.h
  958. X*** ../106/lang.h    Tue Oct 29 19:54:38 1991
  959. X--- ./lang.h    Wed Nov  6 14:24:56 1991
  960. X***************
  961. X*** 3,9 ****
  962. X   *  Module    : lang.h
  963. X   *  Author    : I.Lea
  964. X   *  Created   : 01-04-91
  965. X!  *  Updated   : 29-10-91
  966. X   *  Release   : 1.0
  967. X   *  Notes     :
  968. X   *  Copyright : (c) Copyright 1991 by Iain Lea
  969. X--- 3,9 ----
  970. X   *  Module    : lang.h
  971. X   *  Author    : I.Lea
  972. X   *  Created   : 01-04-91
  973. X!  *  Updated   : 05-11-91
  974. X   *  Release   : 1.0
  975. X   *  Notes     :
  976. X   *  Copyright : (c) Copyright 1991 by Iain Lea
  977. X***************
  978. X*** 103,108 ****
  979. X--- 103,111 ----
  980. X  extern char txt_help_w[];
  981. X  extern char txt_help_i_search[];
  982. X  extern char txt_help_thread[];
  983. X+ #ifndef NO_SHELL_ESCAPE
  984. X+ extern char txt_help_shell[];
  985. X+ #endif
  986. X  extern char txt_help_dash[];
  987. X  extern char txt_save_pattern[];
  988. X  extern char txt_saved_pattern_to[];
  989. X***************
  990. X*** 361,366 ****
  991. X--- 364,370 ----
  992. X  extern char txt_help_g_cr[];
  993. X  extern char txt_help_g_tab[];
  994. X  extern char txt_help_g_c[];
  995. X+ extern char txt_help_n[];
  996. X  extern char txt_help_W[];
  997. X  extern char txt_help_g_y[];
  998. X  extern char txt_help_g_z[];
  999. Xdiff -rcs ../106/main.c ./main.c
  1000. X*** ../106/main.c    Mon Nov  4 10:01:13 1991
  1001. X--- ./main.c    Wed Nov  6 14:18:22 1991
  1002. X***************
  1003. X*** 3,9 ****
  1004. X   *  Module    : main.c
  1005. X   *  Author    : R.Skrenta / I.Lea
  1006. X   *  Created   : 01-04-91
  1007. X!  *  Updated   : 04-11-91
  1008. X   *  Release   : 1.0
  1009. X   *  Notes     :
  1010. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1011. X--- 3,9 ----
  1012. X   *  Module    : main.c
  1013. X   *  Author    : R.Skrenta / I.Lea
  1014. X   *  Created   : 01-04-91
  1015. X!  *  Updated   : 06-11-91
  1016. X   *  Release   : 1.0
  1017. X   *  Notes     :
  1018. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1019. X***************
  1020. X*** 15,21 ****
  1021. X  
  1022. X  #include    "tin.h"
  1023. X  
  1024. X- char *version = "v1.0";
  1025. X  char cvers[LEN];
  1026. X  char nntp_server[LEN];
  1027. X  
  1028. X--- 15,20 ----
  1029. X***************
  1030. X*** 193,199 ****
  1031. X          }
  1032. X      }
  1033. X  
  1034. X!     sprintf (page_header, "%s %s PL%d%s", progname, version, PATCHLEVEL, is_remote ());     
  1035. X      sprintf (cvers, "%s (c) Copyright 1991 Iain Lea.", page_header);
  1036. X  
  1037. X      if (! update) {
  1038. X--- 192,198 ----
  1039. X          }
  1040. X      }
  1041. X  
  1042. X!     sprintf (page_header, "%s %s PL%d%s", progname, VERSION, PATCHLEVEL, is_remote ());     
  1043. X      sprintf (cvers, "%s (c) Copyright 1991 Iain Lea.", page_header);
  1044. X  
  1045. X      if (! update) {
  1046. X***************
  1047. X*** 313,319 ****
  1048. X  void usage (progname)
  1049. X      char *progname;
  1050. X  {
  1051. X!     sprintf (msg, "%s %s PL%d - threaded usenet newsreader. Copyright 1991 Iain Lea.\n", progname, version, PATCHLEVEL);
  1052. X      error_message (msg, (char *) 0);
  1053. X      error_message ("Usage: %s [options] [newsgroups]", progname);
  1054. X      error_message ("  -c       mark all news as read in subscribed newsgroups (batch mode)", (char *) 0);
  1055. X--- 312,318 ----
  1056. X  void usage (progname)
  1057. X      char *progname;
  1058. X  {
  1059. X!     sprintf (msg, "%s %s PL%d - threaded usenet newsreader. Copyright 1991 Iain Lea.\n", progname, VERSION, PATCHLEVEL);
  1060. X      error_message (msg, (char *) 0);
  1061. X      error_message ("Usage: %s [options] [newsgroups]", progname);
  1062. X      error_message ("  -c       mark all news as read in subscribed newsgroups (batch mode)", (char *) 0);
  1063. XFiles ../106/memory.c and ./memory.c are identical
  1064. Xdiff -rcs ../106/misc.c ./misc.c
  1065. X*** ../106/misc.c    Mon Nov  4 13:24:43 1991
  1066. X--- ./misc.c    Tue Nov  5 14:22:43 1991
  1067. X***************
  1068. X*** 596,603 ****
  1069. X  int read_active ()
  1070. X  {
  1071. X      FILE *fp;
  1072. X!     char *p, *q;
  1073. X      char buf[LEN];
  1074. X      int created, i;
  1075. X      long h;
  1076. X      
  1077. X--- 596,604 ----
  1078. X  int read_active ()
  1079. X  {
  1080. X      FILE *fp;
  1081. X!     char *p, *q, *r;
  1082. X      char buf[LEN];
  1083. X+     char moderated;
  1084. X      int created, i;
  1085. X      long h;
  1086. X      
  1087. X***************
  1088. X*** 619,625 ****
  1089. X          for (p = buf; *p && *p != ' '; p++)
  1090. X              continue;
  1091. X          if (*p != ' ') {
  1092. X!             error_message (txt_bad_active_file, "");
  1093. X              continue;
  1094. X          }
  1095. X          *p++ = '\0';
  1096. X--- 620,626 ----
  1097. X          for (p = buf; *p && *p != ' '; p++)
  1098. X              continue;
  1099. X          if (*p != ' ') {
  1100. X!             error_message (txt_bad_active_file, buf);
  1101. X              continue;
  1102. X          }
  1103. X          *p++ = '\0';
  1104. X***************
  1105. X*** 645,657 ****
  1106. X          for (q = p; *q && *q != ' '; q++)
  1107. X              continue;
  1108. X          if (*q != ' ') {
  1109. X!             error_message (txt_bad_active_file, "");
  1110. X              continue;
  1111. X          }
  1112. X  
  1113. X          active[num_active].name = str_dup (buf);
  1114. X          active[num_active].max = (long) atol (p);
  1115. X          active[num_active].min = (long) atol (q);
  1116. X          active[num_active].next = -1;        /* hash chaining */
  1117. X          active[num_active].flag = NOTGOT;    /* not in my_group[] yet */
  1118. X          active[num_active].read = FALSE;    /* read/unread */
  1119. X--- 646,667 ----
  1120. X          for (q = p; *q && *q != ' '; q++)
  1121. X              continue;
  1122. X          if (*q != ' ') {
  1123. X!             error_message (txt_bad_active_file, buf);
  1124. X              continue;
  1125. X          }
  1126. X+         *q++ = '\0';
  1127. X  
  1128. X+         for (r = q; *r && *r != '\n'; r++) {
  1129. X+             if (*r == 'y' || *r == 'm') {
  1130. X+                 moderated = *r;
  1131. X+                 break;
  1132. X+             }
  1133. X+         }
  1134. X+ 
  1135. X          active[num_active].name = str_dup (buf);
  1136. X          active[num_active].max = (long) atol (p);
  1137. X          active[num_active].min = (long) atol (q);
  1138. X+         active[num_active].moderated = moderated;
  1139. X          active[num_active].next = -1;        /* hash chaining */
  1140. X          active[num_active].flag = NOTGOT;    /* not in my_group[] yet */
  1141. X          active[num_active].read = FALSE;    /* read/unread */
  1142. XFiles ../106/newsrc.c and ./newsrc.c are identical
  1143. XFiles ../106/nntp.h and ./nntp.h are identical
  1144. XFiles ../106/open.c and ./open.c are identical
  1145. Xdiff -rcs ../106/page.c ./page.c
  1146. X*** ../106/page.c    Mon Nov  4 17:56:18 1991
  1147. X--- ./page.c    Wed Nov  6 14:22:36 1991
  1148. X***************
  1149. X*** 3,9 ****
  1150. X   *  Module    : page.c
  1151. X   *  Author    : R.Skrenta / I.Lea
  1152. X   *  Created   : 01-04-91
  1153. X!  *  Updated   : 31-10-91
  1154. X   *  Release   : 1.0
  1155. X   *  Notes     :
  1156. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1157. X--- 3,9 ----
  1158. X   *  Module    : page.c
  1159. X   *  Author    : R.Skrenta / I.Lea
  1160. X   *  Created   : 01-04-91
  1161. X!  *  Updated   : 06-11-91
  1162. X   *  Release   : 1.0
  1163. X   *  Notes     :
  1164. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1165. X***************
  1166. X*** 54,59 ****
  1167. X--- 54,60 ----
  1168. X      int kill_state = NO_KILLING;
  1169. X      int old_sort_art_type = sort_art_type;
  1170. X      int old_top;
  1171. X+     int posted;
  1172. X      long old_artnum;
  1173. X      long art;
  1174. X  
  1175. X***************
  1176. X*** 134,143 ****
  1177. X--- 135,146 ----
  1178. X                  }
  1179. X                  break;
  1180. X  
  1181. X+ #ifndef NO_SHELL_ESCAPE
  1182. X              case '!':
  1183. X                  shell_escape ();
  1184. X                  redraw_page (respnum, group);
  1185. X                  break;
  1186. X+ #endif
  1187. X  
  1188. X              case '$':    /* goto end of article */
  1189. X              case 'G':    /* 'less' compatible */
  1190. X***************
  1191. X*** 583,592 ****
  1192. X                      break;
  1193. X                  }
  1194. X  #endif
  1195. X!                 if (post_base (group)) {
  1196. X!                     update_newsrc (group, my_group[cur_groupnum], FALSE);
  1197. X!                     index_group (group, group_path);
  1198. X!                     read_newsrc_line (group);
  1199. X                      redraw_page (respnum, group);
  1200. X                  }
  1201. X                  break;
  1202. X--- 586,597 ----
  1203. X                      break;
  1204. X                  }
  1205. X  #endif
  1206. X!                 if (post_base (group, &posted)) {
  1207. X!                     if (posted) {
  1208. X!                         update_newsrc (group, my_group[cur_groupnum], FALSE);
  1209. X!                         index_group (group, group_path);
  1210. X!                         read_newsrc_line (group);
  1211. X!                     }
  1212. X                      redraw_page (respnum, group);
  1213. X                  }
  1214. X                  break;
  1215. X***************
  1216. X*** 593,605 ****
  1217. X  
  1218. X              case 'W':    /* display messages posted by user */
  1219. X                  if (user_posted_messages ()) {
  1220. X!                     redraw_page(respnum, group);
  1221. X                  }
  1222. X                  break;
  1223. X  
  1224. X              case 'z':    /* mark article as unread (to return) */
  1225. X                  arts[respnum].unread = ART_WILL_RETURN;
  1226. X!                 info_message(txt_art_marked_as_unread);
  1227. X                  break;
  1228. X  
  1229. X              default:
  1230. X--- 598,610 ----
  1231. X  
  1232. X              case 'W':    /* display messages posted by user */
  1233. X                  if (user_posted_messages ()) {
  1234. X!                     redraw_page (respnum, group);
  1235. X                  }
  1236. X                  break;
  1237. X  
  1238. X              case 'z':    /* mark article as unread (to return) */
  1239. X                  arts[respnum].unread = ART_WILL_RETURN;
  1240. X!                 info_message (txt_art_marked_as_unread);
  1241. X                  break;
  1242. X  
  1243. X              default:
  1244. XOnly in .: patch07.shar.01
  1245. XOnly in .: patch07.shar.02
  1246. XOnly in ../106: patchlevel.h
  1247. Xdiff -rcs ../106/post.c ./post.c
  1248. X*** ../106/post.c    Thu Oct 31 18:21:59 1991
  1249. X--- ./post.c    Thu Nov  7 07:58:16 1991
  1250. X***************
  1251. X*** 3,9 ****
  1252. X   *  Module    : post.c
  1253. X   *  Author    : I.Lea
  1254. X   *  Created   : 01-04-91
  1255. X!  *  Updated   : 31-10-91
  1256. X   *  Release   : 1.0
  1257. X   *  Notes     : mailing/posting/replying/followup & cancel article routines
  1258. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1259. X--- 3,9 ----
  1260. X   *  Module    : post.c
  1261. X   *  Author    : I.Lea
  1262. X   *  Created   : 01-04-91
  1263. X!  *  Updated   : 07-11-91
  1264. X   *  Release   : 1.0
  1265. X   *  Notes     : mailing/posting/replying/followup & cancel article routines
  1266. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1267. X***************
  1268. X*** 20,28 ****
  1269. X  extern char note_h_messageid[LEN];        /* Message-ID:    */
  1270. X  extern char note_h_newsgroups[LEN];        /* Newsgroups:    */
  1271. X  extern char note_h_subj[LEN];            /* Subject:    */
  1272. X- 
  1273. X  extern FILE *note_fp;                    /* the body of the current article */
  1274. X! 
  1275. X  extern long note_mark[MAX_PAGES];        /* ftells on beginnings of pages */
  1276. X  
  1277. X  char default_post_subject[LEN];        /* offers user default choice */
  1278. X--- 20,27 ----
  1279. X  extern char note_h_messageid[LEN];        /* Message-ID:    */
  1280. X  extern char note_h_newsgroups[LEN];        /* Newsgroups:    */
  1281. X  extern char note_h_subj[LEN];            /* Subject:    */
  1282. X  extern FILE *note_fp;                    /* the body of the current article */
  1283. X! extern int cur_groupnum;
  1284. X  extern long note_mark[MAX_PAGES];        /* ftells on beginnings of pages */
  1285. X  
  1286. X  char default_post_subject[LEN];        /* offers user default choice */
  1287. X***************
  1288. X*** 137,144 ****
  1289. X   *  Post an original article (not a followup)
  1290. X   */
  1291. X  
  1292. X! int post_base (group)
  1293. X      char *group;
  1294. X  {
  1295. X      FILE *fp;
  1296. X      char ch;
  1297. X--- 136,144 ----
  1298. X   *  Post an original article (not a followup)
  1299. X   */
  1300. X  
  1301. X! int post_base (group, posted)
  1302. X      char *group;
  1303. X+     int *posted;
  1304. X  {
  1305. X      FILE *fp;
  1306. X      char ch;
  1307. X***************
  1308. X*** 147,154 ****
  1309. X--- 147,163 ----
  1310. X      char buf[LEN];
  1311. X      int redraw_screen = FALSE;
  1312. X  
  1313. X+     *posted = FALSE;
  1314. X      start_line_offset = 4;
  1315. X  
  1316. X+     if (active[my_group[cur_groupnum]].moderated == 'm') {
  1317. X+         sprintf (msg, "Group %s is moderated. Continue? (y/n): ", group);
  1318. X+         if (! prompt_yn (LINES, msg, 'y')) {
  1319. X+             clear_message ();
  1320. X+             return (redraw_screen);
  1321. X+         }
  1322. X+     }
  1323. X+ 
  1324. X      sprintf (msg, txt_post_subject, default_post_subject);
  1325. X      
  1326. X      if (! parse_string (msg, subj)) {
  1327. X***************
  1328. X*** 215,220 ****
  1329. X--- 224,230 ----
  1330. X              if (submit_file (article)) {
  1331. X                  unlink (article);
  1332. X                  info_message (txt_art_posted);
  1333. X+                 *posted = TRUE;
  1334. X                  goto post_base_done;
  1335. X              } else {
  1336. X                  rename_file (article, dead_article);
  1337. X***************
  1338. X*** 237,242 ****
  1339. X--- 247,253 ----
  1340. X  
  1341. X  post_base_done:
  1342. X      set_tin_uid_gid ();
  1343. X+     find_mail_header (HEADER_SUBJECT, article, subj);
  1344. X      update_art_posted_file (group, subj);
  1345. X      return (redraw_screen);
  1346. X  }
  1347. X***************
  1348. X*** 372,381 ****
  1349. X  post_response_done:
  1350. X      set_tin_uid_gid ();
  1351. X  
  1352. X!     if (*note_h_followup && strcmp(note_h_followup, "poster") != 0)
  1353. X          update_art_posted_file (note_h_followup, note_h_subj);
  1354. X!     else
  1355. X          update_art_posted_file (note_h_newsgroups, note_h_subj);
  1356. X  
  1357. X      return (redraw_screen);
  1358. X  }
  1359. X--- 383,395 ----
  1360. X  post_response_done:
  1361. X      set_tin_uid_gid ();
  1362. X  
  1363. X!     if (*note_h_followup && strcmp(note_h_followup, "poster") != 0) {
  1364. X!         find_mail_header (HEADER_SUBJECT, article, note_h_subj);
  1365. X          update_art_posted_file (note_h_followup, note_h_subj);
  1366. X!     } else {
  1367. X!         find_mail_header (HEADER_SUBJECT, article, note_h_subj);
  1368. X          update_art_posted_file (note_h_newsgroups, note_h_subj);
  1369. X+     }
  1370. X  
  1371. X      return (redraw_screen);
  1372. X  }
  1373. X***************
  1374. X*** 457,463 ****
  1375. X   *  Open letter and get the To: line in case they changed it with
  1376. X   *  the editor
  1377. X   */
  1378. X!             find_new_to (nam, mail_to);
  1379. X              sprintf (msg, txt_mailing_to, mail_to);
  1380. X              wait_message (msg);
  1381. X              sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  1382. X--- 471,477 ----
  1383. X   *  Open letter and get the To: line in case they changed it with
  1384. X   *  the editor
  1385. X   */
  1386. X!             find_mail_header (HEADER_TO, nam, mail_to);
  1387. X              sprintf (msg, txt_mailing_to, mail_to);
  1388. X              wait_message (msg);
  1389. X              sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  1390. X***************
  1391. X*** 505,511 ****
  1392. X  
  1393. X      fprintf (fp, "To: %s\n", bug_addr);
  1394. X      fprintf (fp, "Subject: BUG REPORT %s %s PL%d %s\n",    progname,
  1395. X!         version, PATCHLEVEL, (compiled_with_nntp ? "(NNTP)" : ""));
  1396. X      if (*my_org) {
  1397. X          fprintf (fp, "Organization: %s\n", my_org);
  1398. X          start_line_offset++;
  1399. X--- 519,525 ----
  1400. X  
  1401. X      fprintf (fp, "To: %s\n", bug_addr);
  1402. X      fprintf (fp, "Subject: BUG REPORT %s %s PL%d %s\n",    progname,
  1403. X!         VERSION, PATCHLEVEL, (compiled_with_nntp ? "(NNTP)" : ""));
  1404. X      if (*my_org) {
  1405. X          fprintf (fp, "Organization: %s\n", my_org);
  1406. X          start_line_offset++;
  1407. X***************
  1408. X*** 549,555 ****
  1409. X  
  1410. X          case 's':
  1411. X              strcpy (mail_to, bug_addr);
  1412. X!             find_new_to (nam, mail_to);
  1413. X              sprintf (msg, txt_mailing_to, mail_to);
  1414. X              wait_message (msg);
  1415. X              sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  1416. X--- 563,569 ----
  1417. X  
  1418. X          case 's':
  1419. X              strcpy (mail_to, bug_addr);
  1420. X!             find_mail_header (HEADER_TO, nam, mail_to);
  1421. X              sprintf (msg, txt_mailing_to, mail_to);
  1422. X              wait_message (msg);
  1423. X              sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  1424. X***************
  1425. X*** 644,650 ****
  1426. X  
  1427. X          case 's':
  1428. X              strcpy (mail_to, arts[respnum].from);
  1429. X!             find_new_to (nam, mail_to);
  1430. X              sprintf (msg, txt_mailing_to, mail_to);
  1431. X              wait_message (msg);
  1432. X              sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  1433. X--- 658,664 ----
  1434. X  
  1435. X          case 's':
  1436. X              strcpy (mail_to, arts[respnum].from);
  1437. X!             find_mail_header (HEADER_TO, nam, mail_to);
  1438. X              sprintf (msg, txt_mailing_to, mail_to);
  1439. X              wait_message (msg);
  1440. X              sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  1441. X***************
  1442. X*** 674,697 ****
  1443. X  }
  1444. X  
  1445. X  /*
  1446. X!  *  Read a file grabbing the address given for To: and
  1447. X!  *  sticking it in mail_to
  1448. X   */
  1449. X  
  1450. X! void find_new_to (nam, mail_to)
  1451. X!     char *nam;
  1452. X!     char *mail_to;
  1453. X  {
  1454. X      FILE *fp;
  1455. X      char buf[LEN];
  1456. X      char buf2[LEN];
  1457. X!     char new_mail_to[LEN];
  1458. X      char *p;
  1459. X  
  1460. X!     *new_mail_to = '\0';
  1461. X  
  1462. X!     if ((fp = fopen(nam, "r")) == NULL) {
  1463. X!         fprintf(stderr, txt_cannot_open, nam);
  1464. X          return;
  1465. X      }
  1466. X  
  1467. X--- 688,711 ----
  1468. X  }
  1469. X  
  1470. X  /*
  1471. X!  *  Read a file grabbing the value of the specified mail header line
  1472. X   */
  1473. X  
  1474. X! void find_mail_header (header, file, value)
  1475. X!     int header;
  1476. X!     char *file;
  1477. X!     char *value;
  1478. X  {
  1479. X      FILE *fp;
  1480. X      char buf[LEN];
  1481. X      char buf2[LEN];
  1482. X!     char new_value[LEN];
  1483. X      char *p;
  1484. X  
  1485. X!     *new_value = '\0';
  1486. X  
  1487. X!     if ((fp = fopen (file, "r")) == NULL) {
  1488. X!         error_message (txt_cannot_open, file);
  1489. X          return;
  1490. X      }
  1491. X  
  1492. X***************
  1493. X*** 703,724 ****
  1494. X          if (*buf == '\0')
  1495. X              break;
  1496. X  
  1497. X!         if (strncmp(buf, "To: ", 4) == 0) {
  1498. X!             strncpy(buf2, &buf[4], LEN);
  1499. X!             buf2[LEN-1] = '\0';
  1500. X!             yank_to_addr(buf2, new_mail_to);
  1501. X!         } else if (strncmp(buf, "Cc: ", 4) == 0) {
  1502. X!             strncpy(buf2, &buf[4], LEN);
  1503. X!             buf2[LEN-1] = '\0';
  1504. X!             yank_to_addr(buf2, new_mail_to);
  1505. X          }
  1506. X      }
  1507. X  
  1508. X      fclose (fp);
  1509. X!     if (new_mail_to[0] == ' ')
  1510. X!         my_strncpy (mail_to, &new_mail_to[1], LEN);
  1511. X!     else
  1512. X!         my_strncpy (mail_to, new_mail_to, LEN);
  1513. X  }
  1514. X  
  1515. X  
  1516. X--- 717,750 ----
  1517. X          if (*buf == '\0')
  1518. X              break;
  1519. X  
  1520. X!         switch (header) {
  1521. X!             case HEADER_TO:
  1522. X!                 if (strncmp (buf, "To: ", 4) == 0) {
  1523. X!                     my_strncpy (buf2, &buf[4], LEN);
  1524. X!                     buf2[LEN-1] = '\0';
  1525. X!                     yank_to_addr (buf2, new_value);
  1526. X!                 } else if (strncmp (buf, "Cc: ", 4) == 0) {
  1527. X!                     my_strncpy (buf2, &buf[4], LEN);
  1528. X!                     buf2[LEN-1] = '\0';
  1529. X!                     yank_to_addr (buf2, new_value);
  1530. X!                 } 
  1531. X!                 break;
  1532. X! 
  1533. X!             case HEADER_SUBJECT:
  1534. X!                 if (strncmp (buf, "Subject: ", 9) == 0) {
  1535. X!                     my_strncpy (buf2, &buf[9], LEN);
  1536. X!                     buf2[LEN-1] = '\0';
  1537. X!                 }
  1538. X          }
  1539. X      }
  1540. X  
  1541. X      fclose (fp);
  1542. X! 
  1543. X!     if (new_value[0] == ' ') {
  1544. X!         my_strncpy (value, &new_value[1], LEN);
  1545. X!     } else {
  1546. X!         my_strncpy (value, new_value, LEN);
  1547. X!     }
  1548. X  }
  1549. X  
  1550. X  
  1551. XFiles ../106/prompt.c and ./prompt.c are identical
  1552. Xdiff -rcs ../106/proto.h ./proto.h
  1553. X*** ../106/proto.h    Thu Oct 31 18:36:04 1991
  1554. X--- ./proto.h    Thu Nov  7 08:01:22 1991
  1555. X***************
  1556. X*** 169,180 ****
  1557. X  /* post.c */
  1558. X  int user_posted_messages(void);
  1559. X  void update_art_posted_file(char *group, char *subj);
  1560. X! int post_base(char *group);
  1561. X  int post_response(char *group, int respnum);
  1562. X  int mail_to_someone(char *address);
  1563. X  int mail_bug_report(void);
  1564. X  int mail_to_author(int respnum, int copy_text);
  1565. X! void find_new_to(char *nam, char *mail_to);
  1566. X  int cancel_article(void);
  1567. X  int submit_file(char *name);
  1568. X  /* prompt.c */
  1569. X--- 169,180 ----
  1570. X  /* post.c */
  1571. X  int user_posted_messages(void);
  1572. X  void update_art_posted_file(char *group, char *subj);
  1573. X! int post_base(char *group, int posted);
  1574. X  int post_response(char *group, int respnum);
  1575. X  int mail_to_someone(char *address);
  1576. X  int mail_bug_report(void);
  1577. X  int mail_to_author(int respnum, int copy_text);
  1578. X! void find_mail_header(int header, char *file, char *value);
  1579. X  int cancel_article(void);
  1580. X  int submit_file(char *name);
  1581. X  /* prompt.c */
  1582. X***************
  1583. X*** 426,437 ****
  1584. X  /* post.c */
  1585. X  int user_posted_messages(/*void*/);
  1586. X  void update_art_posted_file(/*char *group, char *subj*/);
  1587. X! int post_base(/*char *group*/);
  1588. X  int post_response(/*char *group, int respnum*/);
  1589. X  int mail_to_someone(/*char *address*/);
  1590. X  int mail_bug_report(/*void*/);
  1591. X  int mail_to_author(/*int respnum, int copy_text*/);
  1592. X! void find_new_to(/*char *nam, char *mail_to*/);
  1593. X  int cancel_article(/*void*/);
  1594. X  int submit_file(/*char *name*/);
  1595. X  /* prompt.c */
  1596. X--- 426,437 ----
  1597. X  /* post.c */
  1598. X  int user_posted_messages(/*void*/);
  1599. X  void update_art_posted_file(/*char *group, char *subj*/);
  1600. X! int post_base(/*char *group, int posted*/);
  1601. X  int post_response(/*char *group, int respnum*/);
  1602. X  int mail_to_someone(/*char *address*/);
  1603. X  int mail_bug_report(/*void*/);
  1604. X  int mail_to_author(/*int respnum, int copy_text*/);
  1605. X! void find_mail_header(/*int header, char *file, char *value*/);
  1606. X  int cancel_article(/*void*/);
  1607. X  int submit_file(/*char *name*/);
  1608. X  /* prompt.c */
  1609. XFiles ../106/rcfile.c and ./rcfile.c are identical
  1610. XFiles ../106/save.c and ./save.c are identical
  1611. XFiles ../106/screen.c and ./screen.c are identical
  1612. XFiles ../106/search.c and ./search.c are identical
  1613. Xdiff -rcs ../106/select.c ./select.c
  1614. X*** ../106/select.c    Fri Oct 25 20:29:17 1991
  1615. X--- ./select.c    Wed Nov  6 14:21:21 1991
  1616. X***************
  1617. X*** 3,9 ****
  1618. X   *  Module    : select.c
  1619. X   *  Author    : R.Skrenta / I.Lea
  1620. X   *  Created   : 01-04-91
  1621. X!  *  Updated   : 25-10-91
  1622. X   *  Release   : 1.0
  1623. X   *  Notes     :
  1624. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1625. X--- 3,9 ----
  1626. X   *  Module    : select.c
  1627. X   *  Author    : R.Skrenta / I.Lea
  1628. X   *  Created   : 01-04-91
  1629. X!  *  Updated   : 05-11-91
  1630. X   *  Release   : 1.0
  1631. X   *  Notes     :
  1632. X   *  Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
  1633. X***************
  1634. X*** 33,38 ****
  1635. X--- 33,39 ----
  1636. X      char ch;
  1637. X      int i, n;
  1638. X      int patlen;
  1639. X+     int posted;
  1640. X      int scroll_lines;
  1641. X      int subscribe_num;
  1642. X  
  1643. X***************
  1644. X*** 53,62 ****
  1645. X--- 54,65 ----
  1646. X          if (ch > '0' && ch <= '9') {
  1647. X              prompt_group_num (ch);
  1648. X          } else switch (ch) {
  1649. X+ #ifndef NO_SHELL_ESCAPE
  1650. X              case '!':
  1651. X                  shell_escape ();
  1652. X                  group_selection_page ();
  1653. X                  break;
  1654. X+ #endif
  1655. X  
  1656. X              case '$':    /* show last page of groups */
  1657. X  end_of_list:
  1658. X***************
  1659. X*** 90,95 ****
  1660. X--- 93,99 ----
  1661. X                  break;
  1662. X  
  1663. X              case '\t':    /* enter next group containing unread articles */
  1664. X+             case 'n':
  1665. X                  next_unread_group (TRUE);
  1666. X                  break;
  1667. X  
  1668. X***************
  1669. X*** 337,342 ****
  1670. X--- 341,350 ----
  1671. X                  group_selection_page ();
  1672. X                  break;
  1673. X  
  1674. X+             case 'N':    /* goto next unread group */
  1675. X+                 next_unread_group (FALSE);
  1676. X+                 break;
  1677. X+ 
  1678. X              case 'q':    /* quit */
  1679. X                  tin_done (0);
  1680. X                  break;
  1681. X***************
  1682. X*** 456,462 ****
  1683. X                      break;
  1684. X                  }
  1685. X  #endif
  1686. X!                 if (post_base (active[my_group[cur_groupnum]].name)) {
  1687. X                      group_selection_page ();
  1688. X                  }
  1689. X                  break;
  1690. X--- 464,470 ----
  1691. X                      break;
  1692. X                  }
  1693. X  #endif
  1694. X!                 if (post_base (active[my_group[cur_groupnum]].name, &posted)) {
  1695. X                      group_selection_page ();
  1696. X                  }
  1697. X                  break;
  1698. XFiles ../106/signal.c and ./signal.c are identical
  1699. Xdiff -rcs ../106/tin.1 ./tin.1
  1700. X*** ../106/tin.1    Mon Nov  4 19:12:57 1991
  1701. X--- ./tin.1    Thu Nov  7 19:18:25 1991
  1702. X***************
  1703. X*** 1,4 ****
  1704. X! .TH TIN 1 "Version 1.0 PL6"
  1705. X  .SH NAME
  1706. X  tin \- Visual threaded Usenet news reader
  1707. X  .SH SYNOPSIS
  1708. X--- 1,4 ----
  1709. X! .TH TIN 1 "Version 1.0 PL7"
  1710. X  .SH NAME
  1711. X  tin \- Visual threaded Usenet news reader
  1712. X  .SH SYNOPSIS
  1713. X***************
  1714. X*** 904,911 ****
  1715. SHAR_EOF
  1716. echo "End of tin part 1"
  1717. echo "File tin.patch07 is continued in part 2"
  1718. echo "2" > shar3_seq_.tmp
  1719. exit 0
  1720.  
  1721. -- 
  1722.  Dr. med. dipl.-math Dieter Becker           Tel.: (0 / +49) 6841 - 16 3046
  1723.  Medizinische Universitaets- und Poliklinik  Fax.: (0 / +49) 6841 - 16 3369
  1724.  Innere Medizin III                         
  1725.  D - 6650 Homburg / Saar                     Email: becker@med-in.uni-sb.de
  1726. exit 0 # Just in case...
  1727. -- 
  1728. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1729. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1730. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1731. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1732.