Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Oct 2013 20:09:43 +0000 (UTC)
From:      Cy Schubert <cy@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r331184 - in head/devel/rcs57: . files
Message-ID:  <201310212009.r9LK9hi9023768@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cy
Date: Mon Oct 21 20:09:43 2013
New Revision: 331184
URL: http://svnweb.freebsd.org/changeset/ports/331184

Log:
  Apply patches from base/ (default option).
  
  PR:		183142

Added:
  head/devel/rcs57/files/freebsd-src-ident.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-maketime.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcsbase.h   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcsdiff.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcsedit.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcsfnms.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcskeep.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcskeys.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcsrev.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rcsutil.c   (contents, props changed)
  head/devel/rcs57/files/freebsd-src-rlog.c   (contents, props changed)
Modified:
  head/devel/rcs57/Makefile

Modified: head/devel/rcs57/Makefile
==============================================================================
--- head/devel/rcs57/Makefile	Mon Oct 21 20:05:57 2013	(r331183)
+++ head/devel/rcs57/Makefile	Mon Oct 21 20:09:43 2013	(r331184)
@@ -10,6 +10,10 @@ PKGNAMESUFFIX=	57
 MAINTAINER=	cy@FreeBSD.org
 COMMENT=	Version control system (as was in FreeBSD prior to removal)
 
+OPTIONS_DEFINE=	FREEBSD
+OPTIONS_DEFAULT=	FREEBSD
+FREEBSD_DESC=	Apply FreeBSD patches
+
 CONFLICTS=	rcs-5.[89]*
 LICENSE=	GPLv2
 
@@ -21,4 +25,22 @@ MAN1=	ci.1 co.1 ident.1 merge.1 rcs.1 rc
 MAN5=	rcsfile.5
 
 NO_STAGE=	yes
-.include <bsd.port.mk>
+
+.include <bsd.port.pre.mk>
+
+.if ${PORT_OPTIONS:MFREEBSD}
+EXTRA_PATCHES+=	${FILESDIR}/freebsd-src-ident.c \
+		${FILESDIR}/freebsd-src-maketime.c \
+		${FILESDIR}/freebsd-src-rcsbase.h \
+		${FILESDIR}/freebsd-src-rcsedit.c \
+		${FILESDIR}/freebsd-src-rcsfnms.c \
+		${FILESDIR}/freebsd-src-rcskeep.c \
+		${FILESDIR}/freebsd-src-rcskeys.c \
+		${FILESDIR}/freebsd-src-rcsrev.c \
+		${FILESDIR}/freebsd-src-rcsutil.c \
+		${FILESDIR}/freebsd-src-rcsdiff.c \
+		${FILESDIR}/freebsd-src-rlog.c
+
+.endif
+
+.include <bsd.port.post.mk>

