CVS commit: src/usr.bin/mkdep

2021-08-11 Thread Roland Illig
Module Name:src
Committed By:   rillig
Date:   Wed Aug 11 20:48:16 UTC 2021

Modified Files:
src/usr.bin/mkdep: findcc.c

Log Message:
mkdep: document possible undefined behavior

If findcc is called with a constant string, as its prototype suggests,
the process crashes with a segmentation fault.  Luckily, neither mkdep
nor lint do that, but the function prototype is nevertheless confusing.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/mkdep/findcc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/findcc.c
diff -u src/usr.bin/mkdep/findcc.c:1.6 src/usr.bin/mkdep/findcc.c:1.7
--- src/usr.bin/mkdep/findcc.c:1.6	Sun Sep  4 20:30:06 2011
+++ src/usr.bin/mkdep/findcc.c	Wed Aug 11 20:48:16 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: findcc.c,v 1.6 2011/09/04 20:30:06 joerg Exp $ */
+/* $NetBSD: findcc.c,v 1.7 2021/08/11 20:48:16 rillig Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT("@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.");
-__RCSID("$NetBSD: findcc.c,v 1.6 2011/09/04 20:30:06 joerg Exp $");
+__RCSID("$NetBSD: findcc.c,v 1.7 2021/08/11 20:48:16 rillig Exp $");
 #endif /* not lint */
 
 #include 
@@ -55,6 +55,11 @@ findcc(const char *progname)
 	char   buffer[MAXPATHLEN];
 
 	if ((next = strchr(progname, ' ')) != NULL) {
+		/*
+		 * FIXME: writing to a 'const char *' invokes undefined
+		 * behavior.  The call to 'strchr' subtly hides the unconst
+		 * cast from the compiler.
+		 */
 		*next = '\0';
 	}
 



CVS commit: src/usr.bin/mkdep

2018-05-23 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Wed May 23 21:20:20 UTC 2018

Modified Files:
src/usr.bin/mkdep: mkdep.c

Log Message:
deconst -> __UNCONST to avoid null pointer arithmetic


To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.44 src/usr.bin/mkdep/mkdep.c:1.45
--- src/usr.bin/mkdep/mkdep.c:1.44	Tue Jun 16 22:54:10 2015
+++ src/usr.bin/mkdep/mkdep.c	Wed May 23 21:20:20 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.44 2015/06/16 22:54:10 christos Exp $ */
+/* $NetBSD: mkdep.c,v 1.45 2018/05/23 21:20:20 joerg Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT("@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.");
-__RCSID("$NetBSD: mkdep.c,v 1.44 2015/06/16 22:54:10 christos Exp $");
+__RCSID("$NetBSD: mkdep.c,v 1.45 2018/05/23 21:20:20 joerg Exp $");
 #endif /* not lint */
 
 #include 
@@ -82,12 +82,6 @@ static int verbose;
 static void save_for_optional(const char *, const char *);
 static size_t write_optional(int, opt_t *, size_t);
 
-static inline void *
-deconst(const void *p)
-{
-	return (const char *)p - (const char *)0 + (char *)0;
-}
-
 __dead static void
 usage(void)
 {
@@ -119,8 +113,8 @@ run_cc(int argc, char **argv, const char
 	if ((args = malloc((argc + 3) * sizeof(char *))) == NULL)
 		err(EXIT_FAILURE, "malloc");
 
-	args[0] = deconst(CC);
-	args[1] = deconst("-M");
+	args[0] = __UNCONST(CC);
+	args[1] = __UNCONST("-M");
 	(void)memcpy([2], argv, (argc + 1) * sizeof(char *));
 
 	if ((tmpdir = getenv("TMPDIR")) == NULL)



CVS commit: src/usr.bin/mkdep

2013-03-05 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Mar  5 21:57:47 UTC 2013

Modified Files:
src/usr.bin/mkdep: mkdep.c

Log Message:
Conditionally include the depend files.


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.42 src/usr.bin/mkdep/mkdep.c:1.43
--- src/usr.bin/mkdep/mkdep.c:1.42	Mon Mar  4 20:59:56 2013
+++ src/usr.bin/mkdep/mkdep.c	Tue Mar  5 16:57:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.42 2013/03/05 01:59:56 christos Exp $ */
+/* $NetBSD: mkdep.c,v 1.43 2013/03/05 21:57:47 christos Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.42 2013/03/05 01:59:56 christos Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.43 2013/03/05 21:57:47 christos Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -328,7 +328,7 @@ main(int argc, char **argv)
 			} else
 fname = *argv++;
 			if (iflag) {
-if (dprintf(dependfile, .include \%s\\n,
+if (dprintf(dependfile, .-include \%s\\n,
 fname)  0)
 	goto wrerror;
 continue;



CVS commit: src/usr.bin/mkdep

2013-03-04 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Mar  5 01:59:56 UTC 2013

Modified Files:
src/usr.bin/mkdep: mkdep.1 mkdep.c

Log Message:
add -i and -v


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/usr.bin/mkdep/mkdep.1
cvs rdiff -u -r1.41 -r1.42 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.1
diff -u src/usr.bin/mkdep/mkdep.1:1.17 src/usr.bin/mkdep/mkdep.1:1.18
--- src/usr.bin/mkdep/mkdep.1:1.17	Sun Aug 26 18:37:19 2012
+++ src/usr.bin/mkdep/mkdep.1	Mon Mar  4 20:59:56 2013
@@ -1,4 +1,4 @@
-.\	$NetBSD: mkdep.1,v 1.17 2012/08/26 22:37:19 jmmv Exp $
+.\	$NetBSD: mkdep.1,v 1.18 2013/03/05 01:59:56 christos Exp $
 .\
 .\ Copyright (c) 1987, 1990, 1993
 .\	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\
 .\ @(#)mkdep.1	8.1 (Berkeley) 6/6/93
 .\
-.Dd August 26, 2012
+.Dd March 4, 2013
 .Dt MKDEP 1
 .Os
 .Sh NAME
@@ -37,7 +37,7 @@
 .Nd construct Makefile dependency list
 .Sh SYNOPSIS
 .Nm
-.Op Fl aDdopq
+.Op Fl aDdiopqv
 .Op Fl f Ar file
 .Op Fl P Ar prefix
 .Op Fl s Ar suffixes
@@ -80,6 +80,13 @@ depend files into a single file.
 Write the include file dependencies to
 .Ar file ,
 instead of the default ``.depend''.
+.It Fl i
+When
+.Fl d
+or
+.Fl D
+is used, instead of inlining the contents of the files to the resulting
+depend file, use include statements to include the source dependency files.
 .It Fl o
 Add an additional .OPTIONAL line for each dependent file.
 .It Fl P
@@ -118,6 +125,8 @@ Expand each target filename to a list, r
 suffix with each element of
 .Ar suffixes .
 The list of suffixes may be space or comma separated.
+.It Fl v
+print debugging output.
 .El
 .Sh FILES
 .Bl -tag -width .depend -compact

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.41 src/usr.bin/mkdep/mkdep.c:1.42
--- src/usr.bin/mkdep/mkdep.c:1.41	Sun Aug 26 18:37:19 2012
+++ src/usr.bin/mkdep/mkdep.c	Mon Mar  4 20:59:56 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.41 2012/08/26 22:37:19 jmmv Exp $ */
+/* $NetBSD: mkdep.c,v 1.42 2013/03/05 01:59:56 christos Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.41 2012/08/26 22:37:19 jmmv Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.42 2013/03/05 01:59:56 christos Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -74,12 +74,13 @@ typedef struct suff_list {
 /* tree of includes for -o processing */
 static opt_t *opt;
 static int width;
+static int verbose;
 
 #define DEFAULT_PATH		_PATH_DEFPATH
 #define DEFAULT_FILENAME	.depend
 
 static void save_for_optional(const char *, const char *);
-static int write_optional(int, opt_t *, int);
+static size_t write_optional(int, opt_t *, size_t);
 
 static inline void *
 deconst(const void *p)
@@ -91,7 +92,7 @@ __dead static void
 usage(void)
 {
 	(void)fprintf(stderr,
-	usage: %s [-aDdopq] [-f file] [-P prefix] [-s suffixes] 
+	usage: %s [-aDdiopqv] [-f file] [-P prefix] [-s suffixes] 
 	-- [flags] file ...\n,
 	getprogname());
 	exit(EXIT_FAILURE);
@@ -132,6 +133,13 @@ run_cc(int argc, char **argv, const char
 	(void)unlink(tmpfilename);
 	*fname = tmpfilename;
 
+	if (verbose) {
+		char **a;
+		for (a = args; *a; a++)
+			printf(%s , *a);
+		printf(\n);
+	}
+
 	switch (cpid = vfork()) {
 	case 0:
 		(void)dup2(tmpfd, STDOUT_FILENO);
@@ -208,7 +216,7 @@ addsuff(suff_list_t **l, const char *s, 
 int
 main(int argc, char **argv)
 {
-	int 	aflag, dflag, oflag, qflag;
+	int 	aflag, dflag, iflag, oflag, qflag;
 	const char *filename;
 	int	dependfile;
 	char	*buf, *lim, *ptr, *line, *suf, *colon, *eol;
@@ -229,6 +237,7 @@ main(int argc, char **argv)
 
 	aflag = O_WRONLY | O_APPEND | O_CREAT | O_TRUNC;
 	dflag = 0;
+	iflag = 0;
 	oflag = 0;
 	qflag = 0;
 	filename = DEFAULT_FILENAME;
@@ -237,7 +246,7 @@ main(int argc, char **argv)
 	opterr = 0;	/* stop getopt() bleating about errors. */
 	for (;;) {
 		ok_ind = optind;
-		ch = getopt_long(argc, argv, aDdf:oP:pqRs:, longopt, NULL);
+		ch = getopt_long(argc, argv, aDdf:ioP:pqRs:v, longopt, NULL);
 		switch (ch) {
 		case -1:
 			ok_ind = optind;
@@ -256,6 +265,9 @@ main(int argc, char **argv)
 		case 'f':	/* Name of output file */
 			filename = optarg;
 			continue;
+		case 'i':
+			iflag = 1;
+			continue;
 		case 'o':	/* Mark dependent files .OPTIONAL */
 			oflag = 1;
 			continue;
@@ -274,6 +286,9 @@ main(int argc, char **argv)
 		case 's':	/* Suffix list */
 			suffixes = optarg;
 			continue;
+		case 'v':
+			verbose = 1;
+			continue;
 		default:
 			if (dflag)
 usage();
@@ -302,8 +317,7 @@ main(int argc, char **argv)
 
 	dependfile = open(filename, aflag, 0666);
 	if (dependfile == -1)
-		err(EXIT_FAILURE, unable to %s to file %s\n,
-		aflag 

CVS commit: src/usr.bin/mkdep

2011-09-04 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sun Sep  4 20:30:06 UTC 2011

Modified Files:
src/usr.bin/mkdep: findcc.c mkdep.c

Log Message:
ANSIfy + static + __dead


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/usr.bin/mkdep/findcc.c
cvs rdiff -u -r1.39 -r1.40 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/findcc.c
diff -u src/usr.bin/mkdep/findcc.c:1.5 src/usr.bin/mkdep/findcc.c:1.6
--- src/usr.bin/mkdep/findcc.c:1.5	Sun Apr 12 14:23:30 2009
+++ src/usr.bin/mkdep/findcc.c	Sun Sep  4 20:30:06 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: findcc.c,v 1.5 2009/04/12 14:23:30 lukem Exp $ */
+/* $NetBSD: findcc.c,v 1.6 2011/09/04 20:30:06 joerg Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: findcc.c,v 1.5 2009/04/12 14:23:30 lukem Exp $);
+__RCSID($NetBSD: findcc.c,v 1.6 2011/09/04 20:30:06 joerg Exp $);
 #endif /* not lint */
 
 #include sys/param.h
@@ -49,8 +49,7 @@
 #include findcc.h
 
 char *
-findcc(progname)
-	const char	*progname;
+findcc(const char *progname)
 {
 	char   *path, *dir, *next;
 	char   buffer[MAXPATHLEN];

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.39 src/usr.bin/mkdep/mkdep.c:1.40
--- src/usr.bin/mkdep/mkdep.c:1.39	Thu Jun 30 20:09:42 2011
+++ src/usr.bin/mkdep/mkdep.c	Sun Sep  4 20:30:06 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.39 2011/06/30 20:09:42 wiz Exp $ */
+/* $NetBSD: mkdep.c,v 1.40 2011/09/04 20:30:06 joerg Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.39 2011/06/30 20:09:42 wiz Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.40 2011/09/04 20:30:06 joerg Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -72,8 +72,8 @@
 } suff_list_t;
 
 /* tree of includes for -o processing */
-opt_t *opt;
-int width;
+static opt_t *opt;
+static int width;
 
 #define DEFAULT_PATH		_PATH_DEFPATH
 #define DEFAULT_FILENAME	.depend
@@ -81,14 +81,13 @@
 static void save_for_optional(const char *, const char *);
 static int write_optional(int, opt_t *, int);
 
-
 static inline void *
 deconst(const void *p)
 {
 	return (const char *)p - (const char *)0 + (char *)0;
 }
 
-static void
+__dead static void
 usage(void)
 {
 	(void)fprintf(stderr,



CVS commit: src/usr.bin/mkdep

2011-05-30 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon May 30 22:52:13 UTC 2011

Modified Files:
src/usr.bin/mkdep: mkdep.c

Log Message:
Handle the empty suffix properly. Convert suffix list to a list from an
array and don't have limits in the suffix length. Also don't require that
suffixes have a single dot.


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.36 src/usr.bin/mkdep/mkdep.c:1.37
--- src/usr.bin/mkdep/mkdep.c:1.36	Sun Apr 17 18:35:22 2011
+++ src/usr.bin/mkdep/mkdep.c	Mon May 30 18:52:12 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.36 2011/04/17 22:35:22 christos Exp $ */
+/* $NetBSD: mkdep.c,v 1.37 2011/05/30 22:52:12 christos Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.36 2011/04/17 22:35:22 christos Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.37 2011/05/30 22:52:12 christos Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -65,9 +65,10 @@
 	char	name[4];
 };
 
-typedef struct {
+typedef struct suff_list {
 	size_t	len;
-	char	suff[12];
+	char	*suff;
+	struct suff_list *next;
 } suff_list_t;
 
 /* tree of includes for -o processing */
@@ -125,10 +126,9 @@
 		tmpdir = _PATH_TMP;
 	(void)snprintf(tmpfilename, sizeof (tmpfilename), %s/%s, tmpdir,
 	mkdepXX);
-	if ((tmpfd = mkstemp(tmpfilename))  0) {
-		warn(unable to create temporary file %s, tmpfilename);
-		exit(EXIT_FAILURE);
-	}
+	if ((tmpfd = mkstemp(tmpfilename))  0)
+		err(EXIT_FAILURE,  Unable to create temporary file %s,
+		tmpfilename);
 	(void)unlink(tmpfilename);
 	*fname = tmpfilename;
 
@@ -189,6 +189,22 @@
 	{ NULL, 0, NULL, '\0' },
 };
 
+static void
+addsuff(suff_list_t **l, const char *s, size_t len)
+{
+	suff_list_t *p = calloc(1, sizeof(*p));
+	if (p == NULL)
+		err(1, calloc);
+	p-suff = malloc(len + 1);
+	if (p-suff == NULL)
+		err(1, malloc);
+	memcpy(p-suff, s, len);
+	p-suff[len] = '\0';
+	p-len = len;
+	p-next = *l;
+	*l = p;
+}
+
 int
 main(int argc, char **argv)
 {
@@ -269,22 +285,15 @@
 		usage();
 
 	if (suffixes != NULL) {
-		/* parse list once and save names and lengths */
-		/* allocate an extra entry to mark end of list */
-		for (sz = 1, s = suffixes; *s != 0; s++)
-			if (*s == '.')
-			sz++;
-		suff_list = calloc(sz, sizeof *suff_list);
-		if (suff_list == NULL)
-			err(2, malloc);
-		sl = suff_list;
-		for (s = suffixes; (s = strchr(s, '.')); s += sz, sl++) {
-			sz = strcspn(s, , );
-			if (sz  sizeof sl-suff)
-errx(2, suffix too long);
-			sl-len = sz;
-			memcpy(sl-suff, s, sz);
-		}
+		if (*suffixes) {
+			for (s = suffixes; (sz = strcspn(s, , )) != 0;) {
+addsuff(suff_list, s, sz);
+s += sz;
+while (*s  strchr(, , *s))
+	s++;
+			}
+		} else
+			addsuff(suff_list, , 0);
 	}
 
 	dependfile = open(filename, aflag, 0666);
@@ -368,8 +377,10 @@
 	errx(EXIT_FAILURE,
 	Corrupted file `%s', fname);
 /* Then look for any valid suffix */
-for (sl = suff_list; sl-len != 0; sl++) {
-	if (!memcmp(suf - sl-len, sl-suff,
+for (sl = suff_list; sl != NULL;
+sl = sl-next) {
+	if (sl-len 
+	!memcmp(suf - sl-len, sl-suff,
 		sl-len))
 		break;
 }
@@ -377,7 +388,7 @@
  * Not found, check for .o, since the
  * original file will have it.
  */
-if (sl-len == 0  suff_list-len != 0) {
+if (sl == NULL) {
 	if (memcmp(suf - 2, .o, 2) == 0)
 		slen = 2;
 	else
@@ -387,7 +398,8 @@
 			}
 			if (suff_list != NULL  slen != 0) {
 suf -= slen;
-for (sl = suff_list; sl-len != 0; sl++) {
+for (sl = suff_list; sl != NULL; sl = sl-next)
+{
 	if (sl != suff_list)
 		write(dependfile,  , 1);
 	write(dependfile, line, suf - line);



CVS commit: src/usr.bin/mkdep

2011-05-30 Thread enami tsugutomo
Module Name:src
Committed By:   enami
Date:   Tue May 31 02:34:32 UTC 2011

Modified Files:
src/usr.bin/mkdep: mkdep.c

Log Message:
Don't touch before the mmap'ed region.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.37 src/usr.bin/mkdep/mkdep.c:1.38
--- src/usr.bin/mkdep/mkdep.c:1.37	Mon May 30 22:52:12 2011
+++ src/usr.bin/mkdep/mkdep.c	Tue May 31 02:34:32 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.37 2011/05/30 22:52:12 christos Exp $ */
+/* $NetBSD: mkdep.c,v 1.38 2011/05/31 02:34:32 enami Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.37 2011/05/30 22:52:12 christos Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.38 2011/05/31 02:34:32 enami Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -379,7 +379,7 @@
 /* Then look for any valid suffix */
 for (sl = suff_list; sl != NULL;
 sl = sl-next) {
-	if (sl-len 
+	if (sl-len  buf = suf - sl-len 
 	!memcmp(suf - sl-len, sl-suff,
 		sl-len))
 		break;



CVS commit: src/usr.bin/mkdep

2011-04-17 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Apr 17 22:35:22 UTC 2011

Modified Files:
src/usr.bin/mkdep: mkdep.c

Log Message:
Recognize --sysroot but don't document it or do anything about it for now.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.35 src/usr.bin/mkdep/mkdep.c:1.36
--- src/usr.bin/mkdep/mkdep.c:1.35	Wed May 26 14:07:34 2010
+++ src/usr.bin/mkdep/mkdep.c	Sun Apr 17 18:35:22 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.35 2010/05/26 18:07:34 christos Exp $ */
+/* $NetBSD: mkdep.c,v 1.36 2011/04/17 22:35:22 christos Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.35 2010/05/26 18:07:34 christos Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.36 2011/04/17 22:35:22 christos Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -46,6 +46,7 @@
 #include ctype.h
 #include err.h
 #include fcntl.h
+#include getopt.h
 #include locale.h
 #include paths.h
 #include stdio.h
@@ -183,6 +184,11 @@
 	return fbuf;
 }
 
+static struct option longopt[] = {
+	{ sysroot, 1, NULL, 'R' },
+	{ NULL, 0, NULL, '\0' },
+};
+
 int
 main(int argc, char **argv)
 {
@@ -214,7 +220,7 @@
 	opterr = 0;	/* stop getopt() bleating about errors. */
 	for (;;) {
 		ok_ind = optind;
-		ch = getopt(argc, argv, aDdf:opqs:);
+		ch = getopt_long(argc, argv, aDdf:opqRs:, longopt, NULL);
 		switch (ch) {
 		case -1:
 			ok_ind = optind;
@@ -242,6 +248,9 @@
 		case 'q':	/* Quiet */
 			qflag = 1;
 			continue;
+		case 'R':
+			/* sysroot = optarg */
+			continue;
 		case 's':	/* Suffix list */
 			suffixes = optarg;
 			continue;



CVS commit: src/usr.bin/mkdep

2010-10-14 Thread David A. Holland
Module Name:src
Committed By:   dholland
Date:   Fri Oct 15 05:46:48 UTC 2010

Modified Files:
src/usr.bin/mkdep: mkdep.1

Log Message:
Per PR 19359 note that mkdep doesn't handle all make metacharacters
correctly; in particular, filenames containing '#' cause trouble,
although '$' seems to be ok. Bump date.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/usr.bin/mkdep/mkdep.1

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.1
diff -u src/usr.bin/mkdep/mkdep.1:1.14 src/usr.bin/mkdep/mkdep.1:1.15
--- src/usr.bin/mkdep/mkdep.1:1.14	Mon Dec 12 22:49:37 2005
+++ src/usr.bin/mkdep/mkdep.1	Fri Oct 15 05:46:48 2010
@@ -1,4 +1,4 @@
-.\	$NetBSD: mkdep.1,v 1.14 2005/12/12 22:49:37 wiz Exp $
+.\	$NetBSD: mkdep.1,v 1.15 2010/10/15 05:46:48 dholland Exp $
 .\
 .\ Copyright (c) 1987, 1990, 1993
 .\	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\
 .\ @(#)mkdep.1	8.1 (Berkeley) 6/6/93
 .\
-.Dd December 12, 2005
+.Dd October 15, 2010
 .Dt MKDEP 1
 .Os
 .Sh NAME
@@ -124,3 +124,11 @@
 .Nm
 command appeared in
 .Bx 4.3 Tahoe .
+.Sh BUGS
+Some characters special to
+.Xr make 1 ,
+most notably the comment character, are not escaped correctly if they
+appear in file names.
+This can lead to unparseable output or silently cause dependencies to
+be lost.
+.\ (This problem is actually in gcc -M.)



CVS commit: src/usr.bin/mkdep

2010-05-26 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed May 26 15:04:40 UTC 2010

Modified Files:
src/usr.bin/mkdep: mkdep.c

Log Message:
PR/43364: Nicolas Joly: mkdep(1) wrong target names when suffix list miss .o


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.33 src/usr.bin/mkdep/mkdep.c:1.34
--- src/usr.bin/mkdep/mkdep.c:1.33	Sun Apr 12 10:23:30 2009
+++ src/usr.bin/mkdep/mkdep.c	Wed May 26 11:04:40 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.33 2009/04/12 14:23:30 lukem Exp $ */
+/* $NetBSD: mkdep.c,v 1.34 2010/05/26 15:04:40 christos Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.33 2009/04/12 14:23:30 lukem Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.34 2010/05/26 15:04:40 christos Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -193,6 +193,7 @@
 	int	ok_ind, ch;
 	size_t	sz;
 	int	fd;
+	size_t  slen;
 	const char *fname;
 	const char *suffixes = NULL, *s;
 	suff_list_t *suff_list = NULL, *sl;
@@ -363,9 +364,20 @@
 		sl-len))
 		break;
 }
+/*
+ * Not found, check for .o, since the
+ * original file will have it.
+ */
+if (sl-len == 0) {
+	if (memcmp(suf - 2, .o, 2) == 0)
+		slen = 2;
+	else
+		slen = 0;
+} else
+	slen = sl-len;
 			}
-			if (suff_list != NULL  sl-len != 0) {
-suf -= sl-len;
+			if (suff_list != NULL  slen != 0) {
+suf -= slen;
 for (sl = suff_list; sl-len != 0; sl++) {
 	if (sl != suff_list)
 		write(dependfile,  , 1);



CVS commit: src/usr.bin/mkdep

2010-05-26 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed May 26 18:07:34 UTC 2010

Modified Files:
src/usr.bin/mkdep: mkdep.c

Log Message:
fix empty suffix case.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/usr.bin/mkdep/mkdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/mkdep/mkdep.c
diff -u src/usr.bin/mkdep/mkdep.c:1.34 src/usr.bin/mkdep/mkdep.c:1.35
--- src/usr.bin/mkdep/mkdep.c:1.34	Wed May 26 11:04:40 2010
+++ src/usr.bin/mkdep/mkdep.c	Wed May 26 14:07:34 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: mkdep.c,v 1.34 2010/05/26 15:04:40 christos Exp $ */
+/* $NetBSD: mkdep.c,v 1.35 2010/05/26 18:07:34 christos Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT(@(#) Copyright (c) 1999 The NetBSD Foundation, Inc.\
  All rights reserved.);
-__RCSID($NetBSD: mkdep.c,v 1.34 2010/05/26 15:04:40 christos Exp $);
+__RCSID($NetBSD: mkdep.c,v 1.35 2010/05/26 18:07:34 christos Exp $);
 #endif /* not lint */
 
 #include sys/mman.h
@@ -269,7 +269,7 @@
 		if (suff_list == NULL)
 			err(2, malloc);
 		sl = suff_list;
-		for (s = suffixes; (s = strchr(s, '.')); s += sz, sl++ ) {
+		for (s = suffixes; (s = strchr(s, '.')); s += sz, sl++) {
 			sz = strcspn(s, , );
 			if (sz  sizeof sl-suff)
 errx(2, suffix too long);
@@ -368,7 +368,7 @@
  * Not found, check for .o, since the
  * original file will have it.
  */
-if (sl-len == 0) {
+if (sl-len == 0  suff_list-len != 0) {
 	if (memcmp(suf - 2, .o, 2) == 0)
 		slen = 2;
 	else