Module Name:    src
Committed By:   rillig
Date:           Sun Aug 23 18:26:35 UTC 2020

Modified Files:
        src/usr.bin/make: compat.c for.c job.c main.c nonints.h str.c var.c

Log Message:
make(1): make brk_string return size_t for the number of words


To generate a diff of this commit:
cvs rdiff -u -r1.127 -r1.128 src/usr.bin/make/compat.c
cvs rdiff -u -r1.64 -r1.65 src/usr.bin/make/for.c
cvs rdiff -u -r1.214 -r1.215 src/usr.bin/make/job.c
cvs rdiff -u -r1.311 -r1.312 src/usr.bin/make/main.c
cvs rdiff -u -r1.97 -r1.98 src/usr.bin/make/nonints.h
cvs rdiff -u -r1.61 -r1.62 src/usr.bin/make/str.c
cvs rdiff -u -r1.464 -r1.465 src/usr.bin/make/var.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/make/compat.c
diff -u src/usr.bin/make/compat.c:1.127 src/usr.bin/make/compat.c:1.128
--- src/usr.bin/make/compat.c:1.127	Sun Aug 23 10:53:27 2020
+++ src/usr.bin/make/compat.c	Sun Aug 23 18:26:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat.c,v 1.127 2020/08/23 10:53:27 rillig Exp $	*/
+/*	$NetBSD: compat.c,v 1.128 2020/08/23 18:26:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: compat.c,v 1.127 2020/08/23 10:53:27 rillig Exp $";
+static char rcsid[] = "$NetBSD: compat.c,v 1.128 2020/08/23 18:26:35 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)compat.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: compat.c,v 1.127 2020/08/23 10:53:27 rillig Exp $");
+__RCSID("$NetBSD: compat.c,v 1.128 2020/08/23 18:26:35 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -221,8 +221,6 @@ CompatRunCommand(void *cmdp, void *gnp)
     LstNode 	  cmdNode;  	/* Node where current command is located */
     const char  ** volatile av;	/* Argument vector for thing to exec */
     char	** volatile mav;/* Copy of the argument vector for freeing */
-    int	    	  argc;	    	/* Number of arguments in av or 0 if not
-				 * dynamically allocated */
     Boolean 	  useShell;    	/* TRUE if command should be executed
 				 * using a shell */
     char	  * volatile cmd = (char *)cmdp;
@@ -350,15 +348,15 @@ again:
 	shargv[shargc++] = cmd;
 	shargv[shargc++] = NULL;
 	av = shargv;
