Newsgroups: comp.sources.unix From: davison@borland.com (Wayne Davison) Subject: v29i051: trn-3.6 - threaded newsreader based on RN, V3.6, Part14/14 References: <1.814959141.29825@gw.home.vix.com> Sender: unix-sources-moderator@gw.home.vix.com Approved: vixie@gw.home.vix.com Submitted-By: davison@borland.com (Wayne Davison) Posting-Number: Volume 29, Issue 51 Archive-Name: trn-3.6/part14 #!/bin/sh # This is `part14' (part 14 of a multipart archive). # Do not concatenate these parts, unpack them in order with `/bin/sh'. # File `trn-3.6/parsedate.y' is being continued... # touch -am 1231235999 $$.touch >/dev/null 2>&1 if test ! -f 1231235999 && test -f $$.touch; then shar_touch=touch else shar_touch=: echo echo 'WARNING: not restoring timestamps. Consider getting and' echo "installing GNU \`touch', distributed in GNU File Utilities..." echo fi rm -f 1231235999 $$.touch # if test ! -r _sharseq.tmp; then echo 'Please unpack part 1 first!' exit 1 fi shar_sequence=`cat _sharseq.tmp` if test "$shar_sequence" != 14; then echo "Please unpack part $shar_sequence next!" exit 1 fi if test ! -f _sharnew.tmp; then echo 'x - still skipping trn-3.6/parsedate.y' else echo 'x - continuing file trn-3.6/parsedate.y' sed 's/^X//' << 'SHAR_EOF' >> 'trn-3.6/parsedate.y' && X (void)fflush(stdout); X if (gets(buff) == NULL || buff[0] == '\n') X break; X#if YYDEBUG X if (strcmp(buff, "yydebug") == 0) { X yydebug = !yydebug; X printf("yydebug = %s\n", yydebug ? "on" : "off"); X continue; X } X#endif /* YYDEBUG */ X d = parsedate(buff, (TIMEINFO *)NULL); X if (d == -1) X (void)printf("Bad format - couldn't convert.\n"); X else X (void)printf("%s", ctime(&d)); X } X X exit(0); X /* NOTREACHED */ X} X#endif /* TEST */ SHAR_EOF echo 'File trn-3.6/parsedate.y is complete' && $shar_touch -am 0603134093 'trn-3.6/parsedate.y' && chmod 0644 'trn-3.6/parsedate.y' || echo 'restore of trn-3.6/parsedate.y failed' shar_count="`wc -c < 'trn-3.6/parsedate.y'`" test 21261 -eq "$shar_count" || echo "trn-3.6/parsedate.y: original size 21261, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/nntpclient.c ============== if test -f 'trn-3.6/nntpclient.c' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/nntpclient.c (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/nntpclient.c (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/nntpclient.c' && X/* $Id: nntpclient.c,v 3.0 1991/11/22 04:12:21 davison Trn $ X*/ X/* The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X#include "EXTERN.h" X#include "common.h" X X#ifdef USE_NNTP X X#include "INTERN.h" X#include "nntpclient.h" X Xvoid finalize _((int)); X#ifdef NNTP_HANDLE_TIMEOUT Xchar nntp_handle_timeout _((bool_int)); X#endif X#ifdef NNTP_HANDLE_AUTH_ERR Xchar nntp_handle_auth_err _((bool_int)); X#endif X X#define CANTPOST \ X "NOTE: This machine does not have permission to post articles.\n\n" X#define CANTUSE \ X "This machine does not have permission to use the %s news server.\n\n" X Xint Xnntp_connect(verbose) Xbool_int verbose; X{ X char *server, filebuf[128]; X int response; X X if ((server = getenv("NNTPSERVER")) == Nullch) X server = SERVER_NAME; X if (server[0] == '/') { X register FILE *fp; X if ((fp = fopen(server, "r")) != Nullfp) { X server = Nullch; X while (fgets(filebuf, sizeof filebuf, fp) != Nullch) { X if (*filebuf == '\n' || *filebuf == '#') X continue; X if ((server = index(filebuf, '\n')) != Nullch) X *server = '\0'; X server = filebuf; X break; X } X fclose(fp); X } else X server = Nullch; X if (server == Nullch) { X sprintf(ser_line, "\ XCouldn't get name of news server from %s\n\ XEither fix this file, or put NNTPSERVER in your environment.\n", SERVER_NAME); X nntp_init_error(ser_line); X return 0; X } X } X X switch (response = server_init(server)) { X case NNTP_GOODBYE_VAL: X if (atoi(ser_line) == response) { X char tmpbuf[LBUFLEN]; X sprintf(tmpbuf,"News server %s unavailable: %s\n",server,&ser_line[4]); X nntp_init_error(tmpbuf); X return 0; X } X case -1: X sprintf(ser_line,"News server %s unavailable, try again later.\n",server); X nntp_init_error(ser_line); X return 0; X case NNTP_ACCESS_VAL: X sprintf(ser_line,CANTUSE,server); X nntp_init_error(ser_line); X return 0; X case NNTP_NOPOSTOK_VAL: X if (verbose) { X nntp_advise(CANTPOST); X } X /* FALL THROUGH */ X case NNTP_POSTOK_VAL: X break; X default: X sprintf(ser_line,"Unknown response code %d from %s.\n", response, server); X nntp_init_error(ser_line); X return 0; X } X return 1; X} X Xvoid Xnntp_command(buf) Xchar *buf; X{ X#if defined(DEBUG) && defined(FLUSH) X if (debug & DEB_NNTP) X printf(">%s\n", buf) FLUSH; X#endif X#if defined(NNTP_HANDLE_TIMEOUT) || defined(NNTP_HANDLE_AUTH_ERR) X strcpy(last_command, buf); X#endif X fprintf(ser_wr_fp, "%s\r\n", buf); X fflush(ser_wr_fp); X} X X#ifdef NNTP_HANDLE_TIMEOUT Xextern char *instr(); X#endif X Xchar Xnntp_check(strict) Xbool_int strict; X{ X int n; X X#ifdef HAS_SIGHOLD X sighold(SIGINT); X#endif X n = (fgets(ser_line, sizeof ser_line, ser_rd_fp) == NULL)? -1 : 0; X#ifdef HAS_SIGHOLD X sigrelse(SIGINT); X#endif X if (n < 0) { X nntp_close(FALSE); X nntp_error("\nUnexpected close of server socket.\n"); X#ifdef NNTP_ERROR_IS_FATAL X finalize(1); X#else X return NNTP_CLASS_FATAL; X#endif X } X n = strlen(ser_line); X if (n >= 2 && ser_line[n-1] == '\n' && ser_line[n-2] == '\r') X ser_line[n-2] = '\0'; X#if defined(DEBUG) && defined(FLUSH) X if (debug & DEB_NNTP) X printf("<%s\n", ser_line) FLUSH; X#endif X#ifdef NNTP_HANDLE_AUTH_ERR X if (atoi(ser_line) == NNTP_AUTH_NEEDED_VAL) { X return nntp_handle_auth_err(strict); X } X#endif X#ifdef NNTP_HANDLE_TIMEOUT X if (atoi(ser_line) == NNTP_TMPERR_VAL && instr(ser_line,"timeout",FALSE)) { X /* See if this was really a timeout */ X return nntp_handle_timeout(strict); X } X#endif X if (strict && *ser_line == NNTP_CLASS_FATAL) { /* Fatal error */ X char tmpbuf[LBUFLEN]; X sprintf(tmpbuf,"\n%s\n",ser_line); X nntp_error(tmpbuf); X#ifdef NNTP_ERROR_IS_FATAL X finalize(1); X#endif X } X return *ser_line; X} X Xint Xnntp_gets(buf, len) Xchar *buf; Xint len; X{ X int n; X X#ifdef HAS_SIGHOLD X sighold(SIGINT); X#endif X n = (fgets(buf, len, ser_rd_fp) == NULL)? -1 : 0; X#ifdef HAS_SIGHOLD X sigrelse(SIGINT); X#endif X if (n < 0) { X nntp_close(FALSE); X nntp_error("\nUnexpected close of server socket.\n"); X#ifdef NNTP_ERROR_IS_FATAL X finalize(1); X#else X return -1; X#endif X } X n = strlen(buf); X if (n >= 2 && buf[n-1] == '\n' && buf[n-2] == '\r') { X buf[n-2] = '\0'; X return 1; X } X return 0; X} X Xvoid Xnntp_close(send_quit) Xbool_int send_quit; X{ X if (send_quit && ser_wr_fp != NULL && ser_rd_fp != NULL) { X nntp_command("QUIT"); X nntp_check(FALSE); X } X /* the nntp_check() above might have closed these already. */ X if (ser_wr_fp != NULL && ser_rd_fp != NULL) { X fclose(ser_wr_fp); X ser_wr_fp = NULL; X fclose(ser_rd_fp); X ser_rd_fp = NULL; X } X} X X#endif /* USE_NNTP */ SHAR_EOF $shar_touch -am 1028161994 'trn-3.6/nntpclient.c' && chmod 0644 'trn-3.6/nntpclient.c' || echo 'restore of trn-3.6/nntpclient.c failed' shar_count="`wc -c < 'trn-3.6/nntpclient.c'`" test 4696 -eq "$shar_count" || echo "trn-3.6/nntpclient.c: original size 4696, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/charsubst.c ============== if test -f 'trn-3.6/charsubst.c' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/charsubst.c (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/charsubst.c (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/charsubst.c' && X/* $Id: charsubst.c,v 3.0 1993/12/21 21:54:40 davison Trn $ X */ X/* X * Permission is hereby granted to copy, reproduce, redistribute or otherwise X * use this software as long as: there is no monetary profit gained X * specifically from the use or reproduction of this software, it is not X * sold, rented, traded or otherwise marketed, and this copyright notice is X * included prominently in any copy made. X * X * The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X#include "EXTERN.h" X#include "common.h" X#include "search.h" X#include "artstate.h" X#include "INTERN.h" X#include "charsubst.h" X X#ifdef CHARSUBST X X/* TeX encoding table - gives ISO char for "x (x=32..127) */ X Xstatic unsigned char textbl[96] = { X 0, 0,'"', 0, 0, 0, 0,'"', 0, 0, 0, 0, 0, 0, 0, 0, X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, X 0,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, X 0, 0, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, X '"',228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,246, X 0, 0, 0,223, 0,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 X}; X Xstatic void Latin1toASCII _((unsigned char*,unsigned char*,int)); Xstatic char texchar = '\0'; X Xint Xputsubstchar(c, limit, outputok) Xint c; Xint limit; Xbool_int outputok; X{ X unsigned char d, oc[2], nc[5]; X int t, i = 0; X switch (*charsubst) { X case 'm': X t = 1; X goto doconvert; X case 'a': X t = 2; X /* FALL THROUGH */ X doconvert: X oc[0] = (unsigned char)c; X oc[1] = '\0'; X Latin1toASCII(oc, nc, t); X if ((i = strlen((char*)nc)) <= limit) { X if (outputok) X for (t = 0; t < i; t++) X putchar((char)nc[t]); X } X else X i = -1; X break; X case 't': X if (c == '\\' || c == '"') { X if (texchar && (c == '\\' || texchar != '\\')) { X if (outputok) X putchar(texchar); X i++; X } X texchar = (char)c; X break; X } else if (texchar == '\\') { X if (outputok) X putchar('\\'); X if (limit == 1) { X i = -2; X break; X } X i++; X } else if (texchar == '"') { X if (c < 32 || c > 128) X d = '\0'; X else X d = textbl[c-32]; X texchar = '\0'; X if (d) X c = d; X else { X if (outputok) X putchar('"'); X if (limit == 1) { X i = -2; X break; X } X i++; X } X } X /* FALL THROUGH */ X default: X if (outputok) X putchar(c); X i++; X break; X } X return i; X} X Xchar * Xcurrent_charsubst() X{ X static char *show; X X switch(*charsubst) { X case 'm': X#ifdef VERBOSE X IF(verbose) X show = "[ISO->monosp] "; X ELSE X#endif X#ifdef TERSE X show = "[M] "; X#endif X break; X case 'a': X#ifdef VERBOSE X IF(verbose) X show = "[ISO->ASCII] "; X ELSE X#endif X#ifdef TERSE X show = "[A] "; X#endif X break; X case 't': X#ifdef VERBOSE X IF(verbose) X show = "[TeX->ISO] "; X ELSE X#endif X#ifdef TERSE X show = "[T] "; X#endif X break; X default: X show = ""; X break; X } X return show; X} X Xvoid Xstrcharsubst(inb, outb) Xchar *inb, *outb; X{ X switch(*charsubst) { X case 'a': X Latin1toASCII((unsigned char*)inb, (unsigned char*)outb, 2); X break; X default: X strcpy(outb, inb); X } X} X X/* The following is an adapted version of iso2asc by Markus Kuhn, X University of Erlangen, Germany X*/ X X#define ISO_TABLES 2 /* originally: 7 */ X X/* Conversion tables for displaying the G1 set (0xa0-0xff) of X ISO Latin 1 (ISO 8859-1) with 7-bit ASCII characters. X X Version 1.2 -- error corrections are welcome X X Table Purpose X 0 universal table for many languages X 1 single-spacing universal table X 2 table for Danish, Dutch, German, Norwegian and Swedish X 3 table for Danish, Finnish, Norwegian and Swedish using X the appropriate ISO 646 variant. X 4 table with RFC 1345 codes in brackets X 5 table for printers that allow overstriking with backspace X X Markus Kuhn */ X/* In this version, I have taken out all tables except 1 and 2 -ot */ X X#define SUB NULL /* used if no reasonable ASCII string is possible */ X Xstatic char *iso2asc[ISO_TABLES][96] = { X{ X " ","!","c",SUB,SUB,"Y","|",SUB,"\"","c","a","<","-","-","R","-", X " ",SUB,"2","3","'","u","P",".",",","1","o",">",SUB,SUB,SUB,"?", X "A","A","A","A","A","A","A","C","E","E","E","E","I","I","I","I", X "D","N","O","O","O","O","O","x","O","U","U","U","U","Y","T","s", X "a","a","a","a","a","a","a","c","e","e","e","e","i","i","i","i", X "d","n","o","o","o","o","o",":","o","u","u","u","u","y","t","y" X},{ X " ","!","c",SUB,SUB,"Y","|",SUB,"\"","(c)","a","<<","-","-","(R)","-", X " ","+/-","2","3","'","u","P",".",",","1","o",">>"," 1/4"," 1/2"," 3/4","?", X "A","A","A","A","Ae","Aa","AE","C","E","E","E","E","I","I","I","I", X "D","N","O","O","O","O","Oe","x","Oe","U","U","U","Ue","Y","Th","ss", X "a","a","a","a","ae","aa","ae","c","e","e","e","e","i","i","i","i", X "d","n","o","o","o","o","oe",":","oe","u","u","u","ue","y","th","ij" X} X}; X X/* X * Transform an 8-bit ISO Latin 1 string iso into a 7-bit ASCII string asc X * readable on old terminals using conversion table t. X * X * worst case: strlen(iso) == 4*strlen(asc) X */ Xstatic void XLatin1toASCII(iso, asc, t) Xunsigned char *iso, *asc; Xint t; X{ X char *p, **tab; X X if (iso == NULL || asc == NULL) X return; X t--; /* offset correction -ot */ X tab = iso2asc[t] - 0xa0; X while (*iso) { X if (*iso > 0x9f) { X p = tab[*iso++]; X if (p) { X while (*p) X *asc++ = *p++; X } X } else X *asc++ = *iso++; X } X *asc = 0; X} X X#endif SHAR_EOF $shar_touch -am 1104132094 'trn-3.6/charsubst.c' && chmod 0644 'trn-3.6/charsubst.c' || echo 'restore of trn-3.6/charsubst.c failed' shar_count="`wc -c < 'trn-3.6/charsubst.c'`" test 5650 -eq "$shar_count" || echo "trn-3.6/charsubst.c: original size 5650, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/aix_rs.sh ============== if test ! -d 'trn-3.6/hints'; then echo 'x - creating directory trn-3.6/hints' mkdir 'trn-3.6/hints' fi if test -f 'trn-3.6/hints/aix_rs.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/aix_rs.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/aix_rs.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/aix_rs.sh' && Xcppstdin='/lib/cpp -D_AIX -D_IBMR2 -U__STR__' Xcppminus='' SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/aix_rs.sh' && chmod 0644 'trn-3.6/hints/aix_rs.sh' || echo 'restore of trn-3.6/hints/aix_rs.sh failed' shar_count="`wc -c < 'trn-3.6/hints/aix_rs.sh'`" test 58 -eq "$shar_count" || echo "trn-3.6/hints/aix_rs.sh: original size 58, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/altos486.sh ============== if test -f 'trn-3.6/hints/altos486.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/altos486.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/altos486.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/altos486.sh' && X: have heard of problems with -lc_s on Altos 486 Xset `echo " $libswanted " | sed "s/ c_s / /"` Xlibswanted="$*" SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/altos486.sh' && chmod 0644 'trn-3.6/hints/altos486.sh' || echo 'restore of trn-3.6/hints/altos486.sh failed' shar_count="`wc -c < 'trn-3.6/hints/altos486.sh'`" test 111 -eq "$shar_count" || echo "trn-3.6/hints/altos486.sh: original size 111, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/dec_osf1.sh ============== if test -f 'trn-3.6/hints/dec_osf1.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/dec_osf1.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/dec_osf1.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/dec_osf1.sh' && Xlibpth="$libpth /usr/shlib" # Use the shared libraries if possible Xlibc='/usr/shlib/libc.so' # The archive version is /lib/libc.a SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/dec_osf1.sh' && chmod 0644 'trn-3.6/hints/dec_osf1.sh' || echo 'restore of trn-3.6/hints/dec_osf1.sh failed' shar_count="`wc -c < 'trn-3.6/hints/dec_osf1.sh'`" test 132 -eq "$shar_count" || echo "trn-3.6/hints/dec_osf1.sh: original size 132, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/dgux.sh ============== if test -f 'trn-3.6/hints/dgux.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/dgux.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/dgux.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/dgux.sh' && Xcppstdin='/lib/cpp' Xlibs='-ldgc' Xd_strchr='define' Xcc='gcc' SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/dgux.sh' && chmod 0644 'trn-3.6/hints/dgux.sh' || echo 'restore of trn-3.6/hints/dgux.sh failed' shar_count="`wc -c < 'trn-3.6/hints/dgux.sh'`" test 60 -eq "$shar_count" || echo "trn-3.6/hints/dgux.sh: original size 60, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/dynix.sh ============== if test -f 'trn-3.6/hints/dynix.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/dynix.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/dynix.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/dynix.sh' && Xlibswanted=`echo $libswanted | sed -e 's/socket /socket seq inet /'` SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/dynix.sh' && chmod 0644 'trn-3.6/hints/dynix.sh' || echo 'restore of trn-3.6/hints/dynix.sh failed' shar_count="`wc -c < 'trn-3.6/hints/dynix.sh'`" test 69 -eq "$shar_count" || echo "trn-3.6/hints/dynix.sh: original size 69, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/hp9000_800.sh ============== if test -f 'trn-3.6/hints/hp9000_800.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/hp9000_800.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/hp9000_800.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/hp9000_800.sh' && Xlibswanted=`echo $libswanted | sed -e 's/malloc //' -e 's/BSD //` SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/hp9000_800.sh' && chmod 0644 'trn-3.6/hints/hp9000_800.sh' || echo 'restore of trn-3.6/hints/hp9000_800.sh failed' shar_count="`wc -c < 'trn-3.6/hints/hp9000_800.sh'`" test 66 -eq "$shar_count" || echo "trn-3.6/hints/hp9000_800.sh: original size 66, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/hpux.sh ============== if test -f 'trn-3.6/hints/hpux.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/hpux.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/hpux.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/hpux.sh' && Xcase `(uname -r) 2>/dev/null` in X*2.1*) libswanted=`echo $libswanted | sed 's/malloc //'` ;; Xesac Xd_strchr=define SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/hpux.sh' && chmod 0644 'trn-3.6/hints/hpux.sh' || echo 'restore of trn-3.6/hints/hpux.sh failed' shar_count="`wc -c < 'trn-3.6/hints/hpux.sh'`" test 114 -eq "$shar_count" || echo "trn-3.6/hints/hpux.sh: original size 114, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/i386.sh ============== if test -f 'trn-3.6/hints/i386.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/i386.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/i386.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/i386.sh' && Xldflags='-L/usr/ucblib' SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/i386.sh' && chmod 0644 'trn-3.6/hints/i386.sh' || echo 'restore of trn-3.6/hints/i386.sh failed' shar_count="`wc -c < 'trn-3.6/hints/i386.sh'`" test 24 -eq "$shar_count" || echo "trn-3.6/hints/i386.sh: original size 24, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/isc_2_2_1.sh ============== if test -f 'trn-3.6/hints/isc_2_2_1.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/isc_2_2_1.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/isc_2_2_1.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/isc_2_2_1.sh' && Xd_ftime=undef SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/isc_2_2_1.sh' && chmod 0644 'trn-3.6/hints/isc_2_2_1.sh' || echo 'restore of trn-3.6/hints/isc_2_2_1.sh failed' shar_count="`wc -c < 'trn-3.6/hints/isc_2_2_1.sh'`" test 14 -eq "$shar_count" || echo "trn-3.6/hints/isc_2_2_1.sh: original size 14, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/isc_3_2_2.sh ============== if test -f 'trn-3.6/hints/isc_3_2_2.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/isc_3_2_2.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/isc_3_2_2.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/isc_3_2_2.sh' && Xset `echo $libswanted | sed -e 's/ x//' -e 's/malloc //'` Xlibswanted="inet malloc $*" SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/isc_3_2_2.sh' && chmod 0644 'trn-3.6/hints/isc_3_2_2.sh' || echo 'restore of trn-3.6/hints/isc_3_2_2.sh failed' shar_count="`wc -c < 'trn-3.6/hints/isc_3_2_2.sh'`" test 86 -eq "$shar_count" || echo "trn-3.6/hints/isc_3_2_2.sh: original size 86, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/isc_3_2_3.sh ============== if test -f 'trn-3.6/hints/isc_3_2_3.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/isc_3_2_3.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/isc_3_2_3.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/isc_3_2_3.sh' && Xset `echo $libswanted | sed -e 's/ socket / inet /'` Xlibswanted="$*" SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/isc_3_2_3.sh' && chmod 0644 'trn-3.6/hints/isc_3_2_3.sh' || echo 'restore of trn-3.6/hints/isc_3_2_3.sh failed' shar_count="`wc -c < 'trn-3.6/hints/isc_3_2_3.sh'`" test 69 -eq "$shar_count" || echo "trn-3.6/hints/isc_3_2_3.sh: original size 69, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/mc6000.sh ============== if test -f 'trn-3.6/hints/mc6000.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/mc6000.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/mc6000.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/mc6000.sh' && X# defaults for the masscomp (concurrent) 6000 series running RTU 5.0 Xcppstdin=/lib/cpp SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/mc6000.sh' && chmod 0644 'trn-3.6/hints/mc6000.sh' || echo 'restore of trn-3.6/hints/mc6000.sh failed' shar_count="`wc -c < 'trn-3.6/hints/mc6000.sh'`" test 87 -eq "$shar_count" || echo "trn-3.6/hints/mc6000.sh: original size 87, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/mips.sh ============== if test -f 'trn-3.6/hints/mips.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/mips.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/mips.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/mips.sh' && Xcc=cc Xnm_opts='-B' SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/mips.sh' && chmod 0644 'trn-3.6/hints/mips.sh' || echo 'restore of trn-3.6/hints/mips.sh failed' shar_count="`wc -c < 'trn-3.6/hints/mips.sh'`" test 19 -eq "$shar_count" || echo "trn-3.6/hints/mips.sh: original size 19, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/next.sh ============== if test -f 'trn-3.6/hints/next.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/next.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/next.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/next.sh' && Xlibswanted='sys_s' SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/next.sh' && chmod 0644 'trn-3.6/hints/next.sh' || echo 'restore of trn-3.6/hints/next.sh failed' shar_count="`wc -c < 'trn-3.6/hints/next.sh'`" test 19 -eq "$shar_count" || echo "trn-3.6/hints/next.sh: original size 19, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/osf1.sh ============== if test -f 'trn-3.6/hints/osf1.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/osf1.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/osf1.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/osf1.sh' && Xlibswanted=m SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/osf1.sh' && chmod 0644 'trn-3.6/hints/osf1.sh' || echo 'restore of trn-3.6/hints/osf1.sh failed' shar_count="`wc -c < 'trn-3.6/hints/osf1.sh'`" test 13 -eq "$shar_count" || echo "trn-3.6/hints/osf1.sh: original size 13, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/convexos.sh ============== if test -f 'trn-3.6/hints/convexos.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/convexos.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/convexos.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/convexos.sh' && Xi_sgtty=undef Xi_termios=define Xccflags="-D__STDC__ -ext -tm c1" Xd_voidsig='define' Xsignal_t='void' Xd_strchr='undef' Xlibc='/usr/lib/libc.a' SHAR_EOF $shar_touch -am 0720205693 'trn-3.6/hints/convexos.sh' && chmod 0644 'trn-3.6/hints/convexos.sh' || echo 'restore of trn-3.6/hints/convexos.sh failed' shar_count="`wc -c < 'trn-3.6/hints/convexos.sh'`" test 139 -eq "$shar_count" || echo "trn-3.6/hints/convexos.sh: original size 139, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/sco_3.sh ============== if test -f 'trn-3.6/hints/sco_3.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/sco_3.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/sco_3.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/sco_3.sh' && Xlibswanted=`echo $libswanted | sed 's/ x//'` Xcppminus='' Xd_rename=undef SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/sco_3.sh' && chmod 0644 'trn-3.6/hints/sco_3.sh' || echo 'restore of trn-3.6/hints/sco_3.sh failed' shar_count="`wc -c < 'trn-3.6/hints/sco_3.sh'`" test 72 -eq "$shar_count" || echo "trn-3.6/hints/sco_3.sh: original size 72, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/sco_3_2_4.sh ============== if test -f 'trn-3.6/hints/sco_3_2_4.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/sco_3_2_4.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/sco_3_2_4.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/sco_3_2_4.sh' && Xxlibpth='' Xmailer='/usr/lib/mail/execmail' Xlibc='/lib/libc.a' SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/sco_3_2_4.sh' && chmod 0644 'trn-3.6/hints/sco_3_2_4.sh' || echo 'restore of trn-3.6/hints/sco_3_2_4.sh failed' shar_count="`wc -c < 'trn-3.6/hints/sco_3_2_4.sh'`" test 62 -eq "$shar_count" || echo "trn-3.6/hints/sco_3_2_4.sh: original size 62, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/domainos.sh ============== if test -f 'trn-3.6/hints/domainos.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/domainos.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/domainos.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/domainos.sh' && Xccflags='-A nansi' Xd_ignoreorg='define' SHAR_EOF $shar_touch -am 1009030193 'trn-3.6/hints/domainos.sh' && chmod 0644 'trn-3.6/hints/domainos.sh' || echo 'restore of trn-3.6/hints/domainos.sh failed' shar_count="`wc -c < 'trn-3.6/hints/domainos.sh'`" test 40 -eq "$shar_count" || echo "trn-3.6/hints/domainos.sh: original size 40, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/sgi.sh ============== if test -f 'trn-3.6/hints/sgi.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/sgi.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/sgi.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/sgi.sh' && Xd_voidsig=define Xd_vfork=undef Xd_sigblock=undef SHAR_EOF $shar_touch -am 1009030193 'trn-3.6/hints/sgi.sh' && chmod 0644 'trn-3.6/hints/sgi.sh' || echo 'restore of trn-3.6/hints/sgi.sh failed' shar_count="`wc -c < 'trn-3.6/hints/sgi.sh'`" test 48 -eq "$shar_count" || echo "trn-3.6/hints/sgi.sh: original size 48, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/solaris_2_0.sh ============== if test -f 'trn-3.6/hints/solaris_2_0.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/solaris_2_0.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/solaris_2_0.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/solaris_2_0.sh' && Xd_vfork=undef SHAR_EOF $shar_touch -am 1009030193 'trn-3.6/hints/solaris_2_0.sh' && chmod 0644 'trn-3.6/hints/solaris_2_0.sh' || echo 'restore of trn-3.6/hints/solaris_2_0.sh failed' shar_count="`wc -c < 'trn-3.6/hints/solaris_2_0.sh'`" test 14 -eq "$shar_count" || echo "trn-3.6/hints/solaris_2_0.sh: original size 14, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/solaris_2_1.sh ============== if test -f 'trn-3.6/hints/solaris_2_1.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/solaris_2_1.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/solaris_2_1.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/solaris_2_1.sh' && X#d_vfork=undef Xi_dirent=define Xi_sysdir=undef Xlibs='-lmalloc -lsocket -lnls -lnsl -lintl -lucb' SHAR_EOF $shar_touch -am 1009030193 'trn-3.6/hints/solaris_2_1.sh' && chmod 0644 'trn-3.6/hints/solaris_2_1.sh' || echo 'restore of trn-3.6/hints/solaris_2_1.sh failed' shar_count="`wc -c < 'trn-3.6/hints/solaris_2_1.sh'`" test 96 -eq "$shar_count" || echo "trn-3.6/hints/solaris_2_1.sh: original size 96, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/solaris_2_3.sh ============== if test -f 'trn-3.6/hints/solaris_2_3.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/solaris_2_3.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/solaris_2_3.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/solaris_2_3.sh' && Xd_sigblock='undef' Xd_getcwd='define' Xd_getwd='undef' Xlibs='-lmalloc -lsocket -lnls -lnsl -lintl' SHAR_EOF $shar_touch -am 1107173594 'trn-3.6/hints/solaris_2_3.sh' && chmod 0644 'trn-3.6/hints/solaris_2_3.sh' || echo 'restore of trn-3.6/hints/solaris_2_3.sh failed' shar_count="`wc -c < 'trn-3.6/hints/solaris_2_3.sh'`" test 97 -eq "$shar_count" || echo "trn-3.6/hints/solaris_2_3.sh: original size 97, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/svr4.sh ============== if test -f 'trn-3.6/hints/svr4.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/svr4.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/svr4.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/svr4.sh' && Xcc='/bin/cc' Xtest -f $cc || cc='/usr/ccs/bin/cc' Xmansrc='/usr/share/man/man1' Xlibswanted='malloc socket nsl' Xd_strchr=define SHAR_EOF $shar_touch -am 0719112393 'trn-3.6/hints/svr4.sh' && chmod 0644 'trn-3.6/hints/svr4.sh' || echo 'restore of trn-3.6/hints/svr4.sh failed' shar_count="`wc -c < 'trn-3.6/hints/svr4.sh'`" test 125 -eq "$shar_count" || echo "trn-3.6/hints/svr4.sh: original size 125, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/solaris_2_2.sh ============== if test -f 'trn-3.6/hints/solaris_2_2.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/solaris_2_2.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/solaris_2_2.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/solaris_2_2.sh' && Xd_sigblock='undef' Xd_getcwd='define' Xd_getwd='undef' Xlibs='-lmalloc -lsocket -lnls -lnsl -lintl' SHAR_EOF $shar_touch -am 0730030993 'trn-3.6/hints/solaris_2_2.sh' && chmod 0644 'trn-3.6/hints/solaris_2_2.sh' || echo 'restore of trn-3.6/hints/solaris_2_2.sh failed' shar_count="`wc -c < 'trn-3.6/hints/solaris_2_2.sh'`" test 97 -eq "$shar_count" || echo "trn-3.6/hints/solaris_2_2.sh: original size 97, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/sco_xenix.sh ============== if test -f 'trn-3.6/hints/sco_xenix.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/sco_xenix.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/sco_xenix.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/sco_xenix.sh' && Xi_dirent=undef Xlibswanted=`echo $libswanted | sed 's/ x//'` SHAR_EOF $shar_touch -am 0730225093 'trn-3.6/hints/sco_xenix.sh' && chmod 0644 'trn-3.6/hints/sco_xenix.sh' || echo 'restore of trn-3.6/hints/sco_xenix.sh failed' shar_count="`wc -c < 'trn-3.6/hints/sco_xenix.sh'`" test 60 -eq "$shar_count" || echo "trn-3.6/hints/sco_xenix.sh: original size 60, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/hints/freebsd.sh ============== if test -f 'trn-3.6/hints/freebsd.sh' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/hints/freebsd.sh (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/hints/freebsd.sh (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/hints/freebsd.sh' && Xi_sysfilio='undef' SHAR_EOF $shar_touch -am 1021141894 'trn-3.6/hints/freebsd.sh' && chmod 0644 'trn-3.6/hints/freebsd.sh' || echo 'restore of trn-3.6/hints/freebsd.sh failed' shar_count="`wc -c < 'trn-3.6/hints/freebsd.sh'`" test 19 -eq "$shar_count" || echo "trn-3.6/hints/freebsd.sh: original size 19, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/dependencies ============== if test -f 'trn-3.6/dependencies' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/dependencies (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/dependencies (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/dependencies' && Xaddng.o: EXTERN.h Xaddng.o: INTERN.h Xaddng.o: addng.c Xaddng.o: addng.h Xaddng.o: common.h Xaddng.o: config.h Xaddng.o: final.h Xaddng.o: intrp.h Xaddng.o: last.h Xaddng.o: ngdata.h Xaddng.o: nntp.h Xaddng.o: nntpclient.h Xaddng.o: only.h Xaddng.o: rcstuff.h Xaddng.o: search.h Xaddng.o: trn.h Xaddng.o: util.h Xart.o: EXTERN.h Xart.o: INTERN.h Xart.o: art.c Xart.o: art.h Xart.o: artio.h Xart.o: artstate.h Xart.o: backpage.h Xart.o: bits.h Xart.o: cache.h Xart.o: charsubst.h Xart.o: common.h Xart.o: config.h Xart.o: final.h Xart.o: head.h Xart.o: help.h Xart.o: intrp.h Xart.o: ng.h Xart.o: ngdata.h Xart.o: ngstuff.h Xart.o: nntp.h Xart.o: nntpclient.h Xart.o: rcstuff.h Xart.o: rt-select.h Xart.o: rt-util.h Xart.o: rt-wumpus.h Xart.o: rthread.h Xart.o: search.h Xart.o: sw.h Xart.o: term.h Xart.o: trn.h Xart.o: util.h Xart.o: util2.h Xartio.o: EXTERN.h Xartio.o: INTERN.h Xartio.o: art.h Xartio.o: artio.c Xartio.o: artio.h Xartio.o: bits.h Xartio.o: cache.h Xartio.o: common.h Xartio.o: config.h Xartio.o: final.h Xartio.o: head.h Xartio.o: ngdata.h Xartio.o: nntp.h Xartio.o: nntpclient.h Xartio.o: rthread.h Xartsrch.o: EXTERN.h Xartsrch.o: INTERN.h Xartsrch.o: artio.h Xartsrch.o: artsrch.c Xartsrch.o: artsrch.h Xartsrch.o: bits.h Xartsrch.o: cache.h Xartsrch.o: common.h Xartsrch.o: config.h Xartsrch.o: final.h Xartsrch.o: head.h Xartsrch.o: intrp.h Xartsrch.o: kfile.h Xartsrch.o: ng.h Xartsrch.o: ngdata.h Xartsrch.o: ngstuff.h Xartsrch.o: nntp.h Xartsrch.o: nntpclient.h Xartsrch.o: rt-select.h Xartsrch.o: rthread.h Xartsrch.o: search.h Xartsrch.o: term.h Xartsrch.o: util.h Xautosub.o: EXTERN.h Xautosub.o: INTERN.h Xautosub.o: autosub.c Xautosub.o: autosub.h Xautosub.o: common.h Xautosub.o: config.h Xautosub.o: final.h Xautosub.o: ngsrch.h Xautosub.o: search.h Xautosub.o: util.h Xbackpage.o: EXTERN.h Xbackpage.o: INTERN.h Xbackpage.o: backpage.c Xbackpage.o: backpage.h Xbackpage.o: common.h Xbackpage.o: config.h Xbackpage.o: final.h Xbackpage.o: intrp.h Xbits.o: EXTERN.h Xbits.o: INTERN.h Xbits.o: artio.h Xbits.o: bits.c Xbits.o: bits.h Xbits.o: cache.h Xbits.o: common.h Xbits.o: config.h Xbits.o: final.h Xbits.o: head.h Xbits.o: intrp.h Xbits.o: ndir.h Xbits.o: ng.h Xbits.o: ngdata.h Xbits.o: nntp.h Xbits.o: nntpclient.h Xbits.o: rcln.h Xbits.o: rcstuff.h Xbits.o: rt-select.h Xbits.o: rt-util.h Xbits.o: rthread.h Xbits.o: term.h Xbits.o: trn.h Xbits.o: util.h Xbits.o: util2.h Xcache.o: EXTERN.h Xcache.o: INTERN.h Xcache.o: artsrch.h Xcache.o: bits.h Xcache.o: cache.c Xcache.o: cache.h Xcache.o: common.h Xcache.o: config.h Xcache.o: final.h Xcache.o: hash.h Xcache.o: head.h Xcache.o: intrp.h Xcache.o: ng.h Xcache.o: ngdata.h Xcache.o: nntp.h Xcache.o: nntpclient.h Xcache.o: rcstuff.h Xcache.o: rt-ov.h Xcache.o: rt-page.h Xcache.o: rt-process.h Xcache.o: rt-select.h Xcache.o: rt-util.h Xcache.o: rthread.h Xcache.o: search.h Xcache.o: term.h Xcache.o: trn.h Xcache.o: util.h Xcache.o: util2.h Xcharsubst.o: EXTERN.h Xcharsubst.o: INTERN.h Xcharsubst.o: artstate.h Xcharsubst.o: charsubst.c Xcharsubst.o: charsubst.h Xcharsubst.o: common.h Xcharsubst.o: config.h Xcharsubst.o: search.h Xdecode.o: EXTERN.h Xdecode.o: INTERN.h Xdecode.o: common.h Xdecode.o: config.h Xdecode.o: decode.c Xdecode.o: decode.h Xedit_dist.o: EXTERN.h Xedit_dist.o: common.h Xedit_dist.o: config.h Xedit_dist.o: edit_dist.c Xedit_dist.o: util.h Xfinal.o: EXTERN.h Xfinal.o: INTERN.h Xfinal.o: artio.h Xfinal.o: bits.h Xfinal.o: cache.h Xfinal.o: common.h Xfinal.o: config.h Xfinal.o: final.c Xfinal.o: final.h Xfinal.o: init.h Xfinal.o: intrp.h Xfinal.o: last.h Xfinal.o: ng.h Xfinal.o: ngdata.h Xfinal.o: nntp.h Xfinal.o: nntpclient.h Xfinal.o: rcstuff.h Xfinal.o: term.h Xfinal.o: util.h Xhash.o: EXTERN.h Xhash.o: INTERN.h Xhash.o: common.h Xhash.o: config.h Xhash.o: final.h Xhash.o: hash.c Xhash.o: hash.h Xhash.o: util.h Xhead.o: EXTERN.h Xhead.o: INTERN.h Xhead.o: artio.h Xhead.o: cache.h Xhead.o: common.h Xhead.o: config.h Xhead.o: final.h Xhead.o: hash.h Xhead.o: head.c Xhead.o: head.h Xhead.o: ng.h Xhead.o: ngdata.h Xhead.o: nntp.h Xhead.o: nntpclient.h Xhead.o: rt-process.h Xhead.o: rt-util.h Xhead.o: rthread.h Xhead.o: util.h Xhelp.o: EXTERN.h Xhelp.o: INTERN.h Xhelp.o: common.h Xhelp.o: config.h Xhelp.o: help.c Xhelp.o: help.h Xhelp.o: term.h Xhelp.o: trn.h Xinit.o: EXTERN.h Xinit.o: INTERN.h Xinit.o: addng.h Xinit.o: art.h Xinit.o: artio.h Xinit.o: artsrch.h Xinit.o: backpage.h Xinit.o: bits.h Xinit.o: cache.h Xinit.o: common.h Xinit.o: config.h Xinit.o: decode.h Xinit.o: final.h Xinit.o: head.h Xinit.o: help.h Xinit.o: init.c Xinit.o: init.h Xinit.o: intrp.h Xinit.o: kfile.h Xinit.o: last.h Xinit.o: ng.h Xinit.o: ngdata.h Xinit.o: ngsrch.h Xinit.o: ngstuff.h Xinit.o: nntp.h Xinit.o: nntpclient.h Xinit.o: only.h Xinit.o: rcln.h Xinit.o: rcstuff.h Xinit.o: respond.h Xinit.o: rthread.h Xinit.o: search.h Xinit.o: sw.h Xinit.o: term.h Xinit.o: trn.h Xinit.o: util.h Xintrp.o: EXTERN.h Xintrp.o: INTERN.h Xintrp.o: artio.h Xintrp.o: artsrch.h Xintrp.o: bits.h Xintrp.o: cache.h Xintrp.o: common.h Xintrp.o: config.h Xintrp.o: final.h Xintrp.o: head.h Xintrp.o: init.h Xintrp.o: intrp.c Xintrp.o: intrp.h Xintrp.o: ng.h Xintrp.o: ngdata.h Xintrp.o: nntp.h Xintrp.o: nntpclient.h Xintrp.o: rcstuff.h Xintrp.o: respond.h Xintrp.o: rt-select.h Xintrp.o: rt-util.h Xintrp.o: rthread.h Xintrp.o: search.h Xintrp.o: term.h Xintrp.o: trn.h Xintrp.o: util.h Xintrp.o: util2.h Xkfile.o: EXTERN.h Xkfile.o: INTERN.h Xkfile.o: artsrch.h Xkfile.o: bits.h Xkfile.o: cache.h Xkfile.o: common.h Xkfile.o: config.h Xkfile.o: hash.h Xkfile.o: intrp.h Xkfile.o: kfile.c Xkfile.o: kfile.h Xkfile.o: ng.h Xkfile.o: ngdata.h Xkfile.o: ngstuff.h Xkfile.o: rcstuff.h Xkfile.o: rt-process.h Xkfile.o: rt-select.h Xkfile.o: rthread.h Xkfile.o: search.h Xkfile.o: term.h Xkfile.o: trn.h Xkfile.o: util.h Xlast.o: EXTERN.h Xlast.o: INTERN.h Xlast.o: common.h Xlast.o: config.h Xlast.o: intrp.h Xlast.o: last.c Xlast.o: last.h Xlast.o: trn.h Xlast.o: util.h Xndir.o: EXTERN.h Xndir.o: INTERN.h Xndir.o: common.h Xndir.o: config.h Xndir.o: ndir.c Xndir.o: ndir.h Xng.o: EXTERN.h Xng.o: INTERN.h Xng.o: art.h Xng.o: artio.h Xng.o: artsrch.h Xng.o: artstate.h Xng.o: backpage.h Xng.o: bits.h Xng.o: cache.h Xng.o: charsubst.h Xng.o: common.h Xng.o: config.h Xng.o: decode.h Xng.o: final.h Xng.o: head.h Xng.o: help.h Xng.o: intrp.h Xng.o: kfile.h Xng.o: last.h Xng.o: ng.c Xng.o: ng.h Xng.o: ngdata.h Xng.o: ngstuff.h Xng.o: nntp.h Xng.o: nntpclient.h Xng.o: rcln.h Xng.o: rcstuff.h Xng.o: respond.h Xng.o: rt-select.h Xng.o: rt-wumpus.h Xng.o: rthread.h Xng.o: search.h Xng.o: sw.h Xng.o: term.h Xng.o: trn.h Xng.o: util.h Xngdata.o: EXTERN.h Xngdata.o: INTERN.h Xngdata.o: bits.h Xngdata.o: cache.h Xngdata.o: common.h Xngdata.o: config.h Xngdata.o: final.h Xngdata.o: head.h Xngdata.o: intrp.h Xngdata.o: kfile.h Xngdata.o: ndir.h Xngdata.o: ng.h Xngdata.o: ngdata.c Xngdata.o: ngdata.h Xngdata.o: nntp.h Xngdata.o: nntpclient.h Xngdata.o: rcln.h Xngdata.o: rcstuff.h Xngdata.o: rt-select.h Xngdata.o: rthread.h Xngdata.o: term.h Xngdata.o: trn.h Xngdata.o: util.h Xnghash.o: EXTERN.h Xnghash.o: common.h Xnghash.o: config.h Xnghash.o: final.h Xnghash.o: hash.h Xnghash.o: intrp.h Xnghash.o: ndir.h Xnghash.o: ngdata.h Xnghash.o: nghash.c Xnghash.o: nntp.h Xnghash.o: nntpclient.h Xnghash.o: rcln.h Xnghash.o: rcstuff.h Xnghash.o: term.h Xnghash.o: trn.h Xnghash.o: util.h Xngsrch.o: EXTERN.h Xngsrch.o: INTERN.h Xngsrch.o: common.h Xngsrch.o: config.h Xngsrch.o: final.h Xngsrch.o: ngsrch.c Xngsrch.o: ngsrch.h Xngsrch.o: rcln.h Xngsrch.o: rcstuff.h Xngsrch.o: search.h Xngsrch.o: term.h Xngsrch.o: trn.h Xngsrch.o: util.h Xngstuff.o: EXTERN.h Xngstuff.o: INTERN.h Xngstuff.o: bits.h Xngstuff.o: cache.h Xngstuff.o: common.h Xngstuff.o: config.h Xngstuff.o: decode.h Xngstuff.o: final.h Xngstuff.o: head.h Xngstuff.o: intrp.h Xngstuff.o: kfile.h Xngstuff.o: ng.h Xngstuff.o: ngdata.h Xngstuff.o: ngstuff.c Xngstuff.o: ngstuff.h Xngstuff.o: rcstuff.h Xngstuff.o: respond.h Xngstuff.o: rt-select.h Xngstuff.o: rt-wumpus.h Xngstuff.o: rthread.h Xngstuff.o: sw.h Xngstuff.o: term.h Xngstuff.o: trn.h Xngstuff.o: util.h Xngstuff.o: util2.h Xnntp.o: EXTERN.h Xnntp.o: artio.h Xnntp.o: bits.h Xnntp.o: cache.h Xnntp.o: common.h Xnntp.o: config.h Xnntp.o: final.h Xnntp.o: head.h Xnntp.o: init.h Xnntp.o: ngdata.h Xnntp.o: nntp.c Xnntp.o: nntp.h Xnntp.o: nntpclient.h Xnntp.o: rcln.h Xnntp.o: term.h Xnntp.o: trn.h Xnntp.o: util.h Xnntpauth.o: EXTERN.h Xnntpauth.o: INTERN.h Xnntpauth.o: common.h Xnntpauth.o: config.h Xnntpauth.o: nntp.h Xnntpauth.o: nntpauth.c Xnntpauth.o: nntpauth.h Xnntpauth.o: nntpclient.h Xnntpauth.o: util2.h Xnntpclient.o: EXTERN.h Xnntpclient.o: INTERN.h Xnntpclient.o: common.h Xnntpclient.o: config.h Xnntpclient.o: nntpclient.c Xnntpclient.o: nntpclient.h Xnntpinit.o: EXTERN.h Xnntpinit.o: common.h Xnntpinit.o: config.h Xnntpinit.o: nntpclient.h Xnntpinit.o: nntpinit.c Xnntplist.o: EXTERN.h Xnntplist.o: common.h Xnntplist.o: config.h Xnntplist.o: nntpclient.h Xnntplist.o: nntplist.c Xonly.o: EXTERN.h Xonly.o: INTERN.h Xonly.o: common.h Xonly.o: config.h Xonly.o: final.h Xonly.o: ngsrch.h Xonly.o: only.c Xonly.o: only.h Xonly.o: search.h Xonly.o: util.h Xparsedate.o: config.h Xparsedate.o: parsedate.y Xrcln.o: EXTERN.h Xrcln.o: INTERN.h Xrcln.o: common.h Xrcln.o: config.h Xrcln.o: ngdata.h Xrcln.o: rcln.c Xrcln.o: rcln.h Xrcln.o: rcstuff.h Xrcln.o: util.h Xrcln.o: util2.h Xrcstuff.o: EXTERN.h Xrcstuff.o: INTERN.h Xrcstuff.o: autosub.h Xrcstuff.o: bits.h Xrcstuff.o: cache.h Xrcstuff.o: common.h Xrcstuff.o: config.h Xrcstuff.o: final.h Xrcstuff.o: hash.h Xrcstuff.o: intrp.h Xrcstuff.o: ngdata.h Xrcstuff.o: nntp.h Xrcstuff.o: nntpclient.h Xrcstuff.o: only.h Xrcstuff.o: rcln.h Xrcstuff.o: rcstuff.c Xrcstuff.o: rcstuff.h Xrcstuff.o: search.h Xrcstuff.o: term.h Xrcstuff.o: trn.h Xrcstuff.o: util.h Xrespond.o: EXTERN.h Xrespond.o: INTERN.h Xrespond.o: artio.h Xrespond.o: cache.h Xrespond.o: charsubst.h Xrespond.o: common.h Xrespond.o: config.h Xrespond.o: decode.h Xrespond.o: final.h Xrespond.o: head.h Xrespond.o: intrp.h Xrespond.o: ng.h Xrespond.o: ngdata.h Xrespond.o: nntp.h Xrespond.o: nntpclient.h Xrespond.o: respond.c Xrespond.o: respond.h Xrespond.o: term.h Xrespond.o: trn.h Xrespond.o: util.h Xrespond.o: util2.h Xrt-mt.o: EXTERN.h Xrt-mt.o: INTERN.h Xrt-mt.o: bits.h Xrt-mt.o: cache.h Xrt-mt.o: common.h Xrt-mt.o: config.h Xrt-mt.o: hash.h Xrt-mt.o: intrp.h Xrt-mt.o: ng.h Xrt-mt.o: ngdata.h Xrt-mt.o: nntp.h Xrt-mt.o: nntpclient.h Xrt-mt.o: rcln.h Xrt-mt.o: rt-mt.c Xrt-mt.o: rt-mt.h Xrt-mt.o: rt-process.h Xrt-mt.o: rthread.h Xrt-mt.o: trn.h Xrt-mt.o: util.h Xrt-ov.o: EXTERN.h Xrt-ov.o: INTERN.h Xrt-ov.o: bits.h Xrt-ov.o: cache.h Xrt-ov.o: common.h Xrt-ov.o: config.h Xrt-ov.o: final.h Xrt-ov.o: hash.h Xrt-ov.o: head.h Xrt-ov.o: ng.h Xrt-ov.o: ngdata.h Xrt-ov.o: nntp.h Xrt-ov.o: nntpclient.h Xrt-ov.o: overview.h Xrt-ov.o: rt-ov.c Xrt-ov.o: rt-ov.h Xrt-ov.o: rt-process.h Xrt-ov.o: rt-util.h Xrt-ov.o: rthread.h Xrt-ov.o: term.h Xrt-ov.o: trn.h Xrt-ov.o: util.h Xrt-page.o: EXTERN.h Xrt-page.o: INTERN.h Xrt-page.o: cache.h Xrt-page.o: common.h Xrt-page.o: config.h Xrt-page.o: ngdata.h Xrt-page.o: rt-page.c Xrt-page.o: rt-page.h Xrt-page.o: rt-select.h Xrt-page.o: rt-util.h Xrt-page.o: rthread.h Xrt-page.o: term.h Xrt-page.o: trn.h Xrt-page.o: util.h Xrt-process.o: EXTERN.h Xrt-process.o: INTERN.h Xrt-process.o: bits.h Xrt-process.o: cache.h Xrt-process.o: common.h Xrt-process.o: config.h Xrt-process.o: final.h Xrt-process.o: hash.h Xrt-process.o: intrp.h Xrt-process.o: kfile.h Xrt-process.o: ng.h Xrt-process.o: ngdata.h Xrt-process.o: rcln.h Xrt-process.o: rt-process.c Xrt-process.o: rt-process.h Xrt-process.o: rt-select.h Xrt-process.o: rthread.h Xrt-process.o: trn.h Xrt-process.o: util.h Xrt-select.o: EXTERN.h Xrt-select.o: INTERN.h Xrt-select.o: artsrch.h Xrt-select.o: bits.h Xrt-select.o: cache.h Xrt-select.o: common.h Xrt-select.o: config.h Xrt-select.o: final.h Xrt-select.o: help.h Xrt-select.o: kfile.h Xrt-select.o: ng.h Xrt-select.o: ngdata.h Xrt-select.o: ngstuff.h Xrt-select.o: rt-page.h Xrt-select.o: rt-select.c Xrt-select.o: rt-select.h Xrt-select.o: rt-util.h Xrt-select.o: rthread.h Xrt-select.o: search.h Xrt-select.o: term.h Xrt-select.o: trn.h Xrt-select.o: util.h Xrt-util.o: EXTERN.h Xrt-util.o: INTERN.h Xrt-util.o: artio.h Xrt-util.o: cache.h Xrt-util.o: common.h Xrt-util.o: config.h Xrt-util.o: ngdata.h Xrt-util.o: nntp.h Xrt-util.o: nntpclient.h Xrt-util.o: rt-select.h Xrt-util.o: rt-util.c Xrt-util.o: rt-util.h Xrt-util.o: rthread.h Xrt-util.o: term.h Xrt-wumpus.o: EXTERN.h Xrt-wumpus.o: INTERN.h Xrt-wumpus.o: artio.h Xrt-wumpus.o: backpage.h Xrt-wumpus.o: cache.h Xrt-wumpus.o: common.h Xrt-wumpus.o: config.h Xrt-wumpus.o: final.h Xrt-wumpus.o: head.h Xrt-wumpus.o: ng.h Xrt-wumpus.o: ngdata.h Xrt-wumpus.o: rt-select.h Xrt-wumpus.o: rt-wumpus.c Xrt-wumpus.o: rt-wumpus.h Xrt-wumpus.o: rthread.h Xrt-wumpus.o: term.h Xrt-wumpus.o: util.h Xrthread.o: EXTERN.h Xrthread.o: INTERN.h Xrthread.o: artstate.h Xrthread.o: bits.h Xrthread.o: cache.h Xrthread.o: common.h Xrthread.o: config.h Xrthread.o: final.h Xrthread.o: hash.h Xrthread.o: head.h Xrthread.o: intrp.h Xrthread.o: kfile.h Xrthread.o: ng.h Xrthread.o: ngdata.h Xrthread.o: nntp.h Xrthread.o: nntpclient.h Xrthread.o: rcln.h Xrthread.o: rcstuff.h Xrthread.o: rt-mt.h Xrthread.o: rt-ov.h Xrthread.o: rt-page.h Xrthread.o: rt-process.h Xrthread.o: rt-select.h Xrthread.o: rt-util.h Xrthread.o: rt-wumpus.h Xrthread.o: rthread.c Xrthread.o: rthread.h Xrthread.o: search.h Xrthread.o: trn.h Xrthread.o: util.h Xsearch.o: EXTERN.h Xsearch.o: INTERN.h Xsearch.o: common.h Xsearch.o: config.h Xsearch.o: search.c Xsearch.o: search.h Xsearch.o: util.h Xstrftime.o: EXTERN.h Xstrftime.o: common.h Xstrftime.o: config.h Xstrftime.o: strftime.c Xsw.o: EXTERN.h Xsw.o: INTERN.h Xsw.o: artstate.h Xsw.o: cache.h Xsw.o: charsubst.h Xsw.o: common.h Xsw.o: config.h Xsw.o: head.h Xsw.o: intrp.h Xsw.o: ng.h Xsw.o: ngdata.h Xsw.o: only.h Xsw.o: rt-page.h Xsw.o: rt-util.h Xsw.o: search.h Xsw.o: sw.c Xsw.o: sw.h Xsw.o: term.h Xsw.o: trn.h Xsw.o: util.h Xsw.o: util2.h Xterm.o: EXTERN.h Xterm.o: INTERN.h Xterm.o: cache.h Xterm.o: common.h Xterm.o: config.h Xterm.o: final.h Xterm.o: help.h Xterm.o: intrp.h Xterm.o: term.c Xterm.o: term.h Xterm.o: util.h Xterm.o: util2.h Xtest.o: test.c Xtrn-artchk.o: EXTERN.h Xtrn-artchk.o: common.h Xtrn-artchk.o: config.h Xtrn-artchk.o: nntpclient.h Xtrn-artchk.o: trn-artchk.c Xtrn.o: EXTERN.h Xtrn.o: INTERN.h Xtrn.o: addng.h Xtrn.o: cache.h Xtrn.o: common.h Xtrn.o: config.h Xtrn.o: final.h Xtrn.o: help.h Xtrn.o: init.h Xtrn.o: intrp.h Xtrn.o: kfile.h Xtrn.o: last.h Xtrn.o: ng.h Xtrn.o: ngdata.h Xtrn.o: ngsrch.h Xtrn.o: ngstuff.h Xtrn.o: nntp.h Xtrn.o: nntpclient.h Xtrn.o: only.h Xtrn.o: patchlevel.h Xtrn.o: rcln.h Xtrn.o: rcstuff.h Xtrn.o: search.h Xtrn.o: sw.h Xtrn.o: term.h Xtrn.o: trn.c Xtrn.o: trn.h Xtrn.o: util.h Xtrn.o: util2.h Xunipatch.o: unipatch.c Xunship.o: EXTERN.h Xunship.o: common.h Xunship.o: config.h Xunship.o: decode.h Xunship.o: respond.h Xunship.o: unship.c Xutil.o: EXTERN.h Xutil.o: INTERN.h Xutil.o: common.h Xutil.o: config.h Xutil.o: final.h Xutil.o: nntp.h Xutil.o: nntpauth.h Xutil.o: nntpclient.h Xutil.o: term.h Xutil.o: util.c Xutil.o: util.h Xutil2.o: EXTERN.h Xutil2.o: INTERN.h Xutil2.o: common.h Xutil2.o: config.h Xutil2.o: nntp.h Xutil2.o: nntpauth.h Xutil2.o: nntpclient.h Xutil2.o: util.h Xutil2.o: util2.c Xutil2.o: util2.h Xuudecode.o: EXTERN.h Xuudecode.o: common.h Xuudecode.o: config.h Xuudecode.o: decode.h Xuudecode.o: respond.h Xuudecode.o: uudecode.c XMakefile: Makefile.SH config.sh ; /bin/sh $(srcdir)/Makefile.SH XPnews: Pnews.SH config.sh ; /bin/sh $(srcdir)/Pnews.SH XPolicy.sh: Policy.sh.SH config.sh ; /bin/sh $(srcdir)/Policy.sh.SH XRnmail: Rnmail.SH config.sh ; /bin/sh $(srcdir)/Rnmail.SH XSpeller: Speller.SH config.sh ; /bin/sh $(srcdir)/Speller.SH Xconfig.h: config.h.SH config.sh ; /bin/sh $(srcdir)/config.h.SH Xfilexp: filexp.SH config.sh ; /bin/sh $(srcdir)/filexp.SH Xmakedepend: makedepend.SH config.sh ; /bin/sh $(srcdir)/makedepend.SH Xmakedir: makedir.SH config.sh ; /bin/sh $(srcdir)/makedir.SH Xmbox.saver: mbox.saver.SH config.sh ; /bin/sh $(srcdir)/mbox.saver.SH Xnewsetup: newsetup.SH config.sh ; /bin/sh $(srcdir)/newsetup.SH Xnewsgroups: newsgroups.SH config.sh ; /bin/sh $(srcdir)/newsgroups.SH Xnewsnews: newsnews.SH config.sh ; /bin/sh $(srcdir)/newsnews.SH Xnorm.saver: norm.saver.SH config.sh ; /bin/sh $(srcdir)/norm.saver.SH X# WARNING: Put nothing here or make depend will gobble it up! SHAR_EOF $shar_touch -am 1118220194 'trn-3.6/dependencies' && chmod 0644 'trn-3.6/dependencies' || echo 'restore of trn-3.6/dependencies failed' shar_count="`wc -c < 'trn-3.6/dependencies'`" test 15761 -eq "$shar_count" || echo "trn-3.6/dependencies: original size 15761, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/strftime.c ============== if test -f 'trn-3.6/strftime.c' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/strftime.c (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/strftime.c (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/strftime.c' && X/* X * strftime: print formatted information about a given time. X * Adapted from the routine by Eric R. Smith, Michal Jaegermann, X * Arnold Robins, and Paul Close. X */ X/* The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X/* Configuration choices for %x and %X */ X X#undef LOCAL_DDMMYY /* choose DD/MM/YY instead of MM/DD/YY */ X#undef LOCAL_DOTTIME /* choose HH.MM.SS instead of HH:MM:SS */ X X#include "EXTERN.h" X#include "common.h" X Xstatic char *mth_name[] = { X "January", "February", "March", "April", "May", "June", X "July", "August", "September", "October", "November", "December" X}; X Xstatic char *day_name[] = { X "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", X "Saturday" X}; X X#ifdef HAS_FTIME X# ifndef TM_ZONE Xchar tznm[16] = ""; X# endif X#else Xextern char *tzname[]; X#endif X Xsize_t Xstrftime(str, maxsize, fmt, ts) Xchar *str; Xsize_t maxsize; XCONST char *fmt; XCONST struct tm *ts; X{ X size_t num = 0, len; X char ch; X char *putstr; X char tmpbuf[80]; X X if (maxsize-- <= 0) X return 0; X X for (;;) { X if (!(ch = *fmt++)) X break; X if (num == maxsize) { X num = 0; X break; X } X if (ch != '%') { X *str++ = ch; X num++; X continue; X } X /* assume the finished product will be sprintf'ed into tmpbuf */ X putstr = tmpbuf; X X switch (ch = *fmt++) { X case 'A': X case 'a': X if (ts->tm_wday < 0 || ts->tm_wday > 6) X putstr = "?"; X else X if (ch == 'A') X putstr = day_name[ts->tm_wday]; X else X sprintf(tmpbuf, "%-.3s", day_name[ts->tm_wday]); X break; X case 'B': X case 'b': X case 'h': X if (ts->tm_mon < 0 || ts->tm_mon > 11) X putstr = "?"; X else if (ch == 'B') X putstr = mth_name[ts->tm_mon]; X else X sprintf(tmpbuf, "%-.3s", mth_name[ts->tm_mon]); X break; X case 'C': X strftime(tmpbuf, sizeof tmpbuf, "%A, %B %e, %Y", ts); X break; X case 'c': X strftime(tmpbuf, sizeof tmpbuf, "%x %X", ts); X break; X case 'D': X#ifndef LOCAL_DDMMYY X case 'x': X#endif X strftime(tmpbuf, sizeof tmpbuf, "%m/%d/%y", ts); X break; X case 'd': X sprintf(tmpbuf, "%02d", ts->tm_mday); X break; X case 'e': /* day of month, blank padded */ X sprintf(tmpbuf, "%2d", ts->tm_mday); X break; X case 'H': X sprintf(tmpbuf, "%02d", ts->tm_hour); X break; X case 'I': X { X int n; X X n = ts->tm_hour; X if (n == 0) X n = 12; X else if (n > 12) X n -= 12; X sprintf(tmpbuf, "%02d", n); X break; X } X case 'j': X sprintf(tmpbuf, "%03d", ts->tm_yday + 1); X break; X case 'm': X sprintf(tmpbuf, "%02d", ts->tm_mon + 1); X break; X case 'M': X sprintf(tmpbuf, "%02d", ts->tm_min); X break; X case 'p': X putstr = (ts->tm_hour < 12) ? "AM" : "PM"; X break; X case 'r': X strftime(tmpbuf, sizeof tmpbuf, "%I:%M:%S %p", ts); X break; X case 'R': X strftime(tmpbuf, sizeof tmpbuf, "%H:%M", ts); X break; X case 'S': X sprintf(tmpbuf, "%02d", ts->tm_sec); X break; X case 'T': X#ifndef LOCAL_DOTTIME X case 'X': X#endif X strftime(tmpbuf, sizeof tmpbuf, "%H:%M:%S", ts); X break; X case 'U': /* week of year - starting Sunday */ X sprintf(tmpbuf, "%02d", (ts->tm_yday - ts->tm_wday + 10) / 7); X break; X case 'W': /* week of year - starting Monday */ X sprintf(tmpbuf, "%02d", (ts->tm_yday - ((ts->tm_wday + 6) % 7) X + 10) / 7); X break; X case 'w': X sprintf(tmpbuf, "%d", ts->tm_wday); X break; X case 'y': X sprintf(tmpbuf, "%02d", ts->tm_year % 100); X break; X#ifdef LOCAL_DOTTIME X case 'X': X strftime(tmpbuf, sizeof tmpbuf, "%H.%M.%S", ts); X break; X#endif X#ifdef LOCAL_DDMMYY X case 'x': X strftime(tmpbuf, sizeof tmpbuf, "%d/%m/%y", ts); X break; X#endif X case 'Y': X sprintf(tmpbuf, "%d", ts->tm_year + 1900); X break; X case 'Z': X#ifdef HAS_FTIME X# ifdef TM_ZONE X sprintf(tmpbuf, "%s", ts->tm_zone); X# else X if (*tznm == '\0') { X char *timezone(); X struct timeval tv; X struct timezone tz; X X (void) gettimeofday(&tv, &tz); X strcpy(tznm, timezone(tz.tz_minuteswest, ts->tm_isdst)); X } X sprintf(tmpbuf, "%s", tznm); X# endif X#else X sprintf(tmpbuf, "%s", tzname[ts->tm_isdst]); X#endif X break; X case '%': X case '\0': X putstr = "%"; X break; X case 'n': /* same as \n */ X putstr = "\n"; X break; X case 't': /* same as \t */ X putstr = "\t"; X break; X default: X sprintf(tmpbuf, "%%%c", ch); X break; X } X len = strlen(putstr); X num += len; X if (num > maxsize) { X len -= num - maxsize; X num = 0; X ch = '\0'; X } X strncpy(str, putstr, len); X str += len; X if (!ch) X break; X } X *str = '\0'; X return num; X} SHAR_EOF $shar_touch -am 0711223693 'trn-3.6/strftime.c' && chmod 0644 'trn-3.6/strftime.c' || echo 'restore of trn-3.6/strftime.c failed' shar_count="`wc -c < 'trn-3.6/strftime.c'`" test 4698 -eq "$shar_count" || echo "trn-3.6/strftime.c: original size 4698, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/charsubst.h ============== if test -f 'trn-3.6/charsubst.h' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/charsubst.h (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/charsubst.h (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/charsubst.h' && X/* $Id: charsubst.h,v 3.0 1993/12/21 21:54:40 davison Trn $ X */ X/* X * Permission is hereby granted to copy, reproduce, redistribute or otherwise X * use this software as long as: there is no monetary profit gained X * specifically from the use or reproduction of this software, it is not X * sold, rented, traded or otherwise marketed, and this copyright notice is X * included prominently in any copy made. X * X * The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X#ifdef CHARSUBST X X/* Conversions are: plain, ISO->ascii, TeX -> ISO, ISO->ascii monospaced */ XEXT char *charsets INIT("patm"); XEXT char *charsubst; X Xint putsubstchar _((int, int, bool_int)); Xchar *current_charsubst _((void)); Xvoid strcharsubst _((char*,char*)); X X#endif SHAR_EOF $shar_touch -am 1021141894 'trn-3.6/charsubst.h' && chmod 0644 'trn-3.6/charsubst.h' || echo 'restore of trn-3.6/charsubst.h failed' shar_count="`wc -c < 'trn-3.6/charsubst.h'`" test 872 -eq "$shar_count" || echo "trn-3.6/charsubst.h: original size 872, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/nntplist.c ============== if test -f 'trn-3.6/nntplist.c' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/nntplist.c (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/nntplist.c (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/nntplist.c' && X/* $Id: nntplist.c,v 3.5 1993/04/18 20:18:23 davison Trn $ X */ X/* This software is Copyright 1991 by Stan Barber. X * X * Permission is hereby granted to copy, reproduce, redistribute or otherwise X * use this software as long as: there is no monetary profit gained X * specifically from the use or reproduction of this software, it is not X * sold, rented, traded or otherwise marketed, and this copyright notice is X * included prominently in any copy made. X * X * The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X#include "EXTERN.h" X#include "common.h" X#include "nntpclient.h" X Xvoid Usage _((void)); Xvoid finalize _((int)); Xchar nntp_handle_timeout _((bool_int)); X Xint debug = 0; /* make nntpclient.c happy */ X X#ifdef USE_GENAUTH Xchar *loginName; X#endif X Xint Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X char command[32]; X char *action = NULL; X char *wildarg = NULL; X register FILE *out_fp = NULL; X X while (--argc) { X if (**++argv == '-') { X switch (*++*argv) { X case 'o': X if (out_fp || !--argc) X Usage(); X out_fp = fopen(*++argv, "w"); X if (out_fp == NULL) { X perror(*argv); X exit(1); X } X break; X case 'x': X if (wildarg || !--argc) X Usage(); X wildarg = *++argv; X break; X default: X Usage(); X /* NO RETURN */ X } X } X else if (!action) X action = *argv; X else X Usage(); X } X if (!action) X action = "ACTIVE"; X if (!out_fp) X out_fp = stdout; X X#ifdef USE_GENAUTH X /* get login name */ X loginName = getenv("USER"); X if (loginName == Nullch) { X loginName = getenv("LOGNAME"); X#ifdef GETLOGIN X if (loginName == Nullch) X loginName = getlogin(); X#endif X } X#endif X X if (!nntp_connect(0)) X exit(1); X sprintf(command,"LIST %s",action); X if (wildarg) X sprintf(command+strlen(command)," %s",wildarg); X nntp_command(command); X#ifdef HAS_SIGHOLD X sighold(SIGINT); X#endif X if (nntp_check(FALSE) != NNTP_CLASS_OK) { X fprintf(stderr,"nntplist: Can't get %s file from server.\n",action); X fprintf(stderr, "Server said: %s\n", ser_line); X finalize(1); X } X X while (nntp_gets(ser_line, sizeof ser_line) >= 0) { X if (NNTP_LIST_END(ser_line)) /* while there's another line */ X break; /* get it and write it to */ X fputs(ser_line, out_fp); X putc('\n', out_fp); X } X X#ifdef HAS_SIGHOLD X sigrelse(SIGINT); X#endif X nntp_close(TRUE); X return 0; X} X Xvoid XUsage() X{ X fprintf(stderr, "Usage: nntplist [-x WildSpec] [-o OutputFile] [type]\n\ X\nWhere type is any of the LIST command arguments your server accepts.\n"); X exit(1); X} X Xvoid Xfinalize(num) Xint num; X{ X nntp_close(TRUE); X exit(num); X} X Xchar Xnntp_handle_timeout(strict) Xbool_int strict; X{ X nntp_error("\n503 Server timed out.\n"); X if (strict) X finalize(1); X return NNTP_CLASS_FATAL; X} X Xstatic char nomem[] = "trn: out of memory!\n"; X X/* paranoid version of malloc */ X Xchar * Xsafemalloc(size) XMEM_SIZE size; X{ X char *ptr; X X ptr = malloc(size ? size : (MEM_SIZE)1); X if (ptr == Nullch) { X fputs(nomem,stdout) FLUSH; X finalize(1); X } X return ptr; X} X X/* paranoid version of realloc. If where is NULL, call malloc */ X Xchar * Xsaferealloc(where,size) Xchar *where; XMEM_SIZE size; X{ X char *ptr; X X ptr = realloc(where, size ? size : (MEM_SIZE)1); X if (!ptr) { X fputs(nomem,stdout) FLUSH; X finalize(1); X } X return ptr; X} SHAR_EOF $shar_touch -am 1028161994 'trn-3.6/nntplist.c' && chmod 0644 'trn-3.6/nntplist.c' || echo 'restore of trn-3.6/nntplist.c failed' shar_count="`wc -c < 'trn-3.6/nntplist.c'`" test 3464 -eq "$shar_count" || echo "trn-3.6/nntplist.c: original size 3464, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/HINTS.TRN ============== if test -f 'trn-3.6/HINTS.TRN' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/HINTS.TRN (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/HINTS.TRN (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/HINTS.TRN' && XYou can specify trn environment variables in an initialization file with all Xthe options. See the first hint for details on that. Certain environment Xvariables, like RNINIT, must be set in your shell (how else does trn know Xto look there for the rest?). Others, like REPLYTO may be useful in other Xprograms, so you could consider putting that in your shell startup file too. XBut most of them are specific, like MAILHEADER, so you might as well set them Xin the init file with the -E option. That's why most of them look like X-EMAILHEADER=xx rather than MAILHEADER=xx -- to remind you. X XHelpful hints: X o You can make a file that contains all the flags and initialization that X trn will use at startup. When you're done, point an environment variable X TRNINIT to the file. A good choice is "TRNINIT=~/.trninit". You can put X multiple lines in this init file and/or separate options by spaces. X X o Two new and useful flags are the -p and -G flags. -p means automatically X select any thread that you have posted a message to. This makes it very X easy to track replies to your insightful comments :-) (to automatically X select other threads, try the 'T' command). -G tells the 'g' command X to use a loose match algorithm on groups it can't find. So if you type X "g news.softwre.raeders.genrl", it will assume that you meant to type X news.software.readers and take you there. It is usually easier to type X "/reader" than using a 'g' command, but use -G too. X X o The 'X' command in the selector (kinda like catchup/yes) can be made the X default action on the last page of selections by using the command-line X option: -XX. This lets you browse all the pages, making selections as X you go, and then mark everything that was not selected as read when you X press space at the last page. X X o If you like to select a little, read a little, and then select a little X more, try using the command-line option: -XDD. This makes the 'D' X command the default on all pages of the selector. Thus you can select X the things you want to read on the current page, press space, and you X will read the selected articles immediately (if there were any). All X other articles on the current page will be marked as read. X X o To use mush to send all R)eplies: X -EMAILPOSTER="mush -h %h" X X o To use elm to send all R)eplies: X -EMAILHEADER="\\000" X -EMAILPOSTER="elm -i %h -s '%'s' %t" X X o To tailor the time field: X A good example is -ELOCALTIMEFMT="%A, %B %e %Y, %r %Z" which becomes: X Date: Saturday, June 12 1993, 08:15:32 PM PDT. (The default is X "%a %b %e %X %Z %Y", which is like the date(1) command). See the X strftime(3C) man page for more details on other % characters. X X o To tailor the "In article , joe@user (Joe User)" line: X person's name only: %)f X person's address only: %>f X For example: -EATTRIBUTION='According to %)f <%>f>:' X X o A better kill file scheme than the default (which creates obtuse X directories all over your ~/News directory) is to use the following: X -EKILLGLOBAL="%p/Kill/Global" X -EKILLLOCAL="%p/Kill/%C" X Where %p is your news directory, usually ~/News, and %C is the full name X of the group, like sci.bio. This means the kill file for sci.bio is in X ~/News/Kill/sci.bio instead of ~/News/sci/bio/KILL. Think about this X next time you subscribe to alt.swedish.chef.bork.bork.bork :-) X X Note that you need a file system that allows long file names to make X this work. X X o If you're tired of endless subscription notices to newsgroups you could X care less about, look at the AUTOUNSUBSCRIBE variable. There's a X companion AUTOSUBSCRIBE function too. For example, to automatically X unsubscribe all NEW alt groups, use ^alt.*. More dramatic, to X unsubscribe to everything BUT certain groups, use "*,!^local.*,!^comp.*", X for example. If you're REALLY tired of them, use -q to tell trn to not X even check for new groups at all. X X o If you want replies to your postings to go to a machine other than the X machine you're posting from, set the REPLYTO environment variable. For X example, you might set this if you were trn's author: X -EREPLYTO="davison@borland.com (Wayne Davison)" X X o You might like to redefine the 'u' keys in the following way: 'u' visits X the "Set unread?" prompt (except in the thread selector), 'U' goes X directly to the already-read article selector, and Ctrl-U unsubscribes X from the group (even while in the thread selector). Put the following X 3 macros in your .rnmac file to accomplish this (or change TRNMACROS to X .trnmac and put them there): X X u %(%m=[aefnp]?U:u) X U %(%m=[aefnp]?U+:U) X ^U %(%m=t?+u:u) X X o If you like to be able to move forward/backward by article number more X often than you need to search by subject, redefine ^N and ^P to be _N X and _P by putting these lines into your macro file: X X ^P %(%m=[aep]?_P:^P) X ^N %(%m=[aep]?_N:^N) X X o If you like the way that 'q' worked in the thread selector in trn 1.x, X put the following macro in your macro file: X X q %(%m=t?+:q) X X o If you would like the 'f' command to always answer yes to the "Are you X starting an unreleated topic?" question, put this line into your macro X file: X X f %(%m=[ap]?fy^m:f) X X o If you want to be able to save your shar headers in a file as they are X extracted and you have access to "unshar" (a program that can extract X shar files while saving the headers in UNSHAR.HDR), twiddle the external X extract command to send the entire article: X X -EEXSAVER="%e <%A" X X and then point the UNSHAR variable at unshar instead of /bin/sh: X X -EUNSHAR="unshar -s" X X Note that this assumes that any other commands you execute with X "e dir|command" can also handle the entire article as input X (uuencoded and shipped files are not affected). X X o The following lines represent trn's default headers for posting an X article. If you want to customize your header copy this to your X .trninit file and modify it (and _don't_ use Pnews directly to post, X use trn -- the ".f" command from newsgroup prompt works well for this). X X-ENEWSHEADER="%(%[followup-to]=^$?:%(%[followup-to]=^%n$?:X-ORIGINAL-NEWSGROUPS: %n X))Newsgroups: %(%F=^$?%C:%F) XSubject: %(%S=^$?%\" X XSubject: \":Re: %S) XSummary: XExpires: X%(%R=^$?:References: %R X)Sender: XFollowup-To: X%(%{REPLYTO}=^$?:Reply-To: %{REPLYTO} X)Distribution: %(%i=^$?%\"Distribution: \":%D) XOrganization: %o XKeywords: %[keywords] XCc: %(%F=poster?%t:%(%F!=@?:%F)) X X" X XIf you're curious, trn's author has the following .trninit file: X---------------------------------------------------------------------- X-XX -B -N -f -x11ms "-F> " -pp -G -u +e -mu X-hunrecognized X-ELOCALTIMEFMT="%A, %B %e %Y, %r %Z" X-ESELECTCHARS="abdefgijlmorstuvwxyz1234567890BCFGHIKVW" X-EKILLLOCAL="%p/Kill/%C" X-EKILLGLOBAL="%p/Kill/Global" X-EMAILPOSTER="elm -i %h -s '%'s' %t" X-EFORWARDPOSTER="elm -i %h -s '%'[subject]' %q" X-EATTRIBUTION="According to %)f <%>f>:" X---------------------------------------------------------------------- X Xand the following .trnmac file: X---------------------------------------------------------------------- Xu %(%m=[aenp]?U:u) XU %(%m=[aenp]?U+:U) X^U %(%m=t?+u:u) Xo %(%m=[nf]?O:o) XO %(%m=[nf]?o:O) X~T s ~/Mail/trn X~M | /bin/mail davison X^[^[ ^[ X---------------------------------------------------------------------- SHAR_EOF $shar_touch -am 1007195794 'trn-3.6/HINTS.TRN' && chmod 0644 'trn-3.6/HINTS.TRN' || echo 'restore of trn-3.6/HINTS.TRN failed' shar_count="`wc -c < 'trn-3.6/HINTS.TRN'`" test 7377 -eq "$shar_count" || echo "trn-3.6/HINTS.TRN: original size 7377, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/trn-artchk.c ============== if test -f 'trn-3.6/trn-artchk.c' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/trn-artchk.c (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/trn-artchk.c (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/trn-artchk.c' && X/* $Id: trn-artchk.c,v 3.5 1993/04/18 03:09:32 davison Trn $ X*/ X/* The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X/* A program to check an article's validity and print warnings if problems X** are found. X** X** Usage: trn-artchk
X*/ X X#include "EXTERN.h" X#include "common.h" X#ifdef USE_NNTP X#include "nntpclient.h" X#endif X X#define MAXNGS 100 X Xchar *safemalloc _((MEM_SIZE)); X X#ifdef USE_NNTP Xint server_connection _((void)); Xvoid finalize _((int)); Xchar nntp_handle_timeout _((bool_int)); X Xint debug = 0; X X#ifdef USE_GENAUTH Xchar *loginName; X#endif X X#endif /* USE_NNTP */ X Xint Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X FILE *fp, *fp_active = NULL, *fp_ng = NULL; X bool check_active = FALSE, check_ng = FALSE; X char buff[LBUFLEN], *cp, *cp2; X char *ngptrs[MAXNGS]; X int nglens[MAXNGS]; X int foundactive[MAXNGS]; X int i, col, max_col_len, line_num = 0, ngcnt = 0, ngleft; X int found_newsgroups = 0; X X if (argc != 5 || !(max_col_len = atoi(argv[2]))) { X fprintf(stderr, "\ XUsage: trn-artchk
\n"); X exit(1); X } X X if ((fp = fopen(argv[1], "r")) == NULL) { X fprintf(stderr, "trn-artchk: unable to open article `%s'.\n", argv[1]); X exit(1); X } X X /* Check the header for proper format and report on the newsgroups */ X while (fgets(buff, LBUFLEN, fp)) { X line_num++; X buff[strlen(buff)-1] = '\0'; X if (!*buff) X break; X if (*buff == ' ' || *buff == '\t') X continue; X if (!(cp = index(buff, ':'))) { X printf("\nERROR: line %d is an invalid header line:\n%s\n", X line_num, buff); X break; X } X if (cp[1] != ' ' && cp[1] != '\0') { X printf("\n\ XERROR: header on line %d does not have a space after the colon:\n%s\n", X line_num, buff); X } X if (cp - buff == 10 && strnEQ(buff, "Newsgroups", 10)) { X found_newsgroups = 1; X for (cp = buff + 11; *cp == ' '; cp++) X ; X if (index(cp, ' ')) { X printf("\n\ XERROR: the \"Newsgroups:\" line has spaces in it that MUST be removed. The\n\ Xonly allowable space is the one separating the colon (:) from the contents.\n\ XUse a comma (,) to separate multiple newsgroup names.\n"); X continue; X } X while (*cp) { X if (!(cp2 = index(cp, ','))) X cp2 = cp + strlen(cp); X else X *cp2++ = '\0'; X if (ngcnt < MAXNGS) { X nglens[ngcnt] = strlen(cp); X foundactive[ngcnt] = 0; X ngptrs[ngcnt] = safemalloc(nglens[ngcnt]+1); X strcpy(ngptrs[ngcnt], cp); X ngcnt++; X } X cp = cp2; X } X if (!ngcnt) { X printf("\n\ XERROR: the \"Newsgroups:\" line lists no newsgroups.\n"); X continue; X } X } X } X if (!found_newsgroups) { X printf("\nERROR: the \"Newsgroups:\" line is missing from the header.\n"); X } X X /* Check the body of the article for long lines */ X while (fgets(buff, LBUFLEN, fp)) { X line_num++; X col = strlen(buff)-1; X if (buff[col] != '\n') X printf("\n\ XWarning: line %d has no trailing newline character and may get lost.\n", X line_num); X else X buff[col] = '\0'; X col = 0; X for (cp = buff; *cp; cp++) { X if (*cp == '\t') X col += 8 - (col%8); X else X col++; X } X if (col > max_col_len) { X printf("\n\ XWarning: posting exceeds %d columns. Line %d is the first long one:\n%s\n", X max_col_len, line_num, buff); X break; X } X } X if (ngcnt) { X struct stat st; X if (stat(argv[3], &st) != -1) X check_ng = st.st_size > 0 && (fp_ng = fopen(argv[3], "r")) != NULL; X#ifdef USE_NNTP X else if (server_connection()) X check_ng = TRUE; X#endif X if (stat(argv[4], &st) != -1) X check_active = st.st_size > 0 && (fp_active = fopen(argv[4], "r")) != NULL; X#ifdef USE_NNTP X else if (server_connection()) X check_active = TRUE; X#endif X } X if (ngcnt && (check_ng || check_active)) { X /* Print a note about each newsgroup */ X printf("\nYour article's newsgroup%s:\n", ngcnt == 1? "" : "s"); X if (!check_active) { X for (i = 0; i < ngcnt; i++) { X foundactive[i] = 1; X } X } X else if (fp_active != NULL) { X ngleft = ngcnt; X while (fgets(buff, LBUFLEN, fp_active)) { X if (!ngleft) X break; X for (i = 0; i < ngcnt; i++) { X if (!foundactive[i]) { X if ((buff[nglens[i]] == '\t' || buff[nglens[i]] == ' ') X && strnEQ(ngptrs[i], buff, nglens[i])) { X foundactive[i] = 1; X ngleft--; X } X } X } X } X fclose(fp_active); X } X#ifdef USE_NNTP X else { X int listactive_works = 1; X for (i = 0; i < ngcnt; i++) { X if (listactive_works) { X sprintf(ser_line, "list active %s", ngptrs[i]); X nntp_command(ser_line); X if (nntp_check(FALSE) == NNTP_CLASS_OK) { X while (nntp_gets(ser_line, sizeof ser_line) >= 0) { X if (NNTP_LIST_END(ser_line)) X break; X foundactive[i] = 1; X } X } X else if (*ser_line == NNTP_CLASS_FATAL) { X listactive_works = FALSE; X i--; X } X } X else { X sprintf(ser_line, "GROUP %s", ngptrs[i]); X nntp_command(ser_line); X if (nntp_check(FALSE) == NNTP_CLASS_OK) X foundactive[i] = 1; X } X } X } X if (check_ng && fp_ng == NULL) { X fp_ng = fopen(argv[3], "w+"); X unlink(argv[3]); X if (fp_ng != NULL) { X for (i = 0; i < ngcnt; i++) { X /* issue a description list command */ X sprintf(ser_line, "XGTITLE %s", ngptrs[i]); X nntp_command(ser_line); X /*$$ use list newsgroups if this fails...? */ X if (nntp_check(FALSE) == NNTP_CLASS_OK) { X /* write results to fp_ng */ X while (nntp_gets(ser_line, sizeof ser_line) >= 0) { X if (NNTP_LIST_END(ser_line)) X break; X fprintf(fp_ng, "%s\n", ser_line); X } X } X } X fseek(fp_ng, 0L, 0); X } X } X#endif X if (fp_ng != NULL) { X ngleft = ngcnt; X while (fgets(buff, LBUFLEN, fp_ng)) { X if (!ngleft) X break; X for (i = 0; i < ngcnt; i++) { X if (foundactive[i] && ngptrs[i]) { X if ((buff[nglens[i]] == '\t' || buff[nglens[i]] == ' ') X && strnEQ(ngptrs[i], buff, nglens[i])) { X cp = &buff[nglens[i]]; X *cp++ = '\0'; X while (*cp == ' ' || *cp == '\t') X cp++; X if (cp[0] == '?' && cp[1] == '?') X cp = "[no description available]\n"; X printf("%-23s %s", buff, cp); X free(ngptrs[i]); X ngptrs[i] = 0; X ngleft--; X } X } X } X } X fclose(fp_ng); X } X for (i = 0; i < ngcnt; i++) { X if (!foundactive[i]) { X printf("%-23s ** invalid news group -- check spelling **\n", X ngptrs[i]); X free(ngptrs[i]); X } X else if (ngptrs[i]) { X printf("%-23s [no description available]\n", ngptrs[i]); X free(ngptrs[i]); X } X } X } X return 0; X} X X#ifdef USE_NNTP Xint Xserver_connection() X{ X static int server_stat = 0; X if (!server_stat) { X if (nntp_connect(0)) X server_stat = 1; X else X server_stat = -1; X } X return server_stat == 1; X} X Xchar Xnntp_handle_timeout(strict) Xbool_int strict; X{ X nntp_error("\n503 Server timed out.\n"); X if (strict) X finalize(1); X return NNTP_CLASS_FATAL; X} X#endif X Xvoid Xfinalize(num) Xint num; X{ X#ifdef USE_NNTP X nntp_close(TRUE); X#endif X exit(num); X} X Xstatic char nomem[] = "trn: out of memory!\n"; X X/* paranoid version of malloc */ X Xchar * Xsafemalloc(size) XMEM_SIZE size; X{ X char *ptr; X X ptr = malloc(size ? size : (MEM_SIZE)1); X if (ptr == Nullch) { X fputs(nomem,stdout) FLUSH; X finalize(1); X } X return ptr; X} X X/* paranoid version of realloc. If where is NULL, call malloc */ X Xchar * Xsaferealloc(where,size) Xchar *where; XMEM_SIZE size; X{ X char *ptr; X X ptr = realloc(where, size ? size : (MEM_SIZE)1); X if (!ptr) { X fputs(nomem,stdout) FLUSH; X finalize(1); X } X return ptr; X} SHAR_EOF $shar_touch -am 1028162094 'trn-3.6/trn-artchk.c' && chmod 0644 'trn-3.6/trn-artchk.c' || echo 'restore of trn-3.6/trn-artchk.c failed' shar_count="`wc -c < 'trn-3.6/trn-artchk.c'`" test 7723 -eq "$shar_count" || echo "trn-3.6/trn-artchk.c: original size 7723, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/util2.c ============== if test -f 'trn-3.6/util2.c' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/util2.c (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/util2.c (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/util2.c' && X/* $Id: util2.c,v 3.6 1994/10/28 11:11:11 davison Trn $ X */ X/* This software is Copyright 1991 by Stan Barber. X * X * Permission is hereby granted to copy, reproduce, redistribute or otherwise X * use this software as long as: there is no monetary profit gained X * specifically from the use or reproduction of this software, it is not X * sold, rented, traded or otherwise marketed, and this copyright notice is X * included prominently in any copy made. X * X * The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X#include "EXTERN.h" X#include "common.h" X#include "nntp.h" X#include "nntpauth.h" X#include "util.h" X#include "INTERN.h" X#include "util2.h" X X/* return ptr to little string in big string, NULL if not found */ X Xchar * Xinstr(big, little, case_matters) Xchar *big, *little; Xbool_int case_matters; X{ X register char *t, *s, *x; X X for (t = big; *t; t++) { X for (x=t,s=little; *s; x++,s++) { X if (!*x) X return Nullch; X if (case_matters == TRUE) { X if(*s != *x) X break; X } else { X register char c,d; X if (isupper(*s)) X c = tolower(*s); X else X c = *s; X if (isupper(*x)) X d = tolower(*x); X else X d = *x; X if ( c != d ) X break; X } X } X if (!*s) X return t; X } X return Nullch; X} X X#ifdef SETENV Xstatic bool firstexport = TRUE; Xextern char **environ; X Xvoid Xexport(nam,val) Xchar *nam, *val; X{ X register int i=envix(nam); /* where does it go? */ X X if (!environ[i]) { /* does not exist yet */ X if (firstexport) { /* need we copy environment? */ X int j; X#ifndef lint X char **tmpenv = (char**) /* point our wand at memory */ X safemalloc((MEM_SIZE) (i+2) * sizeof(char*)); X#else X char **tmpenv = Null(char **); X#endif /* lint */ X X firstexport = FALSE; X for (j=0; j _sharnew.tmp echo 'x - extracting trn-3.6/support/trnkill (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/support/trnkill' && X#!/bin/sh X# trnkill - shell script to apply trn KILL files in the background X# 14 Mar 89 created for rn by Jim Olsen X# 10 Sep 93 modified for trn 3 (or 2) by Wayne Davison X# Options: -d debug mode -- you see all gory action as it happens. X X# Visit all newsgroups (if trn asks about anything else, just say no) Xexport TRNINIT TRNMACRO RNMACRO TERM XTRNINIT='-q -s -T -t -x +X' XTRNMACRO=/tmp/trnkill$$ XTERM=dumb X# support for trn 2.x XRNMACRO=$TRNMACRO Xtrap 'rm -f $TRNMACRO; exit' 1 2 3 15 Xcat >$TRNMACRO <<'EOF' Xz %(%m=[nf]?.q^J:n)^(z^) X^m ^(z^) X^j ^(z^) XEOF Xif test X$1 = X-d; then X echo "z" | trn Xelse X echo "z" | trn >/dev/null 2>&1 Xfi Xrm -f $TRNMACRO Xexit 0 SHAR_EOF $shar_touch -am 1118220194 'trn-3.6/support/trnkill' && chmod 0644 'trn-3.6/support/trnkill' || echo 'restore of trn-3.6/support/trnkill failed' shar_count="`wc -c < 'trn-3.6/support/trnkill'`" test 707 -eq "$shar_count" || echo "trn-3.6/support/trnkill: original size 707, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/nntpauth.c ============== if test -f 'trn-3.6/nntpauth.c' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/nntpauth.c (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/nntpauth.c (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/nntpauth.c' && X/* $Id: nntpauth.c,v 3.6 1994/10/28 11:11:11 davison Trn $ X*/ X/* The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X#include "EXTERN.h" X#include "common.h" X#include "nntp.h" X#include "util2.h" X#include "INTERN.h" X#include "nntpauth.h" X X#ifdef USE_NNTP X Xchar Xnntp_handle_auth_err(strict) Xbool_int strict; X{ X#ifdef USE_GENAUTH X extern char *loginName; X char last_command_save[NNTP_STRLEN]; X char *s, *cmd = "XAUTHINFO GENERIC" + (CompliantServer? 0 : 1); X char ch; X X /* save previous command */ X strcpy(last_command_save, last_command); X X if (s = getenv("NNTPAUTH")) X sprintf(ser_line, "%s %s", cmd, s); X else X sprintf(ser_line, "%s any %s", cmd, loginName); X X /* issue authentication request */ X nntp_command(ser_line); X X ch = (s? nntp_auth(s) : nntp_check(strict)); X X if (ch == NNTP_CLASS_FATAL) { X char tmpbuf[LBUFLEN]; X sprintf(tmpbuf,"\n%s\n",ser_line); X nntp_error(tmpbuf); X finalize(1); X } X X nntp_command(last_command_save); X return nntp_check(strict); X#else /* !USE_GENAUTH */ X if (strict) { X char tmpbuf[LBUFLEN]; X sprintf(tmpbuf,"\n%s\n",ser_line); X nntp_error(tmpbuf); X finalize(1); X } X return *ser_line; X#endif /* !USE_GENAUTH */ X} X X#ifdef USE_GENAUTH X Xchar Xnntp_auth(authc) Xchar *authc; X{ X char *s; X X if (cookiefd == -1 && (s = getenv("NNTP_AUTH_FDS")) != Nullch) { X sscanf(s, "%*d.%*d.%d", &cookiefd); X } X X if (cookiefd == -1) { X FILE *f = tmpfile(); X if (f) X cookiefd = fileno(f); X } X X sprintf(ser_line,"%d.%d.%d",fileno(ser_rd_fp),fileno(ser_wr_fp),cookiefd); X export("NNTP_AUTH_FDS", ser_line); X X if (system(authc)) X strcpy(ser_line, "502 Authentication failed"); X else X strcpy(ser_line, "281 Ok"); X return *ser_line; X} X#endif /* USE_GENAUTH */ X X#endif /* USE_NNTP */ SHAR_EOF $shar_touch -am 1118220194 'trn-3.6/nntpauth.c' && chmod 0644 'trn-3.6/nntpauth.c' || echo 'restore of trn-3.6/nntpauth.c failed' shar_count="`wc -c < 'trn-3.6/nntpauth.c'`" test 1911 -eq "$shar_count" || echo "trn-3.6/nntpauth.c: original size 1911, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/nntpauth.h ============== if test -f 'trn-3.6/nntpauth.h' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/nntpauth.h (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/nntpauth.h (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/nntpauth.h' && X/* $Id: nntpclient.h,v 3.0 1992/12/14 00:14:55 davison Trn $ X*/ X/* The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X X#if defined(USE_NNTP) && defined(USE_GENAUTH) X Xchar nntp_auth _((char*)); X XEXT int cookiefd INIT(-1); X X#endif SHAR_EOF $shar_touch -am 1028161994 'trn-3.6/nntpauth.h' && chmod 0644 'trn-3.6/nntpauth.h' || echo 'restore of trn-3.6/nntpauth.h failed' shar_count="`wc -c < 'trn-3.6/nntpauth.h'`" test 369 -eq "$shar_count" || echo "trn-3.6/nntpauth.h: original size 369, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/util2.h ============== if test -f 'trn-3.6/util2.h' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/util2.h (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/util2.h (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/util2.h' && X/* $Id: util2.h,v 3.6 1994/10/28 11:11:11 davison Trn $ X */ X/* This software is Copyright 1991 by Stan Barber. X * X * Permission is hereby granted to copy, reproduce, redistribute or otherwise X * use this software as long as: there is no monetary profit gained X * specifically from the use or reproduction of this software, it is not X * sold, rented, traded or otherwise marketed, and this copyright notice is X * included prominently in any copy made. X * X * The authors make no claims as to the fitness or correctness of this software X * for any use whatsoever, and it is provided as is. Any use of this software X * is at the user's own risk. X */ X Xchar *instr _((char*,char*,bool_int)); Xvoid export _((char*,char*)); Xint envix _((char*)); SHAR_EOF $shar_touch -am 1028162094 'trn-3.6/util2.h' && chmod 0644 'trn-3.6/util2.h' || echo 'restore of trn-3.6/util2.h failed' shar_count="`wc -c < 'trn-3.6/util2.h'`" test 741 -eq "$shar_count" || echo "trn-3.6/util2.h: original size 741, current size $shar_count" rm -f _sharnew.tmp fi # ============= trn-3.6/samples/subscriptions ============== if test ! -d 'trn-3.6/samples'; then echo 'x - creating directory trn-3.6/samples' mkdir 'trn-3.6/samples' fi if test -f 'trn-3.6/samples/subscriptions' && test X"$1" != X"-c"; then echo 'x - skipping trn-3.6/samples/subscriptions (file already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting trn-3.6/samples/subscriptions (text)' sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/samples/subscriptions' && Xgeneral Xnews.announce.important Xnews.announce.newusers Xnews.software.readers SHAR_EOF $shar_touch -am 1017161694 'trn-3.6/samples/subscriptions' && chmod 0644 'trn-3.6/samples/subscriptions' || echo 'restore of trn-3.6/samples/subscriptions failed' shar_count="`wc -c < 'trn-3.6/samples/subscriptions'`" test 77 -eq "$shar_count" || echo "trn-3.6/samples/subscriptions: original size 77, current size $shar_count" rm -f _sharnew.tmp fi rm -f _sharseq.tmp echo 'You have unpacked the last part' exit 0