aboutsummaryrefslogtreecommitdiff
path: root/news
diff options
context:
space:
mode:
authorMasafumi Max NAKANE <max@FreeBSD.org>1997-04-01 04:35:39 +0000
committerMasafumi Max NAKANE <max@FreeBSD.org>1997-04-01 04:35:39 +0000
commit16be91f502701c33ccbfd067a00322622969bf0f (patch)
tree20d371896bbf5c17dd940757160ac8568e16160a /news
parentf742a35be3c9630c2ddf9cdc1e376cce2bddb9ff (diff)
downloadports-16be91f502701c33ccbfd067a00322622969bf0f.tar.gz
ports-16be91f502701c33ccbfd067a00322622969bf0f.zip
Notes
Diffstat (limited to 'news')
-rw-r--r--news/slnr/Makefile36
-rw-r--r--news/slnr/files/patch-aa1049
-rw-r--r--news/slnr/pkg-descr2
3 files changed, 38 insertions, 1049 deletions
diff --git a/news/slnr/Makefile b/news/slnr/Makefile
index 2d803d4af648..47093b504509 100644
--- a/news/slnr/Makefile
+++ b/news/slnr/Makefile
@@ -1,48 +1,34 @@
# New ports collection makefile for: slnr
-# Version required: 2.13
+# Version required: 2.3.0
# Date created: 21 July 1996
# Whom: Tim Vanderhoek <ac199@freenet.hamilton.on.ca>
#
-# $Id: Makefile,v 1.2 1996/11/13 12:41:30 asami Exp $
+# $Id: Makefile,v 1.3 1996/11/18 11:38:06 asami Exp $
#
-DISTNAME= slnr
-PKGNAME= slnr-2.13
+DISTNAME= slnr-2.3.0
CATEGORIES= news
-MASTER_SITES= ftp://ftp.uu.net/networking/news/readers/off-line/slnr/ \
- ftp://ftp.adelaide.edu.au/pub/news/readers/off-line/slnr/
-DISTFILES= part1.Z part2.Z part3.Z
+MASTER_SITES= http://www3.sympatico.ca/john.vanderhoek/tim/src/slnr/
MAINTAINER= ac199@freenet.hamilton.on.ca
RUN_DEPENDS= zip:${PORTSDIR}/archivers/zip
-DIST_SUBDIR= slnr
-NO_WRKSUBDIR= yes
-ALL_TARGET= slnr
-EXTRACT_CMD= ${GZCAT}
-EXTRACT_BEFORE_ARGS=
-EXTRACT_AFTER_ARGS= | sed -ne '/^\#!\/bin\/sh/,$$p' | sh
MAN1= slnr.1
-EXTRAFILES= default.dot.slnrrc \
- porting.notes slnr.1 LICENSE
+MAKEFILE= src/Makefile
-DOCFILES= porting.notes soup12.doc slnr.doc LICENSE
-DOCFILES+= default.dot.slnrrc
-
-post-extract:
-.for l in ${EXTRAFILES}
- @cp ${FILESDIR}/${l} ${WRKSRC}
-.endfor
+DOCFILES= ${FILESDIR}/porting.notes other/soup12.doc other/slnr.doc \
+ LICENSE other/default.dot.slnrrc
do-install:
.if !defined{NOPORTDOCS}
- mkdir -p ${PREFIX}/share/doc/slnr
- cd ${WRKSRC}; \
+ @${ECHO_MSG} "===> Copying documents to ${PREFIX}/share/doc/slnr"
+ @${MKDIR} -p ${PREFIX}/share/doc/slnr
+ @cd ${WRKSRC}; \
${INSTALL_DATA} ${DOCFILES} ${PREFIX}/share/doc/slnr
.endif
- ${INSTALL_MAN} ${WRKSRC}/slnr.1 ${PREFIX}/man/man1/slnr.1
+ ${INSTALL_MAN} ${WRKSRC}/other/slnr.1 ${PREFIX}/man/man1/slnr.1
${INSTALL_PROGRAM} ${WRKSRC}/slnr ${PREFIX}/bin
.include <bsd.port.mk>
diff --git a/news/slnr/files/patch-aa b/news/slnr/files/patch-aa
index 6c79a1e90e20..c4fe634bbdc6 100644
--- a/news/slnr/files/patch-aa
+++ b/news/slnr/files/patch-aa
@@ -1,1022 +1,27 @@
-diff -ud /devel/slnr/src/slnr.c ./slnr.c
---- /devel/slnr/src/slnr.c Mon Jul 29 17:27:37 1996
-+++ ./slnr.c Mon Jul 29 17:28:34 1996
-@@ -9,12 +9,18 @@
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
-+#ifdef _HAVE_PWD_H
-+#include <pwd.h>
-+#endif
- #ifndef NOSTAT
- # include <sys/stat.h>
- #endif
- #include <ctype.h> /* for toupper */
- #include <stdlib.h> /* For getenv */
- #include "colour.h"
-+#ifdef _HAVE_PARAM_H
-+#include <sys/param.h>
-+#endif
-
- #ifdef ATARI
- #include <mintbind.h>
-@@ -35,8 +41,13 @@
- ** This is used for putting the terminal in raw mode
- ** Under dos we don't need that since getch() returns directly
- */
-+#if defined(BSD)
-+#include <termios.h>
-+#else
- #include <termio.h>
- #endif
-+#include <sys/ioctl.h>
-+#endif
- #endif
- #endif
-
-@@ -55,13 +66,15 @@
- #define GET_REPLYTO 16L
- #define GET_FOLLOWUP 32L
- #define GET_NEWSGROUP 64L
--
--#define INITFILE "slnr.ini"
-+#define GET_CC 128L
-+#define GET_HTO 256L
-
- #ifdef __MSDOS__
- # define PAGER "more <"
- # define EDIT "q"
- # define COMPRESS "pkzip"
-+# define SIGFILE "sig.txt"
-+# define INITFILE "slnr.ini"
- # define MAXART 500 /* 1000 /* Originally 500 */
- # define MAXGRP 100 /* 500 /* Originally 100 */
- # define UNIXR "rb"
-@@ -76,21 +89,32 @@
- char PAGER[64];
- # define EDIT "???" /* To be defined by atari guru */
- # define COMPRESS "stzip" /* To be defined by atari guru */
-+# define SIGFILE "sig.txt"
-+# define INITFILE "slnr.ini"
- # define MAXART 1000
- # define MAXGRP 200
- # else /* Unix */
--# define PAGER "simplpg"
--# define EDIT "simpled"
-+/* is there a better way to set this pager, maybe? */
-+/* NOTE also that we're awfully close to the 80 char limit with this one... */
-+/* NOTE the double \\ is to get one slash from the C preparser moving us
-+ * just under the 80 char limit */
-+# define PAGER "echo 'reset;clear;more $@;read -p '\\''<<<Press ENTER>>>'\\'' nl</dev/tty'|sh -s"
-+# define EDIT "ee"
- # define COMPRESS "zip"
-+# define SIGFILE ".signature"
-+# define INITFILE ".slnrrc"
- # define MAXART 5000
- # define MAXGRP 1000
- # endif
- #endif
-+#define REPFILE "REPLY.zip"
-
- /*
- ** Global variables
- */
--static char pager_str[80],edit_str[80],compress_str[80],quote_str[80];
-+static char pager_str[80],edit_str[80],compress_str[80],quote_str[80],
-+ repfile_str[80];
-+static char sigfile_str[80];
- static int use_ansi;
- int Lines=24;
-
-@@ -101,6 +125,8 @@
- char *replyto;
- char *followup;
- char *newsgroups;
-+ char *cc;
-+ char *hto;
- };
-
- /*
-@@ -124,6 +150,10 @@
- char subject[60];
- unsigned long rank;
- unsigned long ptr; /* Pointer to start of article */
-+ unsigned long bsize; /* size in bytes, cause type `b' & `B'
-+ * a separator that is guaranteed to be
-+ * present. The other size refers to
-+ * line_cnt (see extract_article()) */
- }
- #ifdef __MSDOS2__ /* Create huge array if MS-DOS */
- huge article[MAXART];
-@@ -377,11 +407,11 @@
- #else
-
- #ifndef __MSDOS__
-- if ( strstr((char *) getenv("TERM"),"ansi") == NULL)
-+ /* if ( strstr((char *) getenv("TERM"),"ansi") == NULL)
- {
- Color_string[0][0] = '\0';
- return (Color_string[0]);
-- }
-+ } */
- #endif
- att_str[0] = '\0';
- for_str[0] = '\0';
-@@ -414,7 +444,7 @@
- #ifdef ATARI
- printf(CLEAR_HOME); fflush(stdout);
- #else
-- if ( strstr((char *) getenv("TERM"),"ansi") != NULL)
-+ if (use_ansi)
- printf("\033[0;37;40m\033[2J\033H\n");
- else
- system("tput clear 2>/dev/null"); /* else use clear with terminfo */
-@@ -458,6 +488,30 @@
- return(line);
- }
-
-+char *remove_qt(line)
-+char *line;
-+{
-+ char hold[80];
-+ char *p;
-+ char *h=hold;
-+ p=line;
-+ while (*p!='\0') {
-+ switch (*p) {
-+ case '"':
-+ p++;
-+ break;
-+ case '\\':
-+ if (*(p+1)!='\0') p++;
-+ /* fall through */
-+ default:
-+ *h++=*p++;
-+ break;
-+ }
-+ }
-+ *h='\0';
-+ strcpy (line, hold);
-+}
-+
- /*
- ** Like fgets but with a prompt and check line length
- */
-@@ -483,7 +537,12 @@
- printf ("\r%s%s%s ",scr(1,3,0),prompt,scr(8,7,0));
- fflush(stdout);
- }
-+#if defined(BSD) /* guessing here */
-+ fpurge(fr); /* I think the intent is to remove all pending input
-+ * and fflush(stdin) doesn't really do that */
-+#else
- fflush(fr);
-+#endif
- if (fgets(line,size,fr) == NULL)
- {
- /* Return the default */
-@@ -525,8 +584,12 @@
- unsigned long bytes_read, line_cnt, file_pos;
- char *pos,*p,temp[255],line[255];
-
-- if (size==0)
-+ if (size==0) {
- l=strlen(separator);
-+ article[cur_art].bsize = 0;
-+ } else
-+ article[cur_art].bsize = size;
-+
- headermode=1;
- end_of_article=0;
- line_cnt=1;
-@@ -610,7 +673,19 @@
- /* Open the files */
- if ((nlist=fopen("AREAS","r"))==NULL)
- {
-+ char j[2];
- fprintf( stderr, "Unable to open AREAS\n" );
-+#if defined(BSD)
-+ fpurge (stdin);
-+#else
-+ fflush(stdin);
-+#endif
-+ fgetstr ("Press ENTER", j, "", 2, stdin);
-+#ifdef UNIX
-+ if (use_ansi) system ("reset");
-+#else
-+ /* Do we need to reset the colours with other systems? */
-+#endif
- exit(1);
- }
-
-@@ -935,21 +1010,40 @@
- #else
- int file;
- char return_char;
-+#if defined(BSD)
-+ struct termios newterm, oldterm;
-+#else
- struct termio newterm, oldterm;
-+#endif
- file = open("/dev/tty", O_RDONLY);
- if (file == -1)
- return (0);
-+#ifndef BSD
- ioctl(file,TCGETA,&oldterm);
- memcpy (&newterm,&oldterm,sizeof(struct termio));
-+#else
-+ tcgetattr (file, &oldterm);
-+ memcpy (&newterm,&oldterm,sizeof(struct termios));
-+#endif
- newterm.c_cc[4] = 1;
- newterm.c_cc[5] = 0;
- /* newterm.c_cflag = (B9600|CS8|CREAD); */
- newterm.c_lflag = 0;
- newterm.c_iflag = IGNBRK;
- newterm.c_oflag = 0;
-+#ifndef BSD
- ioctl (file,TCSETAF,&newterm);
-+#else
-+ /* I really don't know what the TCSETAF action means specifically,
-+ * but it's probably not incredibly important - hoek */
-+ tcsetattr (file, TCSANOW, &newterm);
-+#endif
- read(file,&return_char,1);
-+#ifndef BSD
- ioctl (file,TCSETAF,&oldterm);
-+#else
-+ tcsetattr (file, TCSANOW, &oldterm);
-+#endif
- close(file);
- return (return_char);
- #endif
-@@ -1038,6 +1132,7 @@
- FILE *df1,*df2, *temp;
- int c;
- unsigned long length;
-+ char * translat;
- #ifndef NOSTAT
- struct stat buf;
- #endif
-@@ -1047,6 +1142,7 @@
- fprintf (stderr,"Unable to open a file [%s] or [%s]!\n",f1,f2);
- return (0);
- }
-+ translat = tempnam (".", "translat_");
- /*
- * This section of the code uses C's automatic text translation
- * feature to translate from what is probably MS-DOS text to Unix text.
-@@ -1060,7 +1156,7 @@
- * the logical \n's will be written as literal \n's. Voila!
- */
-
-- temp = fopen("translat.tmp", UNIXW) ; /* temp translation file */
-+ temp = fopen(translat, UNIXW) ; /* temp translation file */
-
- while ((c=fgetc(df2))!=EOF)
- fputc(c,temp);
-@@ -1072,11 +1168,11 @@
- * to Unix text. We can now get the correct size of it and add it to the
- * packet.
- */
-- temp = fopen("translat.tmp", UNIXR) ;
-+ temp = fopen(translat, UNIXR) ;
- #ifdef NOSTAT
-- length = get_len("translat.tmp" );
-+ length = get_len(translat);
- #else
-- stat("translat.tmp", &buf);
-+ stat(translat, &buf);
- length=(unsigned long)buf.st_size;
- #endif
- sprintf (header,"#! rnews %ld\n",length);
-@@ -1088,7 +1184,7 @@
-
- fclose(df1);
- fclose(temp);
-- remove("translat.tmp") ;
-+ remove(translat) ;
- return(length);
- }
-
-@@ -1106,7 +1202,7 @@
- FILE *fr,*fw;
- char line[81];
-
-- if ((fr=fopen("sig.txt","r"))==NULL)
-+ if ((fr=fopen(sigfile_str,"r"))==NULL)
- return;
- if ((fw=fopen(name,"a"))==NULL)
- return;
-@@ -1225,8 +1321,11 @@
- if (c==NULL)
- return (-2);
-
-+ /* This is apparently a bug the author did not notice, but how
-+ * it was missed, I do not know. Maybe it is I who is missing
-+ * something... */
-+ *c = ' '; /* the fix: make get_full_word() not stop at the '=' */
- *pos=c+1;
--
- return( get_token( pos, line, tlist) );
- }
-
-@@ -1239,46 +1338,63 @@
- FILE *fr;
- int n;
- char line[80],old_line[80],*pos;
-- static char *tlist[7]={"editor",
-+ char init_str[80];
-+ static char *tlist[9]={"editor",
- "pager",
- "compress",
- "ansi",
- "lines",
- "quote",
-+ "sigfile",
-+ "repfile",
- ""};
-
- /*
- ** Default
- */
-
-- strcpy (edit_str,EDIT);
-- strcpy (pager_str,PAGER);
-- strcpy (compress_str,COMPRESS);
-- strcpy (quote_str,"> ");
-- use_ansi = SET;
-+ strncpy (edit_str,EDIT, 80);
-+ strncpy (pager_str,PAGER, 80);
-+ strncpy (compress_str,COMPRESS, 80);
-+ strncpy (quote_str,"> ", 80);
-+ strncpy (sigfile_str, SIGFILE, 80);
-+ strncpy (repfile_str, REPFILE, 80);
-+#ifdef UNIX
-+ snprintf(sigfile_str, 80, "%s/%s", getpwuid(getuid())->pw_dir, SIGFILE);
-+#else
-+ snprintf(sigfile_str, 80, "%s", SIGFILE);
-+#endif
-+ use_ansi = 0; /* change default behaviour */
- Lines = 24;
-
-- if ((fr=fopen(INITFILE,"r"))==NULL)
-+ snprintf (init_str, 80, "%s/%s", getpwuid(getuid())->pw_dir, INITFILE);
-+ if ((fr=fopen(init_str,"r"))==NULL)
- return; /* No config file */
- while (fgets(line,80,fr)!=NULL)
- {
- strcpy (old_line,line);
- if (line[0]!='#' && line[0]!='\n') /* Ignore comments and blank lines */
- {
-- if (line[strlen(line)-1]=='\n') /* Remove end CR */
-+ if (line[strlen(line)-1]=='\r') /* Remove end CR */
- line[strlen(line)-1]='\0';
- switch( get_config_token( &pos, line, tlist ) )
- {
- case 0: /* EDITOR */
- strcpy (edit_str,pos);
-+ remove_cr (edit_str);
-+ remove_qt (edit_str);
- break;
-
- case 1: /* PAGER */
- strcpy (pager_str,pos);
-+ remove_cr (pager_str);
-+ remove_qt (pager_str);
- break;
-
- case 2: /* COMPRESS */
- strcpy (compress_str,pos);
-+ remove_cr (compress_str);
-+ remove_qt (compress_str);
- break;
-
- case 3: /* Ansi */
-@@ -1310,6 +1426,16 @@
- remove_cr(quote_str);
- break;
-
-+ case 6: /* sigfile */
-+ strcpy (sigfile_str,pos);
-+ remove_cr (sigfile_str);
-+ remove_qt (sigfile_str);
-+ break;
-+ case 7: /* repfile */
-+ strcpy (repfile_str, pos);
-+ remove_cr (repfile_str);
-+ remove_qt (repfile_str);
-+ break;
- default:
- fprintf(stderr,"Line <%s> has no keyword\n",old_line);
- break;
-@@ -1317,6 +1443,23 @@
- }
- }
- fclose(fr);
-+
-+ if (getenv ("EDITOR"))
-+ strncpy (edit_str, getenv ("EDITOR"), 80);
-+ if (getenv ("PAGER"))
-+ strncpy (pager_str, getenv ("PAGER"), 80);
-+ if (getenv ("COMPRESS"))
-+ strncpy (compress_str, getenv ("COMPRESS"), 80);
-+ if (getenv ("QUOTE_STR"))
-+ strncpy (quote_str, getenv ("QUOTE"), 80);
-+ if (getenv ("SIGFILE"))
-+ strncpy (sigfile_str, getenv ("SIGFILE"), 80);
-+ if (getenv ("ANSI"))
-+ use_ansi = SET;
-+ if (getenv ("LINES"))
-+ Lines = atoi (getenv ("LINES"));
-+ if (getenv ("REPFILE"))
-+ strncpy (repfile_str, getenv ("REPFILE"), 80);
- }
-
- /*
-@@ -1326,16 +1469,18 @@
- ** And quote the message with the quote string
- */
-
--int put_into_file(filename,fr,quote,flags,head)
-+int put_into_file(filename,fr,quote,flags,head,bsize)
- char *filename;
- FILE *fr;
- char *quote;
- struct header *head;
- unsigned long flags;
-+unsigned long bsize;
- {
- FILE *fw;
- int end=0,l,headermode=1,line_no=1,mail_flag=0;
- char separator[80],line[255],mode[5];
-+ unsigned long oursize=0;
-
- strcpy( mode, "w" ); /* default */
-
-@@ -1383,6 +1528,7 @@
- l = strlen(separator);
-
- fgets(line,255,fr);
-+ oursize=strlen(line);
- if (mail_flag)
- {
- if (!(flags & NO_HEADER))
-@@ -1392,7 +1538,7 @@
- return(0);
- }
-
-- while( strncmp( line, separator, l ))
-+ while( strncmp( line, separator, l ) && (bsize ? oursize < bsize + 1 : 1))
- {
- if( headermode )
- {
-@@ -1411,6 +1557,16 @@
- if( (flags & GET_REPLYTO) && strncmp(line,"Reply-To: ",10)==0)
- strcpy( head->replyto, line+10);
-
-+ /* I see both Cc: and cc: used... :( */
-+ if ((flags & GET_CC) && strncmp (line, "cc: ", 4) == 0)
-+ strcpy (head->cc, line + 4);
-+
-+ if ((flags & GET_CC) && strncmp (line, "Cc: ", 4) == 0)
-+ strcpy (head->cc, line + 4);
-+
-+ if ((flags & GET_HTO) && strncmp (line, "To: ", 4) == 0)
-+ strcpy (head->hto, line + 4);
-+
- if( (flags & GET_NEWSGROUP) && strncmp( line, "Newsgroups: ",12)==0)
- {
- strcpy( head->newsgroups, line+12);
-@@ -1437,6 +1593,7 @@
-
- if(fgets(line,255,fr)==NULL)
- break;
-+ oursize += strlen (line);
- }
- fclose(fw);
- return(line_no);
-@@ -1445,18 +1602,18 @@
- void show_menu(tof,eof)
- unsigned int tof,eof;
- {
-- printf ("\n%sA%sgain %sV%siew %sM%sail ",
-+ printf ("\n%sV%s)iew %sM%s)ail ",
- scr(1,3,0),scr(1,6,0),scr(1,3,0),scr(1,6,0),scr(1,3,0),scr(1,6,0));
- if (group[cur_grp].enc_type=='u')
- /* No follow-up for private mail */
-- printf ("%sW%srite ",scr(1,3,0),scr(1,6,0));
-+ printf ("%sW%s)rite ",scr(1,3,0),scr(1,6,0));
- if (!eof)
-- printf ("%sn%sext_pg ",
-+ printf ("%sn%s)ext_pg ",
- scr(1,3,0),scr(1,6,0));
- if (!tof)
-- printf ("%sp%srev_pg ",
-+ printf ("%sp%s)rev_pg ",
- scr(1,3,0),scr(1,6,0));
-- printf ("%sN%sext_grp %sP%srev_grp %sS%save %sH%slp %sQ%suit ",
-+ printf ("%sN%s)ext_grp %sP%s)rev_grp %sS%s)ave %sH%s)lp %sQ%s)uit ",
- scr(1,3,0),scr(1,6,0),
- scr(1,3,0),scr(1,6,0),
- scr(1,3,0),scr(1,6,0),
-@@ -1480,7 +1637,9 @@
- }
- if (cur_line!=line_no)
- {
-- for (i=cur_line; i<=line_no; i++)
-+ /* We add one to i for the same 18-line reason that is
-+ * else-mentioned. See the main loop for comments. */
-+ for (i=cur_line+1; i<=line_no; i++)
- printf("\n");
- }
- }
-@@ -1629,7 +1788,7 @@
- unsigned int tof=1,redisplay=1,Max_grp,Max_art,mail_reply_no=0;
- char line[255],temp[80],choice,value[80],file_list[255];
- char ngrpline[255], followupline[255];
-- char To[80],Replyto[80],From[80];
-+ char To[80],Replyto[80],From[80],Cc[80],Hto[80];
- char Reply[80],subjectline[80],msgidline[255];
- char art_save_name[80],shell_cmd_name[80];
- FILE *fr,*fw;
-@@ -1651,16 +1810,33 @@
- /*
- ** To be changed when we have another compressor
- */
-- sprintf (Reply,"REPLY.zip");
-+ sprintf (Reply,repfile_str);
- if ((fr=fopen(Reply,"r"))!=NULL)
- {
-+ char j[2];
- fclose (fr);
- printf ("\nA Reply packet already exists. Keep it (Y/n) ? ");
- fflush(stdout);
- choice=ch_get();
-- if (choice=='n' || choice=='N')
-+ if (choice=='n' || choice=='N') {
- remove (Reply);
-+ printf (
-+"Only the %s file has been deleted. You must delete the R*.MSG files\n"
-+"files yourself or they will be sent alongwith the next reply packet.\n"
-+"You must also delete the REPLIES file.\n",
-+repfile_str);
-+#if defined(BSD)
-+ fpurge (stdin);
-+#else
-+ fflush(stdin);
-+#endif
-+ fgetstr ("Press ENTER", j, "", 2, stdin);
-+ }
-+#if defined(BSD)
-+ fpurge (stdin);
-+#else
- fflush(stdin);
-+#endif
- }
- for (i=0; i<MAXGRP; group[i++].reply=0)
- ;
-@@ -1701,10 +1877,11 @@
- cur_line++;
- cur_art++;
- }
-- if (cur_line!=line_no)
-+ /* if (cur_line!=line_no) */
-+ if (article[cur_art-1].rank+1 == group[cur_grp].art)
- {
- eof=1;
-- for (i=cur_line; i<=line_no; i++)
-+ for (i=cur_line+1; i<=line_no; i++)
- printf("\n");
- }
-
-@@ -1721,8 +1898,7 @@
- redisplay=1;
- switch (choice)
- {
-- case 'A':
-- case 'a':
-+ case 'r': case 18: case 'R':
- display_page_again(line_no);
- break;
-
-@@ -1743,10 +1919,18 @@
- cur_art++;
- }
- disp_f(&article[cur_art++]);
-- if (cur_line!=line_no)
-+ /* if (cur_line!=line_no) */
-+ /* The below doesn't seem to work for groups
-+ * that have 18 messages in them (number
-+ * dependant on screensize). The reason
-+ * I leave it there (although commented-
-+ * out) is that for some inexplicable
-+ * reason I'm not entirely comfortable with
-+ * my replacement. */
-+ if (article[cur_art-1].rank+1 == group[cur_grp].art)
- {
- eof=1;
-- for (i=cur_line; i<=line_no; i++)
-+ for (i=cur_line+1; i<=line_no; i++)
- printf("\n");
- }
- else
-@@ -1793,10 +1977,11 @@
- cur_line++;
- cur_art++;
- }
-- if (cur_line!=line_no)
-+ if (article[cur_art-1].rank+1 == group[cur_grp].art)
-+ /* if (cur_line!=line_no) */
- {
- eof=1;
-- for (i=cur_line; i<=line_no; i++)
-+ for (i=cur_line+1; i<=line_no; i++)
- printf("\n");
- }
- break;
-@@ -1820,10 +2005,11 @@
- cur_line++;
- cur_art++;
- }
-- if (cur_line!=line_no)
-+ if (article[cur_art-1].rank+1 == group[cur_grp].art)
-+ /* if (cur_line!=line_no) */
- {
- eof=1;
-- for (i=cur_line; i<=line_no; i++)
-+ for (i=cur_line+1; i<=line_no; i++)
- printf("\n");
- }
- break;
-@@ -1835,7 +2021,7 @@
- ** Help doesnt help much at the moment
- ** Well, c'est la vie...
- */
-- printf ("A : redisplay the same page\n"
-+ printf ("<ctrl-R> : redisplay the same page\n"
- "n : Display next page\n"
- "p : Display previous page \n"
- "N or > : Go to next Newsgroup\n"
-@@ -1868,7 +2054,10 @@
- ** The field "reply" is set only for "follow-up" or "posts"
- ** Not for mails or replies by mail to the author.
- */
-- if ((fw=fopen("REPLIES", UNIXW))==NULL)
-+ /* Use UNIXA here, for consistency. Nowhere else do
-+ * the messages files get deleted automatically. In
-+ * all other cases, the user has to do it themself. */
-+ if ((fw=fopen("REPLIES", UNIXA))==NULL)
- exit(1);
- for (i=0;i<MAXGRP;i++)
- {
-@@ -1919,6 +2108,8 @@
- showit:
- if ((no>0) && (no <= group[cur_grp].art))
- {
-+ char * filename;
-+ filename = tempnam (".", "article_");
- sprintf( temp, "%s.MSG", group[cur_grp].prefix );
- fr=fopen(temp, UNIXR);
- /* Get the starting article number */
-@@ -1926,14 +2117,15 @@
-
- /* save the article into a temp file */
- fseek(fr, article[count].ptr, 0);
-- put_into_file("art.tmp",fr,"",
-+ put_into_file(filename,fr,"",
- (choice=='V') ? 0L : NO_HEADER,
-- (struct header *)NULL);
-+ (struct header *)NULL,
-+ article[count].bsize);
- fclose(fr);
-
-- sprintf (temp,"%s %s",pager_str,"art.tmp");
-+ sprintf (temp,"%s %s",pager_str,filename);
- system(temp);
-- remove("art.tmp");
-+ remove(filename);
- /*
- ** Show the list again
- */
-@@ -1944,13 +2136,17 @@
- disp_f(&article[cur_art]);
- cur_art++;
- }
-- if (cur_line!=line_no)
-+ if (article[cur_art-1].rank+1 == group[cur_grp].art)
-+ /* if (cur_line!=line_no) */
- {
- eof=1;
-- for (i=cur_line; i<=line_no; i++)
-+ for (i=cur_line+1; i<=line_no; i++)
- printf("\n");
- }
-+ free (filename);
- }
-+ /* Entering invalid number needs redisplay */
-+ display_page_again(line_no);
- break;
-
- case ' ':
-@@ -1960,7 +2156,14 @@
-
- case 'M': /* Mail somebody */
- case 'm':
-- printf ("\n%sN%sew message or %sR%sesponse ?",
-+ {
-+ char * editfile;
-+ char * othereditfile;
-+ char * articlefile;
-+ editfile = tempnam (".", "edit_");
-+ othereditfile = tempnam (".", "ed0_");
-+ articlefile = tempnam (".", "article_");
-+ printf ("\n%sN%s)ew message or %sR%s)esponse ?",
- scr(1,3,0),scr(1,6,0),scr(1,3,0),scr(1,6,0));
- fflush(stdout);
- choice=ch_get();
-@@ -1986,9 +2189,11 @@
- head.subject = line;
- head.from = From;
- head.replyto = Replyto;
-+ head.cc = Cc;
-+ head.hto = Hto;
-
-- ret = put_into_file( "ed0.tmp",fr, quote_str,
-- NO_HEADER | GET_SUBJECT | GET_FROM | GET_REPLYTO, &head);
-+ ret = put_into_file(othereditfile,fr, quote_str,
-+ NO_HEADER | GET_SUBJECT | GET_FROM | GET_REPLYTO | GET_CC | GET_HTO, &head, article[count].bsize);
- fclose(fr);
-
- if( ret == 0 )
-@@ -2005,7 +2210,7 @@
- strcpy( temp, line );
- lowerit( temp );
-
-- if (strncmp(temp,"RE:",3)==0)
-+ if (strncmp(temp,"RE:",3)==0 || strncmp(temp,"Re:",3)==0 || strncmp(temp,"re:",3)==0)
- sprintf(subjectline,"%s",line);
- else
- sprintf(subjectline,"Re: %s",line);
-@@ -2017,71 +2222,119 @@
- remove_cr( To );
- clean_to( To );
-
-+ remove_cr (Cc);
-+ /* optimally would call clean_to(), too */
-+ remove_cr (Hto);
-+
- /*
- ** Add the group in the body of the quoted article
- */
- remove_cr(From);
-- fr = fopen( "ed0.tmp","r" );
-- fw = fopen( "edit.tmp","w" );
-- fprintf( fw, "In %s you wrote:\n", group[cur_grp].name);
-+ fr = fopen(othereditfile,"r" );
-+ fw = fopen(editfile,"w" );
-+ fprintf( fw, "In %s, %s wrote:\n", group[cur_grp].name, (*From ? From : "someone"));
- while( fgets(line,255,fr)!=NULL )
- {
- fprintf( fw, "%s", line );
- }
- fclose( fr );
- fclose( fw );
-- remove( "ed0.tmp" );
-+ remove(othereditfile);
- }
- }
- /* Print the header first */
-- fw=fopen ("article.tmp","w");
-+ fw=fopen (articlefile,"w");
- if (fw==NULL)
- break;
-
- if (!*To)
- fgetstr("To >",To,"",60,stdin);
- fgetstr("Subject >",temp,subjectline,60,stdin);
-+#ifdef __FreeBSD__
-+ fprintf (fw,"X-Mailer: slnr v.2.13 as ported to FreeBSD\n");
-+#else
-+ fprintf (fw,"X-Mailer: slnr v.2.13 w/ modifications\n");
-+#endif
- fprintf (fw,"To: %s\n",To);
-+ if (*Cc) {
-+ char j[2];
-+ fgetstr ("Reply to all recipients?", j, "", 2, stdin);
-+ if (*j == 'y' || *j == 'Y') {
-+ if (*Hto) {
-+ char j[2]; char jj[80];
-+ snprintf (jj, 80, "Cc to %s?", Hto);
-+ fgetstr (jj, j, "", 2, stdin);
-+ if (*j == 'y' || *j == 'Y')
-+ fprintf (fw, "cc: %s, %s\n", Cc, Hto);
-+ } else
-+ fprintf (fw, "cc: %s\n", Cc);
-+ }
-+
-+ } else {
-+ if (*Hto) {
-+ char j[2]; char jj[80];
-+ snprintf (jj, 80, "Cc to %s?", Hto);
-+ fgetstr (jj, j, "", 2, stdin);
-+ if (*j == 'y' || *j == 'Y')
-+ fprintf (fw, "cc: %s\n", Hto);
-+ /* Looking through headers, I see
-+ * both Cc: and cc: used... I
-+ * suppose I should check a
-+ * relevant RFC, but instead I'll
-+ * just use cc: */
-+ }
-+ }
- fprintf (fw,"Subject: %s\n",temp);
- fclose(fw);
-- To[0]=From[0]=Replyto[0]='\0';
-+ To[0]=From[0]=Replyto[0]=Cc[0]=Hto[0]='\0';
-
-- if (edit_file("edit.tmp","article.tmp"))
-- remove("article.tmp");
-+ if (edit_file(editfile,articlefile))
-+ remove(articlefile);
- else
- {
- /* Add the signature */
-- addsig("edit.tmp");
-+ addsig(editfile);
-
- /* Concatenate article.tmp and edit.tmp */
-- fr=fopen("edit.tmp","r");
-- fw=fopen("article.tmp","a");
-+ fr=fopen(editfile,"r");
-+ fw=fopen(articlefile,"a");
- fprintf (fw,"\n"); /* End of header */
- while (fgets(line,255,fr)!=NULL)
- fprintf(fw,"%s",line);
- fclose(fr);
- fclose(fw);
-- remove("edit.tmp");
-+ remove(editfile);
-
- /*
- ** Add article.tmp to the RMAIL.MSG file
- */
- sprintf( temp, "RMAIL.MSG" );
-- add_file(temp,"article.tmp");
-- remove("article.tmp");
-+ add_file(temp,articlefile);
-+ remove(articlefile);
- mail_reply_no++;
- }
- /* Then redisplay the list */
- display_page_again(line_no);
-+ free (editfile); free (othereditfile); free (articlefile);
- break;
--
-+ }
- case 'W': /* write article or follow-up */
- case 'w':
-- if( group[cur_grp].enc_type != 'u')
-+ {
-+ char * editfile;
-+ char * othereditfile;
-+ char * articlefile;
-+ editfile = tempnam (".", "edit_");
-+ othereditfile = tempnam (".", "ed0_");
-+ articlefile = tempnam (".", "article_");
-+ if( group[cur_grp].enc_type != 'u') {
-+ printf ("\nNot a newsgroup!\n");
- break;
-+ }
-
- printf ("\n%sN%sew article or %sF%sollow-up ?",
- scr(1,3,0),scr(1,6,0),scr(1,3,0),scr(1,6,0));
-+ fflush (stdout);
- choice=ch_get();
- printf ("\n");
-
-@@ -2121,9 +2374,10 @@
- head.newsgroups = ngrpline;
- head.followup = followupline;
-
-- ret = put_into_file( "ed0.tmp",fr, quote_str,
-+ ret = put_into_file(othereditfile,fr, quote_str,
- NO_HEADER | GET_SUBJECT | GET_ID | GET_FROM |
-- GET_FOLLOWUP | GET_NEWSGROUP, &head);
-+ GET_FOLLOWUP | GET_NEWSGROUP, &head,
-+ article[count].bsize);
-
- fclose(fr);
- if( ret == 0 )
-@@ -2143,7 +2397,7 @@
- strcpy( temp, line );
- lowerit( temp );
-
-- if (strncmp(temp,"re:",3)==0)
-+ if (strncmp(temp,"re:",3)==0 || strncmp(temp,"Re:", 3)==0 || strncmp(temp, "re:", 3)==0)
- sprintf(subjectline,"%s",line);
- else
- sprintf(subjectline,"Re: %s",line);
-@@ -2153,8 +2407,8 @@
- ** of the quoted article
- */
- remove_cr(From);
-- fr = fopen( "ed0.tmp","r" );
-- fw = fopen( "edit.tmp","w" );
-+ fr = fopen(othereditfile,"r" );
-+ fw = fopen(editfile,"w" );
- fprintf( fw, "%s wrote:\n", From);
- while( fgets(line,255,fr)!=NULL )
- {
-@@ -2162,16 +2416,20 @@
- }
- fclose( fr );
- fclose( fw );
-- remove( "ed0.tmp" );
-+ remove(othereditfile);
-
- }
- }
- /* Print the header first */
-- fw=fopen ("article.tmp","w");
-+ fw=fopen (articlefile,"w");
- if (fw==NULL)
- break;
-
-+#if defined(BSD)
-+ fpurge (stdin);
-+#else
- fflush(stdin);
-+#endif
- fgetstr( "Subject >", temp, subjectline, 60, stdin );
- fprintf( fw, "Newsgroups: %s\n", ngrpline );
- fprintf( fw, "Subject: %s\n", temp );
-@@ -2182,35 +2440,37 @@
-
- fclose(fw);
-
-- if (edit_file("edit.tmp","article.tmp"))
-- remove("article.tmp");
-+ if (edit_file(editfile,articlefile))
-+ remove(articlefile);
- else
- {
- /* Add the signature */
-- addsig("edit.tmp");
-+ addsig(editfile);
-
- /* Concatenate article.tmp and edit.tmp */
-- fr = fopen( "edit.tmp", "r");
-- fw = fopen( "article.tmp", "a");
-+ fr = fopen(editfile, "r");
-+ fw = fopen(articlefile, "a");
- fprintf( fw,"\n" ); /* End of header */
- while( fgets(line,255,fr)!=NULL )
- fprintf( fw,"%s",line );
- fclose(fr);
- fclose(fw);
-- remove("edit.tmp");
-+ remove(editfile);
- /*
- ** Add article.tmp to the reply file
- */
- sprintf( temp, "R%s.MSG", group[cur_grp].prefix );
-- add_file(temp,"article.tmp");
-- remove("article.tmp");
-+ add_file(temp,articlefile);
-+ remove(articlefile);
- reply_created++;
- group[cur_grp].reply++;
- }
- /* Then redisplay the list */
- display_page_again(line_no);
-+ free (editfile); free (othereditfile); free (articlefile);
- break;
--
-+ }
-+
- case 's': /* Save article */
- case 'S': /* Save with no header */
- printf("\n");
-@@ -2240,7 +2500,8 @@
- */
- if (!put_into_file( art_save_name, fr, "",
- (choice=='S') ? NO_HEADER : 0L,
-- (struct header *)NULL))
-+ (struct header *)NULL),
-+ article[count].bsize)
- perror("Unable to save article");
- fclose(fr);
- }
-@@ -2274,5 +2535,10 @@
-
- }
- }
-+#ifdef UNIX
-+ if (use_ansi) system ("reset");
-+#else
-+ /* Do we need to reset the screen colours for other systems? */
-+#endif
- return(0);
- }
-Only in .: slnr.ini
-Only in /devel/slnr/src: slnr.o
+*** src/Makefile Fri Mar 7 19:28:05 1997
+--- Makefile Sat Mar 15 23:02:12 1997
+***************
+*** 4,15 ****
+ CFLAGS += -D_HAVE_PARAM_H
+ .endif
+
+- SLNR_OBJ = slnr.o
+-
+ all: slnr
+
+! slnr: $(SLNR_OBJ)
+! cc $(CFLAGS) $(SLNR_OBJ) -o slnr
+
+ clean:
+! rm -f $(SLNR_OBJ)
+--- 4,13 ----
+ CFLAGS += -D_HAVE_PARAM_H
+ .endif
+
+ all: slnr
+
+! slnr: src/slnr.c src/colour.h
+! cc $(CFLAGS) src/slnr.c -o slnr
+
+ clean:
+! rm -f src/slnr
diff --git a/news/slnr/pkg-descr b/news/slnr/pkg-descr
index 2252e1540496..d89c699015d3 100644
--- a/news/slnr/pkg-descr
+++ b/news/slnr/pkg-descr
@@ -4,7 +4,5 @@ modifications to make it more consistant with the UNIX paradigm. No
advanced features, such as kill-files, are available and you should,
if possible, use news-readers such as `trn' to read your news.
-This does not include the `getnews' part of the "slnr package".
-
- Tim Vanderhoek
ac199@freenet.hamilton.on.ca