diff --git a/src/ar.c b/src/ar.c
index f8dfb56b..bddb05eb 100644
--- a/src/ar.c
+++ b/src/ar.c
@@ -186,7 +186,7 @@ struct ar_glob_state
#ifdef VMS
char *suffix;
#endif
- unsigned int size;
+ size_t size;
struct nameseq *chain;
unsigned int n;
};
@@ -258,7 +258,7 @@ ar_glob_pattern_p (const char *pattern, int quote)
Return a malloc'd chain of matching elements (or nil if none). */
struct nameseq *
-ar_glob (const char *arname, const char *member_pattern, unsigned int size)
+ar_glob (const char *arname, const char *member_pattern, size_t size)
{
struct ar_glob_state state;
struct nameseq *n;
diff --git a/src/commands.c b/src/commands.c
index afa24fc1..fbf5714f 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -72,7 +72,7 @@ set_file_variables (struct file *file)
if (ar_name (file->name))
{
- unsigned int len;
+ size_t len;
const char *cp;
char *p;
@@ -101,7 +101,7 @@ set_file_variables (struct file *file)
any suffix in the .SUFFIXES list stripped off for
explicit rules. We store this in the 'stem' member. */
const char *name;
- unsigned int len;
+ size_t len;
#ifndef NO_ARCHIVES
if (ar_name (file->name))
@@ -118,7 +118,7 @@ set_file_variables (struct file *file)
for (d = enter_file (strcache_add (".SUFFIXES"))->deps; d ; d = d->next)
{
- unsigned int slen = strlen (dep_name (d));
+ size_t slen = strlen (dep_name (d));
if (len > slen && strneq (dep_name (d), name + (len - slen), slen))
{
file->stem = strcache_add_len (name, len - slen);
@@ -159,14 +159,14 @@ set_file_variables (struct file *file)
{
static char *plus_value=0, *bar_value=0, *qmark_value=0;
- static unsigned int plus_max=0, bar_max=0, qmark_max=0;
+ static size_t plus_max=0, bar_max=0, qmark_max=0;
- unsigned int qmark_len, plus_len, bar_len;
+ size_t qmark_len, plus_len, bar_len;
char *cp;
char *caret_value;
char *qp;
char *bp;
- unsigned int len;
+ size_t len;
struct hash_table dep_hash;
void **slot;
@@ -326,7 +326,8 @@ set_file_variables (struct file *file)
void
chop_commands (struct commands *cmds)
{
- unsigned int nlines, idx;
+ unsigned int nlines;
+ unsigned short idx;
char **lines;
/* If we don't have any commands,
@@ -339,7 +340,7 @@ chop_commands (struct commands *cmds)
if (one_shell)
{
- int l = strlen (cmds->commands);
+ size_t l = strlen (cmds->commands);
nlines = 1;
lines = xmalloc (nlines * sizeof (char *));
@@ -382,7 +383,7 @@ chop_commands (struct commands *cmds)
nlines += 2;
lines = xrealloc (lines, nlines * sizeof (char *));
}
- lines[idx++] = xstrndup (p, end - p);
+ lines[idx++] = xstrndup (p, (size_t) (end - p));
p = end;
if (*p != '\0')
++p;
@@ -401,7 +402,7 @@ chop_commands (struct commands *cmds)
if (nlines > USHRT_MAX)
ON (fatal, &cmds->fileinfo, _("Recipe has too many lines (%ud)"), nlines);
- cmds->ncommand_lines = nlines;
+ cmds->ncommand_lines = (unsigned short)nlines;
cmds->command_lines = lines;
cmds->any_recurse = 0;
diff --git a/src/dep.h b/src/dep.h
index df452a95..fd9a6ecc 100644
--- a/src/dep.h
+++ b/src/dep.h
@@ -62,7 +62,7 @@ struct dep
struct goaldep
{
DEP (struct goaldep);
- unsigned short error;
+ int error;
floc floc;
};
@@ -83,14 +83,14 @@ struct goaldep
#ifdef VMS
void *parse_file_seq ();
#else
-void *parse_file_seq (char **stringp, unsigned int size,
+void *parse_file_seq (char **stringp, size_t size,
int stopmap, const char *prefix, int flags);
#endif
char *tilde_expand (const char *name);
#ifndef NO_ARCHIVES
-struct nameseq *ar_glob (const char *arname, const char *member_pattern, unsigned int size);
+struct nameseq *ar_glob (const char *arname, const char *member_pattern, size_t size);
#endif
#define dep_name(d) ((d)->name ? (d)->name : (d)->file->name)
diff --git a/src/dir.c b/src/dir.c
index d53342d9..0e641138 100644
--- a/src/dir.c
+++ b/src/dir.c
@@ -426,7 +426,7 @@ dirfile_hash_cmp (const void *xv, const void *yv)
{
const struct dirfile *x = xv;
const struct dirfile *y = yv;
- int result = x->length - y->length;
+ int result = (int) (x->length - y->length);
if (result)
return result;
return_ISTRING_COMPARE (x->name, y->name);
@@ -687,7 +687,7 @@ dir_contents_file_exists_p (struct directory_contents *dir,
while (1)
{
/* Enter the file in the hash table. */
- unsigned int len;
+ size_t len;
struct dirfile dirfile_key;
struct dirfile **dirfile_slot;
@@ -1208,7 +1208,7 @@ static struct dirent *
read_dirstream (__ptr_t stream)
{
static char *buf;
- static unsigned int bufsz;
+ static size_t bufsz;
struct dirstream *const ds = (struct dirstream *) stream;
struct directory_contents *dc = ds->contents;
@@ -1221,8 +1221,8 @@ read_dirstream (__ptr_t stream)
{
/* The glob interface wants a 'struct dirent', so mock one up. */
struct dirent *d;
- unsigned int len = df->length + 1;
- unsigned int sz = sizeof (*d) - sizeof (d->d_name) + len;
+ size_t len = df->length + 1;
+ size_t sz = sizeof (*d) - sizeof (d->d_name) + len;
if (sz > bufsz)
{
bufsz *= 2;
diff --git a/src/expand.c b/src/expand.c
index c6f2d029..7d54d1a5 100644
--- a/src/expand.c
+++ b/src/expand.c
@@ -42,7 +42,7 @@ const floc **expanding_var = &reading_file;
#define VARIABLE_BUFFER_ZONE 5
-static unsigned int variable_buffer_length;
+static size_t variable_buffer_length;
char *variable_buffer;
/* Subroutine of variable_expand and friends:
@@ -53,13 +53,13 @@ char *variable_buffer;
the following call. */
char *
-variable_buffer_output (char *ptr, const char *string, unsigned int length)
+variable_buffer_output (char *ptr, const char *string, size_t length)
{
- unsigned int newlen = length + (ptr - variable_buffer);
+ size_t newlen = length + (ptr - variable_buffer);
if ((newlen + VARIABLE_BUFFER_ZONE) > variable_buffer_length)
{
- unsigned int offset = ptr - variable_buffer;
+ size_t offset = ptr - variable_buffer;
variable_buffer_length = (newlen + 100 > 2 * variable_buffer_length
? newlen + 100
: 2 * variable_buffer_length);
@@ -157,7 +157,7 @@ recursively_expand_for_file (struct variable *v, struct file *file)
__inline
#endif
static char *
-reference_variable (char *o, const char *name, unsigned int length)
+reference_variable (char *o, const char *name, size_t length)
{
struct variable *v;
char *value;
@@ -191,13 +191,13 @@ reference_variable (char *o, const char *name, unsigned int length)
NULL.
*/
char *
-variable_expand_string (char *line, const char *string, long length)
+variable_expand_string (char *line, const char *string, size_t length)
{
struct variable *v;
const char *p, *p1;
char *save;
char *o;
- unsigned int line_offset;
+ size_t line_offset;
if (!line)
line = initialize_variable_output ();
@@ -213,7 +213,7 @@ variable_expand_string (char *line, const char *string, long length)
/* We need a copy of STRING: due to eval, it's possible that it will get
freed as we process it (it might be the value of a variable that's reset
for example). Also having a nil-terminated string is handy. */
- save = length < 0 ? xstrdup (string) : xstrndup (string, length);
+ save = length == SIZE_MAX ? xstrdup (string) : xstrndup (string, length);
p = save;
while (1)
@@ -224,7 +224,7 @@ variable_expand_string (char *line, const char *string, long length)
p1 = strchr (p, '$');
- o = variable_buffer_output (o, p, p1 != 0 ? (unsigned int)(p1 - p) : strlen (p) + 1);
+ o = variable_buffer_output (o, p, p1 != 0 ? (size_t) (p1 - p) : strlen (p) + 1);
if (p1 == 0)
break;
@@ -414,7 +414,7 @@ variable_expand_string (char *line, const char *string, long length)
char *
variable_expand (const char *line)
{
- return variable_expand_string (NULL, line, (long)-1);
+ return variable_expand_string (NULL, line, SIZE_MAX);
}
/* Expand an argument for an expansion function.
@@ -485,7 +485,7 @@ variable_expand_for_file (const char *line, struct file *file)
any upper variable sets. Then expand the resulting value. */
static char *
-variable_append (const char *name, unsigned int length,
+variable_append (const char *name, size_t length,
const struct variable_set_list *set, int local)
{
const struct variable *v;
@@ -535,7 +535,7 @@ allocated_variable_append (const struct variable *v)
/* Construct the appended variable value. */
char *obuf = variable_buffer;
- unsigned int olen = variable_buffer_length;
+ size_t olen = variable_buffer_length;
variable_buffer = 0;
@@ -559,7 +559,7 @@ allocated_variable_expand_for_file (const char *line, struct file *file)
char *value;
char *obuf = variable_buffer;
- unsigned int olen = variable_buffer_length;
+ size_t olen = variable_buffer_length;
variable_buffer = 0;
@@ -575,7 +575,7 @@ allocated_variable_expand_for_file (const char *line, struct file *file)
safe-keeping. */
void
-install_variable_buffer (char **bufp, unsigned int *lenp)
+install_variable_buffer (char **bufp, size_t *lenp)
{
*bufp = variable_buffer;
*lenp = variable_buffer_length;
@@ -588,7 +588,7 @@ install_variable_buffer (char **bufp, unsigned int *lenp)
*/
void
-restore_variable_buffer (char *buf, unsigned int len)
+restore_variable_buffer (char *buf, size_t len)
{
free (variable_buffer);
diff --git a/src/file.c b/src/file.c
index 9e3208cc..4835e4f8 100644
--- a/src/file.c
+++ b/src/file.c
@@ -492,7 +492,7 @@ enter_prereqs (struct dep *deps, const char *stem)
while (dp != 0)
{
char *percent;
- int nl = strlen (dp->name) + 1;
+ size_t nl = strlen (dp->name) + 1;
char *nm = alloca (nl);
memcpy (nm, dp->name, nl);
percent = find_percent (nm);
@@ -1100,8 +1100,8 @@ build_target_list (char *value)
if (files.ht_fill != last_targ_count)
{
- unsigned long max = EXPANSION_INCREMENT (strlen (value));
- unsigned long len;
+ size_t max = EXPANSION_INCREMENT (strlen (value));
+ size_t len;
char *p;
struct file **fp = (struct file **) files.ht_vec;
struct file **end = &fp[files.ht_size];
@@ -1115,12 +1115,12 @@ build_target_list (char *value)
if (!HASH_VACANT (*fp) && (*fp)->is_target)
{
struct file *f = *fp;
- int l = strlen (f->name);
+ size_t l = strlen (f->name);
len += l + 1;
if (len > max)
{
- unsigned long off = p - value;
+ size_t off = p - value;
max += EXPANSION_INCREMENT (l + 1);
value = xrealloc (value, max);
diff --git a/src/function.c b/src/function.c
index 3d97998e..2b3a5386 100644
--- a/src/function.c
+++ b/src/function.c
@@ -78,7 +78,7 @@ static struct hash_table function_table;
char *
subst_expand (char *o, const char *text, const char *subst, const char *replace,
- unsigned int slen, unsigned int rlen, int by_word)
+ size_t slen, size_t rlen, int by_word)
{
const char *t = text;
const char *p;
@@ -148,10 +148,10 @@ patsubst_expand_pat (char *o, const char *text,
const char *pattern, const char *replace,
const char *pattern_percent, const char *replace_percent)
{
- unsigned int pattern_prepercent_len, pattern_postpercent_len;
- unsigned int replace_prepercent_len, replace_postpercent_len;
+ size_t pattern_prepercent_len, pattern_postpercent_len;
+ size_t replace_prepercent_len, replace_postpercent_len;
const char *t;
- unsigned int len;
+ size_t len;
int doneany = 0;
/* Record the length of REPLACE before and after the % so we don't have to
@@ -280,7 +280,7 @@ lookup_function (const char *s)
return NULL;
function_table_entry_key.name = s;
- function_table_entry_key.len = e - s;
+ function_table_entry_key.len = (unsigned char) (e - s);
return hash_find_item (&function_table, &function_table_entry_key);
}
@@ -291,11 +291,11 @@ lookup_function (const char *s)
int
pattern_matches (const char *pattern, const char *percent, const char *str)
{
- unsigned int sfxlen, strlength;
+ size_t sfxlen, strlength;
if (percent == 0)
{
- unsigned int len = strlen (pattern) + 1;
+ size_t len = strlen (pattern) + 1;
char *new_chars = alloca (len);
memcpy (new_chars, pattern, len);
percent = find_percent (new_chars);
@@ -357,9 +357,9 @@ static char *
string_glob (char *line)
{
static char *result = 0;
- static unsigned int length;
+ static size_t length;
struct nameseq *chain;
- unsigned int idx;
+ size_t idx;
chain = PARSE_FILE_SEQ (&line, struct nameseq, MAP_NUL, NULL,
/* We do not want parse_file_seq to strip './'s.
@@ -377,7 +377,7 @@ string_glob (char *line)
while (chain != 0)
{
struct nameseq *next = chain->next;
- unsigned int len = strlen (chain->name);
+ size_t len = strlen (chain->name);
if (idx + len + 1 > length)
{
@@ -430,7 +430,7 @@ func_join (char *o, char **argv, const char *funcname UNUSED)
const char *list2_iterator = argv[1];
do
{
- unsigned int len1, len2;
+ size_t len1, len2;
tp = find_next_token (&list1_iterator, &len1);
if (tp != 0)
@@ -519,7 +519,7 @@ func_notdir_suffix (char *o, char **argv, const char *funcname)
const char *list_iterator = argv[0];
const char *p2;
int doneany =0;
- unsigned int len=0;
+ size_t len=0;
int is_suffix = funcname[0] == 's';
int is_notdir = !is_suffix;
@@ -595,7 +595,7 @@ func_basename_dir (char *o, char **argv, const char *funcname)
const char *p3 = argv[0];
const char *p2;
int doneany = 0;
- unsigned int len = 0;
+ size_t len = 0;
int is_basename = funcname[0] == 'b';
int is_dir = !is_basename;
@@ -668,14 +668,14 @@ func_basename_dir (char *o, char **argv, const char *funcname)
static char *
func_addsuffix_addprefix (char *o, char **argv, const char *funcname)
{
- int fixlen = strlen (argv[0]);
+ size_t fixlen = strlen (argv[0]);
const char *list_iterator = argv[1];
int is_addprefix = funcname[3] == 'p';
int is_addsuffix = !is_addprefix;
int doneany = 0;
const char *p;
- unsigned int len;
+ size_t len;
while ((p = find_next_token (&list_iterator, &len)) != 0)
{
@@ -708,7 +708,7 @@ func_subst (char *o, char **argv, const char *funcname UNUSED)
static char *
func_firstword (char *o, char **argv, const char *funcname UNUSED)
{
- unsigned int i;
+ size_t i;
const char *words = argv[0]; /* Use a temp variable for find_next_token */
const char *p = find_next_token (&words, &i);
@@ -721,12 +721,12 @@ func_firstword (char *o, char **argv, const char *funcname UNUSED)
static char *
func_lastword (char *o, char **argv, const char *funcname UNUSED)
{
- unsigned int i;
+ size_t i;
const char *words = argv[0]; /* Use a temp variable for find_next_token */
const char *p = NULL;
const char *t;
- while ((t = find_next_token (&words, &i)))
+ while ((t = find_next_token (&words, &i)) != NULL)
p = t;
if (p != 0)
@@ -871,7 +871,7 @@ func_foreach (char *o, char **argv, const char *funcname UNUSED)
int doneany = 0;
const char *list_iterator = list;
const char *p;
- unsigned int len;
+ size_t len;
struct variable *var;
/* Clean up the variable name by removing whitespace. */
@@ -913,7 +913,7 @@ struct a_word
struct a_word *next;
struct a_word *chain;
char *str;
- int length;
+ size_t length;
int matched;
};
@@ -932,7 +932,7 @@ a_word_hash_2 (const void *key)
static int
a_word_hash_cmp (const void *x, const void *y)
{
- int result = ((struct a_word const *) x)->length - ((struct a_word const *) y)->length;
+ int result = (int) ((struct a_word const *) x)->length - ((struct a_word const *) y)->length;
if (result)
return result;
return_STRING_COMPARE (((struct a_word const *) x)->str,
@@ -944,7 +944,7 @@ struct a_pattern
struct a_pattern *next;
char *str;
char *percent;
- int length;
+ size_t length;
};
static char *
@@ -965,7 +965,7 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
int words = 0;
int hashing = 0;
char *p;
- unsigned int len;
+ size_t len;
/* Chop ARGV[0] up into patterns to match against the words.
We don't need to preserve it because our caller frees all the
@@ -1115,7 +1115,7 @@ func_error (char *o, char **argv, const char *funcname)
{
char **argvp;
char *msg, *p;
- int len;
+ size_t len;
/* The arguments will be broken on commas. Rather than create yet
another special case where function arguments aren't broken up,
@@ -1168,7 +1168,7 @@ func_sort (char *o, char **argv, const char *funcname UNUSED)
char **words;
int wordi;
char *p;
- unsigned int len;
+ size_t len;
/* Find the maximum number of words we'll have. */
t = argv[0];
@@ -1292,7 +1292,7 @@ func_or (char *o, char **argv, const char *funcname UNUSED)
const char *begp = *argv;
const char *endp = begp + strlen (*argv) - 1;
char *expansion;
- int result = 0;
+ size_t result = 0;
/* Find the result of the condition: if it's false keep going. */
@@ -1343,7 +1343,7 @@ func_and (char *o, char **argv, const char *funcname UNUSED)
{
const char *begp = *argv;
const char *endp = begp + strlen (*argv) - 1;
- int result;
+ size_t result;
/* An empty condition is always false. */
strip_whitespace (&begp, &endp);
@@ -1398,7 +1398,7 @@ static char *
func_eval (char *o, char **argv, const char *funcname UNUSED)
{
char *buf;
- unsigned int len;
+ size_t len;
/* Eval the buffer. Pop the current variable buffer setting so that the
eval'd code can use its own without conflicting. */
@@ -1430,7 +1430,7 @@ func_value (char *o, char **argv, const char *funcname UNUSED)
\r is replaced on UNIX as well. Is this desirable?
*/
static void
-fold_newlines (char *buffer, unsigned int *length, int trim_newlines)
+fold_newlines (char *buffer, size_t *length, int trim_newlines)
{
char *dst = buffer;
char *src = buffer;
@@ -1806,7 +1806,7 @@ func_shell_base (char *o, char **argv, int trim_newlines)
{
char *buffer;
- unsigned int maxlen, i;
+ size_t maxlen, i;
int cc;
/* Record the PID for reap_children. */
@@ -1916,11 +1916,11 @@ func_shell_base (char *o, char **argv, int trim_newlines)
BPTR child_stdout;
char tmp_output[FILENAME_MAX];
- unsigned int maxlen = 200, i;
+ size_t maxlen = 200, i;
int cc;
char * buffer, * ptr;
char ** aptr;
- int len = 0;
+ size_t len = 0;
char* batch_filename = NULL;
/* Construct the argument list. */
@@ -2104,7 +2104,7 @@ abspath (const char *name, char *apath)
for (start = end = name; *start != '\0'; start = end)
{
- unsigned long len;
+ size_t len;
/* Skip sequence of multiple path-separators. */
while (STOP_SET (*start, MAP_DIRSEP))
@@ -2158,7 +2158,7 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED)
const char *p = argv[0];
const char *path = 0;
int doneany = 0;
- unsigned int len = 0;
+ size_t len = 0;
while ((path = find_next_token (&p, &len)) != 0)
{
@@ -2227,7 +2227,7 @@ func_file (char *o, char **argv, const char *funcname UNUSED)
if (argv[1])
{
- int l = strlen (argv[1]);
+ size_t l = strlen (argv[1]);
int nl = l == 0 || argv[1][l-1] != '\n';
if (fputs (argv[1], fp) == EOF || (nl && fputc ('\n', fp) == EOF))
@@ -2291,7 +2291,7 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED)
const char *p = argv[0];
const char *path = 0;
int doneany = 0;
- unsigned int len = 0;
+ size_t len = 0;
while ((path = find_next_token (&p, &len)) != 0)
{
@@ -2498,7 +2498,7 @@ handle_function (char **op, const char **stringp)
++nargs;
if (nargs == entry_p->maximum_args
- || (! (next = find_next_argument (openparen, closeparen, p, end))))
+ || ((next = find_next_argument (openparen, closeparen, p, end)) == NULL))
next = end;
*argvp = expand_argument (p, next);
@@ -2507,7 +2507,7 @@ handle_function (char **op, const char **stringp)
}
else
{
- int len = end - beg;
+ size_t len = end - beg;
char *p, *aend;
abeg = xmalloc (len+1);
@@ -2522,7 +2522,7 @@ handle_function (char **op, const char **stringp)
++nargs;
if (nargs == entry_p->maximum_args
- || (! (next = find_next_argument (openparen, closeparen, p, aend))))
+ || ((next = find_next_argument (openparen, closeparen, p, aend)) == NULL))
next = aend;
*argvp = p;
@@ -2556,7 +2556,7 @@ func_call (char *o, char **argv, const char *funcname UNUSED)
static int max_args = 0;
char *fname;
char *body;
- int flen;
+ size_t flen;
int i;
int saved_args;
const struct function_table_entry *entry_p;
@@ -2670,9 +2670,9 @@ define_new_function (const floc *flocp, const char *name,
ent = xmalloc (sizeof (struct function_table_entry));
ent->name = name;
- ent->len = len;
- ent->minimum_args = min;
- ent->maximum_args = max;
+ ent->len = (unsigned char) len;
+ ent->minimum_args = (unsigned char) min;
+ ent->maximum_args = (unsigned char) max;
ent->expand_args = ANY_SET(flags, GMK_FUNC_NOEXPAND) ? 0 : 1;
ent->alloc_fn = 1;
ent->fptr.alloc_func_ptr = func;
diff --git a/src/hash.c b/src/hash.c
index c138aaf6..d04f2bc0 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -17,7 +17,7 @@ this program. If not, see . */
#include "makeint.h"
#include "hash.h"
-#define CALLOC(t, n) ((t *) xcalloc (sizeof (t) * (n)))
+#define CALLOC(t, n) ((t *) xcalloc (sizeof (t) * (n)))
#define MALLOC(t, n) ((t *) xmalloc (sizeof (t) * (n)))
#define REALLOC(o, t, n) ((t *) xrealloc ((o), sizeof (t) * (n)))
#define CLONE(o, t, n) ((t *) memcpy (MALLOC (t, (n)), (o), sizeof (t) * (n)))
@@ -473,5 +473,5 @@ unsigned jhash_string(unsigned const char *k)
}
jhash_final(a, b, c);
- return c + (k - start);
+ return c + (unsigned) (k - start);
}
diff --git a/src/implicit.c b/src/implicit.c
index e08e3a3b..97b50cb4 100644
--- a/src/implicit.c
+++ b/src/implicit.c
@@ -66,7 +66,7 @@ try_implicit_rule (struct file *file, unsigned int depth)
length of the word. */
static const char *
-get_next_word (const char *buffer, unsigned int *length)
+get_next_word (const char *buffer, size_t *length)
{
const char *p = buffer, *beg;
char c;
@@ -161,12 +161,12 @@ struct tryrule
{
struct rule *rule;
+ /* Stem length for this match. */
+ size_t stemlen;
+
/* Index of the target in this rule that matched the file. */
unsigned int matches;
- /* Stem length for this match. */
- unsigned int stemlen;
-
/* Definition order of this rule. Used to implement stable sort.*/
unsigned int order;
@@ -179,8 +179,8 @@ stemlen_compare (const void *v1, const void *v2)
{
const struct tryrule *r1 = v1;
const struct tryrule *r2 = v2;
- int r = r1->stemlen - r2->stemlen;
- return r != 0 ? r : (int)(r1->order - r2->order);
+ int r = (int) (r1->stemlen - r2->stemlen);
+ return r != 0 ? r : (int) (r1->order - r2->order);
}
/* Search the pattern rules for a rule with an existing dependency to make
@@ -205,7 +205,7 @@ pattern_search (struct file *file, int archive,
const char *filename = archive ? strchr (file->name, '(') : file->name;
/* Length of FILENAME. */
- unsigned int namelen = strlen (filename);
+ size_t namelen = strlen (filename);
/* The last slash in FILENAME (or nil if there is none). */
const char *lastslash;
@@ -225,8 +225,8 @@ pattern_search (struct file *file, int archive,
/* The start and length of the stem of FILENAME for the current rule. */
const char *stem = 0;
- unsigned int stemlen = 0;
- unsigned int fullstemlen = 0;
+ size_t stemlen = 0;
+ size_t fullstemlen = 0;
/* Buffer in which we store all the rules that are possibly applicable. */
struct tryrule *tryrules = xmalloc (num_pattern_rules * max_pattern_targets
@@ -252,7 +252,7 @@ pattern_search (struct file *file, int archive,
struct rule *rule;
char *pathdir = NULL;
- unsigned long pathlen;
+ size_t pathlen;
PATH_VAR (stem_str); /* @@ Need to get rid of stem, stemlen, etc. */
@@ -573,7 +573,7 @@ pattern_search (struct file *file, int archive,
else
{
int add_dir = 0;
- unsigned int len;
+ size_t len;
struct dep **dptr;
nptr = get_next_word (nptr, &len);
@@ -607,7 +607,7 @@ pattern_search (struct file *file, int archive,
}
else
{
- unsigned int i = p - nptr;
+ size_t i = p - nptr;
memcpy (depname, nptr, i);
memcpy (depname + i, "$*", 2);
memcpy (depname + i + 2, p + 1, len - i - 1);
@@ -672,7 +672,7 @@ pattern_search (struct file *file, int archive,
if (deps_found > max_deps)
{
- unsigned int l = pat - deplist;
+ size_t l = pat - deplist;
/* This might have changed due to recursion. */
max_pattern_deps = MAX(max_pattern_deps, deps_found);
max_deps = max_pattern_deps;
@@ -931,7 +931,7 @@ pattern_search (struct file *file, int archive,
}
else
{
- int dirlen = (lastslash + 1) - filename;
+ size_t dirlen = (lastslash + 1) - filename;
char *sp;
/* We want to prepend the directory from
diff --git a/src/job.c b/src/job.c
index 06227f98..88539e8d 100644
--- a/src/job.c
+++ b/src/job.c
@@ -29,10 +29,10 @@ this program. If not, see . */
/* Default shell to use. */
#ifdef WINDOWS32
-#ifdef HAVE_STRINGS_H
-#include /* for strcasecmp, strncasecmp */
-#endif
-#include
+# ifdef HAVE_STRINGS_H
+# include /* for strcasecmp, strncasecmp */
+# endif
+# include
const char *default_shell = "sh.exe";
int no_default_sh_exe = 1;
@@ -281,7 +281,7 @@ create_batch_file (char const *base, int unixy, int *fd)
launches the next one. */
static unsigned uniq = 0;
static int second_loop = 0;
- const unsigned sizemax = strlen (base) + strlen (ext) + 10;
+ const size_t sizemax = strlen (base) + strlen (ext) + 10;
if (path_size == 0)
{
@@ -451,7 +451,7 @@ is_bourne_compatible_shell (const char *path)
for (s = unix_shells; *s != NULL; ++s)
{
#if defined(WINDOWS32) || defined(__MSDOS__)
- unsigned int len = strlen (*s);
+ size_t len = strlen (*s);
if ((strlen (name) >= len && STOP_SET (name[len], MAP_DOT|MAP_NUL))
&& strncasecmp (name, *s, len) == 0)
#else
@@ -2637,7 +2637,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^~!";
# endif /* HAVE_DOS_PATHS */
#endif
- int i;
+ size_t i;
char *p;
#ifndef NDEBUG
char *end;
@@ -3049,9 +3049,9 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
argument list. */
char *new_line;
- unsigned int shell_len = strlen (shell);
- unsigned int line_len = strlen (line);
- unsigned int sflags_len = shellflags ? strlen (shellflags) : 0;
+ size_t shell_len = strlen (shell);
+ size_t line_len = strlen (line);
+ size_t sflags_len = shellflags ? strlen (shellflags) : 0;
#ifdef WINDOWS32
char *command_ptr = NULL; /* used for batch_mode_shell mode */
#endif
@@ -3208,7 +3208,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
{
const char *s = shellflags;
char *t;
- unsigned int len;
+ size_t len;
while ((t = find_next_token (&s, &len)) != 0)
new_argv[n++] = xstrndup (t, len);
}
diff --git a/src/load.c b/src/load.c
index 51a26acd..ecf66cba 100644
--- a/src/load.c
+++ b/src/load.c
@@ -121,7 +121,7 @@ load_object (const floc *flocp, int noerror, const char *ldname,
int
load_file (const floc *flocp, const char **ldname, int noerror)
{
- int nmlen = strlen (*ldname);
+ size_t nmlen = strlen (*ldname);
char *new = alloca (nmlen + CSTRLEN (SYMBOL_EXTENSION) + 1);
char *symname = NULL;
char *loaded;
@@ -142,7 +142,7 @@ load_file (const floc *flocp, const char **ldname, int noerror)
ep = strchr (fp+1, ')');
if (ep && ep[1] == '\0')
{
- int l = fp - *ldname;;
+ size_t l = fp - *ldname;;
++fp;
if (fp == ep)
diff --git a/src/loadapi.c b/src/loadapi.c
index df7b6dfa..b43322db 100644
--- a/src/loadapi.c
+++ b/src/loadapi.c
@@ -41,7 +41,7 @@ gmk_eval (const char *buffer, const gmk_floc *gfloc)
{
/* Preserve existing variable buffer context. */
char *pbuf;
- unsigned int plen;
+ size_t plen;
char *s;
floc fl;
floc *flp;
diff --git a/src/main.c b/src/main.c
index bc900153..31b7eac5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -105,7 +105,7 @@ static void clean_jobserver (int status);
static void print_data_base (void);
static void print_version (void);
static void decode_switches (int argc, const char **argv, int env);
-static void decode_env_switches (const char *envar, unsigned int len);
+static void decode_env_switches (const char *envar, size_t len);
static struct variable *define_makeflags (int all, int makefile);
static char *quote_for_env (char *out, const char *in);
static void initialize_global_hash_tables (void);
@@ -1355,7 +1355,7 @@ main (int argc, char **argv, char **envp)
const char *ep = envp[i];
/* By default, export all variables culled from the environment. */
enum variable_export export = v_export;
- unsigned int len;
+ size_t len;
while (! STOP_SET (*ep, MAP_EQUALS))
++ep;
@@ -1648,7 +1648,7 @@ main (int argc, char **argv, char **envp)
{
struct command_variable *cv;
struct variable *v;
- unsigned int len = 0;
+ size_t len = 0;
char *value, *p;
/* Figure out how much space will be taken up by the command-line
@@ -1828,7 +1828,7 @@ main (int argc, char **argv, char **envp)
while (!feof (stdin) && ! ferror (stdin))
{
char buf[2048];
- unsigned int n = fread (buf, 1, sizeof (buf), stdin);
+ size_t n = fread (buf, 1, sizeof (buf), stdin);
if (n > 0 && fwrite (buf, 1, n, outfile) != n)
pfatal_with_name (_("fwrite (temporary file)"));
}
@@ -1925,7 +1925,7 @@ main (int argc, char **argv, char **envp)
{
char *p, *value;
unsigned int i;
- unsigned int len = (CSTRLEN ("--eval=") + 1) * eval_strings->idx;
+ size_t len = (CSTRLEN ("--eval=") + 1) * eval_strings->idx;
for (i = 0; i < eval_strings->idx; ++i)
{
@@ -2646,7 +2646,7 @@ init_switches (void)
long_options[i].flag = 0;
long_options[i].val = switches[i].c;
if (short_option (switches[i].c))
- *p++ = switches[i].c;
+ *p++ = (char) switches[i].c;
switch (switches[i].type)
{
case flag:
@@ -2769,7 +2769,7 @@ handle_non_switch_argument (const char *arg, int env)
else
{
/* Paste the old and new values together */
- unsigned int oldlen, newlen;
+ size_t oldlen, newlen;
char *vp;
oldlen = strlen (gv->value);
@@ -2890,7 +2890,7 @@ decode_switches (int argc, const char **argv, int env)
const char *op = opt;
if (short_option (cs->c))
- opt[0] = cs->c;
+ opt[0] = (char) cs->c;
else
op = cs->long_name;
@@ -3013,7 +3013,7 @@ decode_switches (int argc, const char **argv, int env)
decode_switches. */
static void
-decode_env_switches (const char *envar, unsigned int len)
+decode_env_switches (const char *envar, size_t len)
{
char *varref = alloca (2 + len + 2);
char *value, *p, *buf;
@@ -3125,7 +3125,7 @@ define_makeflags (int all, int makefile)
};
struct flag *flags = 0;
struct flag *last = 0;
- unsigned int flagslen = 0;
+ size_t flagslen = 0;
#define ADD_FLAG(ARG, LEN) \
do { \
struct flag *new = alloca (sizeof (struct flag)); \
@@ -3247,7 +3247,7 @@ define_makeflags (int all, int makefile)
/* Add simple options as a group. */
while (flags != 0 && !flags->arg && short_option (flags->cs->c))
{
- *p++ = flags->cs->c;
+ *p++ = (char) flags->cs->c;
flags = flags->next;
}
@@ -3259,7 +3259,7 @@ define_makeflags (int all, int makefile)
/* Add the flag letter or name to the string. */
if (short_option (flags->cs->c))
- *p++ = flags->cs->c;
+ *p++ = (char) flags->cs->c;
else
{
/* Long options require a double-dash. */
diff --git a/src/makeint.h b/src/makeint.h
index c5905a4a..fab20faa 100644
--- a/src/makeint.h
+++ b/src/makeint.h
@@ -514,12 +514,12 @@ void die (int) __attribute__ ((noreturn));
void pfatal_with_name (const char *) __attribute__ ((noreturn));
void perror_with_name (const char *, const char *);
#define xstrlen(_s) ((_s)==NULL ? 0 : strlen (_s))
-void *xmalloc (unsigned int);
-void *xcalloc (unsigned int);
-void *xrealloc (void *, unsigned int);
+void *xmalloc (size_t);
+void *xcalloc (size_t);
+void *xrealloc (void *, size_t);
char *xstrdup (const char *);
-char *xstrndup (const char *, unsigned int);
-char *find_next_token (const char **, unsigned int *);
+char *xstrndup (const char *, size_t);
+char *find_next_token (const char **, size_t *);
char *next_token (const char *);
char *end_of_token (const char *);
void collapse_continuations (char *);
@@ -568,7 +568,7 @@ void build_vpath_lists (void);
void construct_vpath_list (char *pattern, char *dirpath);
const char *vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr,
unsigned int* vpath_index, unsigned int* path_index);
-int gpath_search (const char *file, unsigned int len);
+int gpath_search (const char *file, size_t len);
void construct_include_path (const char **arg_dirs);
@@ -585,7 +585,7 @@ void strcache_init (void);
void strcache_print_stats (const char *prefix);
int strcache_iscached (const char *str);
const char *strcache_add (const char *str);
-const char *strcache_add_len (const char *str, unsigned int len);
+const char *strcache_add_len (const char *str, size_t len);
/* Guile support */
int guile_gmake_setup (const floc *flocp);
@@ -711,7 +711,7 @@ int start_remote_job (char **, char **, int, int *, int *, int *);
int remote_status (int *, int *, int *, int);
void block_remote_children (void);
void unblock_remote_children (void);
-int remote_kill (int id, int sig);
+int remote_kill (pid_t id, int sig);
void print_variable_data_base (void);
void print_vpath_data_base (void);
diff --git a/src/misc.c b/src/misc.c
index 53340467..f3594ad3 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -67,7 +67,7 @@ collapse_continuations (char *line)
{
char *p = q;
int i;
- int out_line_length;
+ size_t out_line_length;
if (q > line && q[-1] == '\\')
{
@@ -132,9 +132,9 @@ print_spaces (unsigned int n)
const char *
concat (unsigned int num, ...)
{
- static unsigned int rlen = 0;
+ static size_t rlen = 0;
static char *result = NULL;
- unsigned int ri = 0;
+ size_t ri = 0;
va_list args;
va_start (args, num);
@@ -142,7 +142,7 @@ concat (unsigned int num, ...)
while (num-- > 0)
{
const char *s = va_arg (args, const char *);
- unsigned int l = xstrlen (s);
+ size_t l = xstrlen (s);
if (l == 0)
continue;
@@ -203,7 +203,7 @@ strerror (int errnum)
#undef xstrdup
void *
-xmalloc (unsigned int size)
+xmalloc (size_t size)
{
/* Make sure we don't allocate 0, for pre-ISO implementations. */
void *result = malloc (size ? size : 1);
@@ -214,7 +214,7 @@ xmalloc (unsigned int size)
void *
-xcalloc (unsigned int size)
+xcalloc (size_t size)
{
/* Make sure we don't allocate 0, for pre-ISO implementations. */
void *result = calloc (size ? size : 1, 1);
@@ -225,7 +225,7 @@ xcalloc (unsigned int size)
void *
-xrealloc (void *ptr, unsigned int size)
+xrealloc (void *ptr, size_t size)
{
void *result;
@@ -263,7 +263,7 @@ xstrdup (const char *ptr)
#endif /* HAVE_DMALLOC_H */
char *
-xstrndup (const char *str, unsigned int length)
+xstrndup (const char *str, size_t length)
{
char *result;
@@ -321,7 +321,7 @@ next_token (const char *s)
of the token, so this function can be called repeatedly in a loop. */
char *
-find_next_token (const char **ptr, unsigned int *lengthptr)
+find_next_token (const char **ptr, size_t *lengthptr)
{
const char *p = next_token (*ptr);
diff --git a/src/output.c b/src/output.c
index b237a31e..8557de27 100644
--- a/src/output.c
+++ b/src/output.c
@@ -86,7 +86,7 @@ _outputs (struct output *out, int is_err, const char *msg)
else
{
int fd = is_err ? out->err : out->out;
- int len = strlen (msg);
+ size_t len = strlen (msg);
int r;
EINTRLOOP (r, lseek (fd, 0, SEEK_END));
output_write (fd, msg, len);
@@ -100,8 +100,8 @@ static int
log_working_directory (int entering)
{
static char *buf = NULL;
- static unsigned int len = 0;
- unsigned int need;
+ static size_t len = 0;
+ size_t need;
const char *fmt;
char *p;
diff --git a/src/read.c b/src/read.c
index dc8fbee4..6801eebd 100644
--- a/src/read.c
+++ b/src/read.c
@@ -51,7 +51,7 @@ struct ebuffer
char *buffer; /* Start of the current line in the buffer. */
char *bufnext; /* Start of the next line in the buffer. */
char *bufstart; /* Start of the entire buffer. */
- unsigned int size; /* Malloc'd size of buffer. */
+ size_t size; /* Malloc'd size of buffer. */
FILE *fp; /* File, or NULL if this is an internal buffer. */
floc floc; /* Info on the file in fp (if any). */
};
@@ -122,7 +122,7 @@ static const char **include_directories;
/* Maximum length of an element of the above. */
-static unsigned int max_incl_len;
+static size_t max_incl_len;
/* The filename and pointer to line number of the
makefile currently being read in. */
@@ -133,7 +133,7 @@ const floc *reading_file = 0;
static struct goaldep *read_files = 0;
-static struct goaldep *eval_makefile (const char *filename, int flags);
+static struct goaldep *eval_makefile (const char *filename, unsigned short flags);
static void eval (struct ebuffer *buffer, int flags);
static long readline (struct ebuffer *ebuf);
@@ -141,18 +141,18 @@ static void do_undefine (char *name, enum variable_origin origin,
struct ebuffer *ebuf);
static struct variable *do_define (char *name, enum variable_origin origin,
struct ebuffer *ebuf);
-static int conditional_line (char *line, int len, const floc *flocp);
+static int conditional_line (char *line, size_t len, const floc *flocp);
static void record_files (struct nameseq *filenames, const char *pattern,
const char *pattern_percent, char *depstr,
unsigned int cmds_started, char *commands,
- unsigned int commands_idx, int two_colon,
+ size_t commands_idx, int two_colon,
char prefix, const floc *flocp);
static void record_target_var (struct nameseq *filenames, char *defn,
enum variable_origin origin,
struct vmodifiers *vmod,
const floc *flocp);
static enum make_word_type get_next_mword (char *buffer, char *delim,
- char **startp, unsigned int *length);
+ char **startp, size_t *length);
static void remove_comments (char *line);
static char *find_map_unquote (char *string, int map);
static char *find_char_unquote (char *string, int stop);
@@ -186,7 +186,7 @@ read_all_makefiles (const char **makefiles)
{
char *value;
char *name, *p;
- unsigned int length;
+ size_t length;
{
/* Turn off --warn-undefined-variables while we expand MAKEFILES. */
@@ -314,7 +314,7 @@ restore_conditionals (struct conditionals *saved)
}
static struct goaldep *
-eval_makefile (const char *filename, int flags)
+eval_makefile (const char *filename, unsigned short flags)
{
struct goaldep *deps;
struct ebuffer ebuf;
@@ -504,12 +504,12 @@ parse_var_assignment (const char *line, struct vmodifiers *vmod)
/* Find the start of the next token. If there isn't one we're done. */
NEXT_TOKEN (line);
if (*line == '\0')
- return (char *)line;
+ return (char *) line;
p = line;
while (1)
{
- int wlen;
+ size_t wlen;
const char *p2;
struct variable v;
@@ -545,12 +545,12 @@ parse_var_assignment (const char *line, struct vmodifiers *vmod)
}
else
/* Not a variable or modifier: this is not a variable assignment. */
- return (char *)line;
+ return (char *) line;
/* It was a modifier. Try the next word. */
p = next_token (p2);
if (*p == '\0')
- return (char *)line;
+ return (char *) line;
}
/* Found a variable assignment or undefine. */
@@ -567,10 +567,10 @@ static void
eval (struct ebuffer *ebuf, int set_default)
{
char *collapsed = 0;
- unsigned int collapsed_length = 0;
- unsigned int commands_len = 200;
+ size_t collapsed_length = 0;
+ size_t commands_len = 200;
char *commands;
- unsigned int commands_idx = 0;
+ size_t commands_idx = 0;
unsigned int cmds_started, tgts_started;
int ignoring = 0, in_ignored_define = 0;
int no_targets = 0; /* Set when reading a rule without targets. */
@@ -620,9 +620,9 @@ eval (struct ebuffer *ebuf, int set_default)
while (1)
{
- unsigned int linelen;
+ size_t linelen;
char *line;
- unsigned int wlen;
+ size_t wlen;
char *p;
char *p2;
struct vmodifiers vmod;
@@ -639,20 +639,22 @@ eval (struct ebuffer *ebuf, int set_default)
line = ebuf->buffer;
/* If this is the first line, check for a UTF-8 BOM and skip it. */
- if (ebuf->floc.lineno == 1 && line[0] == (char)0xEF
- && line[1] == (char)0xBB && line[2] == (char)0xBF)
+ if (ebuf->floc.lineno == 1)
{
- line += 3;
- if (ISDB(DB_BASIC))
+ unsigned char *ul = (unsigned char *) line;
+ if (ul[0] == 0xEF && ul[1] == 0xBB && ul[2] == 0xBF)
{
- if (ebuf->floc.filenm)
- printf (_("Skipping UTF-8 BOM in makefile '%s'\n"),
- ebuf->floc.filenm);
- else
- printf (_("Skipping UTF-8 BOM in makefile buffer\n"));
+ line += 3;
+ if (ISDB(DB_BASIC))
+ {
+ if (ebuf->floc.filenm)
+ printf (_("Skipping UTF-8 BOM in makefile '%s'\n"),
+ ebuf->floc.filenm);
+ else
+ printf (_("Skipping UTF-8 BOM in makefile buffer\n"));
+ }
}
}
-
/* If this line is empty, skip it. */
if (line[0] == '\0')
continue;
@@ -803,7 +805,7 @@ eval (struct ebuffer *ebuf, int set_default)
export_all_variables = exporting;
else
{
- unsigned int l;
+ size_t l;
const char *cp;
char *ap;
@@ -830,7 +832,7 @@ eval (struct ebuffer *ebuf, int set_default)
{
const char *cp;
char *vpat;
- unsigned int l;
+ size_t l;
/* vpath ends the previous rule. */
record_waiting_files ();
@@ -895,9 +897,9 @@ eval (struct ebuffer *ebuf, int set_default)
while (files != 0)
{
struct nameseq *next = files->next;
- int flags = (RM_INCLUDED | RM_NO_TILDE
- | (noerror ? RM_DONTCARE : 0)
- | (set_default ? 0 : RM_NO_DEFAULT_GOAL));
+ unsigned short flags = (RM_INCLUDED | RM_NO_TILDE
+ | (noerror ? RM_DONTCARE : 0)
+ | (set_default ? 0 : RM_NO_DEFAULT_GOAL));
struct goaldep *d = eval_makefile (files->name, flags);
@@ -992,7 +994,7 @@ eval (struct ebuffer *ebuf, int set_default)
{
enum make_word_type wtype;
char *cmdleft, *semip, *lb_next;
- unsigned int plen = 0;
+ size_t plen = 0;
char *colonp;
const char *end, *beg; /* Helpers for whitespace stripping. */
@@ -1054,8 +1056,8 @@ eval (struct ebuffer *ebuf, int set_default)
if (cmdleft != 0)
{
- unsigned long p2_off = p2 - variable_buffer;
- unsigned long cmd_off = cmdleft - variable_buffer;
+ size_t p2_off = p2 - variable_buffer;
+ size_t cmd_off = cmdleft - variable_buffer;
char *pend = p2 + strlen (p2);
/* Append any remnants of lb, then cut the line short
@@ -1070,7 +1072,7 @@ eval (struct ebuffer *ebuf, int set_default)
entirely consistent, since we do an unconditional
expand below once we know we don't have a
target-specific variable. */
- (void)variable_expand_string (pend, lb_next, (long)-1);
+ variable_expand_string (pend, lb_next, SIZE_MAX);
lb_next += strlen (lb_next);
p2 = variable_buffer + p2_off;
cmdleft = variable_buffer + cmd_off + 1;
@@ -1150,7 +1152,7 @@ eval (struct ebuffer *ebuf, int set_default)
of the unparsed section of p2, for later. */
if (*lb_next != '\0')
{
- unsigned int l = p2 - variable_buffer;
+ size_t l = p2 - variable_buffer;
plen = strlen (p2);
variable_buffer_output (p2+plen, lb_next, strlen (lb_next)+1);
p2 = variable_buffer + l;
@@ -1163,7 +1165,7 @@ eval (struct ebuffer *ebuf, int set_default)
after it. */
if (semip)
{
- unsigned int l = p2 - variable_buffer;
+ size_t l = p2 - variable_buffer;
*(--semip) = ';';
collapse_continuations (semip);
variable_buffer_output (p2 + strlen (p2),
@@ -1190,8 +1192,8 @@ eval (struct ebuffer *ebuf, int set_default)
/* Expand the dependencies, etc. */
if (*lb_next != '\0')
{
- unsigned int l = p2 - variable_buffer;
- (void) variable_expand_string (p2 + plen, lb_next, (long)-1);
+ size_t l = p2 - variable_buffer;
+ variable_expand_string (p2 + plen, lb_next, SIZE_MAX);
p2 = variable_buffer + l;
/* Look for a semicolon in the expanded line. */
@@ -1281,7 +1283,7 @@ eval (struct ebuffer *ebuf, int set_default)
if (cmdleft != 0)
{
/* Semicolon means rest of line is a command. */
- unsigned int l = strlen (cmdleft);
+ size_t l = strlen (cmdleft);
cmds_started = fstart->lineno;
@@ -1347,7 +1349,7 @@ eval (struct ebuffer *ebuf, int set_default)
}
for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next)
{
- unsigned int l = strlen (dep_name (d2));
+ size_t l = strlen (dep_name (d2));
if (!strneq (name, dep_name (d2), l))
continue;
if (streq (name + l, dep_name (d)))
@@ -1442,9 +1444,9 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
struct variable var;
floc defstart;
int nlevels = 1;
- unsigned int length = 100;
+ size_t length = 100;
char *definition = xmalloc (length);
- unsigned int idx = 0;
+ size_t idx = 0;
char *p, *n;
defstart = ebuf->floc;
@@ -1475,7 +1477,7 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
/* Now read the value of the variable. */
while (1)
{
- unsigned int len;
+ size_t len;
char *line;
long nlines = readline (ebuf);
@@ -1556,7 +1558,7 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
1 if following text should be ignored. */
static int
-conditional_line (char *line, int len, const floc *flocp)
+conditional_line (char *line, size_t len, const floc *flocp)
{
const char *cmdname;
enum { c_ifdef, c_ifndef, c_ifeq, c_ifneq, c_else, c_endif } cmdtype;
@@ -1689,6 +1691,7 @@ conditional_line (char *line, int len, const floc *flocp)
if (cmdtype == c_ifdef || cmdtype == c_ifndef)
{
+ size_t l;
char *var;
struct variable *v;
char *p;
@@ -1699,13 +1702,13 @@ conditional_line (char *line, int len, const floc *flocp)
/* Make sure there's only one variable name to test. */
p = end_of_token (var);
- i = p - var;
+ l = p - var;
NEXT_TOKEN (p);
if (*p != '\0')
return -1;
- var[i] = '\0';
- v = lookup_variable (var, i);
+ var[l] = '\0';
+ v = lookup_variable (var, l);
conditionals->ignoring[o] =
((v != 0 && *v->value != '\0') == (cmdtype == c_ifndef));
@@ -1716,7 +1719,7 @@ conditional_line (char *line, int len, const floc *flocp)
{
/* "ifeq" or "ifneq". */
char *s1, *s2;
- unsigned int l;
+ size_t l;
char termin = *line == '(' ? ',' : *line;
if (termin != ',' && termin != '"' && termin != '\'')
@@ -1899,7 +1902,7 @@ record_target_var (struct nameseq *filenames, char *defn,
if (v->origin != o_override)
{
struct variable *gv;
- int len = strlen (v->name);
+ size_t len = strlen (v->name);
gv = lookup_variable (v->name, len);
if (gv && v != gv
@@ -1930,7 +1933,7 @@ static void
record_files (struct nameseq *filenames, const char *pattern,
const char *pattern_percent, char *depstr,
unsigned int cmds_started, char *commands,
- unsigned int commands_idx, int two_colon,
+ size_t commands_idx, int two_colon,
char prefix, const floc *flocp)
{
struct commands *cmds;
@@ -1999,7 +2002,7 @@ record_files (struct nameseq *filenames, const char *pattern,
{
struct nameseq *nextf;
const char **targets, **target_pats;
- unsigned int c;
+ unsigned short c;
if (pattern != 0)
O (fatal, flocp, _("mixed implicit and static pattern rules"));
@@ -2234,7 +2237,7 @@ record_files (struct nameseq *filenames, const char *pattern,
static char *
find_map_unquote (char *string, int stopmap)
{
- unsigned int string_len = 0;
+ size_t string_len = 0;
char *p = string;
/* Always stop on NUL. */
@@ -2316,7 +2319,7 @@ find_map_unquote (char *string, int stopmap)
static char *
find_char_unquote (char *string, int stop)
{
- unsigned int string_len = 0;
+ size_t string_len = 0;
char *p = string;
while (1)
@@ -2366,7 +2369,7 @@ unescape_char (char *string, int c)
if (*s == '\\')
{
char *e = s;
- int l;
+ size_t l;
/* We found a backslash. See if it's escaping our character. */
while (*e == '\\')
@@ -2420,7 +2423,7 @@ find_percent_cached (const char **string)
{
const char *p = *string;
char *new = 0;
- int slen = 0;
+ size_t slen = 0;
/* If the first char is a % return now. This lets us avoid extra tests
inside the loop. */
@@ -2478,7 +2481,7 @@ find_percent_cached (const char **string)
{
*string = strcache_add (*string);
if (p)
- p = *string + (p - new);
+ p = *string + (p - new);
}
/* If we didn't find a %, return NULL. Otherwise return a ptr to it. */
@@ -2562,10 +2565,10 @@ readline (struct ebuffer *ebuf)
end = p + ebuf->size;
*p = '\0';
- while (fgets (p, (int)(end - p), ebuf->fp) != 0)
+ while (fgets (p, (int) (end - p), ebuf->fp) != 0)
{
char *p2;
- unsigned long len;
+ size_t len;
int backslash;
len = strlen (p);
@@ -2626,7 +2629,7 @@ readline (struct ebuffer *ebuf)
Make sure to preserve the current offset of p. */
more_buffer:
{
- unsigned long off = p - start;
+ size_t off = p - start;
ebuf->size *= 2;
start = ebuf->buffer = ebuf->bufstart = xrealloc (start, ebuf->size);
p = start + off;
@@ -2665,7 +2668,7 @@ readline (struct ebuffer *ebuf)
in a command list, etc.) */
static enum make_word_type
-get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
+get_next_mword (char *buffer, char *delim, char **startp, size_t *length)
{
enum make_word_type wtype;
char *p = buffer, *beg;
@@ -2847,7 +2850,7 @@ construct_include_path (const char **arg_dirs)
#endif
const char **dirs;
const char **cpp;
- unsigned int idx;
+ size_t idx;
/* Compute the number of pointers we need in the table. */
idx = sizeof (default_include_directories) / sizeof (const char *);
@@ -2885,7 +2888,7 @@ construct_include_path (const char **arg_dirs)
EINTRLOOP (e, stat (dir, &stbuf));
if (e == 0 && S_ISDIR (stbuf.st_mode))
{
- unsigned int len = strlen (dir);
+ size_t len = strlen (dir);
/* If dir name is written with trailing slashes, discard them. */
while (len > 1 && dir[len - 1] == '/')
--len;
@@ -2907,7 +2910,7 @@ construct_include_path (const char **arg_dirs)
if (djdir)
{
- unsigned int len = strlen (djdir->value) + 8;
+ size_t len = strlen (djdir->value) + 8;
char *defdir = alloca (len + 1);
strcat (strcpy (defdir, djdir->value), "/include");
@@ -2926,7 +2929,7 @@ construct_include_path (const char **arg_dirs)
EINTRLOOP (e, stat (*cpp, &stbuf));
if (e == 0 && S_ISDIR (stbuf.st_mode))
{
- unsigned int len = strlen (*cpp);
+ size_t len = strlen (*cpp);
/* If dir name is written with trailing slashes, discard them. */
while (len > 1 && (*cpp)[len - 1] == '/')
--len;
@@ -3043,7 +3046,7 @@ tilde_expand (const char *name)
*/
void *
-parse_file_seq (char **stringp, unsigned int size, int stopmap,
+parse_file_seq (char **stringp, size_t size, int stopmap,
const char *prefix, int flags)
{
/* tmp points to tmpbuf after the prefix, if any.
@@ -3077,8 +3080,8 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
/* Get enough temporary space to construct the largest possible target. */
{
- static int tmpbuf_len = 0;
- int l = strlen (*stringp) + 1;
+ static size_t tmpbuf_len = 0;
+ size_t l = strlen (*stringp) + 1;
if (l > tmpbuf_len)
{
tmpbuf = xrealloc (tmpbuf, l);
@@ -3100,7 +3103,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
char *memname = 0;
#endif
char *s;
- int nlen;
+ size_t nlen;
int i;
/* Skip whitespace; at the end of the string or STOPCHAR we're done. */
diff --git a/src/remake.c b/src/remake.c
index fcef0490..8c888b64 100644
--- a/src/remake.c
+++ b/src/remake.c
@@ -1255,7 +1255,7 @@ FILE_TIMESTAMP
f_mtime (struct file *file, int search)
{
FILE_TIMESTAMP mtime;
- int propagate_timestamp;
+ unsigned int propagate_timestamp;
/* File's mtime is not known; must get it from the system. */
@@ -1284,7 +1284,7 @@ f_mtime (struct file *file, int search)
Change the archive-member reference accordingly. */
char *name;
- unsigned int arlen, memlen;
+ size_t arlen, memlen;
arlen = strlen (arfile->hname);
memlen = strlen (memname);
@@ -1332,7 +1332,7 @@ f_mtime (struct file *file, int search)
|| (file->name[0] == '-' && file->name[1] == 'l'
&& (name = library_search (file->name, &mtime)) != 0))
{
- int name_len;
+ size_t name_len;
if (mtime != UNKNOWN_MTIME)
/* vpath_search and library_search store UNKNOWN_MTIME
@@ -1480,29 +1480,29 @@ name_mtime (const char *name)
succeeds ONLY if "foo" is a directory. */
if (p > name)
{
- memcpy (tem, name, p - name + 1);
- tstart = tem;
- if (tstart[1] == ':')
- tstart += 2;
- tend = tem + (p - name - 1);
- if (*tend == '.' && tend > tstart)
- tend--;
- if (*tend == '.' && tend > tstart)
- tend--;
- for ( ; tend > tstart && (*tend == '/' || *tend == '\\'); tend--)
- *tend = '\0';
+ memcpy (tem, name, p - name + 1);
+ tstart = tem;
+ if (tstart[1] == ':')
+ tstart += 2;
+ tend = tem + (p - name - 1);
+ if (*tend == '.' && tend > tstart)
+ tend--;
+ if (*tend == '.' && tend > tstart)
+ tend--;
+ for ( ; tend > tstart && (*tend == '/' || *tend == '\\'); tend--)
+ *tend = '\0';
}
else
{
- tem[0] = '\0';
- tend = &tem[0];
+ tem[0] = '\0';
+ tend = &tem[0];
}
e = stat (tem, &st);
if (e == 0 && !_S_ISDIR (st.st_mode) && tend < tem + (p - name - 1))
{
- errno = ENOTDIR;
- e = -1;
+ errno = ENOTDIR;
+ e = -1;
}
}
#else
@@ -1622,8 +1622,8 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
/* Loop variables for the libpatterns value. */
char *p;
const char *p2;
- unsigned int len;
- unsigned int liblen;
+ size_t len;
+ size_t liblen;
/* Information about the earliest (in the vpath sequence) match. */
unsigned int best_vpath = 0, best_path = 0;
@@ -1643,8 +1643,8 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
while ((p = find_next_token (&p2, &len)) != 0)
{
static char *buf = NULL;
- static unsigned int buflen = 0;
- static int libdir_maxlen = -1;
+ static size_t buflen = 0;
+ static size_t libdir_maxlen = 0;
static unsigned int std_dirs = 0;
char *libbuf = variable_expand ("");
@@ -1709,7 +1709,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
{
for (dp = dirs; *dp != 0; ++dp)
{
- int l = strlen (*dp);
+ size_t l = strlen (*dp);
if (l > libdir_maxlen)
libdir_maxlen = l;
std_dirs++;
diff --git a/src/remote-cstms.c b/src/remote-cstms.c
index 62203350..a1233802 100644
--- a/src/remote-cstms.c
+++ b/src/remote-cstms.c
@@ -294,7 +294,7 @@ unblock_remote_children (void)
/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */
int
-remote_kill (int id, int sig)
+remote_kill (pid_t id, int sig)
{
return -1;
}
diff --git a/src/remote-stub.c b/src/remote-stub.c
index 6e887672..d63b8164 100644
--- a/src/remote-stub.c
+++ b/src/remote-stub.c
@@ -93,7 +93,7 @@ unblock_remote_children (void)
/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */
int
-remote_kill (int id UNUSED, int sig UNUSED)
+remote_kill (pid_t id UNUSED, int sig UNUSED)
{
return -1;
}
diff --git a/src/rule.c b/src/rule.c
index 1042ea5b..4bd3ff09 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -49,7 +49,7 @@ unsigned int max_pattern_deps;
/* Maximum length of the name of a dependencies of any pattern rule. */
-unsigned int max_pattern_dep_length;
+size_t max_pattern_dep_length;
/* Pointer to structure for the file .SUFFIXES
whose dependencies are the suffixes to be searched. */
@@ -58,7 +58,7 @@ struct file *suffix_file;
/* Maximum length of a suffix. */
-unsigned int maxsuffix;
+static size_t maxsuffix;
/* Compute the maximum dependency length and maximum number of
dependencies of all implicit rules. Also sets the subdir
@@ -69,7 +69,7 @@ void
count_implicit_rule_limits (void)
{
char *name;
- int namelen;
+ size_t namelen;
struct rule *rule;
num_pattern_rules = max_pattern_targets = max_pattern_deps = 0;
@@ -92,7 +92,7 @@ count_implicit_rule_limits (void)
for (dep = rule->deps; dep != 0; dep = dep->next)
{
const char *dname = dep_name (dep);
- unsigned int len = strlen (dname);
+ size_t len = strlen (dname);
#ifdef VMS
const char *p = strrchr (dname, ']');
@@ -115,7 +115,7 @@ count_implicit_rule_limits (void)
Extract the directory name. */
if (p == dname)
++p;
- if (p - dname > namelen)
+ if ((size_t) (p - dname) > namelen)
{
namelen = p - dname;
name = xrealloc (name, namelen + 1);
@@ -173,7 +173,7 @@ convert_suffix_rule (const char *target, const char *source,
else
{
/* Construct the target name. */
- unsigned int len = strlen (target);
+ size_t len = strlen (target);
char *p = alloca (1 + len + 1);
p[0] = '%';
memcpy (p + 1, target, len + 1);
@@ -186,7 +186,7 @@ convert_suffix_rule (const char *target, const char *source,
else
{
/* Construct the dependency name. */
- unsigned int len = strlen (source);
+ size_t len = strlen (source);
char *p = alloca (1 + len + 1);
p[0] = '%';
memcpy (p + 1, source, len + 1);
@@ -214,7 +214,7 @@ convert_to_pattern (void)
maxsuffix = 0;
for (d = suffix_file->deps; d != 0; d = d->next)
{
- unsigned int l = strlen (dep_name (d));
+ size_t l = strlen (dep_name (d));
if (l > maxsuffix)
maxsuffix = l;
}
@@ -224,7 +224,7 @@ convert_to_pattern (void)
for (d = suffix_file->deps; d != 0; d = d->next)
{
- unsigned int slen;
+ size_t slen;
/* Make a rule that is just the suffix, with no deps or commands.
This rule exists solely to disqualify match-anything rules. */
@@ -242,7 +242,7 @@ convert_to_pattern (void)
for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next)
{
struct file *f;
- unsigned int s2len;
+ size_t s2len;
s2len = strlen (dep_name (d2));
@@ -365,7 +365,7 @@ install_pattern_rule (struct pspec *p, int terminal)
r->suffixes = xmalloc (sizeof (const char *));
r->lens = xmalloc (sizeof (unsigned int));
- r->lens[0] = strlen (p->target);
+ r->lens[0] = (unsigned int) strlen (p->target);
r->targets[0] = p->target;
r->suffixes[0] = find_percent_cached (&r->targets[0]);
assert (r->suffixes[0] != NULL);
@@ -376,7 +376,7 @@ install_pattern_rule (struct pspec *p, int terminal)
if (new_pattern_rule (r, 0))
{
- r->terminal = terminal;
+ r->terminal = terminal ? 1 : 0;
r->cmds = xmalloc (sizeof (struct commands));
r->cmds->fileinfo.filenm = 0;
r->cmds->fileinfo.lineno = 0;
@@ -442,7 +442,7 @@ freerule (struct rule *rule, struct rule *lastrule)
void
create_pattern_rule (const char **targets, const char **target_percents,
- unsigned int n, int terminal, struct dep *deps,
+ unsigned short n, int terminal, struct dep *deps,
struct commands *commands, int override)
{
unsigned int i;
@@ -457,13 +457,13 @@ create_pattern_rule (const char **targets, const char **target_percents,
for (i = 0; i < n; ++i)
{
- r->lens[i] = strlen (targets[i]);
+ r->lens[i] = (unsigned int) strlen (targets[i]);
assert (r->suffixes[i] != NULL);
++r->suffixes[i];
}
if (new_pattern_rule (r, override))
- r->terminal = terminal;
+ r->terminal = terminal ? 1 : 0;
}
/* Print the data base of rules. */
diff --git a/src/rule.h b/src/rule.h
index 7382f89e..b8dfe4dc 100644
--- a/src/rule.h
+++ b/src/rule.h
@@ -43,16 +43,15 @@ extern unsigned int num_pattern_rules;
extern unsigned int max_pattern_deps;
extern unsigned int max_pattern_targets;
-extern unsigned int max_pattern_dep_length;
+extern size_t max_pattern_dep_length;
extern struct file *suffix_file;
-extern unsigned int maxsuffix;
void count_implicit_rule_limits (void);
void convert_to_pattern (void);
void install_pattern_rule (struct pspec *p, int terminal);
void create_pattern_rule (const char **targets, const char **target_percents,
- unsigned int num, int terminal, struct dep *deps,
+ unsigned short num, int terminal, struct dep *deps,
struct commands *commands, int override);
void print_rule_data_base (void);
diff --git a/src/signame.c b/src/signame.c
index fbb7322d..3cfa4000 100644
--- a/src/signame.c
+++ b/src/signame.c
@@ -237,7 +237,7 @@ strsignal (int sig)
# elif HAVE_DECL___SYS_SIGLIST
# define sys_siglist __sys_siglist
# else
- static char sig_initted = 0;
+ static int sig_initted = 0;
if (!sig_initted)
sig_initted = signame_init ();
diff --git a/src/strcache.c b/src/strcache.c
index 2debefae..acae4384 100644
--- a/src/strcache.c
+++ b/src/strcache.c
@@ -72,7 +72,7 @@ new_cache (struct strcache **head, sc_buflen_t buflen)
}
static const char *
-copy_string (struct strcache *sp, const char *str, unsigned int len)
+copy_string (struct strcache *sp, const char *str, sc_buflen_t len)
{
/* Add the string to this cache. */
char *res = &sp->buffer[sp->end];
@@ -87,13 +87,13 @@ copy_string (struct strcache *sp, const char *str, unsigned int len)
}
static const char *
-add_string (const char *str, unsigned int len)
+add_string (const char *str, sc_buflen_t len)
{
const char *res;
struct strcache *sp;
struct strcache **spp = &strcache;
/* We need space for the nul char. */
- unsigned int sz = len + 1;
+ sc_buflen_t sz = len + 1;
++total_strings;
total_size += sz;
@@ -143,7 +143,7 @@ struct hugestring {
static struct hugestring *hugestrings = NULL;
static const char *
-add_hugestring (const char *str, unsigned int len)
+add_hugestring (const char *str, size_t len)
{
struct hugestring *new = xmalloc (sizeof (struct hugestring) + len);
memcpy (new->buffer, str, len);
@@ -179,7 +179,7 @@ static struct hash_table strings;
static unsigned long total_adds = 0;
static const char *
-add_hash (const char *str, unsigned int len)
+add_hash (const char *str, size_t len)
{
char *const *slot;
const char *key;
@@ -200,7 +200,7 @@ add_hash (const char *str, unsigned int len)
return key;
/* Not there yet so add it to a buffer, then into the hash table. */
- key = add_string (str, len);
+ key = add_string (str, (sc_buflen_t)len);
hash_insert_at (&strings, key, slot);
return key;
}
@@ -238,7 +238,7 @@ strcache_add (const char *str)
}
const char *
-strcache_add_len (const char *str, unsigned int len)
+strcache_add_len (const char *str, size_t len)
{
/* If we're not given a nul-terminated string we have to create one, because
the hashing functions expect it. */
@@ -305,16 +305,16 @@ strcache_print_stats (const char *prefix)
prefix, numbuffs + 1, fullbuffs, total_strings, total_size,
(total_size / total_strings));
- printf (_("%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"),
+ printf (_("%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"),
prefix, (sc_buflen_t)BUFSIZE, strcache->end, strcache->count,
- (strcache->end / strcache->count));
+ (unsigned int) (strcache->end / strcache->count));
if (numbuffs)
{
/* Show information about non-current buffers. */
unsigned long sz = total_size - strcache->end;
unsigned long cnt = total_strings - strcache->count;
- sc_buflen_t avgfree = totfree / numbuffs;
+ sc_buflen_t avgfree = (sc_buflen_t) (totfree / numbuffs);
printf (_("%s other used: total = %lu B / count = %lu / avg = %lu B\n"),
prefix, sz, cnt, sz / cnt);
diff --git a/src/variable.c b/src/variable.c
index d7d714ad..11acbdfe 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -50,7 +50,7 @@ static struct pattern_var *last_pattern_vars[256];
struct pattern_var *
create_pattern_var (const char *target, const char *suffix)
{
- unsigned int len = strlen (target);
+ size_t len = strlen (target);
struct pattern_var *p = xcalloc (sizeof (struct pattern_var));
if (pattern_vars != 0)
@@ -101,12 +101,12 @@ static struct pattern_var *
lookup_pattern_var (struct pattern_var *start, const char *target)
{
struct pattern_var *p;
- unsigned int targlen = strlen (target);
+ size_t targlen = strlen (target);
for (p = start ? start->next : pattern_vars; p != 0; p = p->next)
{
const char *stem;
- unsigned int stemlen;
+ size_t stemlen;
if (p->len > targlen)
/* It can't possibly match. */
@@ -193,7 +193,7 @@ init_hash_global_variable_set (void)
that it should be recursively re-expanded. */
struct variable *
-define_variable_in_set (const char *name, unsigned int length,
+define_variable_in_set (const char *name, size_t length,
const char *value, enum variable_origin origin,
int recursive, struct variable_set *set,
const floc *flocp)
@@ -206,7 +206,7 @@ define_variable_in_set (const char *name, unsigned int length,
set = &global_variable_set;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
var_slot = (struct variable **) hash_find_slot (&set->table, &var_key);
v = *var_slot;
@@ -269,7 +269,7 @@ define_variable_in_set (const char *name, unsigned int length,
v = xmalloc (sizeof (struct variable));
v->name = xstrndup (name, length);
- v->length = length;
+ v->length = (unsigned int) length;
hash_insert_at (&set->table, v, var_slot);
if (set == &global_variable_set)
++variable_changenum;
@@ -330,7 +330,7 @@ free_variable_set (struct variable_set_list *list)
}
void
-undefine_variable_in_set (const char *name, unsigned int length,
+undefine_variable_in_set (const char *name, size_t length,
enum variable_origin origin,
struct variable_set *set)
{
@@ -342,7 +342,7 @@ undefine_variable_in_set (const char *name, unsigned int length,
set = &global_variable_set;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
var_slot = (struct variable **) hash_find_slot (&set->table, &var_key);
if (env_overrides && origin == o_env)
@@ -412,8 +412,8 @@ lookup_special_var (struct variable *var)
if (variable_changenum != last_changenum && streq (var->name, ".VARIABLES"))
{
- unsigned long max = EXPANSION_INCREMENT (strlen (var->value));
- unsigned long len;
+ size_t max = EXPANSION_INCREMENT (strlen (var->value));
+ size_t len;
char *p;
struct variable **vp = (struct variable **) global_variable_set.table.ht_vec;
struct variable **end = &vp[global_variable_set.table.ht_size];
@@ -433,7 +433,7 @@ lookup_special_var (struct variable *var)
len += l + 1;
if (len > max)
{
- unsigned long off = p - var->value;
+ size_t off = p - var->value;
max += EXPANSION_INCREMENT (l + 1);
var->value = xrealloc (var->value, max);
@@ -460,14 +460,14 @@ lookup_special_var (struct variable *var)
on the variable, or nil if no such variable is defined. */
struct variable *
-lookup_variable (const char *name, unsigned int length)
+lookup_variable (const char *name, size_t length)
{
const struct variable_set_list *setlist;
struct variable var_key;
int is_parent = 0;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
for (setlist = current_variable_set_list;
setlist != 0; setlist = setlist->next)
@@ -547,13 +547,13 @@ lookup_variable (const char *name, unsigned int length)
on the variable, or nil if no such variable is defined. */
struct variable *
-lookup_variable_in_set (const char *name, unsigned int length,
+lookup_variable_in_set (const char *name, size_t length,
const struct variable_set *set)
{
struct variable var_key;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
return (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key);
}
@@ -1138,7 +1138,7 @@ static char *
shell_result (const char *p)
{
char *buf;
- unsigned int len;
+ size_t len;
char *args[2];
char *result;
@@ -1237,7 +1237,7 @@ do_variable_definition (const floc *flocp, const char *varname,
{
/* Paste the old and new values together in VALUE. */
- unsigned int oldlen, vallen;
+ size_t oldlen, vallen;
const char *val;
char *tp = NULL;
@@ -1567,7 +1567,7 @@ parse_variable_definition (const char *p, struct variable *var)
return NULL;
}
- var->length = e - var->name;
+ var->length = (unsigned int) (e - var->name);
var->value = next_token (p);
return (char *)p;
}
@@ -1788,7 +1788,7 @@ print_target_variables (const struct file *file)
{
if (file->variables != 0)
{
- int l = strlen (file->name);
+ size_t l = strlen (file->name);
char *t = alloca (l + 3);
strcpy (t, file->name);
diff --git a/src/variable.h b/src/variable.h
index 5b3dffce..43da96a1 100644
--- a/src/variable.h
+++ b/src/variable.h
@@ -53,7 +53,7 @@ struct variable
char *name; /* Variable name. */
char *value; /* Variable value. */
floc fileinfo; /* Where the variable was defined. */
- int length; /* strlen (name) */
+ unsigned int length; /* strlen (name) */
unsigned int recursive:1; /* Gets recursively re-evaluated. */
unsigned int append:1; /* Nonzero if an appending target-specific
variable. */
@@ -104,7 +104,7 @@ struct pattern_var
struct pattern_var *next;
const char *suffix;
const char *target;
- unsigned int len;
+ size_t len;
struct variable variable;
};
@@ -114,22 +114,26 @@ extern struct variable *default_goal_var;
extern struct variable shell_var;
/* expand.c */
-char *variable_buffer_output (char *ptr, const char *string, unsigned int length);
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t)~(size_t)0)
+#endif
+
+char *variable_buffer_output (char *ptr, const char *string, size_t length);
char *variable_expand (const char *line);
char *variable_expand_for_file (const char *line, struct file *file);
char *allocated_variable_expand_for_file (const char *line, struct file *file);
#define allocated_variable_expand(line) \
allocated_variable_expand_for_file (line, (struct file *) 0)
char *expand_argument (const char *str, const char *end);
-char *variable_expand_string (char *line, const char *string, long length);
-void install_variable_buffer (char **bufp, unsigned int *lenp);
-void restore_variable_buffer (char *buf, unsigned int len);
+char *variable_expand_string (char *line, const char *string, size_t length);
+void install_variable_buffer (char **bufp, size_t *lenp);
+void restore_variable_buffer (char *buf, size_t len);
/* function.c */
int handle_function (char **op, const char **stringp);
int pattern_matches (const char *pattern, const char *percent, const char *str);
char *subst_expand (char *o, const char *text, const char *subst,
- const char *replace, unsigned int slen, unsigned int rlen,
+ const char *replace, size_t slen, size_t rlen,
int by_word);
char *patsubst_expand_pat (char *o, const char *text, const char *pattern,
const char *replace, const char *pattern_percent,
@@ -169,11 +173,11 @@ void hash_init_function_table (void);
void define_new_function(const floc *flocp, const char *name,
unsigned int min, unsigned int max, unsigned int flags,
gmk_func_ptr func);
-struct variable *lookup_variable (const char *name, unsigned int length);
-struct variable *lookup_variable_in_set (const char *name, unsigned int length,
+struct variable *lookup_variable (const char *name, size_t length);
+struct variable *lookup_variable_in_set (const char *name, size_t length,
const struct variable_set *set);
-struct variable *define_variable_in_set (const char *name, unsigned int length,
+struct variable *define_variable_in_set (const char *name, size_t length,
const char *value,
enum variable_origin origin,
int recursive,
@@ -208,7 +212,7 @@ struct variable *define_variable_in_set (const char *name, unsigned int length,
#define define_variable_for_file(n,l,v,o,r,f) \
define_variable_in_set((n),(l),(v),(o),(r),(f)->variables->set,NILF)
-void undefine_variable_in_set (const char *name, unsigned int length,
+void undefine_variable_in_set (const char *name, size_t length,
enum variable_origin origin,
struct variable_set *set);
diff --git a/src/vpath.c b/src/vpath.c
index 3a5932c3..79fbe8db 100644
--- a/src/vpath.c
+++ b/src/vpath.c
@@ -26,12 +26,12 @@ this program. If not, see . */
struct vpath
{
- struct vpath *next; /* Pointer to next struct in the linked list. */
- const char *pattern;/* The pattern to match. */
- const char *percent;/* Pointer into 'pattern' where the '%' is. */
- unsigned int patlen;/* Length of the pattern. */
+ struct vpath *next; /* Pointer to next struct in the linked list. */
+ const char *pattern; /* The pattern to match. */
+ const char *percent; /* Pointer into 'pattern' where the '%' is. */
+ size_t patlen; /* Length of the pattern. */
const char **searchpath; /* Null-terminated list of directories. */
- unsigned int maxlen;/* Maximum length of any entry in the list. */
+ size_t maxlen; /* Maximum length of any entry in the list. */
};
/* Linked-list of all selective VPATHs. */
@@ -160,7 +160,7 @@ construct_vpath_list (char *pattern, char *dirpath)
unsigned int elem;
char *p;
const char **vpath;
- unsigned int maxvpath;
+ size_t maxvpath;
unsigned int maxelem;
const char *percent = NULL;
@@ -229,7 +229,7 @@ construct_vpath_list (char *pattern, char *dirpath)
while (*p != '\0')
{
char *v;
- unsigned int len;
+ size_t len;
/* Find the end of this entry. */
v = p;
@@ -304,7 +304,7 @@ construct_vpath_list (char *pattern, char *dirpath)
in. If it is found, return 1. Otherwise we return 0. */
int
-gpath_search (const char *file, unsigned int len)
+gpath_search (const char *file, size_t len)
{
if (gpaths && (len <= gpaths->maxlen))
{
@@ -333,9 +333,9 @@ selective_vpath_search (struct vpath *path, const char *file,
const char *n;
const char *filename;
const char **vpath = path->searchpath;
- unsigned int maxvpath = path->maxlen;
+ size_t maxvpath = path->maxlen;
unsigned int i;
- unsigned int flen, name_dplen;
+ size_t flen, name_dplen;
int exists = 0;
/* Find out if *FILE is a target.
@@ -376,7 +376,7 @@ selective_vpath_search (struct vpath *path, const char *file,
{
int exists_in_cache = 0;
char *p = name;
- unsigned int vlen = strlen (vpath[i]);
+ size_t vlen = strlen (vpath[i]);
/* Put the next VPATH entry into NAME at P and increment P past it. */
memcpy (p, vpath[i], vlen);
diff --git a/src/w32/compat/dirent.c b/src/w32/compat/dirent.c
index 6803b506..47cf243b 100644
--- a/src/w32/compat/dirent.c
+++ b/src/w32/compat/dirent.c
@@ -30,7 +30,7 @@ opendir(const char* pDirName)
struct stat sb;
DIR* pDir;
char* pEndDirName;
- int nBufferLen;
+ size_t nBufferLen;
/* sanity checks */
if (!pDirName) {
diff --git a/src/w32/pathstuff.c b/src/w32/pathstuff.c
index c8d77966..3f30f6ee 100644
--- a/src/w32/pathstuff.c
+++ b/src/w32/pathstuff.c
@@ -65,7 +65,7 @@ convert_Path_to_windows32(char *Path, char to_delim)
/* found one to count, handle things like '.' */
*etok = to_delim;
p = ++etok;
- } else if ((*etok == ':') && (etok = strpbrk(etok+1, ":;"))) {
+ } else if ((*etok == ':') && ((etok = strpbrk(etok+1, ":;")) != NULL)) {
/* found one to count, handle drive letter */
*etok = to_delim;
p = ++etok;
diff --git a/src/w32/subproc/misc.c b/src/w32/subproc/misc.c
index 10583233..8718876f 100644
--- a/src/w32/subproc/misc.c
+++ b/src/w32/subproc/misc.c
@@ -36,10 +36,10 @@ int _cdecl compare(const void *a1, const void *a2)
return _stricoll(*((char**)a1),*((char**)a2));
}
bool_t
-arr2envblk(char **arr, char **envblk_out, int *envsize_needed)
+arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed)
{
char **tmp;
- int size_needed;
+ size_t size_needed;
int arrcnt;
char *ptr;
diff --git a/src/w32/subproc/proc.h b/src/w32/subproc/proc.h
index 149c5311..f2a1a7b1 100644
--- a/src/w32/subproc/proc.h
+++ b/src/w32/subproc/proc.h
@@ -24,6 +24,6 @@ typedef int bool_t;
#define E_NO_MEM 103
#define E_FORK 104
-extern bool_t arr2envblk(char **arr, char **envblk_out, int *envsize_needed);
+extern bool_t arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed);
#endif
diff --git a/src/w32/subproc/sub_proc.c b/src/w32/subproc/sub_proc.c
index ca3ef6f1..9ff136f4 100644
--- a/src/w32/subproc/sub_proc.c
+++ b/src/w32/subproc/sub_proc.c
@@ -66,8 +66,8 @@ typedef struct sub_process_t {
/* keep track of children so we can implement a waitpid-like routine */
static sub_process *proc_array[GMAKE_MAXIMUM_WAIT_OBJECTS];
-static int proc_index = 0;
-static int fake_exits_pending = 0;
+static unsigned int proc_index = 0;
+static unsigned int fake_exits_pending = 0;
/*
* Address the scalability limit intrisic to WaitForMultipleOjects by
@@ -98,30 +98,30 @@ DWORD process_wait_for_multiple_objects(
assert(dwMilliseconds == 0 || dwMilliseconds == INFINITE); /* No support for timeouts */
for (; objectCount > 0; blockCount++) {
- DWORD n = objectCount <= MAXIMUM_WAIT_OBJECTS ? objectCount : MAXIMUM_WAIT_OBJECTS;
- objectCount -= n;
- retVal = WaitForMultipleObjects(n, &lpHandles[blockCount * MAXIMUM_WAIT_OBJECTS],
- FALSE, 0);
- switch (retVal) {
- case WAIT_TIMEOUT:
- retVal = GMAKE_WAIT_TIMEOUT;
- continue;
- break;
- case WAIT_FAILED:
- fprintf(stderr,"WaitForMultipleOjbects failed waiting with error %d\n", GetLastError());
- break;
- default:
- if (retVal >= WAIT_ABANDONED_0) {
- assert(retVal < WAIT_ABANDONED_0 + MAXIMUM_WAIT_OBJECTS);
- retVal += blockCount * MAXIMUM_WAIT_OBJECTS - WAIT_ABANDONED_0 + GMAKE_WAIT_ABANDONED_0;
- } else {
- assert(retVal < WAIT_OBJECT_0 + MAXIMUM_WAIT_OBJECTS);
- retVal += blockCount * MAXIMUM_WAIT_OBJECTS;
- }
- break;
- }
+ DWORD n = objectCount <= MAXIMUM_WAIT_OBJECTS ? objectCount : MAXIMUM_WAIT_OBJECTS;
+ objectCount -= n;
+ retVal = WaitForMultipleObjects(n, &lpHandles[blockCount * MAXIMUM_WAIT_OBJECTS],
+ FALSE, 0);
+ switch (retVal) {
+ case WAIT_TIMEOUT:
+ retVal = GMAKE_WAIT_TIMEOUT;
+ continue;
+ break;
+ case WAIT_FAILED:
+ fprintf(stderr,"WaitForMultipleOjbects failed waiting with error %d\n", GetLastError());
+ break;
+ default:
+ if (retVal >= WAIT_ABANDONED_0) {
+ assert(retVal < WAIT_ABANDONED_0 + MAXIMUM_WAIT_OBJECTS);
+ retVal += blockCount * MAXIMUM_WAIT_OBJECTS - WAIT_ABANDONED_0 + GMAKE_WAIT_ABANDONED_0;
+ } else {
+ assert(retVal < WAIT_OBJECT_0 + MAXIMUM_WAIT_OBJECTS);
+ retVal += blockCount * MAXIMUM_WAIT_OBJECTS;
+ }
+ break;
+ }
- return retVal;
+ return retVal;
}
@@ -139,7 +139,7 @@ DWORD
process_set_handles(HANDLE *handles)
{
DWORD count = 0;
- int i;
+ unsigned int i;
/* Build array of handles to wait for */
for (i = 0; i < proc_index; i++) {
@@ -160,7 +160,7 @@ process_set_handles(HANDLE *handles)
static void
process_adjust_wait_state(sub_process* pproc)
{
- int i;
+ unsigned int i;
if (!proc_index)
return;
@@ -186,7 +186,7 @@ process_wait_for_any_private(int block, DWORD* pdwWaitStatus)
{
HANDLE handles[GMAKE_MAXIMUM_WAIT_OBJECTS];
DWORD retval, which;
- int i;
+ unsigned int i;
if (!proc_index)
return NULL;
@@ -578,7 +578,7 @@ process_begin(
STARTUPINFO startInfo;
PROCESS_INFORMATION procInfo;
char *envblk=NULL;
- int envsize_needed = 0;
+ size_t envsize_needed = 0;
int pass_null_exec_path = 0;
/*
@@ -615,7 +615,7 @@ process_begin(
if (exec_path[0] == '/') {
char *new_argv0;
char **argvi = argv;
- int arglen = 0;
+ size_t arglen = 0;
strcpy(buf, variable_expand ("$(SHELL)"));
shell_name = &buf[0];
@@ -708,7 +708,8 @@ process_begin(
&& _stricmp(exec_path, argv[0]) == 0) {
char *new_argv, *p;
char **argvi;
- int arglen, i;
+ size_t arglen;
+ int i;
pass_null_exec_path = 1;
/* Rewrite argv[] replacing argv[0] with exec_fname. */
for (argvi = argv + 1, arglen = strlen(exec_fname) + 1;
@@ -743,7 +744,7 @@ process_begin(
if ((pproc->last_err == ERROR_INVALID_PARAMETER
|| pproc->last_err == ERROR_MORE_DATA)
&& envsize_needed > 32*1024) {
- fprintf (stderr, "CreateProcess failed, probably because environment is too large (%d bytes).\n",
+ fprintf (stderr, "CreateProcess failed, probably because environment is too large (%Iu bytes).\n",
envsize_needed);
}
pproc->last_err = 0;
@@ -1196,13 +1197,13 @@ process_cleanup(
static char *
make_command_line( char *shell_name, char *full_exec_path, char **argv)
{
- int argc = 0;
- char** argvi;
- int* enclose_in_quotes = NULL;
- int* enclose_in_quotes_i;
- unsigned int bytes_required = 0;
- char* command_line;
- char* command_line_i;
+ int argc = 0;
+ char** argvi;
+ int* enclose_in_quotes = NULL;
+ int* enclose_in_quotes_i;
+ size_t bytes_required = 0;
+ char* command_line;
+ char* command_line_i;
int have_sh = 0; /* HAVE_CYGWIN_SHELL */
int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */