home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-03-27 | 52.6 KB | 1,574 lines |
- Newsgroups: comp.sources.misc
- From: iain%anl433.uucp@germany.eu.net (Iain J. Lea)
- Subject: v29i019: tin - threaded full screen newsreader v1.1P1, Part01/12
- Message-ID: <csm-v29i019=tin.212742@sparky.IMD.Sterling.COM>
- X-Md4-Signature: e81aaa02f82f132fc7f5248db31c095d
- Date: Fri, 27 Mar 1992 03:28:12 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: iain%anl433.uucp@germany.eu.net (Iain J. Lea)
- Posting-number: Volume 29, Issue 19
- Archive-name: tin/part01
- Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
- Supersedes: tin: Volume 28, Issue 45-55
-
- This is version 1.1 PL1 (patchlevel 1) of the tin newsreader.
-
- - Based more on Notes and tass than rn type newreaders.
-
- - Full screen, easy to use with on-line help at all levels.
-
- - Reads news locally (ie. /usr/spool/news) and via NNTP.
-
- - Threads on Subject: and/or Archive-name: mail headers.
-
- - Four different operating levels:
- o Group selection level
- o Thread selection level
- o Article selection level
- o Article viewer
-
- - Same interface to mail, pipe, print and save articles.
-
- - Batch mode to mail/save news when user is on holiday.
-
- Major improvements over tin 1.1 PL0 are the following:
-
- o Added builtin NNTP inews so no need for mini-inews on client machines.
-
- o Added -DNNTP_ONLY define to compile tin to always read via NNTP.
-
- o Added XUSER and XINDEX extensions to NNTP protocol (RFC977) to allow
- index files to be stored on the NNTP server and retreived by clients
- to save each client having their own copy of the same index files.
- (NOTE. I will be posting the patches to NNTP in the NEAR future)
-
- o Added routine to reread active file at set intervals. A little
- shakey so if you do not want it define -DNO_RESYNC_ACTIVE_FILE
- in Makefile at compile time. Default time is every 5 minutes.
-
- o Added tind index file daemon so that only one copy of each index
- file is required and this can be stored locally / on the NNTP server.
-
- o Added 'r' command at group level to toggle display of all and just
- unread articles.
-
- o Added 'T' command at thread level to tag articles.
-
- o Added support for Convex 200 series machines.
-
- o Fixed TAB command to default to previous behaviour as in tin v1.0 PL7.
-
- o Fixed input editing routine that was causing SIGSEGV errors.
-
- o Fixed printing/piping threads under NNTP.
-
- o Fixed to check window size when restarted after being suspended.
-
- o Fixed tin -U background indexing process to become a full daemon
- if foreground process quits/dies.
-
- o Fixed opening welcome screen so as not to be garbled.
-
- o Fixed POSIX_JOB_CONTROL because it relied on SVR4 extensions.
-
- For more bug fixes, changes & additions read the CHANGES & TODO files.
-
- For compilation and installation information read the INSTALL file.
-
- Enjoy
- Iain.
-
- #!/bin/sh
- # This is tin1.1, a shell archive (shar 3.47)
- # made 03/22/1992 17:07 UTC by iain%anl433.uucp@germany.eu.net
- # Source directory /var/home/lea/.src/tin/111
- #
- # existing files will NOT be overwritten unless -c is specified
- #
- # This is part 1 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- #
- # This shar contains:
- # length mode name
- # ------ ---------- ------------------------------------------
- # 10466 -rw------- Makefile
- # 867 -rw------- MANIFEST
- # 3253 -rw------- README
- # 7851 -rw------- CHANGES
- # 3490 -rw------- TODO
- # 7863 -rw------- INSTALL
- # 35435 -rw------- tin.1
- # 2247 -rw------- wildmat.3
- # 44431 -rw------- tin.nrf
- # 8707 -rw------- active.c
- # 24273 -rw------- art.c
- # 7612 -rw------- curses.c
- # 3371 -rw------- debug.c
- # 12199 -rw------- feed.c
- # 11438 -rw------- getline.c
- # 22085 -rw------- group.c
- # 2510 -rw------- hashstr.c
- # 5257 -rw------- help.c
- # 2409 -rw------- inews.c
- # 11316 -rw------- init.c
- # 11211 -rw------- kill.c
- # 20905 -rw------- lang.c
- # 12102 -rw------- main.c
- # 6765 -rw------- memory.c
- # 15357 -rw------- misc.c
- # 21037 -rw------- newsrc.c
- # 12769 -rw------- open.c
- # 22692 -rw------- page.c
- # 20624 -rw------- post.c
- # 3318 -rw------- prompt.c
- # 22745 -rw------- rcfile.c
- # 25511 -rw------- save.c
- # 2662 -rw------- screen.c
- # 7141 -rw------- search.c
- # 20378 -rw------- select.c
- # 12160 -rw------- signal.c
- # 14471 -rw------- thread.c
- # 4749 -rw------- wildmat.c
- # 10183 -rw------- tin.h
- # 14795 -rw------- extern.h
- # 3725 -rw------- nntp.h
- # 24466 -rw------- proto.h
- # 584 -rw------- patchlev.h
- #
- if test -r _shar_seq_.tmp; then
- echo 'Must unpack archives in sequence!'
- echo Please unpack part `cat _shar_seq_.tmp` next
- exit 1
- fi
- # ============= Makefile ==============
- if test -f 'Makefile' -a X"$1" != X"-c"; then
- echo 'x - skipping Makefile (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting Makefile (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'Makefile' &&
- # Makefile for tin - for tin compiler flag options read INSTALL and README.
- X
- EXE = tin
- BINDIR = /usr/local/bin
- MANDIR = /usr/man/man1
- X
- STRIP = strip
- ROFF = + drf -F Helvetica -man3
- PRINT = -Pps0
- BASE_VER= ../110
- PATCH_VER = 110
- MAIL_ADDR = iain%anl433.uucp@germany.eu.net
- X
- HFILES = tin.h extern.h nntp.h proto.h patchlev.h
- X
- CFILES = active.c art.c curses.c debug.c feed.c getline.c group.c \
- X hashstr.c help.c inews.c init.c kill.c lang.c main.c memory.c \
- X misc.c newsrc.c open.c page.c post.c prompt.c rcfile.c save.c \
- X screen.c search.c select.c signal.c thread.c wildmat.c
- X
- OFILES = active.o art.o curses.o debug.o feed.o getline.o group.o \
- X hashstr.o help.o inews.o init.o kill.o lang.o main.o memory.o \
- X misc.o newsrc.o open.o page.o post.o prompt.o rcfile.o save.o \
- X screen.o search.o select.o signal.o thread.o wildmat.o
- X
- SUPPORT = Makefile MANIFEST README CHANGES TODO INSTALL *.[13] $(EXE).nrf
- X
- LINTFLAGS=-a -c -h -n -x
- X
- CC=cc
- X
- .c.o:
- X $(CC) $(CFLAGS) $*.c
- X
- all:
- X @echo "There is no default. Specify one of the following targets."
- X @echo " make bsd (BSD/Dec/Next/Sun)"
- X @echo " make sysv (SysV)"
- X @echo " make sysvr4 (SysV R4)"
- X @echo " make sco (SCO Unix)"
- X @echo " make aix (IBM AIX)"
- X @echo " make xenix (Xenix 386)"
- X @echo " make sinix (SNI SysV)"
- X @echo " make tower (NCR Tower)"
- X @echo " make minix (Minix 386)"
- X @echo " make dgux (DG Aviion)"
- X
- # For Berkeley systems:
- # NNTPLIB=clientlib.o \
- #
- bsd:
- X @echo "Compiling for BSD/Dec/Next/Sun..."
- X @$(MAKE) CFLAGS='-c -O -DBSD -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses -ltermcap" \
- X EXE=tin linkit
- X
- # For System V:
- # NNTPLIB=clientlib.o \
- # NETLIBS="-lnet -lnsl_s" \
- #
- sysv:
- X @echo "Compiling for System V..."
- X @$(MAKE) CFLAGS='-c -O -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses -ltermcap" \
- X EXE=tin linkit
- X
- # For System V Release 4:
- # NNTPLIB=clientlib.o \
- # NETLIBS="-lnsl -lsocket" \
- #
- sysvr4:
- X @echo "Compiling for System V Release 4..."
- X @$(MAKE) CFLAGS='-c -O -DSVR4 -DPOSIX_JOB_CONTROL -DUSE_INVERSE_HACK -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses -ltermlib" \
- X EXE=tin linkit
- X
- # For SCO Unix:
- # NNTPLIB=clientlib.o \
- # NETLIBS="-lnsl_s -lsocket" \
- #
- sco:
- X @echo "Compiling for SCO Unix..."
- X @$(MAKE) CFLAGS='-c -O -UM_XENIX -DUSE_INVERSE_HACK -DLIBDIR="\"/usr/lib/news\"" -DSPOOLDIR="\"/usr/spool/news\""' \
- X LIBS="-lcurses -lgen -lc_s" \
- X EXE=tin linkit
- X
- # For IBM AIX:
- # NNTPLIB=clientlib.o \
- #
- aix:
- X @echo "Compiling for AIX..."
- X @$(MAKE) CFLAGS='-c -O -DSYSV -DRS6000 -DREAD_CHAR_HACK -DUSE_LONG_FILENAMES -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses -ltermcap" \
- X EXE=tin linkit
- X
- # For Xenix 386:
- # NNTPLIB=clientlib.o \
- # NETLIBS="-lsocket" \
- #
- xenix:
- X @echo "Compiling for Xenix 386..."
- X @$(MAKE) CFLAGS='-c -Zi -DSYSV -DLIBDIR="\\"/usr/lib/news\\"" -DSPOOLDIR="\\"/usr/spool/news\\""' \
- X LIBS="-lcurses -ltinfo -lx" \
- X LFLAGS=-Zi EXE=tin linkit
- X
- # For SNI Sinix:
- # NNTPLIB=clientlib.o \
- #
- sinix:
- X @echo "Compiling for SNI Sinix..."
- X @$(MAKE) CFLAGS='-c -O -DUSE_MKDIR -DLIBDIR=\\"/usr/lib/news\\" -DSPOOLDIR=\\"/usr/spool/news\\"' \
- X LIBS="-lcurses" \
- X EXE=tin linkit
- X
- # For NCR Tower:
- # NNTPLIB=clientlib.o \
- # NETLIBS="-lnet -lnsl_s" \
- #
- tower:
- X @echo "Compiling for NCR Tower..."
- X @$(MAKE) CFLAGS='-c -O -DSYSV -DNCR -DISTRING -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses -ltermcap" \
- X EXE=tin linkit
- X
- # For Minix 386:
- #
- minix:
- X @echo "Compiling for Minix 386..."
- X @$(MAKE) CFLAGS='-c -O -DMINIX -D_POSIX_SOURCE -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses" \
- X EXE=tin linkit
- X chmem +131072 $(EXE)
- X
- # For Data General Aviion
- # NNTPLIB=clientlib.o \
- #
- dgux:
- X @echo "Compiling for DG Aviion..."
- X @$(MAKE) CFLAGS='-c -O -DUSE_LONG_FILENAMES -DPOSIX_JOB_CONTROL -DUSE_INVERSE_HACK -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses" \
- X EXE=tin linkit
- X
- # THE FOLLOWING ARE SITE SPECIFIC - IGNORE !!!
- anl433:
- X @echo "Compiling for ANL433 with NNTP ONLY..."
- X @$(MAKE) CFLAGS='-c -g -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DDEBUG -DSIGTYPE=void -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X LIBS="-lcurses -ltermcap" \
- X NNTPLIB=clientlib.o \
- X NETLIBS="-linet -lnsl_s" \
- X EXE=tin linkit
- X
- daemon:
- X @echo "Compiling for ANL433 with INDEX DAEMON..."
- X @$(MAKE) CFLAGS='-c -O -DINDEX_DAEMON -DDEBUG -DSIGTYPE=void -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X EXE=tind linkit
- X
- home:
- X @echo "Compiling for (HOME) Xenix 386..."
- X @$(MAKE) CFLAGS='-c -W2 -Zi -DSYSV -DRESYNC_ACTIVE_SECS=30 -DDEBUG -DLIBDIR="\\"/usr/lib/news\\"" -DSPOOLDIR="\\"/usr/spool/news\\""' \
- X LIBS="-lcurses -ltinfo -lx" \
- X LFLAGS=-Zi EXE=tin linkit
- X
- mx331:
- X @echo "Compiling for MX331 with NNTP ONLY..."
- X @$(MAKE) CFLAGS='-c -O -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DUSE_MKDIR -DLIBDIR=\\"/usr/lib/news\\" -DSPOOLDIR=\\"/usr/spool/news\\"' \
- X NNTPLIB=clientlib.o \
- X LIBS="-lcurses" \
- X EXE=tin linkit
- X
- mx351:
- X @echo "Compiling for MX351 with NNTP ONLY..."
- 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\"' \
- X NNTPLIB=clientlib.o \
- X NETLIBS="-lnsl -lsocket" \
- X LIBS="-lcurses -ltermlib" \
- X EXE=tin linkit
- X
- norisc:
- X @echo "Compiling for NORISC with NNTP..."
- X @$(MAKE) CFLAGS='-c -O -DBSD -DNNTP_ABLE -DDEBUG -DLIBDIR=\"/news/lib\" -DSPOOLDIR=\"/news/spool\"' \
- X NNTPLIB=/news/nntp/clientlib.o \
- X LIBS="-lcurses -ltermcap" \
- X EXE=tin linkit
- X
- sony01:
- X @echo "Compiling for SONY01 with NNTP ONLY..."
- X @$(MAKE) CC=gcc CFLAGS='-c -O -Wall -DBSD -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DDEBUG -DLIBDIR=\"/a/NEWS/lib\" -DSPOOLDIR=\"/a/NEWS/news\"' \
- X NNTPLIB=./clientlib.o \
- X LIBS="-lcurses -ltermcap" \
- X EXE=tin linkit
- X
- sun02:
- X @echo "Compiling for SUN02 with NNTP ONLY..."
- X @$(MAKE) CFLAGS='-c -O -DBSD -DNNTP_ONLY -DNNTP_EXTS -DNNTP_INEWS -DDEBUG -DLIBDIR=\"/usr/lib/news\" -DSPOOLDIR=\"/usr/spool/news\"' \
- X NNTPLIB=clientlib.o \
- X LIBS="-lcurses -ltermcap" \
- X EXE=tin linkit
- X
- linkit: $(OFILES)
- X @echo "Linking $(EXE)..."
- X $(CC) $(LFLAGS) -o $(EXE) $(OFILES) $(NNTPLIB) $(NETLIBS) $(LIBS)
- X @ls -l $(EXE)
- X
- install:
- X @echo "Installing $(EXE)..."
- X @$(STRIP) $(EXE)
- X @-mv $(EXE) $(BINDIR)
- X @-rm $(BINDIR)/r$(EXE)
- X @ln $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
- X @chmod 755 $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
- X @ls -l $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
- X @cp $(EXE).1 $(MANDIR)
- X
- install_setuid:
- X @echo "Installing SETUID $(EXE)..."
- X @$(STRIP) $(EXE)
- X @-mv $(EXE) $(BINDIR)
- X @chown news $(BINDIR)/$(EXE)
- X @-rm $(BINDIR)/r$(EXE)
- X @ln $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
- X @su news -c "chmod 4755 $(BINDIR)/$(EXE)"
- X @su news -c "chmod 4755 $(BINDIR)/r$(EXE)"
- X @ls -l $(BINDIR)/$(EXE) $(BINDIR)/r$(EXE)
- X @cp $(EXE).1 $(MANDIR)
- X
- proto:
- X @echo "Generating function prototypes for proto.h..."
- # @cextract -DSIGTSTP -DSIGWINCH $(CFILES) > PROTO.H
- # @-mv PROTO.H proto.h
- X @echo "#if __STDC__" > PROTO.H
- X @echo " " >> PROTO.H
- X @cproto -e $(CFILES) >> PROTO.H
- X @echo " " >> PROTO.H
- X @echo "#else" >> PROTO.H
- X @echo " " >> PROTO.H
- X @cproto -e -f1 $(CFILES) >> PROTO.H
- X @echo " " >> PROTO.H
- X @echo "#endif" >> PROTO.H
- X @-mv PROTO.H proto.h
- X
- nroff:
- X @echo "Creating nroff man page..."
- X @nroff -man $(EXE).1 > $(EXE).nrf
- X
- manifest:
- X @echo "Creating MANIFEST..."
- X @echo "MANIFEST for tin newsreader (`date`)" > MANIFEST
- X @echo "----------------------------------------------------------" >> MANIFEST
- X @wc -c $(SUPPORT) $(HFILES) $(CFILES) >> MANIFEST
- X
- shar:
- X @echo "Generating shell archive..."
- X @make nroff
- X @make manifest
- X @shar -a -n $(EXE)1.1 -s $(MAIL_ADDR) -L50 -o ../$(EXE).shar $(SUPPORT) $(CFILES) $(HFILES)
- X
- uuencode:
- X @make tar
- X @echo "Uuencoding $(EXE).tar.Z..."
- X @uuencode $(EXE).tar.Z $(EXE).tar.Z > $(EXE).tar.Z.uue
- X @ls -l $(EXE).tar.Z.uue
- X
- diff:
- X @echo "Generating diffs against $(BASE_VER)..."
- X @make nroff
- X @make manifest
- X @-mv -f $(EXE).diff $(EXE).diff-
- X @-diff -rcs $(BASE_VER) . > $(EXE).diff
- X @ls -l $(EXE).diff
- X
- patch:
- X @make diff
- X @echo "Generating patch against $(BASE_VER)..."
- X @-mv $(EXE).diff $(EXE).patch$(PATCH_VER)
- X @shar -a -n $(EXE) -s $(MAIL_ADDR) -L50 -o patch$(PATCH_VER).shar $(EXE).patch$(PATCH_VER)
- X @ls -l patch$(PATCH_VER).shar*
- X
- tar:
- X @echo "Generating compressed tar file..."
- X @-rm $(EXE).tar $(EXE).tar.Z > /dev/null 2>&1
- X @tar cvf $(EXE).tar $(SUPPORT) $(CFILES) $(HFILES)
- X @echo "Compressing $(EXE).tar..."
- X @compress $(EXE).tar
- X @ls -l $(EXE).tar.Z
- X
- zoo:
- X @echo "Generating zoo archive file..."
- X @-rm $(EXE).zoo > /dev/null 2>&1
- X @zoo ah $(EXE).zoo $(SUPPORT) $(CFILES) $(HFILES)
- X @ls -l $(EXE).zoo
- X
- tags:
- X @echo "Generating tags (results in ./tags)..."
- X @-rm tags
- X @ctags $(HFILES) $(CFILES)
- X
- lint:
- X @echo "Linting source (results in ./LINT)..."
- X @lint $(LINTFLAGS) -DNNTP_ABLE $(CFILES) > LINT
- X
- clean:
- X @echo "Cleaning..."
- X @-'rm' -rf $(OFILES) '#*' $(EXE).diff*
- X
- clobber:
- X @echo "Clobbering..."
- X @-'rm' -rf $(OFILES) '#*' tags $(EXE) $(EXE).diff* patch.shar*
- X
- cflow:
- X @echo "Creating cflow for $(EXE)..."
- X @cflow $(CFILES) > cflow.$(EXE) &
- X
- cscope:
- X @echo "Creating cscope database $(EXE)..."
- X @cscope $(SUPPORT) $(HFILES) $(CFILES)
- X
- man:
- X @echo "Printing $(EXE) manual to $(PRINT)..."
- X @$(ROFF) $(PRINT) $(EXE).1
- X
- print:
- X @for FILE in $(HFILES) $(CFILES) $(SUPPORT); do \
- X echo "Printing $$FILE to $(PRINT)..."; \
- X expand -4 $$FILE | enscript -2r -h -G $(PRINT) -b $$FILE; \
- X done
- X
- active.o: active.c $(HFILES)
- art.o: art.c $(HFILES)
- curses.o: curses.c $(HFILES)
- debug.o: debug.c $(HFILES)
- feed.o: feed.c $(HFILES)
- getline.o: getline.c $(HFILES)
- group.o: group.c $(HFILES)
- hashstr.o: hashstr.c $(HFILES)
- help.o: help.c $(HFILES)
- inews.o: inews.c $(HFILES)
- init.o: init.c $(HFILES)
- kill.o: kill.c $(HFILES)
- lang.o: lang.c $(HFILES)
- main.o: main.c $(HFILES)
- memory.o: memory.c $(HFILES)
- misc.o: misc.c $(HFILES)
- newsrc.o: newsrc.c $(HFILES)
- open.o: open.c nntp.h
- page.o: page.c $(HFILES)
- post.o: post.c $(HFILES)
- prompt.o: prompt.c $(HFILES)
- rcfile.o: rcfile.c $(HFILES)
- save.o: save.c $(HFILES)
- screen.o: screen.c $(HFILES)
- search.o: search.c $(HFILES)
- select.o: select.c $(HFILES)
- signal.o: signal.c $(HFILES)
- thread.o: thread.c $(HFILES)
- wildmat.o: wildmat.c
- SHAR_EOF
- chmod 0600 Makefile ||
- echo 'restore of Makefile failed'
- Wc_c="`wc -c < 'Makefile'`"
- test 10466 -eq "$Wc_c" ||
- echo 'Makefile: original size 10466, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= MANIFEST ==============
- if test -f 'MANIFEST' -a X"$1" != X"-c"; then
- echo 'x - skipping MANIFEST (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting MANIFEST (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'MANIFEST' &&
- MANIFEST for tin newsreader (Sun Mar 22 18:07:24 MET 1992)
- ----------------------------------------------------------
- X 10466 Makefile
- X 118 MANIFEST
- X 3253 README
- X 7851 CHANGES
- X 3490 TODO
- X 7863 INSTALL
- X 35435 tin.1
- X 2247 wildmat.3
- X 44431 tin.nrf
- X 10183 tin.h
- X 14795 extern.h
- X 3725 nntp.h
- X 24466 proto.h
- X 584 patchlev.h
- X 8707 active.c
- X 24273 art.c
- X 7612 curses.c
- X 3371 debug.c
- X 12199 feed.c
- X 11438 getline.c
- X 22085 group.c
- X 2510 hashstr.c
- X 5257 help.c
- X 2409 inews.c
- X 11316 init.c
- X 11211 kill.c
- X 20905 lang.c
- X 12102 main.c
- X 6765 memory.c
- X 15357 misc.c
- X 21037 newsrc.c
- X 12769 open.c
- X 22692 page.c
- X 20624 post.c
- X 3318 prompt.c
- X 22745 rcfile.c
- X 25511 save.c
- X 2662 screen.c
- X 7141 search.c
- X 20378 select.c
- X 12160 signal.c
- X 14471 thread.c
- X 4749 wildmat.c
- X 536681 total
- SHAR_EOF
- chmod 0600 MANIFEST ||
- echo 'restore of MANIFEST failed'
- Wc_c="`wc -c < 'MANIFEST'`"
- test 867 -eq "$Wc_c" ||
- echo 'MANIFEST: original size 867, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= README ==============
- if test -f 'README' -a X"$1" != X"-c"; then
- echo 'x - skipping README (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting README (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'README' &&
- This is version 1.1 PL1 (patchlevel 1) of the tin newsreader.
- X
- - Based more on Notes and tass than rn type newreaders.
- X
- - Full screen, easy to use with on-line help at all levels.
- X
- - Reads news locally (ie. /usr/spool/news) and via NNTP.
- X
- - Threads on Subject: and/or Archive-name: mail headers.
- X
- - Four different operating levels:
- X o Group selection level
- X o Thread selection level
- X o Article selection level
- X o Article viewer
- X
- - Same interface to mail, pipe, print and save articles.
- X
- - Batch mode to mail/save news when user is on holiday.
- X
- NOTE: PLEASE READ THE MAN PAGE tin.1 BEFORE SENDING A BUG REPORT/COMMENT.
- X
- Major improvements over tin 1.1 PL0 are the following:
- X
- o Added builtin NNTP inews so no need for mini-inews on client machines.
- X
- o Added -DNNTP_ONLY define to compile tin to always read via NNTP.
- X
- o Added XUSER and XINDEX extensions to NNTP protocol (RFC977) to allow
- X index files to be stored on the NNTP server and retreived by clients
- X to save each client having their own copy of the same index files.
- X (NOTE. I will be posting the patches to NNTP in the NEAR future)
- X
- o Added routine to reread active file at set intervals. A little
- X shakey so if you do not want it define -DNO_RESYNC_ACTIVE_FILE
- X in Makefile at compile time. Default time is every 5 minutes.
- X
- o Added tind index file daemon so that only one copy of each index
- X file is required and this can be stored locally / on the NNTP server.
- X
- o Added 'r' command at group level to toggle display of all and just
- X unread articles.
- X
- o Added 'T' command at thread level to tag articles.
- X
- o Added support for Convex 200 series machines.
- X
- o Fixed TAB command to default to previous behaviour as in tin v1.0 PL7.
- X
- o Fixed input editing routine that was causing SIGSEGV errors.
- X
- o Fixed printing/piping threads under NNTP.
- X
- o Fixed to check window size when restarted after being suspended.
- X
- o Fixed tin -U background indexing process to become a full daemon
- X if foreground process quits/dies.
- X
- o Fixed opening welcome screen so as not to be garbled.
- X
- o Fixed POSIX_JOB_CONTROL because it relied on SVR4 extensions.
- X
- For more bug fixes, changes & additions read the CHANGES & TODO files.
- X
- For compilation and installation information read the INSTALL file.
- X
- I wish to thank all the people (and especially jim Robinson) that sent
- me bug fixes and comments for tin. I still want to hear of any bug
- reports, gripes and comments but please read the INSTALL and tin.1 man
- page before anything :-)!.
- X
- I am still off the net, but am contactable at the following address:
- X
- X Iain J. Lea
- X BrueckenStr. 12
- X 8500 Nuernberg 90
- X Germany.
- X Phone. +49-911-331963 (home)
- X Phone. +49-911-3089-407 (work)
- X Phone. +49-911-3089-290 (FAX)
- X Email. iain%anl433.uucp@germany.eu.net
- X
- Due to above problem if anyone wants the latest released version or
- an early version of the next patchlevel I am willing to send a copy
- in unix compressed tar or msdos format 5.25 or 3.5 inch disks.
- I will make a small handling charge for this service as listed below:
- X Germany 15 Deustche Marks
- X England 5 Pounds Sterling
- X USA 10 Dollars
- Please send money/cheque with self-addressed envelope to above addess.
- X
- Enjoy
- X Iain.
- SHAR_EOF
- chmod 0600 README ||
- echo 'restore of README failed'
- Wc_c="`wc -c < 'README'`"
- test 3253 -eq "$Wc_c" ||
- echo 'README: original size 3253, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= CHANGES ==============
- if test -f 'CHANGES' -a X"$1" != X"-c"; then
- echo 'x - skipping CHANGES (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting CHANGES (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'CHANGES' &&
- CHANGES tin v1.1 PL0 -> tin 1.1 PL1
- -----------------------------------
- X
- 1) crs89rdb@brunel.ac.uk (Roger Binns)
- X BUG. active file is read in but if new news arrives while one
- X is already reading news it will not be shown.
- X FIX. active.c - added resync_active_file() to read active file
- X at set intervals.
- X
- 2) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. 5% of all recieved bug reports are empty!?!
- X FIX. post.c - added confirm question before mailing bug report.
- X
- 3) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. Under SYSV doing a Ctrl-\ in foreground process when tin -U
- X kills background updating process.
- X FIX. main.c - added signal (SIGQUIT, SIG_IGN) to background process.
- X
- 4) m31z@jupiter.sun.csd.unb.ca (Steven Cogswell)
- X BUG. When editing 'M' entries or killing an articles get SIGSEGV.
- X FIX. prompt.c - changed input parameter from (char *) 0 to "".
- X
- 5) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. error_message() is missing 2nd parameter in some cases.
- X FIX. getline.c main.c misc.c open.c - added "" as 2nd parameter.
- X
- 6) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. tin -U background indexing process dies if foreground tin exits
- X or receives certain signals.
- X FIX. main.c - set background process to be its own process leader
- X and to disassociate its control terminal and ignore signals.
- X
- 7) mfaurot@bogart.uucp (Michael Faurot)
- X BUG. The opening welcome screen is garbled on certain machines.
- X FIX. main.c - applied supplied patch.
- X
- 8) uunet!atlantis!bugs (Dan Berry)
- X BUG. Various functions had wrong number of parameters.
- X FIX. main.c getline.c - applied supplied patch.
- X
- 9) robinson@mdivax1.mdd.comm.mot.com (Jim Robinson)
- X BUG. Help message about 'u' command at group level missing.
- X FIX. help.c - added txt_help_u string to group help array.
- X
- 10) robert@sys.sweden.dg.com (Robert Claeson)
- X ADD. main.c - added NNTP_ONLY define to always read via NNTP.
- X
- 11) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. During compilation warning are issued that signal() call has
- X incorrect return type (ie. void / int).
- X FIX. tin.h - added #define SIGTYPE gobbly-gook for a few different
- X compilers and machines.
- X
- 12) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. Under interactive SYSVR3.2 tin does not auto resize under an xterm.
- X FIX. tin.h - removed AUTO_RESIZE define and added a few #include files.
- X
- 13) djm@eng.umd.edu (David MacKenzie)
- X BUG. POSIX_JOB_CONTROL relied on SVR4 extensions.
- X FIX. signal.c - applied supplied patch.
- X
- 14) hakanl@lulea.telesoft.se (Hakan Lennestal)
- X BUG. SunOS 4.1.1 does not handle setreuid() & setregid() correctly.
- X FIX. misc.c - applied supplied patch.
- X
- 15) marc@CAM.ORG (Marc Boucher)
- X BUG. SVR4 can support LONG_FILENAMES and replaced libucb (buggy).
- X FIX. Makefile - applied supplied patch.
- X
- 16) crs89rdb@brunel.ac.uk (Roger Binns)
- X BUG. Resizing a xterm while tin is suspended causes tin to use the
- X wrong screen size when it is restarted.
- X FIX. signal.c - added routine to check window size when restarted.
- X
- 17) ted@isgtec.UUCP (Ted Richards)
- X BUG. On BSD 'o' command forces -Pps0 to be used instead of -Pps.
- X FIX. feed.c - changed default printer from -Pps0 to -Pps.
- X
- 18) otto@norisc.uucp (Otto Niesser)
- X BUG. TAB command at page level was changed for the worst ???
- X FIX. page.c - Due to HUGE outcry put an #ifdef in TAB command so
- X people have have the 1.0 PL7 / 1.1 PL0 behaviour. For #ifdef
- X info read the INSTALL file and Makefile.
- X
- 19) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. Mailing a thread is a little tiresome when asked to confirm
- X the sending of every article.
- X FIX. feed.c post.c - added code to ask once to send all the thread.
- X
- 20) unido!bermuda!dansmith (Daniel Smith)
- X BUG. ~/Mail & ~/News directories are always created whether -d or
- X -m are defined.
- X FIX. init.c main.c - if -d / -f are used they will override ~/Mail
- X and ~/News default values.
- X
- 21) kleeman@informatik.uni-wuerzburg.de (Fritz Kleeman)
- X BUG. Error in copy_fp() when printing/piping a thread via NNTP.
- X FIX. open.c - applied supplied patch.
- X
- 22) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. 'c' command does not automatically goto next page of groups.
- X FIX. select.c - changed code to goto next page if at bottom.
- X
- 23) john@iti.org (John Sauter)
- X BUG. Always points to 2nd group in group selection index.
- X FIX. main.c - check_any_unread_news() was not always returning
- X a valid value. Only occured on BSD and sony NEWS here?!?.
- X
- 24) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X ADD. Added XUSER nntp extension to log_user() to log client user
- X info to nntp server logfile.
- X
- 25) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X ADD. Added auto_subscribe_groups() routine to automatically subscribe
- X user to groups specified in /usr/lib/news/subscriptions by news
- X admin. If reading via NNTP does a LIST SUBSCRIPTIONS command.
- X
- 26) nelson@csd.uwm.edu (Nelson Kading)
- X BUG. Man page does not format correctly.
- X FIX. tin.1 - applied supplied patch.
- X
- 27) nelson@csd.uwm.edu (Nelson Kading)
- X BUG. Does not compile on Convex machines.
- X FIX. tin.h init.c - applied supplied patch.
- X
- 28) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X ADD. Added XINDEX nntp extension to allow NNTP client to get group
- X index files from NNTP server machine if my NNTP XINDEX patch
- X is installed. Define NNTP_EXTS to use NNTP_XUSER & NNTP_XINDEX
- X
- 29) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. -s has no real use and -d should be -s (ie. save news dir)
- X FIX. main.c tin.1 - did as noted above.
- X
- 30) john_palkovic@ssc.gov (John Palkovic)
- X BIG. Under BSD the DEFAULT_MAILER should be /bin/mail not /bin/mail.
- X FIX. tin.h - replaced /bin/rmail with /bin/mail for DEFAULT_MAILER.
- X
- 31) leilabd@syma.sussex.ac.uk (Leila Burrell-Davis)
- X BUG. $EDITOR variable is documented in man page but $VISUAL is used.
- X FIX. tin.1 - changed all references of $EDITOR to $VISUAL.
- X
- 32) robinson@mdivax1.mdd.comm.mot.com (Jim Robinson)
- X NOTE. Supplied a 110K patch to add features & fix problems:
- X This man deserves a gold star for fixing some irking bugs!
- X FIX. misc.c - mark_unthreaded_groups() always needed to strcmp().
- X FIX. art.c - read_group() could index into arts[] with neg number.
- X FIX. newsrc.c - parse_unread() fixed one off error in unread arts.
- X FIX. page.c - show_page() return value was being treated like an
- X index into 'arts'. It is actually an index into 'base'.
- X FIX. post.c - post_response() find_mail_header() is setting global
- X variable 'note_h_subj'. This can cause problems. Replaced use
- X of 'note_h_subj' with local variable.
- X FIX. kill.c - kill_any_articles() replaced arts[i].tagged with
- X arts[i].killed to make killing work.
- X FIX. art.c - reload_index() after load_index() and before find_base()
- X it is necessary to call read_newsrc_line().
- X FIX. thread.c - main loop index was being incorrectly initialized.
- X FIX. thread.c - show_thread_page() fixed to page properly.
- X FIX. search.c - search_author() was wrapping around incorrectly.
- X FIX. group.c - show_group_page() so only new arts are counted in
- X show only unread mode.
- X FIX. newsrc.c - print_seq() totally rewritten (It needed it! :-))
- X ADD. group.c - 'r' command to toggle show_unread_only mode.
- X ADD. thread.c - 'T' command to tag articles at thread listing level
- X
- 33) iain%anl433.uucp@germany.eu.net (Iain Lea)
- X BUG. If 'c' catchup done at article level from within thread level
- X a SIGSEGV is produced upon returning to grouyp level.
- X FIX. group.c - add check to see if index_point < 0.
- X
- X
- SHAR_EOF
- chmod 0600 CHANGES ||
- echo 'restore of CHANGES failed'
- Wc_c="`wc -c < 'CHANGES'`"
- test 7851 -eq "$Wc_c" ||
- echo 'CHANGES: original size 7851, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= TODO ==============
- if test -f 'TODO' -a X"$1" != X"-c"; then
- echo 'x - skipping TODO (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting TODO (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'TODO' &&
- !!! PLEASE NOTE THAT ON CERTAIN MACHINES (ie. mostly RISC DEC,HP) TIN
- !!! WILL SOMETIMES CRASH WITH SIGBUS or SIGSEGV DUE TO THE HACK THAT
- !!! IS USED IN HASHING STRINGS IN hashstr.c. SORRY BUT I HAVE NO TIME
- !!! RIGHT NOW TO REIMPLEMENT THIS PART OF TIN WHICH IS A CARRY OVER
- !!! FROM TASS v3.2 (Any takers ?)
- X
- FIX FEATURES V1.x
- -----------------
- X
- o Fix ?? XINDEX version of tin so killing arts does give 0 0 arts in group.
- X
- o Fix ?? XINDEX so that client clear? arts before reading next group because
- X it still has the old arts headers when going into next group. Where is it
- X free'd?
- X
- o Add crossposting of articles so that read ones are marked read in
- X other groups. in rn it uses Xref: line to do this. Perhaps just
- X use update_group() to do it?
- X Needs to handle 'c' 'C' 'k' 'K' commands. Perhaps it should be an
- X option so that performance is not impaired. (JIM).
- X
- o Fix Sender: Path: headers within NNTP inews internally to tin
- X by a #define NNTP_INEWS
- X
- o Add option to 'M' menu to allow 'C' command to return/stay at
- X group level.
- X
- o Add option to 'M' menu to allow unlinking/not of ~/.article
- X after posting an article.
- X
- o Fix 'c' at article level when within thread level?
- X
- o Fix so SIGWINCH resizes xterm window under SINIX / VAX Ultrix.
- X
- o Fix -S option to create an active file when new articles are
- X saved to <savedir>.
- X
- o Fix -R option to read ACTIVE file created by -S command.
- X
- o Fix -n option to hash the groups read in from ~/.tin/active and
- X mark active[].flag as TRUE. then find flag=FALSE and ask user if
- X they want to subscribe to group. On xenix386 takes 15 seconds on
- X current -n option. Also of CNEWS just do a compare of active.times
- X UNDER CNEWS USE active.times FILE FROM NNTPSERVER
- X UNDER NNTP USE newnews COMMAND FROM NNTPSERVER
- X
- o Fix code to display only groups with unread news. look at
- X setup_base() also for killing.
- X
- o Add nntp code to read 4th field (ynm) in active file in scanf()
- X
- FIX FEATURES V2.0
- -----------------
- X
- o Fix uuscram code in uudecode.
- X
- o Fix code to sort arts. At page level funny things happen.
- X
- o Fix code to KILL articles. At page level funny things happen.
- X
- o Fix code to KILL articles with 't' command.
- X
- o Fix so that it always finds unread messages.
- X
- o Fix 'z' so that it stays unread even if a KILL is performed before
- X leaving the group.
- X
- o Fix 'z' at group selection level so whole screen is not redrawn.
- X
- ADD FEATURES
- ------------
- X
- o Add -P <pattern> or -P <file> to search for in new news and to
- X notify user by mail. Should understand 'subject=text' 'from=text'
- X 'body=text' and .AND. && .OR. || for filtering purposes.
- X
- o Add elm style print command with %s in it for printing in 'M'.
- X
- o Add 'C' command at group level to catchup present group and
- X enter next group with unread news in it.
- X
- o Sort .newsrc according to preference. (sort active file as it is read)
- X
- o Add time period kill article
- X
- PIPEDREAMS
- ----------
- o Add rebindable keymaps and provide different terminal keymaps
- X (ie. keymap.ansi, keymap.wy50 etc.)
- X
- o Add Virtual newsgroups (combination of newsgroups ie. virtual.ibm
- X consists of comp.sys.ibm.* groups).
- X
- o Add threading on References like trn with mthreads database.
- X
- o Add full curses support instead of using printf()'s.
- X
- o Sub all not empty groups by looking at min max values in active array
- X and Unsub all empty groups by looking at min max values in active
- X array. have a command to do this in a toggle effect.
- SHAR_EOF
- chmod 0600 TODO ||
- echo 'restore of TODO failed'
- Wc_c="`wc -c < 'TODO'`"
- test 3490 -eq "$Wc_c" ||
- echo 'TODO: original size 3490, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= INSTALL ==============
- if test -f 'INSTALL' -a X"$1" != X"-c"; then
- echo 'x - skipping INSTALL (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting INSTALL (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'INSTALL' &&
- Compilation and installation notes for tin - 24-03-92
- -----------------------------------------------------
- X
- Tin has been compiled on a wide range of Un*x machines with cc and gcc.
- A list of these machines can be found at the end of this file.
- X
- This file is long (so was the yellow brick road) but please read it all
- as it could save you problems later and we don't want an unhappy ending
- do we? :-)
- X
- Tin can be compiled to read news in any of the following ways:
- X
- X o locally from your machines news spool dir (default /usr/spool/news).
- X
- X o locally and remotely (rtin or tin -r option) (-DNNTP_ABLE).
- X
- X o remotely from another machine via NNTP but creating tin index files
- X on local machine for each user in $HOME/.tin/.index (-DNNTP_ONLY).
- X
- X o remotely from another machine via NNTP and also retreiving tin index
- X files from remote machine via NNTP (-DNNTP_ONLY -DNNTP_EXTS). This
- X option requires that MY NNTP XUSER & XINDEX patches be applied to
- X your NNTP server nntpd. On the NNTP server the index daemon of tin
- X 'tind' needs to be run from cron to update the index files at
- X regular inetervals.
- X
- The -DNNTP_ABLE or -DNNTP_ONLY define must be added to CFLAGS in
- Makefile and the correct libraries need to be linked to produce
- an NNTP aware tin.
- X
- !!! The NNTP (NetNews Transport Protocol RFC 977) software needs to
- !!! be installed on your machine if want to read news remotely. It is
- !!! a SEPERATE PACKAGE that is available from many FTP and mailserver
- !!! sites.
- !!!
- !!! The file that has to be compiled & linked with tin is clientlib.c
- X
- Building Tin (Normal & Daemon versions)
- ---------------------------------------
- X
- Normal version
- 1) Type 'make' and a few system types will be displayed.
- 2) Edit Makefile if you want to add/change -D<defines>.
- 3) Type 'make <system type>' to compile for your system.
- 4) Type 'make install' / 'make install_setuid' to install.
- X
- Note1: If you want to retreive tin index files from your NNTP server
- X you will have to compile the tind index file daemon so do the
- X following steps:
- X
- X 1) Build 'Normal version' of tin as specified by the above 4 points.
- X 2) The tind index daemon needs to be installed on your NNTP server.
- X 3) Apply my NNTP XUSER & XINDEX patches to your nntpd server or this
- X will not work!!!. (If you want tind locally read Note3).
- X 4) Edit the Makefile and add -DINDEX_DAEMON to your CFLAGS entry and
- X remove any -DNNTP_* defines. Also remove any -lcurses screen type
- X libs as tind does not need to be linked with curses and it will
- X save a good 30-50K on the size of tind.
- X 5) Type 'make <system type>' to compile tind daemon for your NNTP server.
- X 6) Type 'make install_daemon' to install tind daemon on your NNTP server.
- X 7) Add the following line to your system cron to run tind every 30 mins:
- X 00,30 * * * * su news -c '/usr/lib/news/tind'
- X
- X Note2: tind must be run as user 'news' and the normal tin must have
- X the correct permissions to read the central index files!
- X Note3: tind can also be used to update a copy of all index files
- X centrally so each user does not have duplicate files.
- X
- X
- Compiler flags (-D<name> define directives)
- -------------------------------------------
- News directory structure
- ------------------------
- X
- LIBDIR
- Define if news software is not in /usr/lib/news.
- X
- INEWSDIR
- Define if bnews/cnews program 'inews' is not in LIBDIR.
- X
- SPOOLDIR
- Define if news articles are not in /usr/spool/news.
- X
- X
- Reading news via NNTP
- ---------------------
- X
- NNTP_ABLE
- Define if you wish to read news locally and remotely via an NNTP server.
- X
- NNTP_ONLY
- Define if you [want to | can] ONLY read news remotely via an NNTP server.
- X
- NNTP_INEWS
- Define if you want to use my builtin NNTP POST routine so that you no
- longer have to rely on the mini-inews from NNTP to be installed on each
- client machine.
- X
- NNTP_XUSER
- Define !!! ONLY !!! if your NNTP server supports the XUSER command. Unless
- you or your sysadmin applied my patches for the NNTP server XUSER will not
- be supported. This allows logging of the NNTP clients username & info to
- the NNTP servers logfile. Requires LOG_USER to also be defined.
- X
- NNTP_XINDEX
- Define !!! ONLY !!! if your NNTP server supports the XINDEX command. Unless
- you or your sysadmin applied my patches for the NNTP server XINDEX will not
- be supported. This allows tin indexes to be retrieved from the NNTP server
- and therefore saves a lot of disk space on NNTP client machines.
- X
- NNTP_EXTS
- Define if you want both XUSER & XINDEX NNTP commands.
- X
- NNTP_SERVER_FILE
- Only define if your nntpserver file is other than /etc/nntpserver.
- X
- NNTPLIB
- Contains the path of the file clientlib.o that is part of NNTP software.
- X
- NETLIBS
- Contains the networking libraries needed to link with clientlib.o file.
- X
- X
- Daemon options
- --------------
- X
- INDEX_DAEMON
- Define to make an index file updating daemon version of tin. Note that
- no -lcurses or screen libraries need to be linked with tin when this
- Define is specified. If defined this will automatically undefine all
- NNTP_* defines as the daemon has to be installed on the NNTP server.
- X
- X
- Miscellaneous options
- ---------------------
- X
- SIGTYPE=[void | int]
- Define only if incorrect pointer type warnings occur during compilition.
- SIGTYPE is already defined in tin.h for most compilers signal() call.
- By defining this you will override the default action in tin.h.
- X
- POSIX_JOB_CONTROL
- Define if your machine uses Posix style sigaction() signal handling.
- X
- USE_MKDIR
- Define if your machine does not have the mkdir() system call.
- X
- USE_LONG_FILENAMES
- Define if your machines filesystem supports filenames longer than 14
- chars (default for BSD type systems).
- X
- USE_INVERSE_HACK
- Define if you want inverse video and highlighted bar disabled. (default
- for SCO Unix & SysVR4). Can be toggled in tin by the 'I' command and
- highlight bar by 'M' command.
- X
- USE_CLEARSCREEN
- Define if the you wish screen to use ClearScreen() and not MoveCursor()
- and CleartoEOLN(). This is perhaps faster on slow terminals but I have
- not really run any speed tests recently.
- X
- SLOW_SCREEN_UPDATE
- Define if running over a low speed connection (ie. 2400baud). It stops
- the percentage info being shown at bottom of select and group menus and
- stops the groupname being displayed at the bottom of the screen as it is
- subscribed/unsubscribed.
- X
- NO_REGEX
- Define if you do not want to use regular expression pattern matching.
- X
- NO_START_LINE
- Do not start editor with line offset into file.
- X
- NO_SHELL_ESCAPE
- Do not allow shell escapes.
- X
- NO_POSTING
- Do not allow posting/followup of articles.
- X
- NO_RESYNC_ACTIVE_FILE
- Do not reread active every RESYNC_ACTIVE_SECS.
- X
- LOG_USER
- Log username & info to /tmp/.tin_log for usage statistics. If reading via
- NNTP the NNTP XUSER extended command will log user info to NNTP server.
- If -DNNTP_XUSER is defined it will define LOG_USER automatically.
- X
- DEBUG
- Define if you want tin to log debug info. to files in /tmp. Activated
- by tin -Dn where n is 1 for NNTP only debug logging and n is 2 for
- logging all debug info. Debug files written to /tmp are ARTS, ACTIVE,
- BASE and NNTP.
- X
- X
- Compiled & installed on the following machines
- ----------------------------------------------
- X
- 1) * 386 PC & Xenix 2.3.2/ATT SysVr4.0/SCO SysVR3.2/ISC SysVR3.2
- 2) * Sony News & SysVR4/BSD 4.3
- 3) * SNI MX300/MX500 & Sinix 5.22/5.23/5.24
- 4) * Sun 3/4/IPC/SS1/SS2 & SunOS 4.0.3/4.1/4.1.1
- 5) * Dec 5000/Vax & Ultrix 4.1/4.2
- 6) * Vax 11/785 & BSD 4.3
- 7) ICL DRS6000 & SysVR4.0
- 8) Apricot VX/FT & SCO 3.2.2
- 9) DIAB DS90 & D-NIX 5.3
- 10) Amdahl & SysVR3
- 11) HP 720/845 & HP-UX 7.0
- 12) IBM RS/6000 & AIX 3.1.5
- 13) NCR Tower & SysV
- 14) Atari STe & Minix 1.5.10.3b
- 15) Powerbook 140 & MacMinix
- 16) 386 PC & Minix 386
- 17) DG Aviion & DG-UX
- 18) Sequent S81 & PTX 1.3
- 19) Convex C220 & Convex Un*x
- X
- * = compiled, installed and used by author
- SHAR_EOF
- chmod 0600 INSTALL ||
- echo 'restore of INSTALL failed'
- Wc_c="`wc -c < 'INSTALL'`"
- test 7863 -eq "$Wc_c" ||
- echo 'INSTALL: original size 7863, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= tin.1 ==============
- if test -f 'tin.1' -a X"$1" != X"-c"; then
- echo 'x - skipping tin.1 (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting tin.1 (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'tin.1' &&
- .ev 1
- .if t .lt 6.85i
- .if n .lt 7.2i
- .ev
- .if t .po .45i
- .if t .ll 6.85i
- .if n .ll 7.2i
- .if \n(mo=1 .ds mo January
- .if \n(mo=2 .ds mo Febraury
- .if \n(mo=3 .ds mo March
- .if \n(mo=4 .ds mo April
- .if \n(mo=5 .ds mo May
- .if \n(mo=6 .ds mo June
- .if \n(mo=7 .ds mo July
- .if \n(mo=8 .ds mo August
- .if \n(mo=9 .ds mo September
- .if \n(mo=10 .ds mo October
- .if \n(mo=11 .ds mo November
- .if \n(mo=12 .ds mo December
- .TH TIN 1 "Version 1.1 PL1" "" "LOCAL"
- .ds ]W \*(mo \n(dy, 19\n(yr
- .nh
- .SH NAME
- tin, rtin, tind - A threaded Netnews reader
- .SH SYNOPSIS
- .B tin/rtin/tind
- [options] [newsgroups]
- .SH DESCRIPTION
- .I Tin
- is a full-screen threaded Netnews reader. It can read news locally
- (ie. \fI/usr/spool/news\fP) or remotely (rtin or tin -r option) via
- a NNTP (Network News Transport Protocol) server.
- .PP
- Tin has four newsreading levels:
- the newsgroup selection page, the group index page, the thread listing
- page and the article viewer.
- Use the 'h' (help) command to view a list of the commands available at a
- particular level.
- .PP
- On startup Tin will show a list of the newsgroups found in \fI$HOME/.newsrc\fP.
- An arrow '->' or highlighted bar will point to the first newsgroup.
- Move to a group by using the terminal arrow keys (ansi/at386/vt100 only) or 'j'
- and 'k'. Use PgUp/PgDn (ansi/at386/vt100 only) or Ctrl-U and Ctrl-D to
- page up/down. Enter a newsgroup by pressing RETURN.
- .PP
- The TAB key may be used to advance to the next newsgroup with unread articles
- and enter it.
- .SH OPTIONS
- .TP 10
- \fB-c\fP
- create/update index files for every group in \fI$HOME/.newsrc\fP or
- file specified by -f option and mark all articles as read.
- .TP
- \fB-f file\fP
- Use the specified file in place of \fI$HOME/.newsrc\fP.
- .TP
- \fB-h\fP
- help listing all command line options.
- .TP
- \fB-m dir\fP
- mailbox directory to use. Default is \fI$HOME/Mail\fP.
- .TP
- \fB-M user\fP
- mail unread articles to specified user for later reading. For more
- information read section Automatic Mailing and Saving New News.
- .TP
- \fB-n\fP
- notify the user of any newly created newsgroups since the last session.
- .TP
- \fB-p file\fP
- print program with options.\fP.
- .TP
- \fB-r\fP
- read news remotely from the default NNTP server specified in the
- environment variable NNTPSERVER or contained in the file
- \fI/etc/nntpserver\fP.
- .TP
- \fB-R\fP
- read news saved by -S option (not yet implemented).
- .TP
- \fB-s dir\fP
- save articles to directory. Default is \fI$HOME/News\fP.
- .TP
- \fB-S\fP
- save unread articles for later reading by -R option. For more information
- read section Automatic Mailing and Saving New News.
- .TP
- \fB-u\fP
- create/update index files for every group in \fI$HOME/.newsrc\fP or
- file specified by -f option.
- .TP
- \fB-U\fP
- start tin in the background to update index files while reading news
- in the foreground.
- .TP
- \fB-v\fP
- verbose mode for -c -M -S -u and -Z options.
- .TP
- \fB-z\fP
- only start tin if there is any new/unread news. If there is news tin
- will position cursor at first group with unread news. Useful for putting
- in login file.
- .TP
- \fB-Z\fP
- check if there is any new/unread news and exit with appropiate status.
- If -v option is specified the number of unread articles in each group
- is printed. An exit code 0 indicates no news, 1 that an error occurred
- and 2 that new/unread news exists. Useful for writing scripts.
- .PP
- Tin can also dynamically change its options by the 'M' menu command.
- Any changes are written to \fI$HOME/.tin/tinrc\fP.
- .PP
- The index daemon version Tind only supports the -f, -h and -v options.
- .SH "INDEX FILES"
- In order to keep track of threads, Tin maintains an index for each newsgroup.
- There are a number of methods in which index files can be created and updated.
- .PP
- The simplest method is that each user creates/updates there own index files
- that are stored in $HOME/.tin/.index. This has the advantage that any user
- can compile and install tin, but the disadvantage is that each user is going
- to be creating duplicate files and using precious disk space. A good way to
- keep index files updated is to start tin with the -U option that will update
- index files in the background while you are reading news in the foreground.
- You can also update index files via the system batcher cron with the -u
- option:
- .RS
- .nf
- 30 6 * * * /usr/local/bin/tin -u
- .fi
- .RE
- .PP
- A slightly better method is to set tin setuid news and have all index files
- created and updated in the news spool directory (ie. /usr/spool/news/.index).
- This has the advantage that there will only be one copy of the index files
- on each machine on your network, but the disadvantage is that you will have
- tin running setuid news and killing articles will change the central index
- file for a group for all users (Needs fixing!).
- .PP
- A better method is to install the tind index file updating daemon and have
- it create and update index files for all groups in your active file at
- regular intervals in the news spool directory (ie. /usr/spool/news/.index).
- This has the advantage that there will only be one copy of the index files on
- each machine on your network and tin must not be setuid news, but the
- disadvantage is that you will have to have news permissions to install tind
- and root permissions to install an entry in the cron batcher system to have
- tind regularly update index files.
- .PP
- The best method is to install the tind index file updating daemon on your
- NNTP server and have it create and update index files for all groups in your
- active file at regular intervals in the news spool directory (ie. /usr/spool/news/.index).
- This has the advantage that there will only be one copy of the index files on
- the NNTP server for the whole of your network and tin clients must not be
- setuid news, but the disadvantage is that you will have to install my NNTP
- server patches to allow tin to retreive index file from your NNTP server and
- and you must install an entry in the cron batcher system to have tind
- regularly update index files (Note that this is the method we use on our
- network of 40-50 machines and have not had any problems).
- .PP
- Entering a group the first time tends to be slow because the index file must
- be built from scratch unless the tind update daemon is being used. Subsequent
- readings of a group will cause incremental updating of the index file.
- .PP
- If reading news remotely and locally updating index files operation will be
- somewhat slower because the articles must be retrieved from the NNTP server.
- .SH "NEWS ADMINISTRATION"
- Maintaining Netnews on large networks of machines can be a pretty time
- consuming job as I recently discovered when I was given the job of
- maintaining our news system and news users.
- .PP
- Tin is a News User Agent and so most of the users were always asking
- questions or doing things that could be frowned upon by there departments.
- To releive news admins (and especially me) of this features have been added
- to Tin to make life easier.
- .PP
- If my NNTP XUSER patch has been applied to your NNTP server you will be
- able to log the username and machine to your NNTP logfile for usage
- statistics.
- .PP
- A user starting tin for the first time can be automatically subscribed to a
- list of newsgroups that are deemed appropiate by the news administrator. At
- our site the subscriptions file has 125 groups (our active file conatains
- over 400 groups with many only being marginally interesting to most people).
- The subscriptions file should be created in your news lib directory (ie.
- /usr/lib/news/subscriptions) and should have file permissions set to 0644.
- If reading news via NNTP my NNTP LIST SUBSCRIPTIONS patch will have to have
- been applied to your NNTP server.
- .SH "SCREEN FORMAT"
- Tin has four separate levels of operation: Selection Group level, Group
- level, Thread level and Article level.
- .PP
- At the Selection Group level the title displays the number of subscribed
- groups. The newsgroups are displayed on the left of the screen with the
- number of unread articles displayed on the same line in the middle of
- the screen.
- .RS
- .nf
- .in +.5i
- .ta +\w'1 'u +\w'news.software.readers 'u
- <Selection Num> <Newsgroup> <Num of unread articles>
- .ti -.5i
- i.e.,
- 1 alt.sources 10
- 2 comp.sources.misc 3
- 3 news.software.readers 12
- .in -.5i
- .fi
- .RE
- .PP
- At the Group level the title contains the name of the group, the number
- of conversation threads and total number of articles i.e., alt.sources (7 23).
- If the group has been setup not to thread articles (i.e., alt.sources
- is in \fI$(HOME)/.tin/unthread\fP) the title will be alt.sources (U 23).
- There are two possible display formats as shown below:
- .RS
- .nf
- .in +.5i
- .ta +\w'1 'u +\w'+ 'u +\w'3 'u +\w'This question has 'u
- <Selection Num> <Unread> <Responses> <Subject> <Author>
- .ti -.5i
- i.e.,
- 1 + 3 Bnews sources? iain@estevax.uucp
- 2 1 This question has ether@net
- .ti -.5i
- or
- .ta +\w'1 'u +\w'+ 'u +\w'3 'u +\w'This question has a long subject line 'u
- <Selection Num> <Unread> <Responses> <Subject (longer)>
- .ti -.5i
- i.e.,
- 1 + 3 Bnews sources?
- 2 1 This question has a longer subject line
- .in -.5i
- .fi
- .RE
- .PP
- At the Article level the page header has the following format:
- .RS
- .nf
- .in +.5i
- .ta \w'<Date posted> <Newsgroup> 'u
- <Date posted> <Newsgroup> <Thread 1 of n>
- <Article Num> <Subject> <Num of responses in thread>
- <Author> <Organization>
- X
- <Article body>
- .ti -.5i
- i.e.,
- .ta \w'24 Jul 15:20:03 GMT 'u +\w'Bnews sources? 'u
- 24 Jul 15:20:03 GMT alt.sources Thread 1 of 2
- Article 452 Bnews sources? 3 responses
- iain@anl433.uucp Organization name
- X
- <Article boby>
- .in -.5i
- .fi
- .RE
- .SH "COMMON MOVING KEYS"
- This table shows the common keys/commands for moving at all three levels
- within Tin.
- .RS
- .nf
- .ta \w'Beginning of list/article 'u +\w'ansi/at386/vt100 'u
- X ansi/at386/vt100 Other Terminals
- Beginning of list/article \fBHome\fP \fB1\fP (\fB^R\fP or \fBg\fP at article level)
- End of list/article \fBEnd\fP \fB$\fP (also \fBG\fP at article level)
- Page Up \fBPgUp\fP \fB^U\fP or \fBb\fP
- Page Down \fBPgDn\fP \fB^D\fP or \fB<SPACE>\fP
- Line Up \fBUp arrow\fP \fBk\fP (not at article level)
- Line Down \fBDown arrow\fP \fBj\fP (not at article level)
- .fi
- .RE
- .SH "COMMON EDITING COMMANDS"
- An emacs style editing package allows the easy editing of input strings.
- An history list allows the easy re-use of previously entered strings.
- The following commands are available when editing a string:
- X
- .TP 10
- \fB^A,^E\fP
- move to beginnning or end of line, respectively.
- .TP
- \fB^F,^B\fP
- nondestructive move forward or back one location, respectively.
- .TP
- \fB^D\fP
- delete the character currently under the cursor, or send EOF if no
- characters in the buffer.
- .TP
- \fB^H,<DEL>\fP
- delete character left of the cursor.
- .TP
- \fB^K\fP
- delete from cursor to end of line.
- .TP
- \fB^P,^N\fP
- move through history, previous and next, respectively.
- .TP
- \fB^L,^R\fP
- redraw the current line.
- .TP
- \fB<CR>\fP
- places line on history list if nonblank, appends newline and returns
- to the caller.
- .TP
- \fB<ESC>\fP
- aborts the present editing operation.
- .SH "NEWSGROUP SELECTION COMMANDS"
- .TP 10
- \fB4\fP
- Select group 4.
- .TP
- \fB^K\fP
- Delete current group from \fI$HOME/.newsrc\fP file.
- .TP
- \fB^L\fP
- Redraw page.
- .TP
- \fB^R\fP
- Reset \fI$HOME/.newsrc\fP file.
- .TP
- \fB<CR>\fP
- Read current group.
- .TP
- \fB<TAB>\fP
- View next unread group.
- SHAR_EOF
- true || echo 'restore of tin.1 failed'
- fi
- echo 'End of tin1.1 part 1'
- echo 'File tin.1 is continued in part 2'
- echo 2 > _shar_seq_.tmp
- exit 0
-
- --
- NAME Iain Lea
- EMAIL iain%anl433.uucp@germany.eu.net
- SNAIL Siemens AG, ANL A433SZ, Gruendlacher Str. 248, 8510 Fuerth, Germany.
- PHONE +49-911-3089-407 (work) +49-911-331963 (home) +49-911-3089-290 (FAX)
- --
- Dr. med. dipl.-math Dieter Becker Tel.: (0 / +49) 6841 - 16 3046
- Medizinische Universitaets- und Poliklinik Fax.: (0 / +49) 6841 - 16 3369
- Innere Medizin III
- D - 6650 Homburg / Saar Email: becker@med-in.uni-sb.de
- exit 0 # Just in case...
-