diff --git a/devel/dmake/Makefile b/devel/dmake/Makefile index b6e0bbbe187b..106482bad976 100644 --- a/devel/dmake/Makefile +++ b/devel/dmake/Makefile @@ -7,7 +7,7 @@ PORTNAME= dmake PORTVERSION= 4.12 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= devel MASTER_SITES= ${MASTER_SITE_DEBIAN_POOL} DISTNAME= ${PORTNAME}_${PORTVERSION}.orig @@ -15,10 +15,13 @@ DISTNAME= ${PORTNAME}_${PORTVERSION}.orig MAINTAINER= ports@FreeBSD.org COMMENT= Another hyper make utility +LICENSE= GPLv1 + WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} GNU_CONFIGURE= yes #CONFIGURE_ENV+= CFLAGS="${CFLAGS} -Wall -Werror" CONFIGURE_ARGS+=--datarootdir=${PREFIX}/share/${PORTNAME} + MAN1= dmake.1 post-install: diff --git a/devel/dmake/distinfo b/devel/dmake/distinfo index d81369870eba..6e711fc364b4 100644 --- a/devel/dmake/distinfo +++ b/devel/dmake/distinfo @@ -1,3 +1,2 @@ -MD5 (dmake_4.12.orig.tar.gz) = 282cd4004ad5c3a9df9f1384c0932829 SHA256 (dmake_4.12.orig.tar.gz) = 142aea347a825f10a37c5f8a39584dcc96a15838b17ea418172834a8778ba205 SIZE (dmake_4.12.orig.tar.gz) = 745531 diff --git a/devel/dmake/files/patch-fix-overlapping-stcpys.diff b/devel/dmake/files/patch-fix-overlapping-stcpys.diff new file mode 100644 index 000000000000..d5715a428b51 --- /dev/null +++ b/devel/dmake/files/patch-fix-overlapping-stcpys.diff @@ -0,0 +1,233 @@ +diff -ru dmake.orig/rulparse.c rulparse.c +--- dmake.orig/rulparse.c 2009-07-29 13:31:47.000000000 +0100 ++++ rulparse.c 2009-07-29 13:32:09.000000000 +0100 +@@ -897,7 +897,7 @@ + /* Handle %-targets. */ + CELLPTR cur; + CELLPTR tpq = NIL(CELL); +- CELLPTR nprq; ++ CELLPTR nprq = NULL; + + #ifdef DBUG + DB_PRINT( "%", ("Handling %%-target [%s : : ]", +@@ -915,7 +915,8 @@ + + if( *name == '\'' && name[len-1]=='\'' ){ + name[len-1] = '\0'; +- strcpy(name,name+1); ++ len = strlen(name+1)+1; ++ memmove(name,name+1,len); + /* add indirect prerequisite */ + _add_indirect_prereq( cur ); + } +diff -ru dmake.orig/dag.c dag.c +--- dmake.orig/dag.c 2009-08-07 20:18:31.000000000 +0100 ++++ dag.c 2009-08-07 20:30:59.000000000 +0100 +@@ -369,14 +369,17 @@ + /* strip out any \ combinations where \ is the current + * CONTINUATION char */ + for(p=q; (p=strchr(p,CONTINUATION_CHAR))!=NIL(char); ) +- if( p[1] == '\n' ) +- strcpy( p, p+2 ); ++ if( p[1] == '\n' ) { ++ size_t len = strlen(p+2)+1; ++ memmove ( p, p+2, len ); ++ } + else + p++; + + p = DmStrSpn(q ," \t"); /* Strip white space before ... */ + if( p != q ) { +- strcpy( q, p); ++ size_t len = strlen(p)+1; ++ memmove( q, p, len ); + p = q; + } + +diff -ru dmake.orig/expand.c expand.c +--- dmake.orig/expand.c 2009-08-07 20:18:34.000000000 +0100 ++++ expand.c 2009-08-07 20:42:40.000000000 +0100 +@@ -230,6 +230,7 @@ + char *tok; + { + if( strchr( "\"\\vantbrf01234567", tok[1] ) ) { ++ size_t len; + switch( tok[1] ) { + case 'a' : *tok = 0x07; break; + case 'b' : *tok = '\b'; break; +@@ -246,13 +247,15 @@ + register int j = 0; + for( ; i<2 && isdigit(tok[2]); i++ ) { + j = (j << 3) + (tok[1] - '0'); +- strcpy( tok+1, tok+2 ); ++ len = strlen(tok+2)+1; ++ memmove( tok+1, tok+2, len ); + } + j = (j << 3) + (tok[1] - '0'); + *tok = j; + } + } +- strcpy( tok+1, tok+2 ); ++ len = strlen(tok+2)+1; ++ memmove( tok+1, tok+2, len ); + } + } + +@@ -365,7 +368,8 @@ + if( (e = Basename(s)) != s) { + if( !(mod & DIRECTORY_FLAG) ) { + /* Move the basename to the start. */ +- strcpy(s, e); ++ size_t len = strlen(e)+1; ++ memmove(s, e, len); + } + else + s = e; +@@ -382,7 +386,8 @@ + + if( !(mod & FILE_FLAG) ) { + /* Move the suffix to the start. */ +- strcpy( s, e ); ++ size_t len = strlen(e)+1; ++ memmove(s, e, len); + } + else + s = e; +@@ -725,8 +730,10 @@ + done = !lev; + break; + } else { ++ size_t len; + s[1] = ' '; +- strcpy( s, s+1 ); ++ len = strlen(s+1)+1; ++ memmove( s, s+1, len ); + } + /*FALLTHRU*/ + case ' ': +@@ -835,8 +842,10 @@ + * converted them to a real space. Let's verify this. */ + for( p=s; *p && *p != edelim && *p; p++ ) { + if( p[0] == '\\' && p[1] == '\n' ) { ++ size_t len; + p[1] = ' '; +- strcpy( p, p+1 ); ++ len = strlen(p+1)+1; ++ memmove( p, p+1, len ); + } + } + if( !*p ) +@@ -1120,7 +1129,10 @@ + *flag = 1; + res = Expand( start ); + +- if( (t = DmStrSpn( res, " \t" )) != res ) strcpy( res, t ); ++ if( (t = DmStrSpn( res, " \t" )) != res ) { ++ size_t len = strlen(t)+1; ++ memmove( res, t, len ); ++ } + } + + FREE( start ); /* this is ok! start is assigned a DmSubStr above */ +diff -ru dmake.orig/getinp.c getinp.c +--- dmake.orig/getinp.c 2009-08-07 20:18:31.000000000 +0100 ++++ getinp.c 2009-08-07 20:27:08.000000000 +0100 +@@ -169,7 +169,8 @@ + * text lines on input. The maximum size of this is governened by + * Buffer_size */ + if( q != p && q[-1] == CONTINUATION_CHAR ) { +- strcpy( q, q+1 ); ++ size_t len = strlen(q+1)+1; ++ memmove( q, q+1, len ); + q--; + cont = FALSE; + } +@@ -290,7 +291,8 @@ + while( (c = strchr(c, COMMENT_CHAR)) != NIL(char) ) { + if( Comment || State == NORMAL_SCAN ) + if( c != str && c[-1] == ESCAPE_CHAR ) { +- strcpy( c-1, c ); /* copy it left, due to \# */ ++ size_t len = strlen(c)+1; ++ memmove( c-1, c, len ); /* copy it left, due to \# */ + if( pend ) (*pend)--; /* shift tail pointer left */ + } + else { +diff -ru dmake.orig/path.c path.c +--- dmake.orig/path.c 2009-08-07 20:18:31.000000000 +0100 ++++ path.c 2009-08-07 20:41:30.000000000 +0100 +@@ -172,6 +172,7 @@ + char *tpath; + int hasdriveletter = 0; + int delentry; ++ size_t len; + + DB_ENTER( "Clean_path" ); + +@@ -231,14 +232,16 @@ + p++; + } + while( *p == *DirSepStr); +- strcpy(t+1,p); ++ len = strlen(p)+1; ++ memmove(t+1,p,len); + continue; + } + + /* Remove './'. If OOODMAKEMODE is set do this only if it is not at + * the start of the path. */ + if ( p-q == 1 && *q == '.' && (q != path || !STOBOOL(OOoDmMode)) ) { +- strcpy(q,p+1); ++ len = strlen(p+1)+1; ++ memmove(q,p+1,len); + q = tpath; + continue; + } +@@ -268,7 +271,8 @@ + } + while( *t == *DirSepStr); + /* q points to first letter of the current directory/file. */ +- strcpy(q,t); ++ len = strlen(t)+1; ++ memmove(q,t,len); + q = tpath; + } + else +--- dmake.orig/make.c 2009-08-08 09:56:10.000000000 +0100 ++++ make.c 2009-08-08 10:00:04.000000000 +0100 +@@ -1352,8 +1352,10 @@ + * Nothing in Expand() should be able to change dynamic macros. */ + cmnd = Expand( rp->st_string ); + +- if( new_attr && (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd ) +- strcpy(cmnd,p); ++ if( new_attr && (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd ) { ++ size_t len = strlen(p)+1; ++ memmove(cmnd,p,len); ++ } + + /* COMMAND macro is set to "$(CMNDNAME) $(CMNDARGS)" by default, it is + * possible for the user to reset it to, for example +@@ -1381,8 +1383,10 @@ + shell = ((l_attr & A_SHELL) != 0); + + /* clean up the attributes that we may have just added. */ +- if( (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd ) +- strcpy(cmnd,p); ++ if( (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd ) { ++ size_t len = strlen(p)+1; ++ memmove(cmnd,p,len); ++ } + } + + #if defined(MSDOS) +@@ -1477,8 +1481,9 @@ + for( p=cmnd; *(n = DmStrPbrk(p,tmp)) != '\0'; ) + /* Remove the \ sequences. */ + if(*n == CONTINUATION_CHAR && n[1] == '\n') { ++ size_t len = strlen(n+2)+1; + DB_PRINT( "make", ("fixing [%s]", p) ); +- strcpy( n, n+2 ); ++ memmove( n, n+2, len ); + p = n; + } + /* Look for an escape sequence and replace it by it's corresponding diff --git a/devel/dmake/pkg-descr b/devel/dmake/pkg-descr index 1ea14d3a3f5b..e954e178cc79 100644 --- a/devel/dmake/pkg-descr +++ b/devel/dmake/pkg-descr @@ -1,3 +1,5 @@ +Dmake is a make utility similar to GNU make or the Workshop dmake. + dmake is different from other versions of Make in that it supports significant enhancements. @@ -5,7 +7,6 @@ The original author(s) were WTICorp.com, but they appear to have lost interest in maintaining the code. This port installs the version currently maintained by OpenOffice -project. Unfortunately, OOo does not offer dmake as an independent -download, but, fortunately, the folks at Debian do. +project. -WWW: http://people.debian.org/~rene/dmake/ +WWW: http://tools.openoffice.org/dmake/index.html