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;