diff --git a/commands.c b/commands.c
index bc418b7..6a9df7c 100644
--- a/commands.c
+++ b/commands.c
@@ -411,7 +411,7 @@
 
   for (idx = 0; idx < nlines; ++idx)
     {
-      int flags = 0;
+      unsigned char flags = 0;
       const char *p = lines[idx];
 
       while (isblank (*p) || *p == '-' || *p == '@' || *p == '+')
diff --git a/commands.h b/commands.h
index ec70620..db95fb2 100644
--- a/commands.h
+++ b/commands.h
@@ -22,7 +22,7 @@
     gmk_floc fileinfo;          /* Where commands were defined.  */
     char *commands;             /* Commands text.  */
     char **command_lines;       /* Commands chopped up into lines.  */
-    char *lines_flags;          /* One set of flag bits for each line.  */
+    unsigned char *lines_flags; /* One set of flag bits for each line.  */
     unsigned short ncommand_lines;/* Number of command lines.  */
     char recipe_prefix;         /* Recipe prefix for this command set.  */
     unsigned int any_recurse:1; /* Nonzero if any 'lines_flags' elt has */
diff --git a/dir.c b/dir.c
index baeaaa3..de85a3c 100644
--- a/dir.c
+++ b/dir.c
@@ -248,9 +248,9 @@
      * qualified name of the directory. Beware though, this is also
      * unreliable. I'm open to suggestion on a better way to emulate inode.  */
     char *path_key;
-    int   ctime;
-    int   mtime;        /* controls check for stale directory cache */
-    int   fs_flags;     /* FS_FAT, FS_NTFS, ... */
+    time_t ctime;
+    time_t mtime;        /* controls check for stale directory cache */
+    int fs_flags;     /* FS_FAT, FS_NTFS, ... */
 # define FS_FAT      0x1
 # define FS_NTFS     0x2
 # define FS_UNKNOWN  0x4
@@ -405,7 +405,7 @@
 struct dirfile
   {
     const char *name;           /* Name of the file.  */
-    short length;
+    size_t length;
     short impossible;           /* This file is impossible.  */
   };
 
diff --git a/implicit.c b/implicit.c
index 7af635c..aa33b83 100644
--- a/implicit.c
+++ b/implicit.c
@@ -317,7 +317,7 @@
         {
           const char *target = rule->targets[ti];
           const char *suffix = rule->suffixes[ti];
-          int check_lastslash;
+          char check_lastslash;
 
           /* Rules that can match any filename and are not terminal
              are ignored if we're recursing, so that they cannot be
@@ -438,7 +438,7 @@
       for (ri = 0; ri < nrules; ri++)
         {
           struct dep *dep;
-          int check_lastslash;
+          char check_lastslash;
           unsigned int failed = 0;
           int file_variables_set = 0;
           unsigned int deps_found = 0;
diff --git a/job.c b/job.c
index 321a1e8..084c1b8 100644
--- a/job.c
+++ b/job.c
@@ -589,7 +589,7 @@
   while ((children != 0 || shell_function_pid != 0)
          && (block || REAP_MORE))
     {
-      int remote = 0;
+      unsigned int remote = 0;
       pid_t pid;
       int exit_code, exit_sig, coredump;
       struct child *lastc, *c;
@@ -3109,7 +3109,7 @@
                 /* Write another line into the batch file.  */
                 if (t > tstart)
                   {
-                    int c = *t;
+                    char c = *t;
                     *t = '\0';
                     fputs (tstart, batch);
                     DB (DB_JOBS, ("\t%s", tstart));
diff --git a/read.c b/read.c
index 95c8850..bcd6c24 100644
--- a/read.c
+++ b/read.c
@@ -2467,7 +2467,7 @@
    Since we aren't really reading from a file, don't bother with linenumbers.
  */
 
-static unsigned long
+static long
 readstring (struct ebuffer *ebuf)
 {
   char *eol;
@@ -3013,12 +3013,12 @@
         PARSEFS_NOCACHE - Do not add filenames to the strcache (caller frees)
   */
 
+void dir_setup_glob (glob_t *glob);
+
 void *
 parse_file_seq (char **stringp, unsigned int size, int stopmap,
                 const char *prefix, int flags)
 {
-  extern void dir_setup_glob (glob_t *glob);
-
   /* tmp points to tmpbuf after the prefix, if any.
      tp is the end of the buffer. */
   static char *tmpbuf = NULL;
