home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume29 / tin / part01 < prev    next >
Encoding:
Text File  |  1992-03-27  |  52.6 KB  |  1,574 lines

  1. Newsgroups: comp.sources.misc
  2. From: iain%anl433.uucp@germany.eu.net (Iain J. Lea)
  3. Subject:  v29i019:  tin - threaded full screen newsreader v1.1P1, Part01/12
  4. Message-ID: <csm-v29i019=tin.212742@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: e81aaa02f82f132fc7f5248db31c095d
  6. Date: Fri, 27 Mar 1992 03:28:12 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: iain%anl433.uucp@germany.eu.net (Iain J. Lea)
  10. Posting-number: Volume 29, Issue 19
  11. Archive-name: tin/part01
  12. Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
  13. Supersedes: tin: Volume 28, Issue 45-55
  14.  
  15. This is version 1.1 PL1 (patchlevel 1) of the tin newsreader.
  16.  
  17. -  Based more on Notes and tass than rn type newreaders.
  18.  
  19. -  Full screen, easy to use with on-line help at all levels.
  20.  
  21. -  Reads news locally (ie. /usr/spool/news) and via NNTP.
  22.  
  23. -  Threads on Subject: and/or Archive-name: mail headers.
  24.  
  25. -  Four different operating levels:
  26.    o  Group selection level
  27.    o  Thread selection level
  28.    o  Article selection level
  29.    o  Article viewer
  30.  
  31. -  Same interface to mail, pipe, print and save articles.
  32.  
  33. -  Batch mode to mail/save news when user is on holiday.
  34.  
  35. Major improvements over tin 1.1 PL0 are the following:
  36.  
  37. o  Added builtin NNTP inews so no need for mini-inews on client machines.
  38.  
  39. o  Added -DNNTP_ONLY define to compile tin to always read via NNTP.
  40.  
  41. o  Added XUSER and XINDEX extensions to NNTP protocol (RFC977) to allow
  42.    index files to be stored on the NNTP server and retreived by clients
  43.    to save each client having their own copy of the same index files.
  44.    (NOTE. I will be posting the patches to NNTP in the NEAR future)
  45.  
  46. o  Added routine to reread active file at set intervals. A little 
  47.    shakey so if you do not want it define -DNO_RESYNC_ACTIVE_FILE
  48.    in Makefile at compile time. Default time is every 5 minutes.
  49.  
  50. o  Added tind index file daemon so that only one copy of each index
  51.    file is required and this can be stored locally / on the NNTP server.
  52.  
  53. o  Added 'r' command at group level to toggle display of all and just
  54.    unread articles.
  55.  
  56. o  Added 'T' command at thread level to tag articles.
  57.  
  58. o  Added support for Convex 200 series machines.
  59.  
  60. o  Fixed TAB command to default to previous behaviour as in tin v1.0 PL7.
  61.  
  62. o  Fixed input editing routine that was causing SIGSEGV errors.
  63.  
  64. o  Fixed printing/piping threads under NNTP.
  65.  
  66. o  Fixed to check window size when restarted after being suspended.
  67.  
  68. o  Fixed tin -U background indexing process to become a full daemon
  69.    if foreground process quits/dies.
  70.  
  71. o  Fixed opening welcome screen so as not to be garbled.
  72.  
  73. o  Fixed POSIX_JOB_CONTROL because it relied on SVR4 extensions.
  74.  
  75. For more bug fixes, changes & additions read the CHANGES & TODO files.
  76.  
  77. For compilation and installation information read the INSTALL file.
  78.  
  79. Enjoy
  80.     Iain.
  81.  
  82. #!/bin/sh
  83. # This is tin1.1, a shell archive (shar 3.47)
  84. # made 03/22/1992 17:07 UTC by iain%anl433.uucp@germany.eu.net
  85. # Source directory /var/home/lea/.src/tin/111
  86. #
  87. # existing files will NOT be overwritten unless -c is specified
  88. #
  89. # This is part 1 of a multipart archive                                    
  90. # do not concatenate these parts, unpack them in order with /bin/sh        
  91. #
  92. # This shar contains:
  93. # length  mode       name
  94. # ------ ---------- ------------------------------------------
  95. #  10466 -rw------- Makefile
  96. #    867 -rw------- MANIFEST
  97. #   3253 -rw------- README
  98. #   7851 -rw------- CHANGES
  99. #   3490 -rw------- TODO
  100. #   7863 -rw------- INSTALL
  101. #  35435 -rw------- tin.1
  102. #   2247 -rw------- wildmat.3
  103. #  44431 -rw------- tin.nrf
  104. #   8707 -rw------- active.c
  105. #  24273 -rw------- art.c
  106. #   7612 -rw------- curses.c
  107. #   3371 -rw------- debug.c
  108. #  12199 -rw------- feed.c
  109. #  11438 -rw------- getline.c
  110. #  22085 -rw------- group.c
  111. #   2510 -rw------- hashstr.c
  112. #   5257 -rw------- help.c
  113. #   2409 -rw------- inews.c
  114. #  11316 -rw------- init.c
  115. #  11211 -rw------- kill.c
  116. #  20905 -rw------- lang.c
  117. #  12102 -rw------- main.c
  118. #   6765 -rw------- memory.c
  119. #  15357 -rw------- misc.c
  120. #  21037 -rw------- newsrc.c
  121. #  12769 -rw------- open.c
  122. #  22692 -rw------- page.c
  123. #  20624 -rw------- post.c
  124. #   3318 -rw------- prompt.c
  125. #  22745 -rw------- rcfile.c
  126. #  25511 -rw------- save.c
  127. #   2662 -rw------- screen.c
  128. #   7141 -rw------- search.c
  129. #  20378 -rw------- select.c
  130. #  12160 -rw------- signal.c
  131. #  14471 -rw------- thread.c
  132. #   4749 -rw------- wildmat.c
  133. #  10183 -rw------- tin.h
  134. #  14795 -rw------- extern.h
  135. #   3725 -rw------- nntp.h
  136. #  24466 -rw------- proto.h
  137. #    584 -rw------- patchlev.h
  138. #
  139. if test -r _shar_seq_.tmp; then
  140.     echo 'Must unpack archives in sequence!'
  141.     echo Please unpack part `cat _shar_seq_.tmp` next
  142.     exit 1
  143. fi
  144. # ============= Makefile ==============
  145. if test -f 'Makefile' -a X"$1" != X"-c"; then
  146.     echo 'x - skipping Makefile (File already exists)'
  147.     rm -f _shar_wnt_.tmp
  148. else
  149. > _shar_wnt_.tmp
  150. echo 'x - extracting Makefile (Text)'
  151. sed 's/^X//' << 'SHAR_EOF' > 'Makefile' &&
  152. # Makefile for tin - for tin compiler flag options read INSTALL and README.
  153. X
  154. EXE    = tin
  155. BINDIR    = /usr/local/bin
  156. MANDIR    = /usr/man/man1
  157. X
  158. STRIP    = strip
  159. ROFF    = + drf -F Helvetica -man3 
  160. PRINT    = -Pps0
  161. BASE_VER= ../110
  162. PATCH_VER = 110
  163. MAIL_ADDR = iain%anl433.uucp@germany.eu.net
  164. X
  165. HFILES    = tin.h extern.h nntp.h proto.h patchlev.h
  166. X
  167. CFILES    = active.c art.c curses.c debug.c feed.c getline.c group.c \
  168. X        hashstr.c help.c inews.c init.c kill.c lang.c main.c memory.c \
  169. X        misc.c newsrc.c open.c page.c post.c prompt.c rcfile.c save.c \
  170. X        screen.c search.c select.c signal.c thread.c wildmat.c
  171. X
  172. OFILES    = active.o art.o curses.o debug.o feed.o getline.o group.o \
  173. X        hashstr.o help.o inews.o init.o kill.o lang.o main.o memory.o \
  174. X        misc.o newsrc.o open.o page.o post.o prompt.o rcfile.o save.o \
  175. X        screen.o search.o select.o signal.o thread.o wildmat.o          
  176. X
  177. SUPPORT = Makefile MANIFEST README CHANGES TODO INSTALL *.[13] $(EXE).nrf
  178. X
  179. LINTFLAGS=-a -c -h -n -x 
  180. X
  181. CC=cc
  182. X
  183. .c.o:
  184. X    $(CC) $(CFLAGS) $*.c
  185. X
  186. all: 
  187. X    @echo "There is no default. Specify one of the following targets."
  188. X    @echo "    make bsd       (BSD/Dec/Next/Sun)"
  189. X    @echo "    make sysv      (SysV)"
  190. X    @echo "    make sysvr4    (SysV R4)"
  191. X    @echo "    make sco       (SCO Unix)"
  192. X    @echo "    make aix       (IBM AIX)"
  193. X    @echo "    make xenix     (Xenix 386)"
  194. X    @echo "    make sinix     (SNI SysV)"
  195. X    @echo "    make tower     (NCR Tower)"
  196. X    @echo "    make minix     (Minix 386)"
  197. X    @echo "    make dgux      (DG Aviion)"
  198. X
  199. # For Berkeley systems:
  200. #             NNTPLIB=clientlib.o \
  201. #
  202. bsd:
  203. X    @echo "Compiling for BSD/Dec/Next/Sun..."
  204. X    @$(MAKE) CFLAGS='-c -O -DBSD -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  205. X             LIBS="-lcurses -ltermcap" \
  206. X             EXE=tin linkit
  207. X
  208. # For System V:
  209. #             NNTPLIB=clientlib.o \
  210. #             NETLIBS="-lnet -lnsl_s" \
  211. #
  212. sysv:
  213. X    @echo "Compiling for System V..."
  214. X    @$(MAKE) CFLAGS='-c -O -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  215. X             LIBS="-lcurses -ltermcap" \
  216. X             EXE=tin linkit
  217. X
  218. # For System V Release 4:
  219. #             NNTPLIB=clientlib.o \
  220. #             NETLIBS="-lnsl -lsocket" \
  221. #
  222. sysvr4:
  223. X    @echo "Compiling for System V Release 4..."
  224. X    @$(MAKE) CFLAGS='-c -O -DSVR4 -DPOSIX_JOB_CONTROL -DUSE_INVERSE_HACK -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  225. X             LIBS="-lcurses -ltermlib" \
  226. X             EXE=tin linkit
  227. X
  228. # For SCO Unix:
  229. #             NNTPLIB=clientlib.o \
  230. #             NETLIBS="-lnsl_s -lsocket" \
  231. #
  232. sco:
  233. X    @echo "Compiling for SCO Unix..."
  234. X    @$(MAKE) CFLAGS='-c -O -UM_XENIX -DUSE_INVERSE_HACK -DLIBDIR="\"/usr/lib/news\"" -DSPOOLDIR="\"/usr/spool/news\""' \
  235. X             LIBS="-lcurses -lgen -lc_s" \
  236. X             EXE=tin linkit
  237. X
  238. # For IBM AIX:
  239. #             NNTPLIB=clientlib.o \
  240. #
  241. aix:
  242. X    @echo "Compiling for AIX..."
  243. X    @$(MAKE) CFLAGS='-c -O -DSYSV -DRS6000 -DREAD_CHAR_HACK -DUSE_LONG_FILENAMES -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  244. X             LIBS="-lcurses -ltermcap" \
  245. X             EXE=tin linkit
  246. X
  247. # For Xenix 386:
  248. #             NNTPLIB=clientlib.o \
  249. #             NETLIBS="-lsocket" \
  250. #
  251. xenix:
  252. X    @echo "Compiling for Xenix 386..."
  253. X    @$(MAKE) CFLAGS='-c -Zi -DSYSV -DLIBDIR="\\"/usr/lib/news\\"" -DSPOOLDIR="\\"/usr/spool/news\\""' \
  254. X             LIBS="-lcurses -ltinfo -lx" \
  255. X             LFLAGS=-Zi EXE=tin linkit
  256. X
  257. # For SNI Sinix:
  258. #             NNTPLIB=clientlib.o \
  259. #
  260. sinix:
  261. X    @echo "Compiling for SNI Sinix..."
  262. X    @$(MAKE) CFLAGS='-c -O -DUSE_MKDIR -DLIBDIR=\\"/usr/lib/news\\" -DSPOOLDIR=\\"/usr/spool/news\\"' \
  263. X             LIBS="-lcurses" \
  264. X             EXE=tin linkit
  265. X
  266. # For NCR Tower:
  267. #             NNTPLIB=clientlib.o \
  268. #             NETLIBS="-lnet -lnsl_s" \
  269. #
  270. tower:
  271. X    @echo "Compiling for NCR Tower..."
  272. X    @$(MAKE) CFLAGS='-c -O -DSYSV -DNCR -DISTRING -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  273. X             LIBS="-lcurses -ltermcap" \
  274. X             EXE=tin linkit
  275. X
  276. # For Minix 386:
  277. #
  278. minix:
  279. X    @echo "Compiling for Minix 386..."
  280. X    @$(MAKE) CFLAGS='-c -O -DMINIX -D_POSIX_SOURCE -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  281. X             LIBS="-lcurses" \
  282. X             EXE=tin linkit
  283. X    chmem +131072 $(EXE) 
  284. X
  285. # For Data General Aviion
  286. #             NNTPLIB=clientlib.o \
  287. #
  288. dgux:
  289. X    @echo "Compiling for DG Aviion..."
  290. X    @$(MAKE) CFLAGS='-c -O -DUSE_LONG_FILENAMES -DPOSIX_JOB_CONTROL -DUSE_INVERSE_HACK -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  291. X             LIBS="-lcurses" \
  292. X             EXE=tin linkit
  293. X
  294. # THE FOLLOWING ARE SITE SPECIFIC - IGNORE !!!
  295. anl433:
  296. X    @echo "Compiling for ANL433 with NNTP ONLY..."
  297. X    @$(MAKE) CFLAGS='-c -g -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DDEBUG -DSIGTYPE=void -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  298. X             LIBS="-lcurses -ltermcap" \
  299. X             NNTPLIB=clientlib.o \
  300. X             NETLIBS="-linet -lnsl_s" \
  301. X             EXE=tin linkit
  302. X
  303. daemon:
  304. X    @echo "Compiling for ANL433 with INDEX DAEMON..."
  305. X    @$(MAKE) CFLAGS='-c -O -DINDEX_DAEMON -DDEBUG -DSIGTYPE=void -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  306. X             EXE=tind linkit
  307. X
  308. home:
  309. X    @echo "Compiling for (HOME) Xenix 386..."
  310. X    @$(MAKE) CFLAGS='-c -W2 -Zi -DSYSV -DRESYNC_ACTIVE_SECS=30 -DDEBUG -DLIBDIR="\\"/usr/lib/news\\"" -DSPOOLDIR="\\"/usr/spool/news\\""' \
  311. X             LIBS="-lcurses -ltinfo -lx" \
  312. X             LFLAGS=-Zi EXE=tin linkit
  313. X
  314. mx331:
  315. X    @echo "Compiling for MX331 with NNTP ONLY..."
  316. X    @$(MAKE) CFLAGS='-c -O -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DUSE_MKDIR -DLIBDIR=\\"/usr/lib/news\\" -DSPOOLDIR=\\"/usr/spool/news\\"' \
  317. X             NNTPLIB=clientlib.o \
  318. X             LIBS="-lcurses" \
  319. X             EXE=tin linkit
  320. X
  321. mx351:
  322. X    @echo "Compiling for MX351 with NNTP ONLY..."
  323. X    @$(MAKE) CFLAGS='-c -O -DSVR4 -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DPOSIX_JOB_CONTROL -DUSE_INVERSE_HACK -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  324. X             NNTPLIB=clientlib.o \
  325. X             NETLIBS="-lnsl -lsocket" \
  326. X             LIBS="-lcurses -ltermlib" \
  327. X             EXE=tin linkit
  328. X
  329. norisc:
  330. X    @echo "Compiling for NORISC with NNTP..."
  331. X    @$(MAKE) CFLAGS='-c -O -DBSD -DNNTP_ABLE -DDEBUG -DLIBDIR=\"/news/lib\" -DSPOOLDIR=\"/news/spool\"' \
  332. X            NNTPLIB=/news/nntp/clientlib.o \
  333. X            LIBS="-lcurses -ltermcap" \
  334. X            EXE=tin linkit
  335. X
  336. sony01:
  337. X    @echo "Compiling for SONY01 with NNTP ONLY..."
  338. X    @$(MAKE) CC=gcc CFLAGS='-c -O -Wall -DBSD -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DDEBUG -DLIBDIR=\"/a/NEWS/lib\" -DSPOOLDIR=\"/a/NEWS/news\"' \
  339. X            NNTPLIB=./clientlib.o \
  340. X            LIBS="-lcurses -ltermcap" \
  341. X            EXE=tin linkit
  342. X
  343. sun02:
  344. X    @echo "Compiling for SUN02 with NNTP ONLY..."
  345. X    @$(MAKE) CFLAGS='-c -O -DBSD -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DDEBUG -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
  346. X             NNTPLIB=clientlib.o \
  347. X             LIBS="-lcurses -ltermcap" \
  348. X             EXE=tin linkit
  349. X
  350. linkit: $(OFILES)
  351. X    @echo "Linking $(EXE)..."
  352. X    $(CC) $(LFLAGS) -o $(EXE) $(OFILES) $(NNTPLIB) $(NETLIBS) $(LIBS) 
  353. X    @ls -l $(EXE)
  354. X
  355. install:
  356. X    @echo "Installing $(EXE)..."
  357. X    @$(STRIP) $(EXE)
  358. X    @-mv $(EXE) $(BINDIR)
  359. X    @-rm $(BINDIR)/r$(EXE)
  360. X    @ln $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  361. X    @chmod 755 $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)  
  362. X    @ls -l $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  363. X    @cp $(EXE).1 $(MANDIR)
  364. X
  365. install_setuid:
  366. X    @echo "Installing SETUID $(EXE)..."
  367. X    @$(STRIP) $(EXE)
  368. X    @-mv $(EXE) $(BINDIR)
  369. X    @chown news $(BINDIR)/$(EXE) 
  370. X    @-rm $(BINDIR)/r$(EXE)
  371. X    @ln $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  372. X    @su news -c "chmod 4755 $(BINDIR)/$(EXE)"
  373. X    @su news -c "chmod 4755 $(BINDIR)/r$(EXE)"
  374. X    @ls -l $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
  375. X    @cp $(EXE).1 $(MANDIR)
  376. X
  377. proto:
  378. X    @echo "Generating function prototypes for proto.h..."
  379. #    @cextract -DSIGTSTP -DSIGWINCH $(CFILES) > PROTO.H
  380. #    @-mv PROTO.H proto.h
  381. X    @echo "#if __STDC__" > PROTO.H
  382. X    @echo " " >> PROTO.H
  383. X    @cproto -e $(CFILES) >> PROTO.H
  384. X    @echo " " >> PROTO.H
  385. X    @echo "#else" >> PROTO.H
  386. X    @echo " " >> PROTO.H
  387. X    @cproto -e -f1 $(CFILES) >> PROTO.H
  388. X    @echo " " >> PROTO.H
  389. X    @echo "#endif" >> PROTO.H
  390. X    @-mv PROTO.H proto.h
  391. X
  392. nroff:
  393. X    @echo "Creating nroff man page..."
  394. X    @nroff -man $(EXE).1 > $(EXE).nrf
  395. X
  396. manifest:
  397. X    @echo "Creating MANIFEST..."
  398. X    @echo "MANIFEST for tin newsreader (`date`)" > MANIFEST
  399. X    @echo "----------------------------------------------------------" >> MANIFEST
  400. X    @wc -c $(SUPPORT) $(HFILES) $(CFILES) >> MANIFEST
  401. X
  402. shar:
  403. X    @echo "Generating shell archive..."
  404. X    @make nroff
  405. X    @make manifest
  406. X    @shar -a -n $(EXE)1.1 -s $(MAIL_ADDR) -L50 -o ../$(EXE).shar $(SUPPORT) $(CFILES) $(HFILES)
  407. X
  408. uuencode:
  409. X    @make tar
  410. X    @echo "Uuencoding $(EXE).tar.Z..."
  411. X    @uuencode $(EXE).tar.Z $(EXE).tar.Z > $(EXE).tar.Z.uue
  412. X    @ls -l $(EXE).tar.Z.uue
  413. diff:
  414. X    @echo "Generating diffs against $(BASE_VER)..."
  415. X    @make nroff
  416. X    @make manifest
  417. X    @-mv -f $(EXE).diff $(EXE).diff-
  418. X    @-diff -rcs $(BASE_VER) . > $(EXE).diff
  419. X    @ls -l $(EXE).diff
  420. X
  421. patch:
  422. X    @make diff
  423. X    @echo "Generating patch against $(BASE_VER)..."
  424. X    @-mv $(EXE).diff $(EXE).patch$(PATCH_VER)
  425. X    @shar -a -n $(EXE) -s $(MAIL_ADDR) -L50 -o patch$(PATCH_VER).shar $(EXE).patch$(PATCH_VER)
  426. X    @ls -l patch$(PATCH_VER).shar*
  427. X
  428. tar:
  429. X    @echo "Generating compressed tar file..."
  430. X    @-rm $(EXE).tar $(EXE).tar.Z > /dev/null 2>&1
  431. X    @tar cvf $(EXE).tar $(SUPPORT) $(CFILES) $(HFILES) 
  432. X    @echo "Compressing $(EXE).tar..."
  433. X    @compress $(EXE).tar 
  434. X    @ls -l $(EXE).tar.Z
  435. X
  436. zoo:
  437. X    @echo "Generating zoo archive file..."
  438. X    @-rm $(EXE).zoo > /dev/null 2>&1
  439. X    @zoo ah $(EXE).zoo  $(SUPPORT) $(CFILES) $(HFILES)
  440. X    @ls -l $(EXE).zoo
  441. X
  442. tags:
  443. X    @echo "Generating tags (results in ./tags)..."
  444. X    @-rm tags
  445. X    @ctags $(HFILES) $(CFILES) 
  446. X
  447. lint:
  448. X    @echo "Linting source (results in ./LINT)..."
  449. X    @lint $(LINTFLAGS) -DNNTP_ABLE $(CFILES) > LINT
  450. X
  451. clean:
  452. X    @echo "Cleaning..."
  453. X    @-'rm' -rf $(OFILES) '#*' $(EXE).diff*
  454. X
  455. clobber:
  456. X    @echo "Clobbering..."
  457. X    @-'rm' -rf $(OFILES) '#*' tags $(EXE) $(EXE).diff* patch.shar*
  458. X
  459. cflow:
  460. X    @echo "Creating cflow for $(EXE)..."
  461. X    @cflow $(CFILES) > cflow.$(EXE) &
  462. X
  463. cscope:
  464. X    @echo "Creating cscope database $(EXE)..."
  465. X    @cscope $(SUPPORT) $(HFILES) $(CFILES)
  466. X
  467. man:
  468. X    @echo "Printing $(EXE) manual to $(PRINT)..."
  469. X    @$(ROFF) $(PRINT) $(EXE).1
  470. X
  471. print:
  472. X    @for FILE in $(HFILES) $(CFILES) $(SUPPORT); do \
  473. X    echo "Printing $$FILE to $(PRINT)..."; \
  474. X    expand -4 $$FILE | enscript -2r -h -G $(PRINT) -b $$FILE; \
  475. X    done
  476. X
  477. active.o:    active.c $(HFILES)
  478. art.o:        art.c $(HFILES)
  479. curses.o:    curses.c $(HFILES)
  480. debug.o:    debug.c $(HFILES)
  481. feed.o:        feed.c $(HFILES)
  482. getline.o:    getline.c $(HFILES)
  483. group.o:    group.c $(HFILES)
  484. hashstr.o:    hashstr.c $(HFILES)
  485. help.o:        help.c $(HFILES)
  486. inews.o:    inews.c $(HFILES)
  487. init.o:        init.c $(HFILES)
  488. kill.o:        kill.c $(HFILES)
  489. lang.o:        lang.c $(HFILES)
  490. main.o:        main.c $(HFILES)
  491. memory.o:    memory.c $(HFILES)
  492. misc.o:        misc.c $(HFILES)
  493. newsrc.o:    newsrc.c $(HFILES)
  494. open.o:        open.c nntp.h
  495. page.o:        page.c $(HFILES)
  496. post.o:        post.c $(HFILES)
  497. prompt.o:    prompt.c $(HFILES)
  498. rcfile.o:    rcfile.c $(HFILES)
  499. save.o:        save.c $(HFILES)
  500. screen.o:    screen.c $(HFILES)
  501. search.o:    search.c $(HFILES)
  502. select.o:    select.c $(HFILES)
  503. signal.o:    signal.c $(HFILES)
  504. thread.o:    thread.c $(HFILES)
  505. wildmat.o:    wildmat.c
  506. SHAR_EOF
  507. chmod 0600 Makefile ||
  508. echo 'restore of Makefile failed'
  509. Wc_c="`wc -c < 'Makefile'`"
  510. test 10466 -eq "$Wc_c" ||
  511.     echo 'Makefile: original size 10466, current size' "$Wc_c"
  512. rm -f _shar_wnt_.tmp
  513. fi
  514. # ============= MANIFEST ==============
  515. if test -f 'MANIFEST' -a X"$1" != X"-c"; then
  516.     echo 'x - skipping MANIFEST (File already exists)'
  517.     rm -f _shar_wnt_.tmp
  518. else
  519. > _shar_wnt_.tmp
  520. echo 'x - extracting MANIFEST (Text)'
  521. sed 's/^X//' << 'SHAR_EOF' > 'MANIFEST' &&
  522. MANIFEST for tin newsreader (Sun Mar 22 18:07:24 MET 1992)
  523. ----------------------------------------------------------
  524. X   10466 Makefile
  525. X     118 MANIFEST
  526. X    3253 README
  527. X    7851 CHANGES
  528. X    3490 TODO
  529. X    7863 INSTALL
  530. X   35435 tin.1
  531. X    2247 wildmat.3
  532. X   44431 tin.nrf
  533. X   10183 tin.h
  534. X   14795 extern.h
  535. X    3725 nntp.h
  536. X   24466 proto.h
  537. X     584 patchlev.h
  538. X    8707 active.c
  539. X   24273 art.c
  540. X    7612 curses.c
  541. X    3371 debug.c
  542. X   12199 feed.c
  543. X   11438 getline.c
  544. X   22085 group.c
  545. X    2510 hashstr.c
  546. X    5257 help.c
  547. X    2409 inews.c
  548. X   11316 init.c
  549. X   11211 kill.c
  550. X   20905 lang.c
  551. X   12102 main.c
  552. X    6765 memory.c
  553. X   15357 misc.c
  554. X   21037 newsrc.c
  555. X   12769 open.c
  556. X   22692 page.c
  557. X   20624 post.c
  558. X    3318 prompt.c
  559. X   22745 rcfile.c
  560. X   25511 save.c
  561. X    2662 screen.c
  562. X    7141 search.c
  563. X   20378 select.c
  564. X   12160 signal.c
  565. X   14471 thread.c
  566. X    4749 wildmat.c
  567. X  536681 total
  568. SHAR_EOF
  569. chmod 0600 MANIFEST ||
  570. echo 'restore of MANIFEST failed'
  571. Wc_c="`wc -c < 'MANIFEST'`"
  572. test 867 -eq "$Wc_c" ||
  573.     echo 'MANIFEST: original size 867, current size' "$Wc_c"
  574. rm -f _shar_wnt_.tmp
  575. fi
  576. # ============= README ==============
  577. if test -f 'README' -a X"$1" != X"-c"; then
  578.     echo 'x - skipping README (File already exists)'
  579.     rm -f _shar_wnt_.tmp
  580. else
  581. > _shar_wnt_.tmp
  582. echo 'x - extracting README (Text)'
  583. sed 's/^X//' << 'SHAR_EOF' > 'README' &&
  584. This is version 1.1 PL1 (patchlevel 1) of the tin newsreader.
  585. X
  586. -  Based more on Notes and tass than rn type newreaders.
  587. X
  588. -  Full screen, easy to use with on-line help at all levels.
  589. X
  590. -  Reads news locally (ie. /usr/spool/news) and via NNTP.
  591. X
  592. -  Threads on Subject: and/or Archive-name: mail headers.
  593. X
  594. -  Four different operating levels:
  595. X   o  Group selection level
  596. X   o  Thread selection level
  597. X   o  Article selection level
  598. X   o  Article viewer
  599. X
  600. -  Same interface to mail, pipe, print and save articles.
  601. X
  602. -  Batch mode to mail/save news when user is on holiday.
  603. X
  604. NOTE: PLEASE READ THE MAN PAGE tin.1 BEFORE SENDING A BUG REPORT/COMMENT.
  605. X
  606. Major improvements over tin 1.1 PL0 are the following:
  607. X
  608. o  Added builtin NNTP inews so no need for mini-inews on client machines.
  609. X
  610. o  Added -DNNTP_ONLY define to compile tin to always read via NNTP.
  611. X
  612. o  Added XUSER and XINDEX extensions to NNTP protocol (RFC977) to allow
  613. X   index files to be stored on the NNTP server and retreived by clients
  614. X   to save each client having their own copy of the same index files.
  615. X   (NOTE. I will be posting the patches to NNTP in the NEAR future)
  616. X
  617. o  Added routine to reread active file at set intervals. A little 
  618. X   shakey so if you do not want it define -DNO_RESYNC_ACTIVE_FILE
  619. X   in Makefile at compile time. Default time is every 5 minutes.
  620. X
  621. o  Added tind index file daemon so that only one copy of each index
  622. X   file is required and this can be stored locally / on the NNTP server.
  623. X
  624. o  Added 'r' command at group level to toggle display of all and just
  625. X   unread articles.
  626. X
  627. o  Added 'T' command at thread level to tag articles.
  628. X
  629. o  Added support for Convex 200 series machines.
  630. X
  631. o  Fixed TAB command to default to previous behaviour as in tin v1.0 PL7.
  632. X
  633. o  Fixed input editing routine that was causing SIGSEGV errors.
  634. X
  635. o  Fixed printing/piping threads under NNTP.
  636. X
  637. o  Fixed to check window size when restarted after being suspended.
  638. X
  639. o  Fixed tin -U background indexing process to become a full daemon
  640. X   if foreground process quits/dies.
  641. X
  642. o  Fixed opening welcome screen so as not to be garbled.
  643. X
  644. o  Fixed POSIX_JOB_CONTROL because it relied on SVR4 extensions.
  645. X
  646. For more bug fixes, changes & additions read the CHANGES & TODO files.
  647. X
  648. For compilation and installation information read the INSTALL file.
  649. X
  650. I wish to thank all the people (and especially jim Robinson) that sent
  651. me bug fixes and comments for tin. I still want to hear of any bug 
  652. reports, gripes and comments but please read the INSTALL and tin.1 man
  653. page before anything :-)!.
  654. X
  655. I am still off the net, but am contactable at the following address:
  656. X
  657. X    Iain J. Lea
  658. X    BrueckenStr. 12
  659. X    8500 Nuernberg 90
  660. X    Germany.
  661. X    Phone. +49-911-331963   (home)
  662. X    Phone. +49-911-3089-407 (work)
  663. X    Phone. +49-911-3089-290 (FAX)
  664. X    Email. iain%anl433.uucp@germany.eu.net
  665. X
  666. Due to above problem if anyone wants the latest released version or
  667. an early version of the next patchlevel I am willing to send a copy
  668. in unix compressed tar or msdos format 5.25 or 3.5 inch disks.
  669. I will make a small handling charge for this service as listed below:
  670. X    Germany  15 Deustche Marks
  671. X    England   5 Pounds Sterling
  672. X    USA      10 Dollars 
  673. Please send money/cheque with self-addressed envelope to above addess.
  674. X
  675. Enjoy
  676. X    Iain.
  677. SHAR_EOF
  678. chmod 0600 README ||
  679. echo 'restore of README failed'
  680. Wc_c="`wc -c < 'README'`"
  681. test 3253 -eq "$Wc_c" ||
  682.     echo 'README: original size 3253, current size' "$Wc_c"
  683. rm -f _shar_wnt_.tmp
  684. fi
  685. # ============= CHANGES ==============
  686. if test -f 'CHANGES' -a X"$1" != X"-c"; then
  687.     echo 'x - skipping CHANGES (File already exists)'
  688.     rm -f _shar_wnt_.tmp
  689. else
  690. > _shar_wnt_.tmp
  691. echo 'x - extracting CHANGES (Text)'
  692. sed 's/^X//' << 'SHAR_EOF' > 'CHANGES' &&
  693. CHANGES tin v1.1 PL0 -> tin 1.1 PL1
  694. -----------------------------------
  695. X
  696. 1)  crs89rdb@brunel.ac.uk (Roger Binns)
  697. X    BUG. active file is read in but if new news arrives while one
  698. X         is already reading news it will not be shown.
  699. X    FIX. active.c - added resync_active_file() to read active file
  700. X         at set intervals.
  701. X
  702. 2)  iain%anl433.uucp@germany.eu.net (Iain Lea)
  703. X    BUG. 5% of all recieved bug reports are empty!?!
  704. X    FIX. post.c - added confirm question before mailing bug report. 
  705. X
  706. 3)  iain%anl433.uucp@germany.eu.net (Iain Lea)
  707. X    BUG. Under SYSV doing a Ctrl-\ in foreground process when tin -U 
  708. X         kills background updating process.
  709. X    FIX. main.c - added signal (SIGQUIT, SIG_IGN) to background process.
  710. X
  711. 4) m31z@jupiter.sun.csd.unb.ca (Steven Cogswell)
  712. X    BUG. When editing 'M' entries or killing an articles get SIGSEGV.
  713. X    FIX. prompt.c - changed input parameter from (char *) 0 to "".
  714. X
  715. 5)  iain%anl433.uucp@germany.eu.net (Iain Lea)
  716. X    BUG. error_message() is missing 2nd parameter in some cases.
  717. X    FIX. getline.c main.c misc.c open.c - added "" as 2nd parameter.
  718. X
  719. 6)  iain%anl433.uucp@germany.eu.net (Iain Lea)
  720. X    BUG. tin -U background indexing process dies if foreground tin exits
  721. X         or receives certain signals. 
  722. X    FIX. main.c - set background process to be its own process leader 
  723. X         and to disassociate its control terminal and ignore signals.
  724. X
  725. 7)  mfaurot@bogart.uucp (Michael Faurot)
  726. X    BUG. The opening welcome screen is garbled on certain machines.
  727. X    FIX. main.c - applied supplied patch.
  728. X
  729. 8)  uunet!atlantis!bugs (Dan Berry) 
  730. X    BUG. Various functions had wrong number of parameters.
  731. X    FIX. main.c getline.c - applied supplied patch.
  732. X
  733. 9)  robinson@mdivax1.mdd.comm.mot.com (Jim Robinson)
  734. X    BUG. Help message about 'u' command at group level missing.
  735. X    FIX. help.c - added txt_help_u string to group help array.
  736. X
  737. 10) robert@sys.sweden.dg.com (Robert Claeson)
  738. X    ADD. main.c - added NNTP_ONLY define to always read via NNTP.
  739. X
  740. 11) iain%anl433.uucp@germany.eu.net (Iain Lea)
  741. X    BUG. During compilation warning are issued that signal() call has
  742. X         incorrect return type (ie. void / int).
  743. X    FIX. tin.h - added #define SIGTYPE gobbly-gook for a few different
  744. X         compilers and machines.
  745. X
  746. 12) iain%anl433.uucp@germany.eu.net (Iain Lea)
  747. X    BUG. Under interactive SYSVR3.2 tin does not auto resize under an xterm.
  748. X    FIX. tin.h - removed AUTO_RESIZE define and added a few #include files.
  749. 13) djm@eng.umd.edu (David MacKenzie)
  750. X    BUG. POSIX_JOB_CONTROL relied on SVR4 extensions.
  751. X    FIX. signal.c - applied supplied patch.
  752. X
  753. 14) hakanl@lulea.telesoft.se (Hakan Lennestal)
  754. X    BUG. SunOS 4.1.1 does not handle setreuid() & setregid() correctly.
  755. X    FIX. misc.c - applied supplied patch.
  756. X
  757. 15) marc@CAM.ORG (Marc Boucher)
  758. X    BUG. SVR4 can support LONG_FILENAMES and replaced libucb (buggy).
  759. X    FIX. Makefile - applied supplied patch. 
  760. X
  761. 16) crs89rdb@brunel.ac.uk (Roger Binns)
  762. X    BUG. Resizing a xterm while tin is suspended causes tin to use the
  763. X         wrong screen size when it is restarted.
  764. X    FIX. signal.c - added routine to check window size when restarted.
  765. X
  766. 17) ted@isgtec.UUCP (Ted Richards)
  767. X    BUG. On BSD 'o' command forces -Pps0 to be used instead of -Pps.
  768. X    FIX. feed.c - changed default printer from -Pps0 to -Pps.
  769. X
  770. 18) otto@norisc.uucp (Otto Niesser)
  771. X    BUG. TAB command at page level was changed for the worst ???
  772. X    FIX. page.c - Due to HUGE outcry put an #ifdef in TAB command so
  773. X         people have have the 1.0 PL7 / 1.1 PL0 behaviour. For #ifdef
  774. X         info read the INSTALL file and Makefile.
  775. X
  776. 19) iain%anl433.uucp@germany.eu.net (Iain Lea)
  777. X    BUG. Mailing a thread is a little tiresome when asked to confirm
  778. X         the sending of every article.
  779. X    FIX. feed.c post.c - added code to ask once to send all the thread.
  780. X
  781. 20) unido!bermuda!dansmith (Daniel Smith)
  782. X    BUG. ~/Mail & ~/News directories are always created whether -d or
  783. X         -m are defined.
  784. X    FIX. init.c main.c - if -d / -f are used they will override ~/Mail
  785. X         and ~/News default values.
  786. X
  787. 21) kleeman@informatik.uni-wuerzburg.de (Fritz Kleeman)
  788. X    BUG. Error in copy_fp() when printing/piping a thread via NNTP.
  789. X    FIX. open.c - applied supplied patch.
  790. X
  791. 22) iain%anl433.uucp@germany.eu.net (Iain Lea)
  792. X    BUG. 'c' command does not automatically goto next page of groups.
  793. X    FIX. select.c - changed code to goto next page if at  bottom.
  794. X
  795. 23) john@iti.org (John Sauter)
  796. X    BUG. Always points to 2nd group in group selection index.
  797. X    FIX. main.c - check_any_unread_news() was not always returning
  798. X         a valid value. Only occured on BSD and sony NEWS here?!?.
  799. X
  800. 24) iain%anl433.uucp@germany.eu.net (Iain Lea)
  801. X    ADD. Added XUSER nntp extension to log_user() to log client user
  802. X         info to nntp server logfile.
  803. X
  804. 25) iain%anl433.uucp@germany.eu.net (Iain Lea)
  805. X    ADD. Added auto_subscribe_groups() routine to automatically subscribe
  806. X         user to groups specified in /usr/lib/news/subscriptions by news
  807. X         admin. If reading via NNTP does a LIST SUBSCRIPTIONS command.
  808. X  
  809. 26) nelson@csd.uwm.edu (Nelson Kading)
  810. X    BUG. Man page does not format correctly.
  811. X    FIX. tin.1 - applied supplied patch.
  812. X
  813. 27) nelson@csd.uwm.edu (Nelson Kading)
  814. X    BUG. Does not compile on Convex machines.
  815. X    FIX. tin.h init.c - applied supplied patch.  
  816. X
  817. 28) iain%anl433.uucp@germany.eu.net (Iain Lea)
  818. X    ADD. Added XINDEX nntp extension to allow NNTP client to get group
  819. X         index files from NNTP server machine if my NNTP XINDEX patch
  820. X         is installed. Define NNTP_EXTS to use NNTP_XUSER & NNTP_XINDEX
  821. X
  822. 29) iain%anl433.uucp@germany.eu.net (Iain Lea)
  823. X    BUG. -s has no real use and -d should be -s (ie. save news dir)
  824. X    FIX. main.c tin.1 - did as noted above.
  825. X
  826. 30) john_palkovic@ssc.gov (John Palkovic)
  827. X    BIG. Under BSD the DEFAULT_MAILER should be /bin/mail not /bin/mail.
  828. X    FIX. tin.h - replaced /bin/rmail with /bin/mail for DEFAULT_MAILER.
  829. X
  830. 31) leilabd@syma.sussex.ac.uk (Leila Burrell-Davis)
  831. X    BUG. $EDITOR variable is documented in man page but $VISUAL is used.
  832. X    FIX. tin.1 - changed all references of $EDITOR to $VISUAL.
  833. X
  834. 32) robinson@mdivax1.mdd.comm.mot.com (Jim Robinson)
  835. X    NOTE. Supplied a 110K patch to add features & fix problems:
  836. X    This man deserves a gold star for fixing some irking bugs!
  837. X    FIX. misc.c - mark_unthreaded_groups() always needed to strcmp().
  838. X    FIX. art.c - read_group() could index into arts[] with neg number.
  839. X    FIX. newsrc.c - parse_unread() fixed one off error in unread arts.
  840. X    FIX. page.c - show_page() return value was being treated like an
  841. X         index into 'arts'. It is actually an index into 'base'.
  842. X    FIX. post.c - post_response() find_mail_header() is setting global
  843. X         variable 'note_h_subj'. This can cause problems. Replaced use
  844. X         of 'note_h_subj' with local variable.
  845. X    FIX. kill.c - kill_any_articles() replaced arts[i].tagged with
  846. X         arts[i].killed to make killing work.
  847. X    FIX. art.c - reload_index() after load_index() and before find_base()
  848. X         it is necessary to call read_newsrc_line().
  849. X    FIX. thread.c - main loop index was being incorrectly initialized. 
  850. X    FIX. thread.c - show_thread_page() fixed to page properly.
  851. X    FIX. search.c - search_author() was wrapping around incorrectly.
  852. X    FIX. group.c - show_group_page() so only new arts are counted in
  853. X         show only unread mode.
  854. X    FIX. newsrc.c - print_seq() totally rewritten (It needed it! :-))
  855. X    ADD. group.c -     'r' command to toggle show_unread_only mode.
  856. X    ADD. thread.c - 'T' command to tag articles at thread listing level
  857. X
  858. 33) iain%anl433.uucp@germany.eu.net (Iain Lea)
  859. X    BUG. If 'c' catchup done at article level from within thread level
  860. X         a SIGSEGV is produced upon returning to grouyp level.
  861. X    FIX. group.c - add check to see if index_point < 0.
  862. X
  863. X
  864. SHAR_EOF
  865. chmod 0600 CHANGES ||
  866. echo 'restore of CHANGES failed'
  867. Wc_c="`wc -c < 'CHANGES'`"
  868. test 7851 -eq "$Wc_c" ||
  869.     echo 'CHANGES: original size 7851, current size' "$Wc_c"
  870. rm -f _shar_wnt_.tmp
  871. fi
  872. # ============= TODO ==============
  873. if test -f 'TODO' -a X"$1" != X"-c"; then
  874.     echo 'x - skipping TODO (File already exists)'
  875.     rm -f _shar_wnt_.tmp
  876. else
  877. > _shar_wnt_.tmp
  878. echo 'x - extracting TODO (Text)'
  879. sed 's/^X//' << 'SHAR_EOF' > 'TODO' &&
  880. !!! PLEASE NOTE THAT ON CERTAIN MACHINES (ie. mostly RISC DEC,HP) TIN
  881. !!! WILL SOMETIMES CRASH WITH SIGBUS or SIGSEGV DUE TO THE HACK THAT
  882. !!! IS USED IN HASHING STRINGS IN hashstr.c. SORRY BUT I HAVE NO TIME
  883. !!! RIGHT NOW TO REIMPLEMENT THIS PART OF TIN WHICH IS A CARRY OVER
  884. !!! FROM TASS v3.2 (Any takers ?)
  885. X
  886. FIX FEATURES V1.x
  887. -----------------
  888. X
  889. o  Fix ?? XINDEX version of tin so killing arts does give 0 0 arts in group.
  890. X
  891. o  Fix ?? XINDEX so that client clear? arts before reading next group because 
  892. X   it still has the old arts headers when going into next group. Where is it
  893. X   free'd?
  894. X
  895. o  Add crossposting of articles so that read ones are marked read in 
  896. X   other groups. in rn it uses Xref: line to do this. Perhaps just
  897. X   use update_group() to do it?
  898. X   Needs to handle 'c' 'C' 'k' 'K' commands. Perhaps it should be an
  899. X   option so that performance is not impaired. (JIM).
  900. X
  901. o  Fix Sender: Path: headers within NNTP inews internally to tin
  902. X   by a #define NNTP_INEWS
  903. X
  904. o  Add option to 'M' menu to allow 'C' command to return/stay at
  905. X   group level.
  906. X
  907. o  Add option to 'M' menu to allow unlinking/not of ~/.article
  908. X   after posting an article.
  909. X
  910. o  Fix 'c' at article level when within thread level?
  911. X
  912. o  Fix so SIGWINCH resizes xterm window under SINIX / VAX Ultrix.
  913. X
  914. o  Fix -S option to create an active file when new articles are
  915. X   saved to <savedir>.
  916. X
  917. o  Fix -R option to read ACTIVE file created by -S command.
  918. X
  919. o  Fix -n option to hash the groups read in from ~/.tin/active and
  920. X   mark active[].flag as TRUE. then find flag=FALSE and ask user if
  921. X   they want to subscribe to group. On xenix386 takes 15 seconds on
  922. X   current -n option. Also of CNEWS just do a compare of active.times
  923. X   UNDER CNEWS USE active.times FILE FROM NNTPSERVER
  924. X   UNDER NNTP USE newnews COMMAND FROM NNTPSERVER
  925. X
  926. o  Fix code to display only groups with unread news. look at
  927. X   setup_base() also for killing.
  928. X
  929. o  Add nntp code to read 4th field (ynm) in active file in scanf()
  930. X
  931. FIX FEATURES V2.0
  932. -----------------
  933. X
  934. o  Fix uuscram code in uudecode.
  935. X
  936. o  Fix code to sort arts. At page level funny things happen.
  937. X
  938. o  Fix code to KILL articles. At page level funny things happen.
  939. X
  940. o  Fix code to KILL articles with 't' command.
  941. X
  942. o  Fix so that it always finds unread messages. 
  943. X
  944. o  Fix 'z' so that it stays unread even if a KILL is performed before
  945. X   leaving the group.
  946. X
  947. o  Fix 'z' at group selection level so whole screen is not redrawn.
  948. X
  949. ADD FEATURES
  950. ------------
  951. X
  952. o  Add -P <pattern> or -P <file> to search for in new news and to
  953. X   notify user by mail. Should understand 'subject=text' 'from=text'
  954. X   'body=text' and .AND. && .OR. || for filtering purposes.
  955. X
  956. o  Add elm style print command with %s in it for printing in 'M'.
  957. X
  958. o  Add 'C' command at group level to catchup present group and
  959. X   enter next group with unread news in it.
  960. X
  961. o  Sort .newsrc according to preference. (sort active file as it is read)
  962. X
  963. o  Add time period kill article
  964. X
  965. PIPEDREAMS
  966. ----------
  967. o  Add rebindable keymaps and provide different terminal keymaps
  968. X   (ie. keymap.ansi, keymap.wy50 etc.)
  969. X
  970. o  Add Virtual newsgroups (combination of newsgroups ie. virtual.ibm
  971. X   consists of comp.sys.ibm.* groups).
  972. X
  973. o  Add threading on References like trn with mthreads database.
  974. X
  975. o  Add full curses support instead of using printf()'s.
  976. X
  977. o  Sub all not empty groups by looking at min max values in active array
  978. X   and Unsub all empty groups by looking at min max values in active 
  979. X   array. have a command to do this in a toggle effect.
  980. SHAR_EOF
  981. chmod 0600 TODO ||
  982. echo 'restore of TODO failed'
  983. Wc_c="`wc -c < 'TODO'`"
  984. test 3490 -eq "$Wc_c" ||
  985.     echo 'TODO: original size 3490, current size' "$Wc_c"
  986. rm -f _shar_wnt_.tmp
  987. fi
  988. # ============= INSTALL ==============
  989. if test -f 'INSTALL' -a X"$1" != X"-c"; then
  990.     echo 'x - skipping INSTALL (File already exists)'
  991.     rm -f _shar_wnt_.tmp
  992. else
  993. > _shar_wnt_.tmp
  994. echo 'x - extracting INSTALL (Text)'
  995. sed 's/^X//' << 'SHAR_EOF' > 'INSTALL' &&
  996. Compilation and installation notes for tin - 24-03-92 
  997. -----------------------------------------------------
  998. X
  999. Tin has been compiled on a wide range of Un*x machines with cc and gcc.
  1000. A list of these machines can be found at the end of this file.
  1001. X
  1002. This file is long (so was the yellow brick road) but please read it all
  1003. as it could save you problems later and we don't want an unhappy ending
  1004. do we? :-)  
  1005. X
  1006. Tin can be compiled to read news in any of the following ways:
  1007. X
  1008. X  o  locally from your machines news spool dir (default /usr/spool/news).
  1009. X
  1010. X  o  locally and remotely (rtin or tin -r option) (-DNNTP_ABLE).
  1011. X
  1012. X  o  remotely from another machine via NNTP but creating tin index files
  1013. X     on local machine for each user in $HOME/.tin/.index (-DNNTP_ONLY).
  1014. X
  1015. X  o  remotely from another machine via NNTP and also retreiving tin index
  1016. X     files from remote machine via NNTP (-DNNTP_ONLY -DNNTP_EXTS). This
  1017. X     option requires that MY NNTP XUSER & XINDEX patches be applied to
  1018. X     your NNTP server nntpd. On the NNTP server the index daemon of tin
  1019. X     'tind' needs to be run from cron to update the index files at 
  1020. X     regular inetervals.
  1021. X
  1022. The -DNNTP_ABLE or -DNNTP_ONLY define must be added to CFLAGS in 
  1023. Makefile and the correct libraries need to be linked to produce
  1024. an NNTP aware tin.
  1025. X
  1026. !!! The NNTP (NetNews Transport Protocol RFC 977) software needs to 
  1027. !!! be installed on your machine if want to read news remotely. It is
  1028. !!! a SEPERATE PACKAGE that is available from many FTP and mailserver
  1029. !!! sites.
  1030. !!!
  1031. !!! The file that has to be compiled & linked with tin is clientlib.c
  1032. Building Tin (Normal & Daemon versions) 
  1033. ---------------------------------------
  1034. X
  1035. Normal version
  1036. 1)  Type 'make' and a few system types will be displayed.
  1037. 2)  Edit Makefile if you want to add/change -D<defines>.
  1038. 3)  Type 'make <system type>' to compile for your system.
  1039. 4)  Type 'make install' / 'make install_setuid' to install.
  1040. X
  1041. Note1: If you want to retreive tin index files from your NNTP server
  1042. X      you will have to compile the tind index file daemon so do the
  1043. X      following steps:
  1044. X
  1045. X  1)  Build 'Normal version' of tin as specified by the above 4 points.
  1046. X  2)  The tind index daemon needs to be installed on your NNTP server.
  1047. X  3)  Apply my NNTP XUSER & XINDEX patches to your nntpd server or this
  1048. X      will not work!!!. (If you want tind locally read Note3).  
  1049. X  4)  Edit the Makefile and add -DINDEX_DAEMON to your CFLAGS entry and
  1050. X      remove any -DNNTP_* defines. Also remove any -lcurses screen type
  1051. X      libs as tind does not need to be linked with curses and it will
  1052. X      save a good 30-50K on the size of tind.
  1053. X  5)  Type 'make <system type>' to compile tind daemon for your NNTP server.
  1054. X  6)  Type 'make install_daemon' to install tind daemon on your NNTP server.
  1055. X  7)  Add the following line to your system cron to run tind every 30 mins:
  1056. X        00,30 * * * * su news -c '/usr/lib/news/tind'
  1057. X        
  1058. X  Note2: tind must be run as user 'news' and the normal tin must have 
  1059. X         the correct permissions to read the central index files!
  1060. X  Note3: tind can also be used to update a copy of all index files
  1061. X         centrally so each user does not have duplicate files.
  1062. X    
  1063. Compiler flags (-D<name> define directives)
  1064. -------------------------------------------
  1065. News directory structure
  1066. ------------------------
  1067. X
  1068. LIBDIR
  1069. Define if news software is not in /usr/lib/news.
  1070. X
  1071. INEWSDIR
  1072. Define if bnews/cnews program 'inews' is not in LIBDIR.
  1073. X
  1074. SPOOLDIR
  1075. Define if news articles are not in /usr/spool/news.
  1076. X
  1077. X
  1078. Reading news via NNTP
  1079. --------------------- 
  1080. X
  1081. NNTP_ABLE
  1082. Define if you wish to read news locally and remotely via an NNTP server.
  1083. X
  1084. NNTP_ONLY
  1085. Define if you [want to | can] ONLY read news remotely via an NNTP server.
  1086. X
  1087. NNTP_INEWS
  1088. Define if you want to use my builtin NNTP POST routine so that you no
  1089. longer have to rely on the mini-inews from NNTP to be installed on each
  1090. client machine.
  1091. X
  1092. NNTP_XUSER
  1093. Define !!! ONLY !!! if your NNTP server supports the XUSER command. Unless
  1094. you or your sysadmin applied my patches for the NNTP server XUSER will not
  1095. be supported. This allows logging of the NNTP clients username & info to
  1096. the NNTP servers logfile. Requires LOG_USER to also be defined.
  1097. X
  1098. NNTP_XINDEX
  1099. Define !!! ONLY !!! if your NNTP server supports the XINDEX command. Unless
  1100. you or your sysadmin applied my patches for the NNTP server XINDEX will not
  1101. be supported. This allows tin indexes to be retrieved from the NNTP server
  1102. and therefore saves a lot of disk space on NNTP client machines.
  1103. X
  1104. NNTP_EXTS
  1105. Define if you want both XUSER & XINDEX NNTP commands.
  1106. X
  1107. NNTP_SERVER_FILE
  1108. Only define if your nntpserver file is other than /etc/nntpserver.
  1109. X
  1110. NNTPLIB
  1111. Contains the path of the file clientlib.o that is part of NNTP software.
  1112. X
  1113. NETLIBS
  1114. Contains the networking libraries needed to link with clientlib.o file.
  1115. X
  1116. X
  1117. Daemon options
  1118. --------------
  1119. X
  1120. INDEX_DAEMON
  1121. Define to make an index file updating daemon version of tin. Note that
  1122. no -lcurses or screen libraries need to be linked with tin when this
  1123. Define is specified. If defined this will automatically undefine all
  1124. NNTP_* defines as the daemon has to be installed on the NNTP server.
  1125. X
  1126. X
  1127. Miscellaneous options
  1128. ---------------------
  1129. X
  1130. SIGTYPE=[void | int]
  1131. Define only if incorrect pointer type warnings occur during compilition.
  1132. SIGTYPE is already defined in tin.h for most compilers signal() call.
  1133. By defining this you will override the default action in tin.h.
  1134. POSIX_JOB_CONTROL
  1135. Define if your machine uses Posix style sigaction() signal handling.
  1136. X
  1137. USE_MKDIR
  1138. Define if your machine does not have the mkdir() system call.
  1139. X
  1140. USE_LONG_FILENAMES
  1141. Define if your machines filesystem supports filenames longer than 14
  1142. chars (default for BSD type systems).
  1143. X
  1144. USE_INVERSE_HACK
  1145. Define if you want inverse video and highlighted bar disabled. (default
  1146. for SCO Unix & SysVR4).  Can be toggled in tin by the 'I' command and
  1147. highlight bar by 'M' command.
  1148. X
  1149. USE_CLEARSCREEN
  1150. Define if the you wish screen to use ClearScreen() and not MoveCursor()
  1151. and CleartoEOLN(). This is perhaps faster on slow terminals but I have
  1152. not really run any speed tests recently.
  1153. X
  1154. SLOW_SCREEN_UPDATE
  1155. Define if running over a low speed connection (ie. 2400baud). It stops
  1156. the percentage info being shown at bottom of select and group menus and
  1157. stops the groupname being displayed at the bottom of the screen as it is
  1158. subscribed/unsubscribed.
  1159. X
  1160. NO_REGEX
  1161. Define if you do not want to use regular expression pattern matching.
  1162. X
  1163. NO_START_LINE
  1164. Do not start editor with line offset into file.
  1165. X
  1166. NO_SHELL_ESCAPE
  1167. Do not allow shell escapes.
  1168. X
  1169. NO_POSTING
  1170. Do not allow posting/followup of articles.
  1171. X
  1172. NO_RESYNC_ACTIVE_FILE
  1173. Do not reread active every RESYNC_ACTIVE_SECS.
  1174. X
  1175. LOG_USER
  1176. Log username & info to /tmp/.tin_log for usage statistics. If reading via
  1177. NNTP the NNTP XUSER extended command will log user info to NNTP server.
  1178. If -DNNTP_XUSER is defined it will define LOG_USER automatically.
  1179. X
  1180. DEBUG
  1181. Define if you want tin to log debug info. to files in /tmp. Activated
  1182. by tin -Dn where n is 1 for NNTP only debug logging and n is 2 for 
  1183. logging all debug info. Debug files written to /tmp are ARTS, ACTIVE,
  1184. BASE and NNTP.
  1185. X
  1186. X
  1187. Compiled & installed on the following machines
  1188. ----------------------------------------------
  1189. X
  1190. 1) * 386 PC & Xenix 2.3.2/ATT SysVr4.0/SCO SysVR3.2/ISC SysVR3.2
  1191. 2) * Sony News & SysVR4/BSD 4.3
  1192. 3) * SNI MX300/MX500 & Sinix 5.22/5.23/5.24
  1193. 4) * Sun 3/4/IPC/SS1/SS2 & SunOS 4.0.3/4.1/4.1.1 
  1194. 5) * Dec 5000/Vax & Ultrix 4.1/4.2
  1195. 6) * Vax 11/785 & BSD 4.3
  1196. 7)   ICL DRS6000 & SysVR4.0 
  1197. 8)   Apricot VX/FT & SCO 3.2.2
  1198. 9)   DIAB DS90 & D-NIX 5.3
  1199. 10)  Amdahl & SysVR3
  1200. 11)  HP 720/845 & HP-UX 7.0
  1201. 12)  IBM RS/6000 & AIX 3.1.5
  1202. 13)  NCR Tower & SysV
  1203. 14)  Atari STe & Minix 1.5.10.3b
  1204. 15)  Powerbook 140 & MacMinix
  1205. 16)  386 PC & Minix 386
  1206. 17)  DG Aviion & DG-UX
  1207. 18)  Sequent S81 & PTX 1.3
  1208. 19)  Convex C220 & Convex Un*x
  1209. X
  1210. * = compiled, installed and used by author 
  1211. SHAR_EOF
  1212. chmod 0600 INSTALL ||
  1213. echo 'restore of INSTALL failed'
  1214. Wc_c="`wc -c < 'INSTALL'`"
  1215. test 7863 -eq "$Wc_c" ||
  1216.     echo 'INSTALL: original size 7863, current size' "$Wc_c"
  1217. rm -f _shar_wnt_.tmp
  1218. fi
  1219. # ============= tin.1 ==============
  1220. if test -f 'tin.1' -a X"$1" != X"-c"; then
  1221.     echo 'x - skipping tin.1 (File already exists)'
  1222.     rm -f _shar_wnt_.tmp
  1223. else
  1224. > _shar_wnt_.tmp
  1225. echo 'x - extracting tin.1 (Text)'
  1226. sed 's/^X//' << 'SHAR_EOF' > 'tin.1' &&
  1227. .ev 1
  1228. .if t .lt 6.85i
  1229. .if n .lt 7.2i
  1230. .ev
  1231. .if t .po .45i
  1232. .if t .ll 6.85i
  1233. .if n .ll 7.2i
  1234. .if \n(mo=1 .ds mo January
  1235. .if \n(mo=2 .ds mo Febraury
  1236. .if \n(mo=3 .ds mo March
  1237. .if \n(mo=4 .ds mo April
  1238. .if \n(mo=5 .ds mo May
  1239. .if \n(mo=6 .ds mo June
  1240. .if \n(mo=7 .ds mo July
  1241. .if \n(mo=8 .ds mo August
  1242. .if \n(mo=9 .ds mo September
  1243. .if \n(mo=10 .ds mo October
  1244. .if \n(mo=11 .ds mo November
  1245. .if \n(mo=12 .ds mo December
  1246. .TH TIN 1 "Version 1.1 PL1" "" "LOCAL"
  1247. .ds ]W \*(mo \n(dy, 19\n(yr
  1248. .nh
  1249. .SH NAME
  1250. tin, rtin, tind - A threaded Netnews reader
  1251. .SH SYNOPSIS
  1252. .B tin/rtin/tind
  1253. [options] [newsgroups]
  1254. .SH DESCRIPTION
  1255. .I Tin
  1256. is a full-screen threaded Netnews reader.  It can read news locally
  1257. (ie. \fI/usr/spool/news\fP) or remotely (rtin or tin -r option) via
  1258. a NNTP (Network News Transport Protocol) server.
  1259. .PP
  1260. Tin has four newsreading levels:
  1261. the newsgroup selection page, the group index page, the thread listing
  1262. page and the article viewer.
  1263. Use the 'h' (help) command to view a list of the commands available at a
  1264. particular level.
  1265. .PP
  1266. On startup Tin will show a list of the newsgroups found in \fI$HOME/.newsrc\fP.
  1267. An arrow '->' or highlighted bar will point to the first newsgroup.
  1268. Move to a group by using the terminal arrow keys (ansi/at386/vt100 only) or 'j'
  1269. and 'k'. Use PgUp/PgDn (ansi/at386/vt100 only) or Ctrl-U and Ctrl-D to
  1270. page up/down. Enter a newsgroup by pressing RETURN.
  1271. .PP
  1272. The TAB key may be used to advance to the next newsgroup with unread articles
  1273. and enter it.
  1274. .SH OPTIONS
  1275. .TP 10
  1276. \fB-c\fP
  1277. create/update index files for every group in \fI$HOME/.newsrc\fP or
  1278. file specified by -f option and mark all articles as read.
  1279. .TP
  1280. \fB-f file\fP
  1281. Use the specified file in place of \fI$HOME/.newsrc\fP.
  1282. .TP
  1283. \fB-h\fP
  1284. help listing all command line options.
  1285. .TP
  1286. \fB-m dir\fP
  1287. mailbox directory to use. Default is \fI$HOME/Mail\fP.
  1288. .TP
  1289. \fB-M user\fP
  1290. mail unread articles to specified user for later reading. For more
  1291. information read section Automatic Mailing and Saving New News. 
  1292. .TP
  1293. \fB-n\fP
  1294. notify the user of any newly created newsgroups since the last session.
  1295. .TP
  1296. \fB-p file\fP
  1297. print program with options.\fP.
  1298. .TP
  1299. \fB-r\fP
  1300. read news remotely from the default NNTP server specified in the
  1301. environment variable NNTPSERVER or contained in the file
  1302. \fI/etc/nntpserver\fP.
  1303. .TP
  1304. \fB-R\fP
  1305. read news saved by -S option (not yet implemented).
  1306. .TP
  1307. \fB-s dir\fP
  1308. save articles to directory. Default is \fI$HOME/News\fP.
  1309. .TP
  1310. \fB-S\fP
  1311. save unread articles for later reading by -R option. For more information
  1312. read section Automatic Mailing and Saving New News.
  1313. .TP
  1314. \fB-u\fP
  1315. create/update index files for every group in \fI$HOME/.newsrc\fP or
  1316. file specified by -f option.
  1317. .TP
  1318. \fB-U\fP
  1319. start tin in the background to update index files while reading news 
  1320. in the foreground.
  1321. .TP
  1322. \fB-v\fP
  1323. verbose mode for -c -M -S -u and -Z options.
  1324. .TP
  1325. \fB-z\fP
  1326. only start tin if there is any new/unread news. If there is news tin
  1327. will position cursor at first group with unread news. Useful for putting
  1328. in login file.
  1329. .TP
  1330. \fB-Z\fP
  1331. check if there is any new/unread news and exit with appropiate status.
  1332. If -v option is specified the number of unread articles in each group
  1333. is printed. An exit code 0 indicates no news, 1 that an error occurred
  1334. and 2 that new/unread news exists. Useful for writing scripts.
  1335. .PP
  1336. Tin can also dynamically change its options by the 'M' menu command.
  1337. Any changes are written to \fI$HOME/.tin/tinrc\fP.
  1338. .PP
  1339. The index daemon version Tind only supports the -f, -h and -v options.
  1340. .SH "INDEX FILES"
  1341. In order to keep track of threads, Tin maintains an index for each newsgroup.
  1342. There are a number of methods in which index files can be created and updated.
  1343. .PP
  1344. The simplest method is that each user creates/updates there own index files
  1345. that are stored in $HOME/.tin/.index. This has the advantage that any user
  1346. can compile and install tin, but the disadvantage is that each user is going
  1347. to be creating duplicate files and using precious disk space. A good way to 
  1348. keep index files updated is to start tin with the -U option that will update
  1349. index files in the background while you are reading news in the foreground.
  1350. You can also update index files via the system batcher cron with the -u
  1351. option:
  1352. .RS
  1353. .nf
  1354. 30 6 * * * /usr/local/bin/tin -u
  1355. .fi
  1356. .RE
  1357. .PP
  1358. A slightly better method is to set tin setuid news and have all index files
  1359. created and updated in the news spool directory (ie. /usr/spool/news/.index).
  1360. This has the advantage that there will only be one copy of the index files
  1361. on each machine on your network, but the disadvantage is that you will have
  1362. tin running setuid news and killing articles will change the central index
  1363. file for a group for all users (Needs fixing!).
  1364. .PP
  1365. A better method is to install the tind index file updating daemon and have
  1366. it create and update index files for all groups in your active file at
  1367. regular intervals in the news spool directory (ie. /usr/spool/news/.index).
  1368. This has the advantage that there will only be one copy of the index files on
  1369. each machine on your network and tin must not be setuid news, but the
  1370. disadvantage is that you will have to have news permissions to install tind
  1371. and root permissions to install an entry in the cron batcher system to have
  1372. tind regularly update index files.
  1373. .PP
  1374. The best method is to install the tind index file updating daemon on your
  1375. NNTP server and have it create and update index files for all groups in your
  1376. active file at regular intervals in the news spool directory (ie. /usr/spool/news/.index).
  1377. This has the advantage that there will only be one copy of the index files on
  1378. the NNTP server for the whole of your network and tin clients must not be
  1379. setuid news, but the disadvantage is that you will have to install my NNTP
  1380. server patches to allow tin to retreive index file from your NNTP server and 
  1381. and you must install an entry in the cron batcher system to have tind 
  1382. regularly update index files (Note that this is the method we use on our
  1383. network of 40-50 machines and have not had any problems).
  1384. .PP
  1385. Entering a group the first time tends to be slow because the index file must
  1386. be built from scratch unless the tind update daemon is being used. Subsequent
  1387. readings of a group will cause incremental updating of the index file.
  1388. .PP
  1389. If reading news remotely and locally updating index files operation will be
  1390. somewhat slower because the articles must be retrieved from the NNTP server.
  1391. .SH "NEWS ADMINISTRATION"
  1392. Maintaining Netnews on large networks of machines can be a pretty time 
  1393. consuming job as I recently discovered when I was given the job of
  1394. maintaining our news system and news users.
  1395. .PP
  1396. Tin is a News User Agent and so most of the users were always asking
  1397. questions or doing things that could be frowned upon by there departments.
  1398. To releive news admins (and especially me) of this features have been added
  1399. to Tin to make life easier.
  1400. .PP
  1401. If my NNTP XUSER patch has been applied to your NNTP server you will be
  1402. able to log the username and machine to your NNTP logfile for usage
  1403. statistics.
  1404. .PP
  1405. A user starting tin for the first time can be automatically subscribed to a
  1406. list of newsgroups that are deemed appropiate by the news administrator. At
  1407. our site the subscriptions file has 125 groups (our active file conatains
  1408. over 400 groups with many only being marginally interesting to most people).
  1409. The subscriptions file should be created in your news lib directory (ie.
  1410. /usr/lib/news/subscriptions) and should have file permissions set to 0644.
  1411. If reading news via NNTP my NNTP LIST SUBSCRIPTIONS patch will have to have 
  1412. been applied to your NNTP server.
  1413. .SH "SCREEN FORMAT"
  1414. Tin has four separate levels of operation: Selection Group level, Group
  1415. level, Thread level and Article level.
  1416. .PP
  1417. At the Selection Group level the title displays the number of subscribed
  1418. groups. The newsgroups are displayed on the left of the screen with the
  1419. number of unread articles displayed on the same line in the middle of
  1420. the screen.
  1421. .RS
  1422. .nf
  1423. .in +.5i
  1424. .ta +\w'1  'u +\w'news.software.readers  'u
  1425. <Selection Num> <Newsgroup> <Num of unread articles>
  1426. .ti -.5i
  1427. i.e.,
  1428. 1    alt.sources            10
  1429. 2    comp.sources.misc        3
  1430. 3    news.software.readers        12
  1431. .in -.5i
  1432. .fi
  1433. .RE
  1434. .PP
  1435. At the Group level the title contains the name of the group, the number
  1436. of conversation threads and total number of articles i.e., alt.sources (7 23).
  1437. If the group has been setup not to thread articles (i.e., alt.sources
  1438. is in \fI$(HOME)/.tin/unthread\fP) the title will be alt.sources (U 23).
  1439. There are two possible display formats as shown below:
  1440. .RS
  1441. .nf
  1442. .in +.5i
  1443. .ta +\w'1   'u +\w'+   'u +\w'3   'u +\w'This question has   'u
  1444. <Selection Num> <Unread> <Responses> <Subject> <Author>
  1445. .ti -.5i
  1446. i.e.,
  1447. 1    +    3    Bnews sources?        iain@estevax.uucp
  1448. 2        1    This question has    ether@net
  1449. .ti -.5i
  1450. or
  1451. .ta +\w'1   'u +\w'+   'u +\w'3   'u +\w'This question has a long subject line   'u
  1452. <Selection Num> <Unread> <Responses> <Subject (longer)>
  1453. .ti -.5i
  1454. i.e.,
  1455. 1    +    3    Bnews sources?
  1456. 2        1    This question has a longer subject line
  1457. .in -.5i
  1458. .fi
  1459. .RE
  1460. .PP
  1461. At the Article level the page header has the following format:
  1462. .RS
  1463. .nf
  1464. .in +.5i
  1465. .ta \w'<Date posted> <Newsgroup>    'u
  1466. <Date posted> <Newsgroup>    <Thread 1 of n>
  1467. <Article Num> <Subject>    <Num of responses in thread>
  1468. <Author>    <Organization>
  1469. X
  1470. <Article body>
  1471. .ti -.5i
  1472. i.e.,
  1473. .ta \w'24 Jul 15:20:03 GMT   'u +\w'Bnews sources?   'u
  1474. 24 Jul 15:20:03 GMT    alt.sources    Thread 1 of 2
  1475. Article 452    Bnews sources?    3 responses
  1476. iain@anl433.uucp        Organization name
  1477. X
  1478. <Article boby>
  1479. .in -.5i
  1480. .fi
  1481. .RE
  1482. .SH "COMMON MOVING KEYS"
  1483. This table shows the common keys/commands for moving at all three levels
  1484. within Tin.
  1485. .RS
  1486. .nf
  1487. .ta \w'Beginning of list/article  'u +\w'ansi/at386/vt100  'u
  1488. X    ansi/at386/vt100    Other Terminals
  1489. Beginning of list/article    \fBHome\fP    \fB1\fP (\fB^R\fP or \fBg\fP at article level)
  1490. End of list/article    \fBEnd\fP    \fB$\fP (also \fBG\fP at article level)
  1491. Page Up    \fBPgUp\fP    \fB^U\fP or \fBb\fP 
  1492. Page Down    \fBPgDn\fP    \fB^D\fP or \fB<SPACE>\fP
  1493. Line Up    \fBUp arrow\fP    \fBk\fP (not at article level)
  1494. Line Down    \fBDown arrow\fP    \fBj\fP (not at article level)
  1495. .fi
  1496. .RE
  1497. .SH "COMMON EDITING COMMANDS"
  1498. An emacs style editing package allows the easy editing of input strings.
  1499. An history list allows the easy re-use of previously entered strings.
  1500. The following commands are available when editing a string:
  1501. X
  1502. .TP 10
  1503. \fB^A,^E\fP
  1504. move to beginnning or end of line, respectively.
  1505. .TP
  1506. \fB^F,^B\fP
  1507. nondestructive move forward or back one location, respectively.
  1508. .TP
  1509. \fB^D\fP
  1510. delete the character currently under the cursor, or send EOF if no
  1511. characters in the buffer.
  1512. .TP
  1513. \fB^H,<DEL>\fP
  1514. delete character left of the cursor.
  1515. .TP
  1516. \fB^K\fP
  1517. delete from cursor to end of line.
  1518. .TP
  1519. \fB^P,^N\fP
  1520. move through history, previous and next, respectively.
  1521. .TP
  1522. \fB^L,^R\fP
  1523. redraw the current line.
  1524. .TP
  1525. \fB<CR>\fP
  1526. places line on history list if nonblank, appends newline and returns
  1527. to the caller.
  1528. .TP
  1529. \fB<ESC>\fP
  1530. aborts the present editing operation.
  1531. .SH "NEWSGROUP SELECTION COMMANDS"
  1532. .TP 10
  1533. \fB4\fP
  1534. Select group 4.
  1535. .TP
  1536. \fB^K\fP
  1537. Delete current group from \fI$HOME/.newsrc\fP file.
  1538. .TP
  1539. \fB^L\fP
  1540. Redraw page.
  1541. .TP
  1542. \fB^R\fP
  1543. Reset \fI$HOME/.newsrc\fP file.
  1544. .TP
  1545. \fB<CR>\fP
  1546. Read current group.
  1547. .TP
  1548. \fB<TAB>\fP
  1549. View next unread group.
  1550. SHAR_EOF
  1551. true || echo 'restore of tin.1 failed'
  1552. fi
  1553. echo 'End of tin1.1 part 1'
  1554. echo 'File tin.1 is continued in part 2'
  1555. echo 2 > _shar_seq_.tmp
  1556. exit 0
  1557.  
  1558. --
  1559. NAME   Iain Lea 
  1560. EMAIL  iain%anl433.uucp@germany.eu.net
  1561. SNAIL  Siemens AG, ANL A433SZ, Gruendlacher Str. 248, 8510 Fuerth, Germany.
  1562. PHONE  +49-911-3089-407 (work) +49-911-331963 (home) +49-911-3089-290 (FAX)  
  1563. -- 
  1564.  Dr. med. dipl.-math Dieter Becker           Tel.: (0 / +49) 6841 - 16 3046
  1565.  Medizinische Universitaets- und Poliklinik  Fax.: (0 / +49) 6841 - 16 3369
  1566.  Innere Medizin III                         
  1567.  D - 6650 Homburg / Saar                     Email: becker@med-in.uni-sb.de
  1568. exit 0 # Just in case...
  1569.