-	argc = 0;
 	bp = NULL;
 	mav = NULL;
     } else {
+        size_t argc;
 	/*
 	 * No meta-characters, so no need to exec a shell. Break the command
 	 * into words to form an argument vector we can execute.
 	 */
-	mav = brk_string(cmd, &argc, TRUE, &bp);
+	mav = brk_string(cmd, TRUE, &argc, &bp);
 	if (mav == NULL) {
 		useShell = 1;
 		goto again;

Index: src/usr.bin/make/for.c
diff -u src/usr.bin/make/for.c:1.64 src/usr.bin/make/for.c:1.65
--- src/usr.bin/make/for.c:1.64	Sat Aug 22 21:42:38 2020
+++ src/usr.bin/make/for.c	Sun Aug 23 18:26:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: for.c,v 1.64 2020/08/22 21:42:38 rillig Exp $	*/
+/*	$NetBSD: for.c,v 1.65 2020/08/23 18:26:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1992, The Regents of the University of California.
@@ -30,14 +30,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: for.c,v 1.64 2020/08/22 21:42:38 rillig Exp $";
+static char rcsid[] = "$NetBSD: for.c,v 1.65 2020/08/23 18:26:35 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)for.c	8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: for.c,v 1.64 2020/08/22 21:42:38 rillig Exp $");
+__RCSID("$NetBSD: for.c,v 1.65 2020/08/23 18:26:35 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -141,11 +141,11 @@ For_Eval(char *line)
 {
     For *new_for;
     char *ptr = line, *sub;
-    int len;
+    size_t len;
     int escapes;
     unsigned char ch;
     char **words, *word_buf;
-    int n, nwords;
+    size_t nwords;
 
     /* Skip the '.' and any following whitespace */
     for (ptr++; *ptr && isspace((unsigned char)*ptr); ptr++)
@@ -214,11 +214,13 @@ For_Eval(char *line)
     /*
      * Split into words allowing for quoted strings.
      */
-    words = brk_string(sub, &nwords, FALSE, &word_buf);
+    words = brk_string(sub, FALSE, &nwords, &word_buf);
 
     free(sub);
 
     if (words != NULL) {
+        size_t n;
+
 	for (n = 0; n < nwords; n++) {
 	    ptr = words[n];
 	    if (!*ptr)
@@ -252,8 +254,8 @@ For_Eval(char *line)
 	if ((len = strlist_num(&new_for->items)) > 0 &&
 	    len % (n = strlist_num(&new_for->vars))) {
 	    Parse_Error(PARSE_FATAL,
-			"Wrong number of words (%d) in .for substitution list"
-			" with %d vars", len, n);
+			"Wrong number of words (%zu) in .for substitution list"
+			" with %zu vars", len, n);
 	    /*
 	     * Return 'success' so that the body of the .for loop is
 	     * accumulated.

Index: src/usr.bin/make/job.c
diff -u src/usr.bin/make/job.c:1.214 src/usr.bin/make/job.c:1.215
--- src/usr.bin/make/job.c:1.214	Sat Aug 22 21:42:38 2020
+++ src/usr.bin/make/job.c	Sun Aug 23 18:26:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.214 2020/08/22 21:42:38 rillig Exp $	*/
+/*	$NetBSD: job.c,v 1.215 2020/08/23 18:26:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: job.c,v 1.214 2020/08/22 21:42:38 rillig Exp $";
+static char rcsid[] = "$NetBSD: job.c,v 1.215 2020/08/23 18:26:35 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)job.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: job.c,v 1.214 2020/08/22 21:42:38 rillig Exp $");
+__RCSID("$NetBSD: job.c,v 1.215 2020/08/23 18:26:35 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -2445,7 +2445,7 @@ Job_ParseShell(char *line)
 {
     char	**words;
     char	**argv;
-    int		argc;
+    size_t	argc;
     char	*path;
     Shell	newShell;
     Boolean	fullSpec = FALSE;
@@ -2462,7 +2462,7 @@ Job_ParseShell(char *line)
     /*
      * Parse the specification by keyword
      */
-    words = brk_string(line, &argc, TRUE, &path);
+    words = brk_string(line, TRUE, &argc, &path);
     if (words == NULL) {
 	Error("Unterminated quoted string [%s]", line);
 	return FAILURE;

Index: src/usr.bin/make/main.c
diff -u src/usr.bin/make/main.c:1.311 src/usr.bin/make/main.c:1.312
--- src/usr.bin/make/main.c:1.311	Sun Aug 23 16:58:02 2020
+++ src/usr.bin/make/main.c	Sun Aug 23 18:26:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.311 2020/08/23 16:58:02 rillig Exp $	*/
+/*	$NetBSD: main.c,v 1.312 2020/08/23 18:26:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.311 2020/08/23 16:58:02 rillig Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.312 2020/08/23 18:26:35 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
@@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
 #if 0
 static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: main.c,v 1.311 2020/08/23 16:58:02 rillig Exp $");
+__RCSID("$NetBSD: main.c,v 1.312 2020/08/23 18:26:35 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -690,7 +690,7 @@ void
 Main_ParseArgLine(const char *line)
 {
 	char **argv;			/* Manufactured argument vector */
-	int argc;			/* Number of arguments in argv */
+	size_t argc;			/* Number of arguments in argv */
 	char *args;			/* Space used by the args */
 	char *p1;
 	const char *argv0 = Var_Value(".MAKE", VAR_GLOBAL, &p1);
@@ -706,14 +706,14 @@ Main_ParseArgLine(const char *line)
 	buf = str_concat3(argv0, " ", line);
 	free(p1);
 
-	argv = brk_string(buf, &argc, TRUE, &args);
+	argv = brk_string(buf, TRUE, &argc, &args);
 	if (argv == NULL) {
 		Error("Unterminated quoted string [%s]", buf);
 		free(buf);
 		return;
 	}
 	free(buf);
-	MainParseArgs(argc, argv);
+	MainParseArgs((int)argc, argv);
 
 	free(args);
 	free(argv);

Index: src/usr.bin/make/nonints.h
diff -u src/usr.bin/make/nonints.h:1.97 src/usr.bin/make/nonints.h:1.98
--- src/usr.bin/make/nonints.h:1.97	Sun Aug 23 09:28:52 2020
+++ src/usr.bin/make/nonints.h	Sun Aug 23 18:26:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: nonints.h,v 1.97 2020/08/23 09:28:52 rillig Exp $	*/
+/*	$NetBSD: nonints.h,v 1.98 2020/08/23 18:26:35 rillig Exp $	*/
 
 /*-
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -136,7 +136,7 @@ Lst Parse_MainName(void);
 char *str_concat2(const char *, const char *);
 char *str_concat3(const char *, const char *, const char *);
 char *str_concat4(const char *, const char *, const char *, const char *);
-char **brk_string(const char *, int *, Boolean, char **);
+char **brk_string(const char *, Boolean, size_t *, char **);
 char *Str_FindSubstring(const char *, const char *);
 Boolean Str_Match(const char *, const char *);
 

Index: src/usr.bin/make/str.c
diff -u src/usr.bin/make/str.c:1.61 src/usr.bin/make/str.c:1.62
--- src/usr.bin/make/str.c:1.61	Sun Aug 23 18:03:35 2020
+++ src/usr.bin/make/str.c	Sun Aug 23 18:26:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: str.c,v 1.61 2020/08/23 18:03:35 rillig Exp $	*/
+/*	$NetBSD: str.c,v 1.62 2020/08/23 18:26:35 rillig Exp $	*/
 
 /*-
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: str.c,v 1.61 2020/08/23 18:03:35 rillig Exp $";
+static char rcsid[] = "$NetBSD: str.c,v 1.62 2020/08/23 18:26:35 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char     sccsid[] = "@(#)str.c	5.8 (Berkeley) 6/1/90";
 #else
-__RCSID("$NetBSD: str.c,v 1.61 2020/08/23 18:03:35 rillig Exp $");
+__RCSID("$NetBSD: str.c,v 1.62 2020/08/23 18:26:35 rillig Exp $");
 #endif
 #endif				/* not lint */
 #endif
@@ -142,8 +142,8 @@ str_concat4(const char *s1, const char *
  *	Number of words in *out_words_len.
  */
 char **
-brk_string(const char *str, int *out_words_len, Boolean expand,
-	   char **out_words_buf)
+brk_string(const char *str, Boolean expand,
+	   size_t *out_words_len, char **out_words_buf)
 {
 	size_t str_len;
 	char *words_buf;

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.464 src/usr.bin/make/var.c:1.465
--- src/usr.bin/make/var.c:1.464	Sun Aug 23 10:27:22 2020
+++ src/usr.bin/make/var.c	Sun Aug 23 18:26:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.464 2020/08/23 10:27:22 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.465 2020/08/23 18:26:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.464 2020/08/23 10:27:22 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.465 2020/08/23 18:26:35 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)var.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: var.c,v 1.464 2020/08/23 10:27:22 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.465 2020/08/23 18:26:35 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -608,10 +608,10 @@ Var_ExportVars(void)
     if (*val) {
 	char **av;
 	char *as;
-	int ac;
-	int i;
+	size_t ac;
+	size_t i;
 
-	av = brk_string(val, &ac, FALSE, &as);
+	av = brk_string(val, FALSE, &ac, &as);
 	for (i = 0; i < ac; i++)
 	    Var_Export1(av[i], 0);
 	free(as);
@@ -652,10 +652,10 @@ Var_Export(const char *str, Boolean isEx
     val = Var_Subst(str, VAR_GLOBAL, VARE_WANTRES);
     if (val[0] != '\0') {
 	char *as;
-	int ac;
-	char **av = brk_string(val, &ac, FALSE, &as);
+	size_t ac;
+	char **av = brk_string(val, FALSE, &ac, &as);
 
-	int i;
+	size_t i;
 	for (i = 0; i < ac; i++) {
 	    const char *name = av[i];
 	    if (Var_Export1(name, flags)) {
@@ -731,10 +731,10 @@ Var_UnExport(const char *str)
 	Var *v;
 	char **av;
 	char *as;
-	int ac;
-	int i;
+	size_t ac;
+	size_t i;
 
-	av = brk_string(varnames, &ac, FALSE, &as);
+	av = brk_string(varnames, FALSE, &ac, &as);
 	for (i = 0; i < ac; i++) {
 	    v = VarFind(av[i], VAR_GLOBAL, 0);
 	    if (v == NULL) {
@@ -1490,7 +1490,7 @@ VarSelectWords(char sep, Boolean oneBigW
 {
     char **av;			/* word list */
     char *as;			/* word list memory */
-    int ac;
+    size_t ac;
     int start, end, step;
     int i;
 
@@ -1500,12 +1500,12 @@ VarSelectWords(char sep, Boolean oneBigW
     if (oneBigWord) {
 	/* fake what brk_string() would do if there were only one word */
 	ac = 1;
-	av = bmake_malloc((size_t)(ac + 1) * sizeof(char *));
+	av = bmake_malloc((ac + 1) * sizeof(char *));
 	as = bmake_strdup(str);
 	av[0] = as;
 	av[1] = NULL;
     } else {
-	av = brk_string(str, &ac, FALSE, &as);
+	av = brk_string(str, FALSE, &ac, &as);
     }
 
     /*
@@ -1514,20 +1514,20 @@ VarSelectWords(char sep, Boolean oneBigW
      * (-1 gets converted to ac, -2 gets converted to (ac - 1), etc.).
      */
     if (first < 0)
-	first += ac + 1;
+	first += (int)ac + 1;
     if (last < 0)
-	last += ac + 1;
+	last += (int)ac + 1;
 
     /*
      * We avoid scanning more of the list than we need to.
      */
     if (first > last) {
-	start = MIN(ac, first) - 1;
+	start = MIN((int)ac, first) - 1;
 	end = MAX(0, last - 1);
 	step = -1;
     } else {
 	start = MAX(0, first - 1);
-	end = MIN(ac, last);
+	end = MIN((int)ac, last);
 	step = 1;
     }
 
@@ -1578,8 +1578,8 @@ ModifyWords(GNode *ctx, char sep, Boolea
     SepBuf result;
     char **av;			/* word list */
     char *as;			/* word list memory */
-    int ac;
-    int i;
+    size_t ac;
+    size_t i;
 
     if (oneBigWord) {
 	SepBuf_Init(&result, sep);
@@ -1589,9 +1589,9 @@ ModifyWords(GNode *ctx, char sep, Boolea
 
     SepBuf_Init(&result, sep);
 
-    av = brk_string(str, &ac, FALSE, &as);
+    av = brk_string(str, FALSE, &ac, &as);
 
-    VAR_DEBUG("ModifyWords: split \"%s\" into %d words\n", str, ac);
+    VAR_DEBUG("ModifyWords: split \"%s\" into %zu words\n", str, ac);
 
     for (i = 0; i < ac; i++) {
 	modifyWord(av[i], &result, modifyWord_args);
@@ -1607,10 +1607,10 @@ ModifyWords(GNode *ctx, char sep, Boolea
 
 
 static char *
-WordList_JoinFree(char **av, int ac, char *as)
+WordList_JoinFree(char **av, size_t ac, char *as)
 {
     Buffer buf;
-    int i;
+    size_t i;
 
     Buf_Init(&buf, 0);
 
@@ -1631,11 +1631,11 @@ static char *
 VarUniq(const char *str)
 {
     char *as;			/* Word list memory */
-    int ac;
-    char **av = brk_string(str, &ac, FALSE, &as);
+    size_t ac;
+    char **av = brk_string(str, FALSE, &ac, &as);
 
     if (ac > 1) {
-	int i, j;
+	size_t i, j;
 	for (j = 0, i = 1; i < ac; i++)
 	    if (strcmp(av[i], av[j]) != 0 && (++j != i))
 		av[j] = av[i];
@@ -2196,9 +2196,9 @@ ApplyModifier_Exclam(const char **pp, Ap
 static ApplyModifierResult
 ApplyModifier_Range(const char **pp, ApplyModifiersState *st)
 {
-    int n;
+    size_t n;
     Buffer buf;
-    int i;
+    size_t i;
 
     const char *mod = *pp;
     if (!ModMatchEq(mod, "range", st->endc))
@@ -2206,7 +2206,7 @@ ApplyModifier_Range(const char **pp, App
 
     if (mod[5] == '=') {
 	char *ep;
-	n = (int)strtoul(mod + 6, &ep, 10);
+	n = (size_t)strtoul(mod + 6, &ep, 10);
 	*pp = ep;
     } else {
 	n = 0;
@@ -2215,7 +2215,7 @@ ApplyModifier_Range(const char **pp, App
 
     if (n == 0) {
 	char *as;
-	char **av = brk_string(st->val, &n, FALSE, &as);
+	char **av = brk_string(st->val, FALSE, &n, &as);
 	free(as);
 	free(av);
     }
@@ -2225,7 +2225,7 @@ ApplyModifier_Range(const char **pp, App
     for (i = 0; i < n; i++) {
 	if (i != 0)
 	    Buf_AddByte(&buf, ' ');	/* XXX: st->sep, for consistency */
-	Buf_AddInt(&buf, 1 + i);
+	Buf_AddInt(&buf, 1 + (int)i);
     }
 
     st->newVal = Buf_Destroy(&buf, FALSE);
@@ -2599,13 +2599,13 @@ ApplyModifier_Words(const char **pp, App
 	    /* XXX: brk_string() is a rather expensive
 	     * way of counting words. */
 	    char *as;
-	    int ac;
-	    char **av = brk_string(st->val, &ac, FALSE, &as);
+	    size_t ac;
+	    char **av = brk_string(st->val, FALSE, &ac, &as);
 	    free(as);
 	    free(av);
 
 	    Buf_Init(&buf, 4);	/* 3 digits + '\0' */
-	    Buf_AddInt(&buf, ac);
+	    Buf_AddInt(&buf, (int)ac);
 	    st->newVal = Buf_Destroy(&buf, FALSE);
 	}
 	goto ok;
@@ -2690,12 +2690,12 @@ ApplyModifier_Order(const char **pp, App
     const char *mod = (*pp)++;	/* skip past the 'O' in any case */
 
     char *as;			/* word list memory */
-    int ac;
-    char **av = brk_string(st->val, &ac, FALSE, &as);
+    size_t ac;
+    char **av = brk_string(st->val, FALSE, &ac, &as);
 
     if (mod[1] == st->endc || mod[1] == ':') {
 	/* :O sorts ascending */
-	qsort(av, (size_t)ac, sizeof(char *), str_cmp_asc);
+	qsort(av, ac, sizeof(char *), str_cmp_asc);
 
     } else if ((mod[1] == 'r' || mod[1] == 'x') &&
 	       (mod[2] == st->endc || mod[2] == ':')) {
@@ -2703,7 +2703,7 @@ ApplyModifier_Order(const char **pp, App
 
 	if (mod[1] == 'r') {
 	    /* :Or sorts descending */
-	    qsort(av, (size_t)ac, sizeof(char *), str_cmp_desc);
+	    qsort(av, ac, sizeof(char *), str_cmp_desc);
 
 	} else {
 	    /* :Ox shuffles
@@ -2713,9 +2713,9 @@ ApplyModifier_Order(const char **pp, App
 	     * reasonable value for mod factor is 2 (the mod 1 will produce
 	     * 0 with probability 1).
 	     */
-	    int i;
+	    size_t i;
 	    for (i = ac - 1; i > 0; i--) {
-		long rndidx = random() % (i + 1);
+		size_t rndidx = (size_t)random() % (i + 1);
 		char *t = av[i];
 		av[i] = av[rndidx];
 		av[rndidx] = t;

Reply via email to