Added: head/devel/rcs57/files/freebsd-src-ident.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-ident.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,11 @@
+--- src/ident.c
++++ freebsd/gnu/usr.bin/rcs/ident/ident.c
+@@ -234,7 +233,7 @@ match(fp)   /* group substring between t
+       if (c == EOF  &&  feof(fp) | ferror(fp))
+ 	 return c;
+       switch (ctab[c]) {
+-	 case LETTER: case Letter:
++	 case LETTER: case Letter: case DIGIT:
+ 	    *tp++ = c;
+ 	    if (tp < line+sizeof(line)-4)
+ 	       break;

Added: head/devel/rcs57/files/freebsd-src-maketime.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-maketime.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,11 @@
+--- src/maketime.c
++++ freebsd/gnu/usr.bin/rcs/lib/maketime.c	1999-08-28 03:37:10.000000000 +0400
+@@ -335,7 +335,7 @@ main(argc, argv) int argc; char **argv;
+ 	time_t default_time = time((time_t *)0);
+ 	long default_zone = argv[1] ? atol(argv[1]) : 0;
+ 	char buf[1000];
+-	while (gets(buf)) {
++	while (fgets(buf, 1000, stdin)) {
+ 		time_t t = str2time(buf, default_time, default_zone);
+ 		printf("%s", asctime(gmtime(&t)));
+ 	}

Added: head/devel/rcs57/files/freebsd-src-rcsbase.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcsbase.h	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,38 @@
+--- src/rcsbase.h
++++ freebsd/gnu/usr.bin/rcs/lib/rcsbase.h	1999-08-28 03:37:10.000000000 +0400
+@@ -427,10 +426,12 @@ struct assoc {
+ #define REVISION        "Revision"
+ #define SOURCE          "Source"
+ #define STATE           "State"
+-#define keylength 8 /* max length of any of the above keywords */
++#define CVSHEADER       "CVSHeader"
++#define keylength 9 /* max length of any of the above keywords */
+ 
+ enum markers { Nomatch, Author, Date, Header, Id,
+-	       Locker, Log, Name, RCSfile, Revision, Source, State };
++	       Locker, Log, Name, RCSfile, Revision, Source, State, CVSHeader,
++	       LocalId };
+ 	/* This must be in the same order as rcskeys.c's Keyword[] array. */
+ 
+ #define DELNUMFORM      "\n\n%s\n%s\n"
+@@ -501,6 +502,7 @@ RILE *rcsreadopen P((struct buf*,struct 
+ char *bufenlarge P((struct buf*,char const**));
+ char const *basefilename P((char const*));
+ char const *getfullRCSname P((void));
++char const *getfullCVSname P((void));
+ char const *maketemp P((int));
+ char const *rcssuffix P((char const*));
+ int pairnames P((int,char**,RILE*(*)P((struct buf*,struct stat*,int)),int,int));
+@@ -531,8 +533,11 @@ extern struct buf prevauthor, prevdate, 
+ int getoldkeys P((RILE*));
+ 
+ /* rcskeys */
+-extern char const *const Keyword[];
++extern char const *Keyword[];
++extern enum markers LocalIdMode;
+ enum markers trymatch P((char const*));
++void setRCSLocalId(char const *);
++void setIncExc(char const *);
+ 
+ /* rcslex */
+ extern FILE *foutptr;

Added: head/devel/rcs57/files/freebsd-src-rcsdiff.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcsdiff.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,11 @@
+--- src/rcsdiff.c
++++ freebsd/gnu/usr.bin/rcs/rcsdiff/rcsdiff.c	1999-08-28 03:37:10.000000000 +0400
+@@ -216,7 +215,7 @@ mainProg(rcsdiffId, "rcsdiff", "$Id: rcs
+ 		    /* fall into */
+ 	    case 'C': case 'F': case 'I': case 'L': case 'W':
+ #if DIFF_L
+-		    if (c == 'L'  &&  ++file_labels == 2)
++		    if (c == 'L'  &&  file_labels++ == 2)
+ 			faterror("too many -L options");
+ #endif
+ 		    *dcp++ = c;

Added: head/devel/rcs57/files/freebsd-src-rcsedit.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcsedit.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,49 @@
+--- src/rcsedit.c
++++ freebsd/gnu/usr.bin/rcs/lib/rcsedit.c
+@@ -1050,12 +1049,17 @@ keyreplace(marker, delta, delimstuffed, 
+ 		aputs(date2str(date,datebuf), out);
+                 break;
+ 	    case Id:
++	    case LocalId:
+ 	    case Header:
+-		escape_string(out,
+-			marker==Id || RCSv<VERSION(4)
+-			? basefilename(RCSname)
+-			: getfullRCSname()
+-		);
++	    case CVSHeader:
++		if (marker == Id || RCSv < VERSION(4) ||
++		    (marker == LocalId && LocalIdMode == Id))
++			escape_string(out, basefilename(RCSname));
++		else if (marker == CVSHeader ||
++		    (marker == LocalId && LocalIdMode == CVSHeader))
++			escape_string(out, getfullCVSname());
++		else
++			escape_string(out, getfullRCSname());
+ 		aprintf(out, " %s %s %s %s",
+ 			delta->num,
+ 			date2str(date, datebuf),
+@@ -1503,6 +1507,9 @@ makedirtemp(isworkfile)
+ 	register size_t dl;
+ 	register struct buf *bn;
+ 	register char const *name = isworkfile ? workname : RCSname;
++#	if has_mktemp
++	int fd;
++#	endif
+ 
+ 	dl = basefilename(name) - name;
+ 	bn = &dirtpname[newRCSdirtp_index + isworkfile];
+@@ -1521,10 +1528,12 @@ makedirtemp(isworkfile)
+ 	catchints();
+ #	if has_mktemp
+ 		VOID strcpy(tp, "XXXXXX");
+-		if (!mktemp(np) || !*np)
++		fd = mkstemp(np);
++		if (fd < 0 || !*np)
+ 		    faterror("can't make temporary pathname `%.*s_%cXXXXXX'",
+ 			(int)dl, name, '0'+isworkfile
+ 		    );
++		close(fd);
+ #	else
+ 		/*
+ 		 * Posix 1003.1-1990 has no reliable way

Added: head/devel/rcs57/files/freebsd-src-rcsfnms.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcsfnms.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,74 @@
+--- src/rcsfnms.c
++++ freebsd/gnu/usr.bin/rcs/lib/rcsfnms.c
+@@ -285,6 +284,9 @@ maketemp(n)
+ {
+ 	char *p;
+ 	char const *t = tpnames[n];
++#	if has_mktemp
++	int fd;
++#	endif
+ 
+ 	if (t)
+ 		return t;
+@@ -296,10 +298,12 @@ maketemp(n)
+ 	    size_t tplen = dir_useful_len(tp);
+ 	    p = testalloc(tplen + 10);
+ 	    VOID sprintf(p, "%.*s%cT%cXXXXXX", (int)tplen, tp, SLASH, '0'+n);
+-	    if (!mktemp(p) || !*p)
++	    fd = mkstemp(p);
++	    if (fd < 0 || !*p)
+ 		faterror("can't make temporary pathname `%.*s%cT%cXXXXXX'",
+ 			(int)tplen, tp, SLASH, '0'+n
+ 		);
++	    close(fd);
+ #	else
+ 	    static char tpnamebuf[TEMPNAMES][L_tmpnam];
+ 	    p = tpnamebuf[n];
+@@ -868,6 +872,47 @@ getfullRCSname()
+         }
+ }
+ 
++/* Derived from code from the XFree86 project */
++	char const *
++getfullCVSname()
++/* Function: returns a pointer to the path name of the RCS file with the
++ * CVSROOT part stripped off, and with 'Attic/' stripped off (if present).
++ */
++{
++
++#define ATTICDIR "/Attic"
++
++	char const *namebuf = getfullRCSname();
++	char *cvsroot = cgetenv("CVSROOT");
++	int cvsrootlen;
++	char *c = NULL;
++	int alen = strlen(ATTICDIR);
++
++	if ((c = strrchr(namebuf, '/')) != NULL) {
++	    if (namebuf - c >= alen) {
++		if (!strncmp(c - alen, ATTICDIR, alen)) {
++		    while(*c != '\0') {
++			*(c - alen) = *c;
++			c++;
++		    }
++		    *(c - alen) = '\0';
++		}
++	    }
++	}
++	
++	if (!cvsroot)
++	    return(namebuf);
++	else
++	{
++	    cvsrootlen = strlen(cvsroot);
++	    if (!strncmp(namebuf, cvsroot, cvsrootlen) &&
++	        namebuf[cvsrootlen] == '/')
++		return(namebuf + cvsrootlen + 1);
++	    else
++		return(namebuf);
++	}
++}
++
+ 	static size_t
+ dir_useful_len(d)
+ 	char const *d;

Added: head/devel/rcs57/files/freebsd-src-rcskeep.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcskeep.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,10 @@
+--- src/rcskeep.c
++++ freebsd/gnu/usr.bin/rcs/lib/rcskeep.c	1999-08-28 03:37:10.000000000 +0400
+@@ -192,6 +191,7 @@ getoldkeys(fp)
+                 break;
+             case Header:
+             case Id:
++	    case LocalId:
+ 		if (!(
+ 		      getval(fp, (struct buf*)0, false) &&
+ 		      keeprev(fp) &&

Added: head/devel/rcs57/files/freebsd-src-rcskeys.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcskeys.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,114 @@
+--- src/rcskeys.c
++++ freebsd/gnu/usr.bin/rcs/lib/rcskeys.c
+@@ -67,14 +66,22 @@
+ libId(keysId, "$Id: rcskeys.c,v 5.4 1995/06/16 06:19:24 eggert Exp $")
+ 
+ 
+-char const *const Keyword[] = {
++char const *Keyword[] = {
+     /* This must be in the same order as rcsbase.h's enum markers type. */
+ 	0,
+ 	AUTHOR, DATE, HEADER, IDH,
+-	LOCKER, LOG, NAME, RCSFILE, REVISION, SOURCE, STATE
++	LOCKER, LOG, NAME, RCSFILE, REVISION, SOURCE, STATE, CVSHEADER,
++	NULL
+ };
+ 
+-
++/* Expand all keywords by default */
++static int ExpandKeyword[] = {
++	false,
++	true, true, true, true,
++	true, true, true, true, true, true, true, true,
++	true
++};
++enum markers LocalIdMode = Id;
+ 
+ 	enum markers
+ trymatch(string)
+@@ -87,8 +94,12 @@ trymatch(string)
+         register int j;
+ 	register char const *p, *s;
+ 	for (j = sizeof(Keyword)/sizeof(*Keyword);  (--j);  ) {
++		if (!ExpandKeyword[j])
++			continue;
+ 		/* try next keyword */
+ 		p = Keyword[j];
++		if (p == NULL)
++			continue;
+ 		s = string;
+ 		while (*p++ == *s++) {
+ 			if (!*p)
+@@ -104,3 +115,72 @@ trymatch(string)
+         return(Nomatch);
+ }
+ 
++	void
++setIncExc(arg)
++	char const *arg;
++/* Sets up the ExpandKeyword table according to command-line flags */
++{
++	char *key;
++	char *copy, *next;
++	int include = 0, j;
++
++	copy = strdup(arg);
++	next = copy;
++	switch (*next++) {
++	    case 'e':
++		include = false;
++		break;
++	    case 'i':
++		include = true;
++		break;
++	    default:
++		free(copy);
++		return;
++	}
++	if (include)
++		for (j = sizeof(Keyword)/sizeof(*Keyword);  (--j);  )
++			ExpandKeyword[j] = false;
++	key = strtok(next, ",");
++	while (key) {
++		for (j = sizeof(Keyword)/sizeof(*Keyword);  (--j);  ) {
++			if (Keyword[j] == NULL)
++				continue;
++			if (!strcmp(key, Keyword[j]))
++				ExpandKeyword[j] = include;
++		}
++		key = strtok(NULL, ",");
++	}
++	free(copy);
++	return;
++}
++
++	void
++setRCSLocalId(string)
++	char const *string;
++/* function: sets local RCS id and RCSLOCALID envariable */
++{
++	static char local_id[keylength+1];
++	char *copy, *next, *key;
++	int j;
++
++	copy = strdup(string);
++	next = copy;
++	key = strtok(next, "=");
++	if (strlen(key) > keylength)
++		faterror("LocalId is too long");
++	VOID strcpy(local_id, key);
++	Keyword[LocalId] = local_id;
++
++	/* options? */
++	while (key = strtok(NULL, ",")) {
++		if (!strcmp(key, Keyword[Id]))
++			LocalIdMode=Id;
++		else if (!strcmp(key, Keyword[Header]))
++			LocalIdMode=Header;
++		else if (!strcmp(key, Keyword[CVSHeader]))
++			LocalIdMode=CVSHeader;
++		else
++			error("Unknown LocalId mode");
++	}
++	free(copy);
++}

Added: head/devel/rcs57/files/freebsd-src-rcsrev.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcsrev.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,24 @@
+--- src/rcsrev.c
++++ freebsd/gnu/usr.bin/rcs/lib/rcsrev.c	1999-08-28 03:37:10.000000000 +0400
+@@ -883,17 +882,17 @@ int argc; char * argv[];
+                 /* all output goes to stderr, to have diagnostics and       */
+                 /* errors in sequence.                                      */
+ 		aputs("\nEnter revision number or <return> or '.': ",stderr);
+-		if (!gets(symrevno)) break;
++		if (!fgets(symrevno, 100, stdin)) break;
+                 if (*symrevno == '.') break;
+ 		aprintf(stderr,"%s;\n",symrevno);
+ 		expandsym(symrevno,&numricrevno);
+ 		aprintf(stderr,"expanded number: %s; ",numricrevno.string);
+ 		aprintf(stderr,"Date: ");
+-		gets(date); aprintf(stderr,"%s; ",date);
++		fgets(date, 20, stdin); aprintf(stderr,"%s; ",date);
+ 		aprintf(stderr,"Author: ");
+-		gets(author); aprintf(stderr,"%s; ",author);
++		fgets(author, 20, stdin); aprintf(stderr,"%s; ",author);
+ 		aprintf(stderr,"State: ");
+-		gets(state); aprintf(stderr, "%s;\n", state);
++		fgets(state, 20, stdin); aprintf(stderr, "%s;\n", state);
+ 		target = genrevs(numricrevno.string, *date?date:(char *)0, *author?author:(char *)0,
+ 				 *state?state:(char*)0, &gendeltas);
+ 		if (target) {

Added: head/devel/rcs57/files/freebsd-src-rcsutil.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rcsutil.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,18 @@
+--- src/rcsutil.c
++++ freebsd/gnu/usr.bin/rcs/lib/rcsutil.c	1999-08-28 03:37:10.000000000 +0400
+@@ -1231,8 +1230,15 @@ getRCSINIT(argc, argv, newargv)
+ 	char **argv, ***newargv;
+ {
+ 	register char *p, *q, **pp;
++	char const *ev;
+ 	size_t n;
+ 
++	if ((ev = cgetenv("RCSLOCALID")))
++		setRCSLocalId(ev);
++
++	if ((ev = cgetenv("RCSINCEXC")))
++		setIncExc(ev);
++
+ 	if (!(q = cgetenv("RCSINIT")))
+ 		*newargv = argv;
+ 	else {

Added: head/devel/rcs57/files/freebsd-src-rlog.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/rcs57/files/freebsd-src-rlog.c	Mon Oct 21 20:09:43 2013	(r331184)
@@ -0,0 +1,58 @@
+--- src/rlog.c
++++ freebsd/gnu/usr.bin/rcs/rlog/rlog.c	1999-08-28 03:37:10.000000000 +0400
+@@ -222,7 +221,7 @@
+ mainProg(rlogId, "rlog", "$Id: rlog.c,v 5.18 1995/06/16 06:19:24 eggert Exp $")
+ {
+ 	static char const cmdusage[] =
+-		"\nrlog usage: rlog -{bhLNRt} -ddates -l[lockers] -r[revs] -sstates -Vn -w[logins] -xsuff -zzone file ...";
++		"\nrlog usage: rlog -{bhLNRt} -v[string] -ddates -l[lockers] -r[revs] -sstates -Vn -w[logins] -xsuff -zzone file ...";
+ 
+ 	register FILE *out;
+ 	char *a, **newargv;
+@@ -239,9 +238,12 @@ mainProg(rlogId, "rlog", "$Id: rlog.c,v 
+ 	int pre5;
+ 	int shownames;
+ 	int revno;
++	int versionlist;
++	char *vstring;
+ 
+         descflag = selectflag = shownames = true;
+-	onlylockflag = onlyRCSflag = false;
++	versionlist = onlylockflag = onlyRCSflag = false;
++	vstring=0;
+ 	out = stdout;
+ 	suffixes = X_DEFAULT;
+ 
+@@ -318,6 +320,11 @@ mainProg(rlogId, "rlog", "$Id: rlog.c,v 
+ 			setRCSversion(*argv);
+ 			break;
+ 
++		case 'v':
++			versionlist = true;
++			vstring = a;
++			break;
++
+                 default:
+ 		unknown:
+ 			error("unknown option: %s%s", *argv, cmdusage);
+@@ -371,6 +378,12 @@ mainProg(rlogId, "rlog", "$Id: rlog.c,v 
+ 	    if (onlylockflag && !Locks)
+ 		continue;
+ 
++	    if ( versionlist ) {
++		gettree();
++		aprintf(out, "%s%s %s\n", vstring, workname, tiprev());
++		continue;
++	    }
++
+ 	    if ( onlyRCSflag ) {
+ 		aprintf(out, "%s\n", RCSname);
+ 		continue;
+@@ -462,6 +475,7 @@ mainProg(rlogId, "rlog", "$Id: rlog.c,v 
+ 		putrunk();
+ 		putree(Head);
+ 	    }
++	    aputs("----------------------------\n", out);
+ 	    aputs("=============================================================================\n",out);
+ 	  }
+ 	Ofclose(out);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201310212009.r9LK9hi9023768>