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

  1. Path: sparky!uunet!ferkel.ucsb.edu!taco!rock!concert!rutgers!jvnc.net!darwin.sura.net!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!agate!doc.ic.ac.uk!uknet!mcsun!Germany.EU.net!anl433!Iain.Lea
  2. From: Iain.Lea%anl433.uucp@Germany.EU.net (Iain Lea)
  3. Newsgroups: alt.sources
  4. Subject: TIN newsreader v1.1 PL7 (Patch 08/10)
  5. Message-ID: <1992Nov15.155340.20399@anl433.uucp>
  6. Date: 15 Nov 92 15:53:40 GMT
  7. Sender: news@anl433.uucp (Netnews Administrator)
  8. Reply-To: Iain.Lea%anl433.uucp@Germany.EU.net
  9. Followup-To: alt.sources.d
  10. Organization: ANL A433, Siemens AG., Germany.
  11. Lines: 2155
  12. X-Newsreader: TIN [version 1.1 PL7]
  13.  
  14. Submitted-by: Iain.Lea%anl433.uucp@Germany.EU.net (Iain Lea)
  15. Archive-name: tin-1.17/part08
  16.  
  17. #!/bin/sh
  18. # this is tin.shar.08 (part 8 of tin-1.17)
  19. # do not concatenate these parts, unpack them in order with /bin/sh
  20. # file tin-1.17.patch continued
  21. #
  22. if test ! -r _shar_seq_.tmp; then
  23.     echo 'Please unpack part 1 first!'
  24.     exit 1
  25. fi
  26. (read Scheck
  27.  if test "$Scheck" != 8; then
  28.     echo Please unpack part "$Scheck" next!
  29.     exit 1
  30.  else
  31.     exit 0
  32.  fi
  33. ) < _shar_seq_.tmp || exit 1
  34. if test ! -f _shar_wnt_.tmp; then
  35.     echo 'x - still skipping tin-1.17.patch'
  36. else
  37. echo 'x - continuing file tin-1.17.patch'
  38. sed 's/^X//' << 'SHAR_EOF' >> 'tin-1.17.patch' &&
  39. X                          cur_groupnum = n;
  40. X                      }
  41. X-                     erase_group_arrow ();
  42. X-                     cur_groupnum = reposition_group (active[my_group[n]].name,
  43. X-                                     (n ? n : cur_groupnum));
  44. X                      set_groupname_len (FALSE);                
  45. X                      if (cur_groupnum < first_group_on_screen ||
  46. X                          cur_groupnum >= last_group_on_screen ||
  47. X--- 374,388 ----
  48. X  
  49. X              case 'g':    /* prompt for a new group name */
  50. X                  if ((n = choose_new_group ()) >= 0) {
  51. X+                     erase_group_arrow ();
  52. X                      if (active[my_group[n]].my_group != SUBSCRIBED) {
  53. X                          subscribe (active[my_group[n]].name, ':',
  54. X                              my_group[n], FALSE);
  55. X+                         cur_groupnum = reposition_group (active[my_group[n]].name,
  56. X+                             (n ? n : cur_groupnum));
  57. X                      } else {
  58. X                          cur_groupnum = n;
  59. X                      }
  60. X                      set_groupname_len (FALSE);                
  61. X                      if (cur_groupnum < first_group_on_screen ||
  62. X                          cur_groupnum >= last_group_on_screen ||
  63. X***************
  64. X*** 423,428 ****
  65. X--- 416,424 ----
  66. X                  if (active[my_group[cur_groupnum]].my_group == SUBSCRIBED) {
  67. X                      n = cur_groupnum;
  68. X                      cur_groupnum = reposition_group (active[my_group[n]].name, n);
  69. X+                     if (_hp_glitch) {
  70. X+                         erase_group_arrow ();
  71. X+                     }
  72. X                      if (cur_groupnum < first_group_on_screen ||
  73. X                          cur_groupnum >= last_group_on_screen ||
  74. X                          cur_groupnum != n) {
  75. X***************
  76. X*** 462,472 ****
  77. X                    * If in show_only_unread_groups mode toggle
  78. X                    * all subscribed to groups and only  groups
  79. X                    * that contain unread articles
  80. X                    */
  81. X!                  show_only_unread_groups = !show_only_unread_groups;
  82. X!                 toggle_my_groups (show_only_unread_groups, "");
  83. X!                 set_groupname_len (FALSE);
  84. X!                 group_selection_page ();
  85. X                  break;
  86. X  
  87. X              case 's':    /* subscribe to current group */
  88. X--- 458,477 ----
  89. X                    * If in show_only_unread_groups mode toggle
  90. X                    * all subscribed to groups and only  groups
  91. X                    * that contain unread articles
  92. X+                   *
  93. X+                   * Disabled when started with cmdline groups
  94. X                    */
  95. X!                  if (! read_cmd_line_groups ()) { 
  96. X!                      show_only_unread_groups = !show_only_unread_groups;
  97. X!                     if (show_only_unread_groups) {
  98. X!                         wait_message (txt_reading_new_groups);
  99. X!                     } else {
  100. X!                         wait_message (txt_reading_all_groups);
  101. X!                     }
  102. X!                     toggle_my_groups (show_only_unread_groups, "");
  103. X!                     set_groupname_len (FALSE);
  104. X!                     group_selection_page ();
  105. X!                 }
  106. X                  break;
  107. X  
  108. X              case 's':    /* subscribe to current group */
  109. X***************
  110. X*** 485,490 ****
  111. X--- 490,498 ----
  112. X                  break;
  113. X  
  114. X              case 'S':    /* subscribe to groups matching pattern */
  115. X+                 if (group_top == 0) {
  116. X+                     break;
  117. X+                 }
  118. X                  if (prompt_string (txt_subscribe_pattern, buf) && buf[0]) {
  119. X                      wait_message (txt_subscribing);
  120. X                      patlen = strlen (buf);
  121. X***************
  122. X*** 534,539 ****
  123. X--- 542,550 ----
  124. X                  break;
  125. X  
  126. X              case 'U':    /* unsubscribe to groups matching pattern */
  127. X+                 if (group_top == 0) {
  128. X+                     break;
  129. X+                 }
  130. X                  if (prompt_string (txt_unsubscribe_pattern, buf) && buf[0]) {    
  131. X                      wait_message (txt_unsubscribing);
  132. X                      patlen = strlen (buf);    
  133. X***************
  134. X*** 623,628 ****
  135. X--- 634,642 ----
  136. X                  } else {
  137. X                      wait_message (txt_yanking_sub_groups);
  138. X                      read_newsrc (TRUE);
  139. X+                     if (_hp_glitch) {
  140. X+                         erase_group_arrow ();
  141. X+                     }                    
  142. X                      cur_groupnum = group_top - 1;
  143. X                      set_groupname_len (yank_active_file);
  144. X                      group_selection_page ();
  145. X***************
  146. X*** 644,654 ****
  147. X                  update_newsrc (active[my_group[n]].name, my_group[n], TRUE);
  148. X                  cur_groupnum = 0;
  149. X                  group_top = 0;
  150. X-                 read_newsrc (TRUE);            
  151. X-                 cur_groupnum = n;
  152. X                  if (active[my_group[cur_groupnum]].unread) {
  153. X                      sprintf (msg, "%5d", active[my_group[cur_groupnum]].unread);
  154. X!                 } else {    
  155. X                      strcpy (msg, "     ");
  156. X                  }
  157. X                  mark_screen (SELECT_LEVEL, cur_groupnum - first_group_on_screen, 9, msg);
  158. X--- 658,666 ----
  159. X                  update_newsrc (active[my_group[n]].name, my_group[n], TRUE);
  160. X                  cur_groupnum = 0;
  161. X                  group_top = 0;
  162. X                  if (active[my_group[cur_groupnum]].unread) {
  163. X                      sprintf (msg, "%5d", active[my_group[cur_groupnum]].unread);
  164. X!                 } else {
  165. X                      strcpy (msg, "     ");
  166. X                  }
  167. X                  mark_screen (SELECT_LEVEL, cur_groupnum - first_group_on_screen, 9, msg);
  168. X***************
  169. X*** 797,812 ****
  170. X                      blank_len, " ");
  171. X              }
  172. X          }
  173. X! /*
  174. X!         for (n=strlen(screen[j].col)-3; screen[j].col[n] == ' ' && n >= 0; n--) {
  175. X!              screen[j].col[n] = '\0';
  176. X!          }
  177. X!          fputs(screen[j].col, stdout);
  178. X           CleartoEOLN ();
  179. X!          fputs("\r\n", stdout);
  180. X! */
  181. X!     
  182. X!         fputs (screen[j].col, stdout);
  183. X      }
  184. X  #ifndef USE_CLEARSCREEN
  185. X      CleartoEOS ();
  186. X--- 809,820 ----
  187. X                      blank_len, " ");
  188. X              }
  189. X          }
  190. X!         if (slow_speed_terminal) {
  191. X!             strip_line (screen[j].col, strlen (screen[j].col));
  192. X!             strcat (screen[j].col, "\r\n");
  193. X!         }
  194. X           CleartoEOLN ();
  195. X!          fputs (screen[j].col, stdout);
  196. X      }
  197. X  #ifndef USE_CLEARSCREEN
  198. X      CleartoEOS ();
  199. X***************
  200. X*** 1071,1077 ****
  201. X          index_point = -1;
  202. X          do {
  203. X              group_page (active[my_group[cur_groupnum]].name);
  204. X!         } while (index_point == -3);
  205. X          group_selection_page ();
  206. X      }
  207. X  }
  208. X--- 1079,1085 ----
  209. X          index_point = -1;
  210. X          do {
  211. X              group_page (active[my_group[cur_groupnum]].name);
  212. X!         } while (index_point == -3 || index_point == -4);
  213. X          group_selection_page ();
  214. X      }
  215. X  }
  216. X***************
  217. X*** 1112,1117 ****
  218. X--- 1120,1129 ----
  219. X              groupname_len = 0;
  220. X          }    
  221. X      }
  222. X+     
  223. X+     if (groupname_len > groupname_max_length) {
  224. X+         groupname_len = groupname_max_length;
  225. X+     }
  226. X  }
  227. X  
  228. X  
  229. X***************
  230. X*** 1196,1201 ****
  231. X--- 1208,1217 ----
  232. X  
  233. X  void    goto_next_group_on_screen ()
  234. X  {
  235. X+     if (_hp_glitch) {
  236. X+         erase_group_arrow ();
  237. X+     }
  238. X+ 
  239. X      if (cur_groupnum+1 < last_group_on_screen) {
  240. X          erase_group_arrow ();
  241. X          cur_groupnum++;
  242. X***************
  243. X*** 1204,1207 ****
  244. X--- 1220,1239 ----
  245. X          cur_groupnum++;
  246. X          group_selection_page ();
  247. X      }
  248. X+ }
  249. X+ 
  250. X+ /*
  251. X+  * Strip trailing blanks
  252. X+  */
  253. X+ 
  254. X+ void strip_line (line, len)
  255. X+     char *line;
  256. X+     int len;
  257. X+ {
  258. X+     char *ptr = line + (len - 1);
  259. X+     
  260. X+     while (*ptr == ' ' || *ptr == '\r' || *ptr == '\n') {
  261. X+         ptr--;
  262. X+     }    
  263. X+     *++ptr = '\0';
  264. X  }
  265. Xdiff -rcs ../1.16/server.patch ./server.patch
  266. X*** ../1.16/server.patch    Sun Nov 15 18:41:37 1992
  267. X--- ./server.patch    Thu Nov  5 13:27:59 1992
  268. X***************
  269. X*** 1,6 ****
  270. X! diff -rcs server.old/Makefile server/Makefile
  271. X! *** server.old/Makefile    Mon May  4 07:03:54 1992
  272. X! --- server/Makefile    Mon May  4 07:16:35 1992
  273. X  ***************
  274. X  *** 6,18 ****
  275. X        ahbs.o globals.o group.o help.o ihave.o list.o misc.o netaux.o \
  276. X--- 1,6 ----
  277. X! diff -rcs nntp/server/Makefile nntp-1.5.11/server/Makefile
  278. X! *** server/Makefile        Wed Sep 30 14:34:44 1992
  279. X! --- server/Makefile        Sat Sep 26 11:01:58 1992
  280. X  ***************
  281. X  *** 6,18 ****
  282. X        ahbs.o globals.o group.o help.o ihave.o list.o misc.o netaux.o \
  283. X***************
  284. X*** 20,41 ****
  285. X        ahbs.o globals.o group.o help.o ihave.o list.o misc.o netaux.o \
  286. X        newgroups.o newnews.o nextlast.o ngmatch.o post.o parsit.o scandir.o \
  287. X        slave.o spawn.o strcasecmp.o subnet.o time.o xhdr.o fakesyslog.o \
  288. X! !     batch.o auth.o timer.o ../common/version.o xuser.o xindex.o
  289. X    
  290. X    SRVRSRC = main.c serve.c access.c access_inet.c access_dnet.c active.c \
  291. X        ahbs.c globals.c group.c help.c ihave.c list.c misc.c netaux.c \
  292. X        newgroups.c newnews.c nextlast.c ngmatch.c post.c parsit.c scandir.c \
  293. X        slave.c spawn.c strcasecmp.c subnet.c time.c xhdr.c fakesyslog.c \
  294. X! !     batch.c auth.c timer.c ../common/version.c xuser.c xindex.c
  295. X    
  296. X    SRVRINC = common.h ../common/conf.h ../common/nntp.h timer.h
  297. X    
  298. X- Files server.old/README and server/README are identical
  299. X- Files server.old/SYSLOG and server/SYSLOG are identical
  300. X- diff -rcs server.old/access.c server/access.c
  301. X- *** server.old/access.c    Mon May  4 07:03:55 1992
  302. X- --- server/access.c    Sat Mar  7 11:46:00 1992
  303. X  ***************
  304. X  *** 44,50 ****
  305. X    
  306. X    #ifdef AUTH
  307. X--- 20,56 ----
  308. X        ahbs.o globals.o group.o help.o ihave.o list.o misc.o netaux.o \
  309. X        newgroups.o newnews.o nextlast.o ngmatch.o post.o parsit.o scandir.o \
  310. X        slave.o spawn.o strcasecmp.o subnet.o time.o xhdr.o fakesyslog.o \
  311. X! !     batch.o auth.o timer.o ../common/version.o xuser.o xindex.o xmotd.o
  312. X    
  313. X    SRVRSRC = main.c serve.c access.c access_inet.c access_dnet.c active.c \
  314. X        ahbs.c globals.c group.c help.c ihave.c list.c misc.c netaux.c \
  315. X        newgroups.c newnews.c nextlast.c ngmatch.c post.c parsit.c scandir.c \
  316. X        slave.c spawn.c strcasecmp.c subnet.c time.c xhdr.c fakesyslog.c \
  317. X! !     batch.c auth.c timer.c ../common/version.c xuser.c xindex.c xmotd.c
  318. X    
  319. X    SRVRINC = common.h ../common/conf.h ../common/nntp.h timer.h
  320. X    
  321. X  ***************
  322. X+ *** 25,31 ****
  323. X+   
  324. X+   # Where nntpd is going to live
  325. X+   
  326. X+ ! DESTDIR    = /news/nntp
  327. X+   
  328. X+   all:    nntpd
  329. X+   
  330. X+ --- 25,31 ----
  331. X+   
  332. X+   # Where nntpd is going to live
  333. X+   
  334. X+ ! DESTDIR    = /etc
  335. X+   
  336. X+   all:    nntpd
  337. X+   
  338. X+ diff -rcs nntp/server/access.c nntp-1.5.11/server/access.c
  339. X+ *** server/access.c        Wed Sep 30 14:34:42 1992
  340. X+ --- server/access.c        Tue Sep 15 20:09:54 1992
  341. X+ ***************
  342. X  *** 44,50 ****
  343. X    
  344. X    #ifdef AUTH
  345. X***************
  346. X*** 80,89 ****
  347. X        return (0);
  348. X    }
  349. X  ! #endif /* DOMAINMATCH */
  350. X! Files server.old/access_dnet.c and server/access_dnet.c are identical
  351. X! diff -rcs server.old/access_inet.c server/access_inet.c
  352. X! *** server.old/access_inet.c    Mon May  4 07:03:55 1992
  353. X! --- server/access_inet.c    Sat Mar  7 11:46:00 1992
  354. X  ***************
  355. X  *** 77,83 ****
  356. X        }
  357. X--- 95,103 ----
  358. X        return (0);
  359. X    }
  360. X  ! #endif /* DOMAINMATCH */
  361. X! diff -rcs nntp/server/access_inet.c nntp-1.5.11/server/access_inet.c
  362. X! *** server/access_inet.c    Wed Sep 30 14:34:45 1992
  363. X! --- server/access_inet.c    Tue Sep 15 20:09:56 1992
  364. X  ***************
  365. X  *** 77,83 ****
  366. X        }
  367. X***************
  368. X*** 101,111 ****
  369. X    
  370. X        hp = gethostbyaddr((char *) &sin->sin_addr.s_addr,
  371. X            sizeof (sin->sin_addr.s_addr), AF_INET);
  372. X! Files server.old/active.c and server/active.c are identical
  373. X! Files server.old/ahbs.c and server/ahbs.c are identical
  374. X! diff -rcs server.old/auth.c server/auth.c
  375. X! *** server.old/auth.c    Mon May  4 07:03:55 1992
  376. X! --- server/auth.c    Sat Mar  7 11:46:00 1992
  377. X  ***************
  378. X  *** 149,152 ****
  379. X        Needauth = 0;
  380. X--- 115,123 ----
  381. X    
  382. X        hp = gethostbyaddr((char *) &sin->sin_addr.s_addr,
  383. X            sizeof (sin->sin_addr.s_addr), AF_INET);
  384. X! diff -rcs nntp/server/auth.c nntp-1.5.11/server/auth.c
  385. X! *** server/auth.c    Wed Sep 30 14:34:49 1992
  386. X! --- server/auth.c    Tue Sep 15 20:10:00 1992
  387. X  ***************
  388. X  *** 149,152 ****
  389. X        Needauth = 0;
  390. X***************
  391. X*** 117,125 ****
  392. X    }
  393. X    
  394. X  ! #endif /* AUTH */
  395. X! diff -rcs server.old/batch.c server/batch.c
  396. X! *** server.old/batch.c    Mon May  4 07:03:55 1992
  397. X! --- server/batch.c    Sat Mar  7 11:46:00 1992
  398. X  ***************
  399. X  *** 255,265 ****
  400. X    #ifdef SYSLOG
  401. X--- 129,137 ----
  402. X    }
  403. X    
  404. X  ! #endif /* AUTH */
  405. X! diff -rcs nntp/server/batch.c nntp-1.5.11/server/batch.c
  406. X! *** server/batch.c    Wed Sep 30 14:34:45 1992
  407. X! --- server/batch.c    Tue Sep 15 20:09:58 1992
  408. X  ***************
  409. X  *** 255,265 ****
  410. X    #ifdef SYSLOG
  411. X***************
  412. X*** 145,153 ****
  413. X    }
  414. X    
  415. X    /*
  416. X! diff -rcs server.old/common.h server/common.h
  417. X! *** server.old/common.h    Mon May  4 07:03:55 1992
  418. X! --- server/common.h    Sun Mar  8 11:26:19 1992
  419. X  ***************
  420. X  *** 48,53 ****
  421. X  --- 48,56 ----
  422. X--- 157,165 ----
  423. X    }
  424. X    
  425. X    /*
  426. X! diff -rcs nntp/server/common.h nntp-1.5.11/server/common.h
  427. X! *** server/common.h        Wed Sep 30 14:34:43 1992
  428. X! --- server/common.h        Tue Sep 15 20:09:55 1992
  429. X  ***************
  430. X  *** 48,53 ****
  431. X  --- 48,56 ----
  432. X***************
  433. X*** 170,179 ****
  434. X    extern    char    newsgroupsfile[];
  435. X    extern    char    accessfile[];
  436. X    extern    char    historyfile[];
  437. X! Only in server: cscope.out
  438. X! diff -rcs server.old/fakesyslog.c server/fakesyslog.c
  439. X! *** server.old/fakesyslog.c    Mon May  4 07:03:55 1992
  440. X! --- server/fakesyslog.c    Sat Mar  7 11:46:00 1992
  441. X  ***************
  442. X  *** 138,144 ****
  443. X        (void) strcpy(buf, ctime(&clock)+4);
  444. X--- 182,190 ----
  445. X    extern    char    newsgroupsfile[];
  446. X    extern    char    accessfile[];
  447. X    extern    char    historyfile[];
  448. X! diff -rcs nntp/server/fakesyslog.c nntp-1.5.11/server/fakesyslog.c
  449. X! *** server/fakesyslog.c        Wed Sep 30 14:34:46 1992
  450. X! --- server/fakesyslog.c        Tue Sep 15 20:09:58 1992
  451. X  ***************
  452. X  *** 138,144 ****
  453. X        (void) strcpy(buf, ctime(&clock)+4);
  454. X***************
  455. X*** 192,200 ****
  456. X        bp += strlen(bp);
  457. X    
  458. X        if (opt&LOG_PID) {
  459. X! diff -rcs server.old/fakesyslog.h server/fakesyslog.h
  460. X! *** server.old/fakesyslog.h    Mon May  4 07:03:55 1992
  461. X! --- server/fakesyslog.h    Thu Feb 20 08:27:03 1992
  462. X  ***************
  463. X  *** 62,65 ****
  464. X    #define LOG_NDELAY    0
  465. X--- 203,211 ----
  466. X        bp += strlen(bp);
  467. X    
  468. X        if (opt&LOG_PID) {
  469. X! diff -rcs nntp/server/fakesyslog.h nntp-1.5.11/server/fakesyslog.h
  470. X! *** server/fakesyslog.h        Wed Sep 30 14:34:50 1992
  471. X! --- server/fakesyslog.h            Tue Sep 15 20:10:02 1992
  472. X  ***************
  473. X  *** 62,65 ****
  474. X    #define LOG_NDELAY    0
  475. X***************
  476. X*** 206,214 ****
  477. X    #define LOG_NOWAIT    0
  478. X    
  479. X  ! #endif /* FAKESYSLOG */
  480. X! diff -rcs server.old/globals.c server/globals.c
  481. X! *** server.old/globals.c    Mon May  4 07:03:56 1992
  482. X! --- server/globals.c    Sun Mar  8 11:25:47 1992
  483. X  ***************
  484. X  *** 16,21 ****
  485. X  --- 16,22 ----
  486. X--- 217,225 ----
  487. X    #define LOG_NOWAIT    0
  488. X    
  489. X  ! #endif /* FAKESYSLOG */
  490. X! diff -rcs nntp/server/globals.c nntp-1.5.11/server/globals.c
  491. X! *** server/globals.c        Wed Sep 30 14:34:46 1992
  492. X! --- server/globals.c        Tue Sep 15 20:09:58 1992
  493. X  ***************
  494. X  *** 16,21 ****
  495. X  --- 16,22 ----
  496. X***************
  497. X*** 236,244 ****
  498. X    
  499. X    #ifdef LOG
  500. X    int    arts_acsd;
  501. X! diff -rcs server.old/group.c server/group.c
  502. X! *** server.old/group.c    Mon May  4 07:03:56 1992
  503. X! --- server/group.c    Sat Mar  7 11:46:00 1992
  504. X  ***************
  505. X  *** 49,54 ****
  506. X  --- 49,55 ----
  507. X--- 247,255 ----
  508. X    
  509. X    #ifdef LOG
  510. X    int    arts_acsd;
  511. X! diff -rcs nntp/server/group.c nntp-1.5.11/server/group.c
  512. X! *** server/group.c    Wed Sep 30 14:34:46 1992
  513. X! --- server/group.c    Tue Sep 15 20:09:58 1992
  514. X  ***************
  515. X  *** 49,54 ****
  516. X  --- 49,55 ----
  517. X***************
  518. X*** 276,284 ****
  519. X    
  520. X        while ((cp = index(argv[1], '/')) != (char *) NULL)
  521. X            *cp = '.';
  522. X! diff -rcs server.old/help.c server/help.c
  523. X! *** server.old/help.c    Mon May  4 07:03:56 1992
  524. X! --- server/help.c    Tue Mar 10 08:55:29 1992
  525. X  ***************
  526. X  *** 21,28 ****
  527. X        printf("NEXT        POST         QUIT\r\n");
  528. X--- 287,295 ----
  529. X    
  530. X        while ((cp = index(argv[1], '/')) != (char *) NULL)
  531. X            *cp = '.';
  532. X! diff -rcs nntp/server/help.c nntp-1.5.11/server/help.c
  533. X! *** server/help.c    Wed Sep 30 14:34:46 1992
  534. X! --- server/help.c    Thu Nov  5 09:30:56 1992
  535. X  ***************
  536. X  *** 21,28 ****
  537. X        printf("NEXT        POST         QUIT\r\n");
  538. X***************
  539. X*** 289,316 ****
  540. X        printf("\r\n");
  541. X        printf("Bugs to Stan Barber (Internet: nntp@tmc.edu; UUCP: ...!bcm!nntp)\r\n");
  542. X        printf(".\r\n");
  543. X! --- 21,38 ----
  544. X        printf("NEXT        POST         QUIT\r\n");
  545. X        printf("STAT        NEWGROUPS    HELP\r\n");
  546. X        printf("IHAVE       NEWNEWS      SLAVE\r\n");
  547. X! ! #if defined(XHDR) || defined(XUSER) || defined(XINDEX)
  548. X  !     printf("\r\nAdditionally, the following extentions are supported:\r\n\r\n");
  549. X  ! #  ifdef XHDR
  550. X        printf("XHDR        Retrieve a single header line from a range of articles.\r\n");
  551. X  + #  endif
  552. X  + #  ifdef XUSER    
  553. X  +     printf("XUSER       Log a clients username to nntp logfile.\r\n");
  554. X  + #  endif    
  555. X- + #  ifdef XINDEX
  556. X- +     printf("XINDEX      Retrieve a tin group index file.\r\n");
  557. X- + #  endif    
  558. X  + #endif    
  559. X        printf("\r\n");
  560. X        printf("Bugs to Stan Barber (Internet: nntp@tmc.edu; UUCP: ...!bcm!nntp)\r\n");
  561. X        printf(".\r\n");
  562. X! diff -rcs server.old/ihave.c server/ihave.c
  563. X! *** server.old/ihave.c    Mon May  4 07:03:56 1992
  564. X! --- server/ihave.c    Sat Mar  7 11:46:00 1992
  565. X  ***************
  566. X  *** 8,14 ****
  567. X    int    ih_accepted;
  568. X--- 300,330 ----
  569. X        printf("\r\n");
  570. X        printf("Bugs to Stan Barber (Internet: nntp@tmc.edu; UUCP: ...!bcm!nntp)\r\n");
  571. X        printf(".\r\n");
  572. X! --- 21,41 ----
  573. X        printf("NEXT        POST         QUIT\r\n");
  574. X        printf("STAT        NEWGROUPS    HELP\r\n");
  575. X        printf("IHAVE       NEWNEWS      SLAVE\r\n");
  576. X! ! #if defined(XHDR) || defined(XINDEX) ||    defined(XMOTD) || defined(XUSER)
  577. X  !     printf("\r\nAdditionally, the following extentions are supported:\r\n\r\n");
  578. X  ! #  ifdef XHDR
  579. X        printf("XHDR        Retrieve a single header line from a range of articles.\r\n");
  580. X  + #  endif
  581. X+ + #  ifdef XINDEX
  582. X+ +     printf("XINDEX      Retrieve a tin or .overview index file.\r\n");
  583. X+ + #  endif    
  584. X+ + #  ifdef XMOTD    
  585. X+ +     printf("XMOTD       Display the news message of the day file.\r\n");
  586. X+ + #  endif    
  587. X  + #  ifdef XUSER    
  588. X  +     printf("XUSER       Log a clients username to nntp logfile.\r\n");
  589. X  + #  endif    
  590. X  + #endif    
  591. X        printf("\r\n");
  592. X        printf("Bugs to Stan Barber (Internet: nntp@tmc.edu; UUCP: ...!bcm!nntp)\r\n");
  593. X        printf(".\r\n");
  594. X! diff -rcs nntp/server/ihave.c nntp-1.5.11/server/ihave.c
  595. X! *** server/ihave.c    Wed Sep 30 14:34:46 1992
  596. X! --- server/ihave.c    Tue Sep 15 20:09:59 1992
  597. X  ***************
  598. X  *** 8,14 ****
  599. X    int    ih_accepted;
  600. X***************
  601. X*** 364,372 ****
  602. X  ! #endif /* LOG */
  603. X    
  604. X    }
  605. X! diff -rcs server.old/list.c server/list.c
  606. X! *** server.old/list.c    Mon May  4 07:03:56 1992
  607. X! --- server/list.c    Sun Mar  8 11:24:24 1992
  608. X  ***************
  609. X  *** 7,14 ****
  610. X    /*
  611. X--- 378,386 ----
  612. X  ! #endif /* LOG */
  613. X    
  614. X    }
  615. X! diff -rcs nntp/server/list.c nntp-1.5.11/server/list.c
  616. X! *** server/list.c    Wed Sep 30 14:34:46 1992
  617. X! --- server/list.c    Tue Sep 15 20:09:59 1992
  618. X  ***************
  619. X  *** 7,14 ****
  620. X    /*
  621. X***************
  622. X*** 412,421 ****
  623. X                ERR_CMDSYN);
  624. X            (void) fflush(stdout);
  625. X            return;
  626. X! Files server.old/main.c and server/main.c are identical
  627. X! diff -rcs server.old/misc.c server/misc.c
  628. X! *** server.old/misc.c    Mon May  4 07:03:56 1992
  629. X! --- server/misc.c    Sat Mar  7 11:46:00 1992
  630. X  ***************
  631. X  *** 90,98 ****
  632. X    # ifndef DBM
  633. X--- 426,434 ----
  634. X                ERR_CMDSYN);
  635. X            (void) fflush(stdout);
  636. X            return;
  637. X! diff -rcs nntp/server/misc.c nntp-1.5.11/server/misc.c
  638. X! *** server/misc.c    Wed Sep 30 14:34:43 1992
  639. X! --- server/misc.c    Tue Sep 15 20:09:56 1992
  640. X  ***************
  641. X  *** 90,98 ****
  642. X    # ifndef DBM
  643. X***************
  644. X*** 720,728 ****
  645. X    }
  646. X    #endif
  647. X  ! #endif /* LOAD */
  648. X! diff -rcs server.old/netaux.c server/netaux.c
  649. X! *** server.old/netaux.c    Mon May  4 07:03:56 1992
  650. X! --- server/netaux.c    Sat Mar  7 11:46:00 1992
  651. X  ***************
  652. X  *** 12,25 ****
  653. X    #include <netinet/in.h>
  654. X--- 733,741 ----
  655. X    }
  656. X    #endif
  657. X  ! #endif /* LOAD */
  658. X! diff -rcs nntp/server/netaux.c nntp-1.5.11/server/netaux.c
  659. X! *** server/netaux.c        Wed Sep 30 14:34:48 1992
  660. X! --- server/netaux.c        Tue Sep 15 20:09:59 1992
  661. X  ***************
  662. X  *** 12,25 ****
  663. X    #include <netinet/in.h>
  664. X***************
  665. X*** 771,780 ****
  666. X            exit(1);
  667. X        }
  668. X    #endif /* not USG */
  669. X! Files server.old/newgroups.c and server/newgroups.c are identical
  670. X! diff -rcs server.old/newnews.c server/newnews.c
  671. X! *** server.old/newnews.c    Mon May  4 07:03:57 1992
  672. X! --- server/newnews.c    Sat Mar  7 11:49:07 1992
  673. X  ***************
  674. X  *** 39,45 ****
  675. X        FILE        *tmplst;
  676. X--- 784,792 ----
  677. X            exit(1);
  678. X        }
  679. X    #endif /* not USG */
  680. X! diff -rcs nntp/server/newnews.c nntp-1.5.11/server/newnews.c
  681. X! *** server/newnews.c        Wed Sep 30 14:34:52 1992
  682. X! --- server/newnews.c        Tue Sep 15 20:10:02 1992
  683. X  ***************
  684. X  *** 39,45 ****
  685. X        FILE        *tmplst;
  686. X***************
  687. X*** 902,915 ****
  688. X    }
  689. X    
  690. X    
  691. X! Files server.old/nextlast.c and server/nextlast.c are identical
  692. X! Files server.old/ngmatch.c and server/ngmatch.c are identical
  693. X! Files server.old/parsit.c and server/parsit.c are identical
  694. X! Files server.old/post.c and server/post.c are identical
  695. X! Files server.old/profile.c and server/profile.c are identical
  696. X! diff -rcs server.old/scandir.c server/scandir.c
  697. X! *** server.old/scandir.c    Mon May  4 07:03:57 1992
  698. X! --- server/scandir.c    Sat Mar  7 11:46:00 1992
  699. X  ***************
  700. X  *** 4,9 ****
  701. X  --- 4,13 ----
  702. X--- 914,922 ----
  703. X    }
  704. X    
  705. X    
  706. X! diff -rcs nntp/server/scandir.c nntp-1.5.11/server/scandir.c
  707. X! *** server/scandir.c        Wed Sep 30 14:34:49 1992
  708. X! --- server/scandir.c        Tue Sep 15 20:10:01 1992
  709. X  ***************
  710. X  *** 4,9 ****
  711. X  --- 4,13 ----
  712. X***************
  713. X*** 996,1004 ****
  714. X    #else
  715. X            if (artnum != 0 && artnum >= low_msg && artnum <= high_msg)
  716. X                art_array[num_arts++] = artnum;
  717. X! diff -rcs server.old/serve.c server/serve.c
  718. X! *** server.old/serve.c    Mon May  4 07:03:57 1992
  719. X! --- server/serve.c    Tue Mar 10 09:32:32 1992
  720. X  ***************
  721. X  *** 17,23 ****
  722. X    #ifdef LOG
  723. X--- 1003,1011 ----
  724. X    #else
  725. X            if (artnum != 0 && artnum >= low_msg && artnum <= high_msg)
  726. X                art_array[num_arts++] = artnum;
  727. X! diff -rcs nntp/server/serve.c nntp-1.5.11/server/serve.c
  728. X! *** server/serve.c    Wed Sep 30 14:34:43 1992
  729. X! --- server/serve.c    Sun Sep 27 12:20:01 1992
  730. X  ***************
  731. X  *** 17,23 ****
  732. X    #ifdef LOG
  733. X***************
  734. X*** 1030,1045 ****
  735. X    
  736. X    static struct cmdent {
  737. X        char    *cmd_name;
  738. X! --- 27,44 ----
  739. X    extern    int    ahbs(), group(), help(), ihave();
  740. X    extern    int    list(), newgroups(), newnews(), nextlast(), post();
  741. X    extern    int    slave(), stat(), xhdr();
  742. X- + #ifdef XUSER
  743. X- + extern    int    xuser();
  744. X- + #endif
  745. X  + #ifdef XINDEX
  746. X  + extern    int    xindex();
  747. X  + #endif
  748. X    
  749. X    extern int errno;
  750. X    
  751. X--- 1037,1055 ----
  752. X    
  753. X    static struct cmdent {
  754. X        char    *cmd_name;
  755. X! --- 27,47 ----
  756. X    extern    int    ahbs(), group(), help(), ihave();
  757. X    extern    int    list(), newgroups(), newnews(), nextlast(), post();
  758. X    extern    int    slave(), stat(), xhdr();
  759. X  + #ifdef XINDEX
  760. X  + extern    int    xindex();
  761. X  + #endif
  762. X+ + #ifdef XMOTD
  763. X+ + extern    int    xmotd();
  764. X+ + #endif
  765. X+ + #ifdef XUSER
  766. X+ + extern    int    xuser();
  767. X+ + #endif
  768. X    
  769. X    extern int errno;
  770. X    
  771. X***************
  772. X*** 1058,1064 ****
  773. X        "article",    0,    ahbs,
  774. X        "body",        0,    ahbs,
  775. X        "group",    0,    group,
  776. X! --- 49,55 ----
  777. X        "authcap",    0,    doauth,
  778. X        "authinfo",    0,    doauth,
  779. X        "authsys",    0,    doauth,
  780. X--- 1068,1074 ----
  781. X        "article",    0,    ahbs,
  782. X        "body",        0,    ahbs,
  783. X        "group",    0,    group,
  784. X! --- 52,58 ----
  785. X        "authcap",    0,    doauth,
  786. X        "authinfo",    0,    doauth,
  787. X        "authsys",    0,    doauth,
  788. X***************
  789. X*** 1075,1091 ****
  790. X    };
  791. X    #define NUMCMDS (sizeof(cmdtbl) / sizeof(struct cmdent))
  792. X    
  793. X! --- 66,78 ----
  794. X        "stat",        0,    ahbs,
  795. X    #ifdef XHDR
  796. X        "xhdr",        0,    xhdr,
  797. X  ! #endif /* XHDR */
  798. X- ! #ifdef XUSER
  799. X- !     "xuser",    0,    xuser,
  800. X- ! #endif /* XUSER */
  801. X  ! #ifdef XINDEX
  802. X  !     "xindex",    0,    xindex,
  803. X  ! #endif /* XINDEX */
  804. X    };
  805. X    #define NUMCMDS (sizeof(cmdtbl) / sizeof(struct cmdent))
  806. X    
  807. X--- 1085,1104 ----
  808. X    };
  809. X    #define NUMCMDS (sizeof(cmdtbl) / sizeof(struct cmdent))
  810. X    
  811. X! --- 69,84 ----
  812. X        "stat",        0,    ahbs,
  813. X    #ifdef XHDR
  814. X        "xhdr",        0,    xhdr,
  815. X  ! #endif /* XHDR */
  816. X  ! #ifdef XINDEX
  817. X  !     "xindex",    0,    xindex,
  818. X  ! #endif /* XINDEX */
  819. X+ ! #ifdef XMOTD
  820. X+ !     "xmotd",    0,    xmotd,
  821. X+ ! #endif /* XMOTD */
  822. X+ ! #ifdef XUSER
  823. X+ !     "xuser",    0,    xuser,
  824. X+ ! #endif /* XUSER */
  825. X    };
  826. X    #define NUMCMDS (sizeof(cmdtbl) / sizeof(struct cmdent))
  827. X    
  828. X***************
  829. X*** 1098,1104 ****
  830. X    
  831. X    /*
  832. X     * serve -- given a connection on stdin/stdout, serve
  833. X! --- 110,116 ----
  834. X    #ifdef AUTH
  835. X    extern int    Needauth;
  836. X    extern char    User[];
  837. X--- 1111,1117 ----
  838. X    
  839. X    /*
  840. X     * serve -- given a connection on stdin/stdout, serve
  841. X! --- 116,122 ----
  842. X    #ifdef AUTH
  843. X    extern int    Needauth;
  844. X    extern char    User[];
  845. X***************
  846. X*** 1115,1121 ****
  847. X    #endif
  848. X    
  849. X        /* Ignore SIGPIPE, since we'll see closed connections with read */
  850. X! --- 164,170 ----
  851. X    #ifdef ALONE
  852. X    #ifndef USG
  853. X        (void) signal(SIGCHLD, SIG_IGN);
  854. X--- 1128,1134 ----
  855. X    #endif
  856. X    
  857. X        /* Ignore SIGPIPE, since we'll see closed connections with read */
  858. X! --- 170,176 ----
  859. X    #ifdef ALONE
  860. X    #ifndef USG
  861. X        (void) signal(SIGCHLD, SIG_IGN);
  862. X***************
  863. X*** 1132,1138 ****
  864. X        host_access(&canread, &canpost, &canxfer, gdbuf);
  865. X    
  866. X        if (gethostname(host, sizeof(host)) < 0)
  867. X! --- 175,181 ----
  868. X    #ifdef AUTH
  869. X        Needauth = 1;
  870. X        strcpy(User,"");
  871. X--- 1145,1151 ----
  872. X        host_access(&canread, &canpost, &canxfer, gdbuf);
  873. X    
  874. X        if (gethostname(host, sizeof(host)) < 0)
  875. X! --- 181,187 ----
  876. X    #ifdef AUTH
  877. X        Needauth = 1;
  878. X        strcpy(User,"");
  879. X***************
  880. X*** 1149,1155 ****
  881. X                (*cmdtbl[i].cmd_fctn)(argnum, argp);
  882. X            } else {
  883. X    #ifdef SYSLOG
  884. X! --- 314,320 ----
  885. X                    (void) fflush(stdout);
  886. X                    continue;
  887. X                    }
  888. X--- 1162,1168 ----
  889. X                (*cmdtbl[i].cmd_fctn)(argnum, argp);
  890. X            } else {
  891. X    #ifdef SYSLOG
  892. X! --- 320,326 ----
  893. X                    (void) fflush(stdout);
  894. X                    continue;
  895. X                    }
  896. X***************
  897. X*** 1163,1177 ****
  898. X        syslog(LOG_INFO, "%s times %s", hostname, buf);
  899. X    }
  900. X  ! #endif LOG
  901. X! --- 502,505 ----
  902. X            user, sys, Tfinish - Tstart);
  903. X        syslog(LOG_INFO, "%s times %s", hostname, buf);
  904. X    }
  905. X  ! #endif /* LOG */
  906. X! Files server.old/slave.c and server/slave.c are identical
  907. X! diff -rcs server.old/spawn.c server/spawn.c
  908. X! *** server.old/spawn.c    Mon May  4 07:03:58 1992
  909. X! --- server/spawn.c    Sat Mar  7 11:46:00 1992
  910. X  ***************
  911. X  *** 65,73 ****
  912. X    #endif
  913. X--- 1176,1189 ----
  914. X        syslog(LOG_INFO, "%s times %s", hostname, buf);
  915. X    }
  916. X  ! #endif LOG
  917. X! --- 508,511 ----
  918. X            user, sys, Tfinish - Tstart);
  919. X        syslog(LOG_INFO, "%s times %s", hostname, buf);
  920. X    }
  921. X  ! #endif /* LOG */
  922. X! diff -rcs nntp/server/spawn.c nntp-1.5.11/server/spawn.c
  923. X! *** server/spawn.c    Wed Sep 30 14:34:46 1992
  924. X! --- server/spawn.c    Tue Sep 15 20:09:59 1992
  925. X  ***************
  926. X  *** 65,73 ****
  927. X    #endif
  928. X***************
  929. X*** 1240,1301 ****
  930. X    
  931. X  ! #endif /* XFER_TIMEOUT */
  932. X    
  933. X! Files server.old/strcasecmp.c and server/strcasecmp.c are identical
  934. X! diff -rcs server.old/subnet.c server/subnet.c
  935. X! *** server.old/subnet.c    Mon May  4 07:03:58 1992
  936. X! --- server/subnet.c    Sat Mar  7 11:46:00 1992
  937. X! ***************
  938. X! *** 1,5 ****
  939. X!   #ifndef lint
  940. X! ! static    char    *sccsid = "@(#)$Header: subnet.c,v 1.8 90/12/12 02:21:38 sob Exp $";
  941. X!   #endif
  942. X!   
  943. X!   #include "../common/conf.h"
  944. X! --- 1,5 ----
  945. X!   #ifndef lint
  946. X! ! static    char    *sccsid = "@(#)$Header: subnet.c,v 1.9 91/03/19 03:02:30 sob Exp $";
  947. X!   #endif
  948. X!   
  949. X!   #include "../common/conf.h"
  950. X! ***************
  951. X! *** 7,19 ****
  952. X!   #ifdef SUBNET
  953. X!   
  954. X!   #include <sys/types.h>
  955. X!   #include <sys/socket.h>
  956. X!   #include <netinet/in.h>
  957. X!   #ifndef NETMASK
  958. X!   #include <net/if.h>
  959. X!   #endif
  960. X!   #include <sys/ioctl.h>
  961. X! ! 
  962. X!   /*
  963. X!    * The following routines provide a general interface for
  964. X!    * subnet support.  Like the library function "inet_netof",
  965. X! --- 7,26 ----
  966. X!   #ifdef SUBNET
  967. X!   
  968. X!   #include <sys/types.h>
  969. X! + #ifdef LAI_TCP
  970. X! + #include <sys/bsdtypes.h>
  971. X! + #include <sys/stream.h>
  972. X! + #endif
  973. X!   #include <sys/socket.h>
  974. X!   #include <netinet/in.h>
  975. X!   #ifndef NETMASK
  976. X!   #include <net/if.h>
  977. X!   #endif
  978. X! + #ifdef LAI_TCP
  979. X! + #include <sys/sioctl.h>
  980. X! + #else
  981. X!   #include <sys/ioctl.h>
  982. X! ! #endif
  983. X!   /*
  984. X!    * The following routines provide a general interface for
  985. X!    * subnet support.  Like the library function "inet_netof",
  986. X! diff -rcs server.old/time.c server/time.c
  987. X! *** server.old/time.c    Mon May  4 07:03:58 1992
  988. X! --- server/time.c    Sat Mar  7 11:46:00 1992
  989. X  ***************
  990. X  *** 10,18 ****
  991. X    #include "common.h"
  992. X--- 1252,1260 ----
  993. X    
  994. X  ! #endif /* XFER_TIMEOUT */
  995. X    
  996. X! diff -rcs nntp/server/time.c nntp-1.5.11/server/time.c
  997. X! *** server/time.c    Wed Sep 30 14:34:50 1992
  998. X! --- server/time.c    Tue Sep 15 20:10:01 1992
  999. X  ***************
  1000. X  *** 10,18 ****
  1001. X    #include "common.h"
  1002. X***************
  1003. X*** 1317,1337 ****
  1004. X    
  1005. X    /*
  1006. X     * dtol -- convert date to long integer.  This is not implicitly
  1007. X! Files server.old/time.h and server/time.h are identical
  1008. X! diff -rcs server.old/timer.c server/timer.c
  1009. X! *** server.old/timer.c    Mon May  4 07:03:58 1992
  1010. X! --- server/timer.c    Sat Mar  7 11:46:00 1992
  1011. X  ***************
  1012. X  *** 6,17 ****
  1013. X    #ifdef TIMERS
  1014. X    #ifndef lint
  1015. X    static char rcsid[] =
  1016. X! !     "@(#) $Header: timer.c,v 1.2 90/12/27 22:16:27 sob Exp $ (NNTP with TIMERS)";
  1017. X    #endif
  1018. X    #else
  1019. X    #ifndef lint
  1020. X    static char rcsid[] =
  1021. X! !     "@(#) $Header: timer.c,v 1.2 90/12/27 22:16:27 sob Exp $ (NNTP without TIMERS)";
  1022. X    #endif
  1023. X    #endif
  1024. X    
  1025. X--- 1276,1295 ----
  1026. X    
  1027. X    /*
  1028. X     * dtol -- convert date to long integer.  This is not implicitly
  1029. X! diff -rcs nntp/server/timer.c nntp-1.5.11/server/timer.c
  1030. X! *** server/timer.c    Wed Sep 30 14:34:49 1992
  1031. X! --- server/timer.c        Sat Oct 17 20:01:25 1992
  1032. X  ***************
  1033. X  *** 6,17 ****
  1034. X    #ifdef TIMERS
  1035. X    #ifndef lint
  1036. X    static char rcsid[] =
  1037. X! !     "@(#) $Header: timer.c,v 1.3 91/03/19 03:02:41 sob Exp $ (NNTP with TIMERS)";
  1038. X    #endif
  1039. X    #else
  1040. X    #ifndef lint
  1041. X    static char rcsid[] =
  1042. X! !     "@(#) $Header: timer.c,v 1.3 91/03/19 03:02:41 sob Exp $ (NNTP without TIMERS)";
  1043. X    #endif
  1044. X    #endif
  1045. X    
  1046. X***************
  1047. X*** 1339,1444 ****
  1048. X    #ifdef TIMERS
  1049. X    #ifndef lint
  1050. X    static char rcsid[] =
  1051. X! !     "@(#) $Header: timer.c,v 1.3 91/03/19 03:02:41 sob Exp $ (NNTP with TIMERS)";
  1052. X    #endif
  1053. X    #else
  1054. X    #ifndef lint
  1055. X    static char rcsid[] =
  1056. X! !     "@(#) $Header: timer.c,v 1.3 91/03/19 03:02:41 sob Exp $ (NNTP without TIMERS)";
  1057. X    #endif
  1058. X    #endif
  1059. X    
  1060. X  ***************
  1061. X! *** 18,24 ****
  1062. X    #ifdef TIMERS
  1063. X    #include <sys/time.h>
  1064. X    #include "timer.h"
  1065. X! ! #ifndef USG
  1066. X    #ifndef FD_SETSIZE
  1067. X    /* Forward compatability */
  1068. X    #define FD_SET(n, p)    ((p)->fds_bits[0] |= (1<<(n)))
  1069. X! --- 18,29 ----
  1070. X    #ifdef TIMERS
  1071. X    #include <sys/time.h>
  1072. X    #include "timer.h"
  1073. X! ! #ifdef USG
  1074. X! ! #ifdef LAI_TCP
  1075. X! ! #include <sys/bsdtypes.h>
  1076. X! ! #define BSDSELECT
  1077. X! ! #endif
  1078. X! ! #else
  1079. X    #ifndef FD_SETSIZE
  1080. X    /* Forward compatability */
  1081. X    #define FD_SET(n, p)    ((p)->fds_bits[0] |= (1<<(n)))
  1082. X  ***************
  1083. X! *** 25,30 ****
  1084. X! --- 30,36 ----
  1085. X    #define FD_CLR(n, p)    ((p)->fds_bits[0] &= ~(1<<(n)))
  1086. X    #define FD_ISSET(n, p)  ((p)->fds_bits[0] & (1<<(n)))
  1087. X    #define FD_ZERO(p)      ((p)->fds_bits[0] = 0)
  1088. X! + #define BSDSELECT
  1089. X    #endif
  1090. X    #endif
  1091. X    /* non-portable */
  1092. X  ***************
  1093. X! *** 69,75 ****
  1094. X        register int i, n;
  1095. X        register struct timer *tp;
  1096. X        register long secs;
  1097. X! ! #ifdef USG
  1098. X        long timeout;
  1099. X        long readfds;
  1100. X    #else
  1101. X! --- 75,81 ----
  1102. X        register int i, n;
  1103. X        register struct timer *tp;
  1104. X        register long secs;
  1105. X! ! #ifndef BSDSELECT
  1106. X        long timeout;
  1107. X        long readfds;
  1108. X    #else
  1109. X  ***************
  1110. X! *** 83,89 ****
  1111. X            return(1);
  1112. X    
  1113. X        /* Length of next timeout is minimum of all "timers" */
  1114. X! ! #ifdef USG
  1115. X        timeout = -1;
  1116. X        for (i = ntimer, tp = timers; i > 0; --i, ++tp)
  1117. X            if (tp->left >= 0 &&
  1118. X! --- 89,95 ----
  1119. X            return(1);
  1120. X    
  1121. X        /* Length of next timeout is minimum of all "timers" */
  1122. X! ! #ifndef BSDSELECT
  1123. X        timeout = -1;
  1124. X        for (i = ntimer, tp = timers; i > 0; --i, ++tp)
  1125. X            if (tp->left >= 0 &&
  1126. X  ***************
  1127. X! *** 114,122 ****
  1128. X        /* Do select */
  1129. X        FD_ZERO(&readfds);
  1130. X        FD_SET(fileno(stdin), &readfds);
  1131. X! ! #endif /* !USG */
  1132. X        errno = 0;
  1133. X! ! #ifdef EXCELAN
  1134. X        n = select(fileno(stdin) + 1, &readfds, (long*)0, timeout);
  1135. X    #else
  1136. X        n = select(fileno(stdin) + 1,
  1137. X! --- 120,128 ----
  1138. X        /* Do select */
  1139. X        FD_ZERO(&readfds);
  1140. X        FD_SET(fileno(stdin), &readfds);
  1141. X! ! #endif /* BSDSELECT */
  1142. X        errno = 0;
  1143. X! ! #if defined(EXCELAN) || defined(ULTRIX)
  1144. X        n = select(fileno(stdin) + 1, &readfds, (long*)0, timeout);
  1145. X    #else
  1146. X        n = select(fileno(stdin) + 1,
  1147. X! Files server.old/timer.h and server/timer.h are identical
  1148. X! diff -rcs server.old/xhdr.c server/xhdr.c
  1149. X! *** server.old/xhdr.c    Mon May  4 07:03:58 1992
  1150. X! --- server/xhdr.c    Sat Mar  7 11:46:00 1992
  1151. X  ***************
  1152. X  *** 158,164 ****
  1153. X        }
  1154. X--- 1297,1404 ----
  1155. X    #ifdef TIMERS
  1156. X    #ifndef lint
  1157. X    static char rcsid[] =
  1158. X! !     "@(#) $Header: timer.c,v 1.2 90/12/27 22:16:27 sob Exp $ (NNTP with TIMERS)";
  1159. X    #endif
  1160. X    #else
  1161. X    #ifndef lint
  1162. X    static char rcsid[] =
  1163. X! !     "@(#) $Header: timer.c,v 1.2 90/12/27 22:16:27 sob Exp $ (NNTP without TIMERS)";
  1164. X    #endif
  1165. X    #endif
  1166. X    
  1167. X  ***************
  1168. X! *** 18,29 ****
  1169. X    #ifdef TIMERS
  1170. X    #include <sys/time.h>
  1171. X    #include "timer.h"
  1172. X! ! #ifdef USG
  1173. X! ! #ifdef LAI_TCP
  1174. X!   #include <sys/bsdtypes.h>
  1175. X! - #define BSDSELECT
  1176. X!   #endif
  1177. X! ! #else
  1178. X    #ifndef FD_SETSIZE
  1179. X    /* Forward compatability */
  1180. X    #define FD_SET(n, p)    ((p)->fds_bits[0] |= (1<<(n)))
  1181. X! --- 18,27 ----
  1182. X    #ifdef TIMERS
  1183. X    #include <sys/time.h>
  1184. X    #include "timer.h"
  1185. X! ! #ifdef ISC
  1186. X!   #include <sys/bsdtypes.h>
  1187. X!   #endif
  1188. X! ! #ifndef USG
  1189. X    #ifndef FD_SETSIZE
  1190. X    /* Forward compatability */
  1191. X    #define FD_SET(n, p)    ((p)->fds_bits[0] |= (1<<(n)))
  1192. X  ***************
  1193. X! *** 30,36 ****
  1194. X    #define FD_CLR(n, p)    ((p)->fds_bits[0] &= ~(1<<(n)))
  1195. X    #define FD_ISSET(n, p)  ((p)->fds_bits[0] & (1<<(n)))
  1196. X    #define FD_ZERO(p)      ((p)->fds_bits[0] = 0)
  1197. X! - #define BSDSELECT
  1198. X    #endif
  1199. X    #endif
  1200. X    /* non-portable */
  1201. X+ --- 28,33 ----
  1202. X  ***************
  1203. X! *** 75,81 ****
  1204. X        register int i, n;
  1205. X        register struct timer *tp;
  1206. X        register long secs;
  1207. X! ! #ifndef BSDSELECT
  1208. X        long timeout;
  1209. X        long readfds;
  1210. X    #else
  1211. X! --- 72,78 ----
  1212. X        register int i, n;
  1213. X        register struct timer *tp;
  1214. X        register long secs;
  1215. X! ! #if defined(USG) && !defined(ISC)
  1216. X        long timeout;
  1217. X        long readfds;
  1218. X    #else
  1219. X  ***************
  1220. X! *** 89,95 ****
  1221. X            return(1);
  1222. X    
  1223. X        /* Length of next timeout is minimum of all "timers" */
  1224. X! ! #ifndef BSDSELECT
  1225. X        timeout = -1;
  1226. X        for (i = ntimer, tp = timers; i > 0; --i, ++tp)
  1227. X            if (tp->left >= 0 &&
  1228. X! --- 86,92 ----
  1229. X            return(1);
  1230. X    
  1231. X        /* Length of next timeout is minimum of all "timers" */
  1232. X! ! #if defined(USG) && !defined(ISC)
  1233. X        timeout = -1;
  1234. X        for (i = ntimer, tp = timers; i > 0; --i, ++tp)
  1235. X            if (tp->left >= 0 &&
  1236. X  ***************
  1237. X! *** 120,128 ****
  1238. X        /* Do select */
  1239. X        FD_ZERO(&readfds);
  1240. X        FD_SET(fileno(stdin), &readfds);
  1241. X! ! #endif /* BSDSELECT */
  1242. X        errno = 0;
  1243. X! ! #if defined(EXCELAN) || defined(ULTRIX)
  1244. X        n = select(fileno(stdin) + 1, &readfds, (long*)0, timeout);
  1245. X    #else
  1246. X        n = select(fileno(stdin) + 1,
  1247. X! --- 117,125 ----
  1248. X        /* Do select */
  1249. X        FD_ZERO(&readfds);
  1250. X        FD_SET(fileno(stdin), &readfds);
  1251. X! ! #endif /* !USG */
  1252. X        errno = 0;
  1253. X! ! #ifdef EXCELAN
  1254. X        n = select(fileno(stdin) + 1, &readfds, (long*)0, timeout);
  1255. X    #else
  1256. X        n = select(fileno(stdin) + 1,
  1257. X! diff -rcs nntp/server/xhdr.c nntp-1.5.11/server/xhdr.c
  1258. X! *** server/xhdr.c    Wed Sep 30 14:34:50 1992
  1259. X! --- server/xhdr.c    Tue Sep 15 20:10:02 1992
  1260. X  ***************
  1261. X  *** 158,164 ****
  1262. X        }
  1263. X***************
  1264. X*** 1467,1471 ****
  1265. X    }
  1266. X    
  1267. X  ! #endif /* not XHDR */
  1268. X- Only in server: xindex.c
  1269. X- Only in server: xuser.c
  1270. X--- 1427,1429 ----
  1271. XOnly in .: sigfile.c
  1272. Xdiff -rcs ../1.16/signal.c ./signal.c
  1273. X*** ../1.16/signal.c    Sun Nov 15 18:42:08 1992
  1274. X--- ./signal.c    Sun Nov 15 16:02:48 1992
  1275. X***************
  1276. X*** 3,9 ****
  1277. X   *  Module    : signal.c
  1278. X   *  Author    : I.Lea
  1279. X   *  Created   : 01-04-91
  1280. X!  *  Updated   : 17-08-92
  1281. X   *  Notes     : signal handlers for different modes and window resizing
  1282. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  1283. X   *              You may  freely  copy or  redistribute  this software,
  1284. X--- 3,9 ----
  1285. X   *  Module    : signal.c
  1286. X   *  Author    : I.Lea
  1287. X   *  Created   : 01-04-91
  1288. X!  *  Updated   : 15-11-92
  1289. X   *  Notes     : signal handlers for different modes and window resizing
  1290. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  1291. X   *              You may  freely  copy or  redistribute  this software,
  1292. X***************
  1293. X*** 27,36 ****
  1294. X  #endif
  1295. X  
  1296. X  
  1297. X! #ifdef POSIX_JOB_CONTROL
  1298. X  
  1299. X  /*
  1300. X!  * for POSIX systems we know SIGTYPE  is void 
  1301. X   */
  1302. X   
  1303. X  void (*sigdisp(sig, func))()
  1304. X--- 27,36 ----
  1305. X  #endif
  1306. X  
  1307. X  
  1308. X! #ifdef HAVE_POSIX_JC
  1309. X  
  1310. X  /*
  1311. X!  * for POSIX systems we know SIGTYPE is void 
  1312. X   */
  1313. X   
  1314. X  void (*sigdisp(sig, func))()
  1315. X***************
  1316. X*** 46,52 ****
  1317. X      sa.sa_flags |= SA_RESTART;
  1318. X  #endif
  1319. X      if (sigaction (sig, &sa, &osa) < 0) {
  1320. X!         return ((void (*)(int))(-1));
  1321. X      }
  1322. X      return (osa.sa_handler);
  1323. X  }
  1324. X--- 46,56 ----
  1325. X      sa.sa_flags |= SA_RESTART;
  1326. X  #endif
  1327. X      if (sigaction (sig, &sa, &osa) < 0) {
  1328. X! #ifdef DONT_PROTOTYPE_PTR_TO_FUNC
  1329. X!         return ((void (*) ()) (-1));
  1330. X! #else
  1331. X!         return ((void (*) (int)) (-1));
  1332. X! #endif        
  1333. X      }
  1334. X      return (osa.sa_handler);
  1335. X  }
  1336. X***************
  1337. X*** 119,125 ****
  1338. X  
  1339. X  void set_alarm_signal ()
  1340. X  {
  1341. X! #ifndef NO_REREAD_ACTIVE_FILE
  1342. X      /*
  1343. X       * Only reread active file if news is not static (ie. CD-ROM)
  1344. X       */
  1345. X--- 123,129 ----
  1346. X  
  1347. X  void set_alarm_signal ()
  1348. X  {
  1349. X! #ifndef DONT_REREAD_ACTIVE_FILE
  1350. X      /*
  1351. X       * Only reread active file if news is not static (ie. CD-ROM)
  1352. X       */
  1353. X***************
  1354. X*** 135,141 ****
  1355. X  
  1356. X  void set_alarm_clock_on ()
  1357. X  {
  1358. X! #ifndef NO_REREAD_ACTIVE_FILE
  1359. X      alarm (time_remaining);
  1360. X  #endif
  1361. X  }
  1362. X--- 139,145 ----
  1363. X  
  1364. X  void set_alarm_clock_on ()
  1365. X  {
  1366. X! #ifndef DONT_REREAD_ACTIVE_FILE
  1367. X      alarm (time_remaining);
  1368. X  #endif
  1369. X  }
  1370. X***************
  1371. X*** 143,149 ****
  1372. X  
  1373. X  void set_alarm_clock_off ()
  1374. X  {
  1375. X! #ifndef NO_REREAD_ACTIVE_FILE
  1376. X      time_remaining = alarm (0);
  1377. X  #endif
  1378. X  }
  1379. X--- 147,153 ----
  1380. X  
  1381. X  void set_alarm_clock_off ()
  1382. X  {
  1383. X! #ifndef DONT_REREAD_ACTIVE_FILE
  1384. X      time_remaining = alarm (0);
  1385. X  #endif
  1386. X  }
  1387. X***************
  1388. X*** 201,207 ****
  1389. X              sigtext = "SIGSEGV ";
  1390. X              break;
  1391. X  #endif
  1392. X! #if defined(SIGALRM) && !defined(NO_REREAD_ACTIVE_FILE)
  1393. X          case SIGALRM:
  1394. X              set_alarm_signal ();
  1395. X              reread_active_file = TRUE;
  1396. X--- 205,211 ----
  1397. X              sigtext = "SIGSEGV ";
  1398. X              break;
  1399. X  #endif
  1400. X! #if defined(SIGALRM) && !defined(DONT_REREAD_ACTIVE_FILE)
  1401. X          case SIGALRM:
  1402. X              set_alarm_signal ();
  1403. X              reread_active_file = TRUE;
  1404. X***************
  1405. X*** 671,677 ****
  1406. X  #endif
  1407. X      mail_setup ();
  1408. X      if (resized || sig == 0) {
  1409. X!         show_group_page (glob_group);
  1410. X      }    
  1411. X  }
  1412. X  
  1413. X--- 675,681 ----
  1414. X  #endif
  1415. X      mail_setup ();
  1416. X      if (resized || sig == 0) {
  1417. X!         show_group_page ();
  1418. X      }    
  1419. X  }
  1420. X  
  1421. Xdiff -rcs ../1.16/spooldir.c ./spooldir.c
  1422. X*** ../1.16/spooldir.c    Sun Nov 15 18:42:08 1992
  1423. X--- ./spooldir.c    Sun Nov 15 16:02:48 1992
  1424. X***************
  1425. X*** 3,9 ****
  1426. X   *  Module    : spooldir.c
  1427. X   *  Author    : I.Lea & Tom Theel
  1428. X   *  Created   : 08-05-92
  1429. X!  *  Updated   : 11-09-92
  1430. X   *  Notes     : Changes spooldir to read news from (ie. news, nntp, cdrom)
  1431. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Tom Theel
  1432. X   *              You may  freely  copy or  redistribute  this software,
  1433. X--- 3,9 ----
  1434. X   *  Module    : spooldir.c
  1435. X   *  Author    : I.Lea & Tom Theel
  1436. X   *  Created   : 08-05-92
  1437. X!  *  Updated   : 08-11-92
  1438. X   *  Notes     : Changes spooldir to read news from (ie. news, nntp, cdrom)
  1439. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Tom Theel
  1440. X   *              You may  freely  copy or  redistribute  this software,
  1441. X***************
  1442. X*** 108,114 ****
  1443. X                          cur_spoolnum = spool_top - 1;
  1444. X                          show_spooldir_page ();
  1445. X                      } else {
  1446. X!                         erase_group_arrow ();
  1447. X                          cur_spoolnum = spool_top - 1;
  1448. X                          draw_spooldir_arrow ();
  1449. X                      }
  1450. X--- 108,114 ----
  1451. X                          cur_spoolnum = spool_top - 1;
  1452. X                          show_spooldir_page ();
  1453. X                      } else {
  1454. X!                         erase_spooldir_arrow ();
  1455. X                          cur_spoolnum = spool_top - 1;
  1456. X                          draw_spooldir_arrow ();
  1457. X                      }
  1458. X***************
  1459. X*** 118,132 ****
  1460. X              case '\r':    /* select spooldir */
  1461. X              case '\n':
  1462. X                  if (set_spooldir (spooldirs[cur_spoolnum].name)) {
  1463. X!                     wait_message (txt_reading_active_file);
  1464. X                      free_active_arrays ();
  1465. X                      max_active = DEFAULT_ACTIVE_NUM;
  1466. X                      expand_active ();
  1467. X!                     read_active_file ();
  1468. X                      read_attributes_file ();
  1469. X                      read_newsgroups_file ();
  1470. X!                     read_newsrc (TRUE);
  1471. X!                     toggle_my_groups (show_only_unread_groups, "");
  1472. X                      set_groupname_len (FALSE);
  1473. X                      return TRUE;
  1474. X                  }    
  1475. X--- 118,135 ----
  1476. X              case '\r':    /* select spooldir */
  1477. X              case '\n':
  1478. X                  if (set_spooldir (spooldirs[cur_spoolnum].name)) {
  1479. X!                     wait_message (txt_reading_news_active_file);
  1480. X                      free_active_arrays ();
  1481. X                      max_active = DEFAULT_ACTIVE_NUM;
  1482. X                      expand_active ();
  1483. X!                     read_mail_active_file ();
  1484. X!                     read_news_active_file ();
  1485. X                      read_attributes_file ();
  1486. X                      read_newsgroups_file ();
  1487. X!                     if (! read_cmd_line_groups ()) {
  1488. X!                         read_newsrc (TRUE);
  1489. X!                         toggle_my_groups (show_only_unread_groups, "");
  1490. X!                     }
  1491. X                      set_groupname_len (FALSE);
  1492. X                      return TRUE;
  1493. X                  }    
  1494. X***************
  1495. X*** 137,145 ****
  1496. X              case ctrl('F'):        /* vi style */
  1497. X  spooldir_page_down:
  1498. X                  if (cur_spoolnum == spool_top - 1) {
  1499. X- #ifdef NO_LOOP_AROUND
  1500. X-                     break;
  1501. X- #else
  1502. X                      if (0 < first_spooldir_on_screen) {
  1503. X  #    ifndef USE_CLEARSCREEN
  1504. X                          erase_spooldir_arrow ();
  1505. X--- 140,145 ----
  1506. X***************
  1507. X*** 152,158 ****
  1508. X                          draw_spooldir_arrow ();
  1509. X                      }
  1510. X                      break;
  1511. X- #endif                    
  1512. X                  }
  1513. X                  erase_spooldir_arrow ();
  1514. X                  scroll_lines = (full_page_scroll ? NOTESLINES : NOTESLINES / 2);
  1515. X--- 152,157 ----
  1516. X***************
  1517. X*** 182,190 ****
  1518. X              case 'j':
  1519. X  spooldir_down:
  1520. X                  if (cur_spoolnum + 1 >= spool_top) {
  1521. X- #ifdef NO_LOOP_AROUND
  1522. X-                     break;
  1523. X- #else
  1524. X                      if (0 < first_spooldir_on_screen) {
  1525. X  #    ifndef USE_CLEARSCREEN
  1526. X                          erase_spooldir_arrow ();
  1527. X--- 181,186 ----
  1528. X***************
  1529. X*** 197,203 ****
  1530. X                          draw_spooldir_arrow ();
  1531. X                      }
  1532. X                      break;
  1533. X- #endif                    
  1534. X                  }
  1535. X                  if (cur_spoolnum + 1 >= last_spooldir_on_screen) {
  1536. X  #ifndef USE_CLEARSCREEN
  1537. X--- 193,198 ----
  1538. X***************
  1539. X*** 216,224 ****
  1540. X              case 'k':
  1541. X  spooldir_up:
  1542. X                  if (cur_spoolnum == 0) {
  1543. X! #ifdef NO_LOOP_AROUND
  1544. X!                     break;
  1545. X! #else
  1546. X                      if (spool_top > last_spooldir_on_screen) {
  1547. X                          cur_spoolnum = spool_top - 1;
  1548. X                          show_spooldir_page ();
  1549. X--- 211,219 ----
  1550. X              case 'k':
  1551. X  spooldir_up:
  1552. X                  if (cur_spoolnum == 0) {
  1553. X!                     if (_hp_glitch) {
  1554. X!                         erase_spooldir_arrow ();
  1555. X!                     }
  1556. X                      if (spool_top > last_spooldir_on_screen) {
  1557. X                          cur_spoolnum = spool_top - 1;
  1558. X                          show_spooldir_page ();
  1559. X***************
  1560. X*** 228,234 ****
  1561. X                          draw_spooldir_arrow ();
  1562. X                      }
  1563. X                      break;
  1564. X! #endif                    
  1565. X                  }
  1566. X                  if (cur_spoolnum <= first_spooldir_on_screen) {
  1567. X                      cur_spoolnum--;
  1568. X--- 223,231 ----
  1569. X                          draw_spooldir_arrow ();
  1570. X                      }
  1571. X                      break;
  1572. X!                 }
  1573. X!                 if (_hp_glitch) {
  1574. X!                     erase_spooldir_arrow ();
  1575. X                  }
  1576. X                  if (cur_spoolnum <= first_spooldir_on_screen) {
  1577. X                      cur_spoolnum--;
  1578. X***************
  1579. X*** 245,253 ****
  1580. X              case ctrl('B'):        /* vi style */
  1581. X  spooldir_page_up:
  1582. X                  if (cur_spoolnum == 0) {
  1583. X! #ifdef NO_LOOP_AROUND
  1584. X!                     break;
  1585. X! #else
  1586. X                      if (spool_top > last_spooldir_on_screen) {
  1587. X                          cur_spoolnum = spool_top - 1;
  1588. X                          show_spooldir_page ();
  1589. X--- 242,250 ----
  1590. X              case ctrl('B'):        /* vi style */
  1591. X  spooldir_page_up:
  1592. X                  if (cur_spoolnum == 0) {
  1593. X!                     if (_hp_glitch) {
  1594. X!                         erase_spooldir_arrow ();
  1595. X!                     }
  1596. X                      if (spool_top > last_spooldir_on_screen) {
  1597. X                          cur_spoolnum = spool_top - 1;
  1598. X                          show_spooldir_page ();
  1599. X***************
  1600. X*** 257,263 ****
  1601. X                          draw_spooldir_arrow ();
  1602. X                      }
  1603. X                      break;
  1604. X- #endif                    
  1605. X                  }
  1606. X                  erase_spooldir_arrow ();
  1607. X                  scroll_lines = (full_page_scroll ? NOTESLINES : NOTESLINES / 2);
  1608. X--- 254,259 ----
  1609. X***************
  1610. X*** 386,391 ****
  1611. X--- 382,391 ----
  1612. X          sprintf (buf, "%-16.16s  %s", spooldirs[i].name, spooldirs[i].comment);
  1613. X          sprintf (screen[j].col, "   %4.d  %-*.*s\r\n",
  1614. X              i+1, spoolname_len, spoolname_len, buf);
  1615. X+         if (slow_speed_terminal) {
  1616. X+             strip_line (screen[j].col, strlen (screen[j].col));
  1617. X+             strcat (screen[j].col, "\r\n");
  1618. X+         }
  1619. X          fputs (screen[j].col, stdout);
  1620. X      }
  1621. X  #ifndef USE_CLEARSCREEN
  1622. XOnly in .: strftime.3
  1623. XOnly in .: strftime.c
  1624. Xdiff -rcs ../1.16/thread.c ./thread.c
  1625. X*** ../1.16/thread.c    Sun Nov 15 18:42:10 1992
  1626. X--- ./thread.c    Sun Nov 15 16:02:48 1992
  1627. X***************
  1628. X*** 3,9 ****
  1629. X   *  Module    : thread.c
  1630. X   *  Author    : I.Lea
  1631. X   *  Created   : 01-04-91
  1632. X!  *  Updated   : 23-08-92
  1633. X   *  Notes     :
  1634. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  1635. X   *              You may  freely  copy or  redistribute  this software,
  1636. X--- 3,9 ----
  1637. X   *  Module    : thread.c
  1638. X   *  Author    : I.Lea
  1639. X   *  Created   : 01-04-91
  1640. X!  *  Updated   : 11-10-92
  1641. X   *  Notes     :
  1642. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  1643. X   *              You may  freely  copy or  redistribute  this software,
  1644. X***************
  1645. X*** 106,114 ****
  1646. X      j = INDEX2TNUM(i);
  1647. X  
  1648. X      if (full) {
  1649. X-         tlen = strlen(screen[j].col);
  1650. X          s = screen[j].col;
  1651. X          x = 0;
  1652. X      } else {
  1653. X          tlen  = 3;
  1654. X          s = &screen[j].col[6];
  1655. X--- 106,118 ----
  1656. X      j = INDEX2TNUM(i);
  1657. X  
  1658. X      if (full) {
  1659. X          s = screen[j].col;
  1660. X+         tlen = strlen (s);
  1661. X          x = 0;
  1662. X+         if (slow_speed_terminal) {        
  1663. X+             strip_line (s, tlen);
  1664. X+             CleartoEOLN ();
  1665. X+         }
  1666. X      } else {
  1667. X          tlen  = 3;
  1668. X          s = &screen[j].col[6];
  1669. X***************
  1670. X*** 170,179 ****
  1671. X      if (space_mode) {
  1672. X          i = new_responses (thread_basenote);
  1673. X          if (i) {
  1674. X!             for (n=0, i = base[thread_basenote]; i >= 0 ;
  1675. X!                  i = arts[i].thread, n++) {
  1676. X                  if (arts[i].unread == ART_UNREAD) {
  1677. X!                     thread_index_point = n;
  1678. X                      break;
  1679. X                  }
  1680. X              }
  1681. X--- 174,186 ----
  1682. X      if (space_mode) {
  1683. X          i = new_responses (thread_basenote);
  1684. X          if (i) {
  1685. X!             for (n=0, i = base[thread_basenote]; i >= 0 ; i = arts[i].thread, n++) {
  1686. X                  if (arts[i].unread == ART_UNREAD) {
  1687. X!                     if (arts[i].thread == ART_EXPIRED) {
  1688. X!                         arts[i].unread == ART_READ;
  1689. X!                     } else {
  1690. X!                         thread_index_point = n;
  1691. X!                     }
  1692. X                      break;
  1693. X                  }
  1694. X              }
  1695. X***************
  1696. X*** 190,196 ****
  1697. X          ch = ReadCh ();
  1698. X  
  1699. X          if (ch >= '0' && ch <= '9') {    /* 0 goes to basenote */
  1700. X!             prompt_thread_num (ch);
  1701. X              continue;
  1702. X          }
  1703. X          switch (ch) {
  1704. X--- 197,207 ----
  1705. X          ch = ReadCh ();
  1706. X  
  1707. X          if (ch >= '0' && ch <= '9') {    /* 0 goes to basenote */
  1708. X!             if (top_thread == 1) {
  1709. X!                 info_message (txt_no_responses);
  1710. X!             } else {
  1711. X!                 prompt_thread_num (ch);
  1712. X!             }
  1713. X              continue;
  1714. X          }
  1715. X          switch (ch) {
  1716. X***************
  1717. X*** 253,274 ****
  1718. X              case '\n':    /* read current article within thread */
  1719. X                  n = choose_response (thread_basenote, thread_index_point);
  1720. X                  n = show_page (n, &thread_index_point, group, group_path);
  1721. X!                 if (n == thread_basenote) {
  1722. X!                     show_thread_page ();
  1723. X!                 } else {
  1724. X!                     index_point = n;    
  1725. X! /*
  1726. X!                     if (n >= 0) {
  1727. X!                         index_point = n;    
  1728. X                      } else {
  1729. X!                         n = 0;
  1730. X                      }
  1731. X- */
  1732. X-                     goto thread_done;
  1733. X                  }
  1734. X                  break;
  1735. X  
  1736. X              case '\t':
  1737. X                   space_mode = TRUE;
  1738. X                  if (thread_index_point == 0) {
  1739. X                      n = thread_respnum;
  1740. X--- 264,281 ----
  1741. X              case '\n':    /* read current article within thread */
  1742. X                  n = choose_response (thread_basenote, thread_index_point);
  1743. X                  n = show_page (n, &thread_index_point, group, group_path);
  1744. X!                 if (n != -5) {
  1745. X!                     if (n == thread_basenote) {
  1746. X!                         show_thread_page ();
  1747. X                      } else {
  1748. X!                         index_point = n;    
  1749. X!                         goto thread_done;
  1750. X                      }
  1751. X                  }
  1752. X                  break;
  1753. X  
  1754. X              case '\t':
  1755. X+ thread_tab_pressed:
  1756. X                   space_mode = TRUE;
  1757. X                  if (thread_index_point == 0) {
  1758. X                      n = thread_respnum;
  1759. X***************
  1760. X*** 283,293 ****
  1761. X                      }
  1762. X                      index++;
  1763. X                  }
  1764. X!                 if (n == thread_basenote) {
  1765. X!                     show_thread_page ();
  1766. X                  } else {
  1767. X!                     index_point = n;    
  1768. X!                     goto thread_done;
  1769. X                  }
  1770. X                  break;
  1771. X      
  1772. X--- 290,304 ----
  1773. X                      }
  1774. X                      index++;
  1775. X                  }
  1776. X!                 if (n == -5) {
  1777. X!                     goto thread_tab_pressed;
  1778. X                  } else {
  1779. X!                     if (n == thread_basenote) {
  1780. X!                         show_thread_page ();
  1781. X!                     } else {
  1782. X!                         index_point = n;    
  1783. X!                         goto thread_done;
  1784. X!                     }
  1785. X                  }
  1786. X                  break;
  1787. X      
  1788. X***************
  1789. X*** 296,304 ****
  1790. X              case ctrl('F'):        /* vi style */
  1791. X  thread_page_down:
  1792. X                  if (thread_index_point + 1 == top_thread) {
  1793. X- #ifdef NO_LOOP_AROUND
  1794. X-                     break;
  1795. X- #else
  1796. X                      if (0 < first_thread_on_screen) {
  1797. X  #    ifndef USE_CLEARSCREEN
  1798. X                          erase_thread_arrow ();
  1799. X--- 307,312 ----
  1800. X***************
  1801. X*** 311,317 ****
  1802. X                          draw_thread_arrow ();
  1803. X                      }
  1804. X                      break;
  1805. X- #endif                    
  1806. X                  }
  1807. X                  erase_thread_arrow ();
  1808. X                  scroll_lines = (full_page_scroll ? NOTESLINES : NOTESLINES / 2);
  1809. X--- 319,324 ----
  1810. X***************
  1811. X*** 344,352 ****
  1812. X              case 'j':        /* line down */
  1813. X  thread_down:
  1814. X                  if (thread_index_point + 1 >= top_thread) {
  1815. X! #ifdef NO_LOOP_AROUND
  1816. X!                     break;
  1817. X! #else
  1818. X                      if (0 < first_thread_on_screen) {
  1819. X                          thread_index_point = 0;
  1820. X                          show_thread_page ();
  1821. X--- 351,359 ----
  1822. X              case 'j':        /* line down */
  1823. X  thread_down:
  1824. X                  if (thread_index_point + 1 >= top_thread) {
  1825. X!                     if (_hp_glitch) {
  1826. X!                         erase_thread_arrow ();
  1827. X!                     }
  1828. X                      if (0 < first_thread_on_screen) {
  1829. X                          thread_index_point = 0;
  1830. X                          show_thread_page ();
  1831. X***************
  1832. X*** 356,362 ****
  1833. X                          draw_thread_arrow ();
  1834. X                      }
  1835. X                      break;
  1836. X- #endif                    
  1837. X                  }
  1838. X                  if (thread_index_point + 1 >= last_thread_on_screen) {
  1839. X  #ifndef USE_CLEARSCREEN
  1840. X--- 363,368 ----
  1841. X***************
  1842. X*** 375,383 ****
  1843. X              case 'k':        /* line up */
  1844. X  thread_up:
  1845. X                  if (thread_index_point == 0) {
  1846. X! #ifdef NO_LOOP_AROUND
  1847. X!                     break;
  1848. X! #else
  1849. X                      if (top_thread > last_thread_on_screen) {
  1850. X                          thread_index_point = top_thread - 1;
  1851. X                          show_thread_page ();
  1852. X--- 381,389 ----
  1853. X              case 'k':        /* line up */
  1854. X  thread_up:
  1855. X                  if (thread_index_point == 0) {
  1856. X!                     if (_hp_glitch) {
  1857. X!                         erase_thread_arrow ();
  1858. X!                     }
  1859. X                      if (top_thread > last_thread_on_screen) {
  1860. X                          thread_index_point = top_thread - 1;
  1861. X                          show_thread_page ();
  1862. X***************
  1863. X*** 387,394 ****
  1864. X                          draw_thread_arrow ();
  1865. X                      }
  1866. X                      break;
  1867. X- #endif
  1868. X                  }
  1869. X                  if (thread_index_point <= first_thread_on_screen) {
  1870. X                      thread_index_point--;
  1871. X                      show_thread_page ();
  1872. X--- 393,402 ----
  1873. X                          draw_thread_arrow ();
  1874. X                      }
  1875. X                      break;
  1876. X                  }
  1877. X+                 if (_hp_glitch) {
  1878. X+                     erase_thread_arrow ();
  1879. X+                 }
  1880. X                  if (thread_index_point <= first_thread_on_screen) {
  1881. X                      thread_index_point--;
  1882. X                      show_thread_page ();
  1883. X***************
  1884. X*** 404,412 ****
  1885. X              case ctrl('B'):        /* vi style */
  1886. X  thread_page_up:
  1887. X                  if (thread_index_point == 0) {
  1888. X! #ifdef NO_LOOP_AROUND
  1889. X!                     break;
  1890. X! #else
  1891. X                      if (top_thread > last_thread_on_screen) {
  1892. X                          thread_index_point = top_thread - 1;
  1893. X                          show_thread_page ();
  1894. X--- 412,420 ----
  1895. X              case ctrl('B'):        /* vi style */
  1896. X  thread_page_up:
  1897. X                  if (thread_index_point == 0) {
  1898. X!                     if (_hp_glitch) {
  1899. X!                         erase_thread_arrow ();
  1900. X!                     }
  1901. X                      if (top_thread > last_thread_on_screen) {
  1902. X                          thread_index_point = top_thread - 1;
  1903. X                          show_thread_page ();
  1904. X***************
  1905. X*** 416,422 ****
  1906. X                          draw_thread_arrow ();
  1907. X                      }
  1908. X                      break;
  1909. X- #endif                    
  1910. X                  }
  1911. X  #ifndef USE_CLEARSCREEN
  1912. X                  clear_message ();
  1913. X--- 424,429 ----
  1914. X***************
  1915. X*** 709,714 ****
  1916. X--- 716,724 ----
  1917. X      if (draw_arrow_mark) {
  1918. X          fputs ("  ", stdout);
  1919. X      } else {
  1920. X+         if (_hp_glitch) {
  1921. X+             EndInverse ();
  1922. X+         }
  1923. X          draw_tline (thread_index_point, TRUE);
  1924. X      }
  1925. X      fflush (stdout);
  1926. X***************
  1927. X*** 716,722 ****
  1928. X  
  1929. X  
  1930. X  int prompt_thread_num (ch)
  1931. X!     char ch;
  1932. X  {
  1933. X      int num;
  1934. X  
  1935. X--- 726,732 ----
  1936. X  
  1937. X  
  1938. X  int prompt_thread_num (ch)
  1939. X!     int ch;
  1940. X  {
  1941. X      int num;
  1942. X  
  1943. X***************
  1944. X*** 988,994 ****
  1945. X      int cur_base_art = n;
  1946. X      
  1947. X      while (n >= 0) {
  1948. X!         if (arts[n].unread == ART_UNREAD) {
  1949. X              return n;
  1950. X          }
  1951. X          n = next_response (n);
  1952. X--- 998,1004 ----
  1953. X      int cur_base_art = n;
  1954. X      
  1955. X      while (n >= 0) {
  1956. X!         if (arts[n].unread == ART_UNREAD && arts[n].thread != ART_EXPIRED) {
  1957. X              return n;
  1958. X          }
  1959. X          n = next_response (n);
  1960. X***************
  1961. X*** 996,1002 ****
  1962. X  
  1963. X      n = base[0];
  1964. X      while (n != cur_base_art) {
  1965. X!         if (arts[n].unread == ART_UNREAD) {
  1966. X              return n;
  1967. X          }
  1968. X          n = next_response (n);
  1969. X--- 1006,1012 ----
  1970. X  
  1971. X      n = base[0];
  1972. X      while (n != cur_base_art) {
  1973. X!         if (arts[n].unread == ART_UNREAD && arts[n].thread != ART_EXPIRED) {
  1974. X              return n;
  1975. X          }
  1976. X          n = next_response (n);
  1977. X***************
  1978. X*** 1013,1019 ****
  1979. X      int n;
  1980. X  {
  1981. X      while (n >= 0) {
  1982. X!         if (arts[n].unread == ART_UNREAD) {
  1983. X              return n;
  1984. X          }
  1985. X          n = prev_response (n);
  1986. X--- 1023,1029 ----
  1987. X      int n;
  1988. X  {
  1989. X      while (n >= 0) {
  1990. X!         if (arts[n].unread == ART_UNREAD && arts[n].thread != ART_EXPIRED) {
  1991. X              return n;
  1992. X          }
  1993. X          n = prev_response (n);
  1994. XOnly in .: tin-1.17.diff
  1995. Xdiff -rcs ../1.16/tin.1 ./tin.1
  1996. X*** ../1.16/tin.1    Sun Nov 15 18:41:32 1992
  1997. X--- ./tin.1    Sun Nov  8 15:34:27 1992
  1998. X***************
  1999. X*** 17,23 ****
  2000. X  .if \n(mo=10 .ds mo October
  2001. X  .if \n(mo=11 .ds mo November
  2002. X  .if \n(mo=12 .ds mo December
  2003. X! .TH TIN 1 "Version 1.1 PL6" "" "LOCAL"
  2004. X  .ds ]W \*(mo \n(dy, 19\n(yr
  2005. X  .nh
  2006. X  .SH NAME
  2007. X--- 17,23 ----
  2008. X  .if \n(mo=10 .ds mo October
  2009. X  .if \n(mo=11 .ds mo November
  2010. X  .if \n(mo=12 .ds mo December
  2011. X! .TH TIN 1 "Version 1.1 PL7" "" "LOCAL"
  2012. X  .ds ]W \*(mo \n(dy, 19\n(yr
  2013. X  .nh
  2014. X  .SH NAME
  2015. X***************
  2016. X*** 34,40 ****
  2017. X  is a full-screen easy to use threaded Netnews reader. It can read news locally
  2018. X  (i.e. \fI/usr/spool/news\fP) or remotely (\fIrtin\fP or \fItin -r\fP option) via a NNTP 
  2019. X  (Network News Transport Protocol) server.  \fICdtin\fP can read news locally and 
  2020. X! news archived on CD-ROM.
  2021. X  .PP
  2022. X  .I
  2023. X  Tin
  2024. X--- 34,41 ----
  2025. X  is a full-screen easy to use threaded Netnews reader. It can read news locally
  2026. X  (i.e. \fI/usr/spool/news\fP) or remotely (\fIrtin\fP or \fItin -r\fP option) via a NNTP 
  2027. X  (Network News Transport Protocol) server.  \fICdtin\fP can read news locally and 
  2028. X! news archived on CD-ROM. The manipulation of MH style mail folders is also
  2029. X! supported.
  2030. X  .PP
  2031. X  .I
  2032. X  Tin
  2033. X***************
  2034. X*** 83,88 ****
  2035. X--- 84,96 ----
  2036. X  .BI -q
  2037. X  quick start without checking for new newsgroups.
  2038. X  .TP
  2039. X+ .BI -P
  2040. X+ purge group index files of articles that no longer exist. Care should
  2041. X+ be taken when using this command as it stats each and every article
  2042. X+ in each group that is accessed. On a low speed connection this can
  2043. X+ have an undisirable effect and it also knocks the hell out of your 
  2044. X+ filesystem.
  2045. X+ .TP
  2046. X  .B -r
  2047. X  read news remotely from the default NNTP server specified in the
  2048. X  environment variable NNTPSERVER or contained in the file
  2049. X***************
  2050. X*** 100,111 ****
  2051. X  .TP
  2052. X  .B -u
  2053. X  create/update index files for every group in \fI$HOME/.newsrc\fP or
  2054. X! file specified by -f option.  This option is disabled if \fItin\fP retrieves 
  2055. X  its index files via a NNTP server. 
  2056. X  .TP
  2057. X  .B -U
  2058. X  start \fItin\fP in the background to update index files while reading news 
  2059. X! in the foreground.  This option is disabled if \fItin\fP retrieves its index
  2060. X  files via a NNTP server.
  2061. X  .TP
  2062. X  .B -v
  2063. X--- 108,119 ----
  2064. X  .TP
  2065. X  .B -u
  2066. X  create/update index files for every group in \fI$HOME/.newsrc\fP or
  2067. X! file specified by -f option.  This option is disabled if \fItin\fP retreives 
  2068. X  its index files via a NNTP server. 
  2069. X  .TP
  2070. X  .B -U
  2071. X  start \fItin\fP in the background to update index files while reading news 
  2072. X! in the foreground.  This option is disabled if \fItin\fP retreives its index
  2073. X  files via a NNTP server.
  2074. X  .TP
  2075. X  .B -v
  2076. X***************
  2077. X*** 173,181 ****
  2078. X  (i.e. \fI/usr/spool/news/.index\fP).
  2079. X  This has the advantage that there will only be one copy of the index files on
  2080. X  the NNTP server for the whole of your network, but the disadvantage is that you
  2081. X! will have to install my NNTP server patches to allow \fItin\fP to retrieve 
  2082. X  index file from your NNTP server and and you must install an entry in the cron 
  2083. X! batcher system to have \fItind\fP regularly update index files (Note that this
  2084. X  is the method we use on our network of 40-50 machines and have not had any 
  2085. X  problems).
  2086. X  .PP
  2087. X--- 181,189 ----
  2088. X  (i.e. \fI/usr/spool/news/.index\fP).
  2089. X  This has the advantage that there will only be one copy of the index files on
  2090. X  the NNTP server for the whole of your network, but the disadvantage is that you
  2091. X! will have to install my NNTP server patches to allow \fItin\fP to retreive 
  2092. X  index file from your NNTP server and and you must install an entry in the cron 
  2093. X! batcher system to have \fItind\fP regularly update index files (note that this
  2094. X  is the method we use on our network of 40-50 machines and have not had any 
  2095. X  problems).
  2096. X  .PP
  2097. X***************
  2098. X*** 186,192 ****
  2099. X  readings of a group will cause incremental updating of the index file.
  2100. X  .PP
  2101. X  If reading news remotely and locally updating index files operation will be
  2102. X! somewhat slower because the articles must be retrieved from the NNTP server.
  2103. X  .SH "NEWS ADMINISTRATION"
  2104. X  Maintaining Netnews on large networks of machines can be a pretty time 
  2105. X  consuming job as I discovered when I was given the job of maintaining our 
  2106. X--- 194,200 ----
  2107. X  readings of a group will cause incremental updating of the index file.
  2108. X  .PP
  2109. X  If reading news remotely and locally updating index files operation will be
  2110. X! somewhat slower because the articles must be retreived from the NNTP server.
  2111. X  .SH "NEWS ADMINISTRATION"
  2112. X  Maintaining Netnews on large networks of machines can be a pretty time 
  2113. X  consuming job as I discovered when I was given the job of maintaining our 
  2114. X***************
  2115. X*** 194,205 ****
  2116. X  .PP
  2117. X  \fITin\fP is a News User Agent and so most of the users were always asking
  2118. X  questions or doing things that could be frowned upon by there departments.
  2119. X! To relieve news admins (and especially me) of this features have been added
  2120. X  to make life easier for news adminstrators.
  2121. X  .PP
  2122. X! If my NNTP XUSER patch has been applied to your NNTP server you will be
  2123. X! able to log the username and machine to your NNTP logfile for usage
  2124. X! statistics.
  2125. X  .PP
  2126. X  A user starting \fItin\fP for the first time can be automatically subscribed 
  2127. X  to a list of newsgroups that are deemed appropriate by the news administrator.  
  2128. X--- 202,217 ----
  2129. X  .PP
  2130. X  \fITin\fP is a News User Agent and so most of the users were always asking
  2131. X  questions or doing things that could be frowned upon by there departments.
  2132. X! To releive news admins (and especially me) of this features have been added
  2133. X  to make life easier for news adminstrators.
  2134. X  .PP
  2135. X! When a user starts \fItin\fP it is possible to inform them of any important 
  2136. X! changes/information concerning the news system by displaying a message of the 
  2137. X! day (motd) file. The motd file should be created in your news lib directory 
  2138. X! (i.e. \fI/usr/lib/news/motd\fP) and should have file permissions set to 0644. 
  2139. X! The motd file will only be displayed if its contents is newer than the last
  2140. X! time the user started \fItin\fP. If reading news via NNTP my XMOTD patch will
  2141. X! have to have been applied to your NNTP server.
  2142. X  .PP
  2143. X  A user starting \fItin\fP for the first time can be automatically subscribed 
  2144. X  to a list of newsgroups that are deemed appropriate by the news administrator.  
  2145. X***************
  2146. X*** 209,214 ****
  2147. X--- 221,230 ----
  2148. X  \fI/usr/lib/news/subscriptions\fP) and should have file permissions set to 
  2149. X  0644. If reading news via NNTP my LIST SUBSCRIPTIONS patch will have to 
  2150. X  have been applied to your NNTP server.
  2151. X+ .PP
  2152. X+ If my NNTP XUSER patch has been applied to your NNTP server you will be
  2153. X+ able to log the username and machine to your NNTP logfile for usage
  2154. X+ statistics.
  2155. X  .SH "SCREEN FORMAT"
  2156. X  \fITin\fP has five separate levels of operation: Group selection level, 
  2157. SHAR_EOF
  2158. true || echo 'restore of tin-1.17.patch failed'
  2159. fi
  2160. echo 'End of tin-1.17 part 8'
  2161. echo 'File tin-1.17.patch is continued in part 9'
  2162. echo 9 > _shar_seq_.tmp
  2163. exit 0
  2164.  
  2165. --
  2166. NAMES  Iain Lea    Iain.Lea%anl433.uucp@Germany.EU.net
  2167. SNAIL  Siemens AG, ANL A433SZ, Gruendlacher Str. 248, 8510 Fuerth, Germany.
  2168. PHONE  +49-911-3089-407 (work) +49-911-331963 (home) +49-911-3089-290 (FAX)  
  2169.