diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 353ac9a02c4c5f39b99efab961171320669ff571..54a80e4fc536cb6e1fdd20ef15f29f5b247c03b1 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,16 @@
+2005-05-15  Andreas Jaeger  <aj@suse.de>
+
+	* intrinsics/chdir.c, intrinsics/getlog.c, intrinsics/link.c,
+	intrinsics/symlnk.c, intrinsics/perror.c: Include <string.h> for
+	prototypes.
+
+	* runtime/string.c (compare0): Remove unused variable.
+	* io/unit.c (init_units): Remove unused variables.
+	* intrinsics/getcwd.c (getcwd_i4_sub): Remove unused variable.
+	* intrinsics/unlink.c (unlink_i4_sub): Remove unused variable.
+	* intrinsics/stat.c (stat_i4_sub, fstat_i8_sub, fstat_i4_sub,
+	stat_i8_sub): Remove unused variable.
+
 2005-05-12  Thomas Koenig  <Thomas.Koenig@online.de>
 
 	PR libfortran/21324
@@ -179,7 +192,7 @@
 	from WRITING to READING.
 
 2005-04-22  Paul Thomas  <pault@gcc.gnu.org>
-	    Jerry DeLisle  <jvdelisle@verizon.net> 
+	    Jerry DeLisle  <jvdelisle@verizon.net>
 
 	* io/write.c (nml_write_obj): Provide 1 more byte for ext_name.
 	* io/list_read.c (nml_get_obj_data): Put extra brackets in get_mem
@@ -355,7 +368,7 @@
 	environment variables we want to be positive.
 	(init_integer): Function to allow negative environment
 	variables (e.g. for GFORTRAN_STDIN_UNIT).
-	
+
 2005-04-10  Thomas Koenig <Thomas.Koenig@online.de>
 
 	PR libfortran/17992
@@ -466,7 +479,7 @@
 2005-04-09  Thomas Koenig <Thomas.Koenig@online.de>
 
 	PR libfortran/20163
-	* runtime/string.c (compare0): Use fstrlen() to 
+	* runtime/string.c (compare0): Use fstrlen() to
 	strip trailing blanks from option string.
 
 2005-04-09  Andrew Pinski  <pinskia@physics.uc.edu>
diff --git a/libgfortran/intrinsics/chdir.c b/libgfortran/intrinsics/chdir.c
index f03a607e867b1b74a822b9b4e28349d0429f2bd5..817371f84a8b06ecf11fdf0d98ef4e20658d7d18 100644
--- a/libgfortran/intrinsics/chdir.c
+++ b/libgfortran/intrinsics/chdir.c
@@ -35,6 +35,9 @@ Boston, MA 02111-1307, USA.  */
 
 #include "../io/io.h"
 
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -60,11 +63,11 @@ chdir_i4_sub (char *dir, GFC_INTEGER_4 *status, gfc_charlen_type dir_len)
   /* Make a null terminated copy of the strings.  */
   str = gfc_alloca (dir_len + 1);
   memcpy (str, dir, dir_len);
-  str[dir_len] = '\0'; 
+  str[dir_len] = '\0';
 
   val = chdir (str);
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(chdir_i4_sub);
@@ -85,11 +88,11 @@ chdir_i8_sub (char *dir, GFC_INTEGER_8 *status, gfc_charlen_type dir_len)
   /* Make a null terminated copy of the strings.  */
   str = gfc_alloca (dir_len + 1);
   memcpy (str, dir, dir_len);
-  str[dir_len] = '\0'; 
+  str[dir_len] = '\0';
 
   val = chdir (str);
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(chdir_i8_sub);
diff --git a/libgfortran/intrinsics/getcwd.c b/libgfortran/intrinsics/getcwd.c
index 707db529ebb8c39dc9f43a793c5a0bc6070cd6a1..89e481d015d3fb53f5049af514b16894d937f92a 100644
--- a/libgfortran/intrinsics/getcwd.c
+++ b/libgfortran/intrinsics/getcwd.c
@@ -1,5 +1,5 @@
 /* Implementation of the GETCWD intrinsic.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    Contributed by Steven G. Kargl <kargls@comcast.net>.
 
 This file is part of the GNU Fortran 95 runtime library (libgfortran).
@@ -46,7 +46,7 @@ iexport_proto(getcwd_i4_sub);
 void
 getcwd_i4_sub (char *cwd, GFC_INTEGER_4 *status, gfc_charlen_type cwd_len)
 {
-  char str[cwd_len + 1], *s;
+  char str[cwd_len + 1];
   GFC_INTEGER_4 stat;
 
   memset(cwd, ' ', (size_t) cwd_len);
@@ -58,7 +58,7 @@ getcwd_i4_sub (char *cwd, GFC_INTEGER_4 *status, gfc_charlen_type cwd_len)
       stat = 0;
       memcpy (cwd, str, strlen (str));
     }
-  if (status != NULL) 
+  if (status != NULL)
     *status = stat;
 }
 iexport(getcwd_i4_sub);
diff --git a/libgfortran/intrinsics/getlog.c b/libgfortran/intrinsics/getlog.c
index 719447561cfb6dfedd81efc483b268b17d74e851..9eda12ee5dadf62a8186071799c1e3367e76ffe0 100644
--- a/libgfortran/intrinsics/getlog.c
+++ b/libgfortran/intrinsics/getlog.c
@@ -31,6 +31,9 @@ Boston, MA 02111-1307, USA.  */
 #include "config.h"
 #include "libgfortran.h"
 
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -44,7 +47,7 @@ Boston, MA 02111-1307, USA.  */
 void PREFIX(getlog) (char *, gfc_charlen_type);
 export_proto_np(PREFIX(getlog));
 
-void 
+void
 PREFIX(getlog) (char * login, gfc_charlen_type login_len)
 {
   int p_len;
diff --git a/libgfortran/intrinsics/link.c b/libgfortran/intrinsics/link.c
index 33cf816b66e88ab01d15166aa4335c2b6e8d0311..8d131fef2b47fd4c3d9baf19efd53ee347d2897a 100644
--- a/libgfortran/intrinsics/link.c
+++ b/libgfortran/intrinsics/link.c
@@ -35,6 +35,9 @@ Boston, MA 02111-1307, USA.  */
 
 #include "../io/io.h"
 
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -64,15 +67,15 @@ link_i4_sub (char *path1, char *path2, GFC_INTEGER_4 *status,
   /* Make a null terminated copy of the strings.  */
   str1 = gfc_alloca (path1_len + 1);
   memcpy (str1, path1, path1_len);
-  str1[path1_len] = '\0'; 
+  str1[path1_len] = '\0';
 
   str2 = gfc_alloca (path2_len + 1);
   memcpy (str2, path2, path2_len);
-  str2[path2_len] = '\0'; 
+  str2[path2_len] = '\0';
 
   val = link (str1, str2);
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(link_i4_sub);
@@ -97,15 +100,15 @@ link_i8_sub (char *path1, char *path2, GFC_INTEGER_8 *status,
   /* Make a null terminated copy of the strings.  */
   str1 = gfc_alloca (path1_len + 1);
   memcpy (str1, path1, path1_len);
-  str1[path1_len] = '\0'; 
+  str1[path1_len] = '\0';
 
   str2 = gfc_alloca (path2_len + 1);
   memcpy (str2, path2, path2_len);
-  str2[path2_len] = '\0'; 
+  str2[path2_len] = '\0';
 
   val = link (str1, str2);
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(link_i8_sub);
diff --git a/libgfortran/intrinsics/perror.c b/libgfortran/intrinsics/perror.c
index c6c08a6279ab65d6cee030d8eab0d733efbed6e4..8926901fb9e3749aca91483f74d6423e373b306a 100644
--- a/libgfortran/intrinsics/perror.c
+++ b/libgfortran/intrinsics/perror.c
@@ -36,6 +36,9 @@ Boston, MA 02111-1307, USA.  */
 
 #include "../io/io.h"
 
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
 
 /* SUBROUTINE PERROR(STRING)
    CHARACTER(len=*), INTENT(IN) :: STRING   */
@@ -56,7 +59,7 @@ perror_sub (char *string, gfc_charlen_type string_len)
   /* Make a null terminated copy of the strings.  */
   str = gfc_alloca (string_len + 1);
   memcpy (str, string, string_len);
-  str[string_len] = '\0'; 
+  str[string_len] = '\0';
 
   perror (str);
 }
diff --git a/libgfortran/intrinsics/stat.c b/libgfortran/intrinsics/stat.c
index df76f3f97627a4ac092440f51df56f2316a8665f..1d21529b9a14fe1c37d17f4ef50cbc461cf42142 100644
--- a/libgfortran/intrinsics/stat.c
+++ b/libgfortran/intrinsics/stat.c
@@ -1,5 +1,5 @@
 /* Implementation of the STAT and FSTAT intrinsics.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    Contributed by Steven G. Kargl <kargls@comcast.net>.
 
 This file is part of the GNU Fortran 95 runtime library (libgfortran).
@@ -73,8 +73,6 @@ stat_i4_sub (char *name, gfc_array_i4 *sarray, GFC_INTEGER_4 *status,
   char *str;
   struct stat sb;
 
-  index_type stride[GFC_MAX_DIMENSIONS];
-      
   /* If the rank of the array is not 1, abort.  */
   if (GFC_DESCRIPTOR_RANK (sarray) != 1)
     runtime_error ("Array rank of SARRAY is not 1.");
@@ -93,11 +91,11 @@ stat_i4_sub (char *name, gfc_array_i4 *sarray, GFC_INTEGER_4 *status,
   /* Make a null terminated copy of the string.  */
   str = gfc_alloca (name_len + 1);
   memcpy (str, name, name_len);
-  str[name_len] = '\0'; 
+  str[name_len] = '\0';
 
   val = stat(str, &sb);
 
-  if (val == 0) 
+  if (val == 0)
     {
       /* Device ID  */
       sarray->data[0 * sarray->dim[0].stride] = sb.st_dev;
@@ -116,7 +114,7 @@ stat_i4_sub (char *name, gfc_array_i4 *sarray, GFC_INTEGER_4 *status,
 
       /* Owner's gid  */
       sarray->data[5 * sarray->dim[0].stride] = sb.st_gid;
-  
+
       /* ID of device containing directory entry for file (0 if not available) */
 #if HAVE_STRUCT_STAT_ST_RDEV
       sarray->data[6 * sarray->dim[0].stride] = sb.st_rdev;
@@ -151,7 +149,7 @@ stat_i4_sub (char *name, gfc_array_i4 *sarray, GFC_INTEGER_4 *status,
 #endif
     }
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(stat_i4_sub);
@@ -168,8 +166,6 @@ stat_i8_sub (char *name, gfc_array_i8 *sarray, GFC_INTEGER_8 *status,
   char *str;
   struct stat sb;
 
-  index_type stride[GFC_MAX_DIMENSIONS];
-      
   /* If the rank of the array is not 1, abort.  */
   if (GFC_DESCRIPTOR_RANK (sarray) != 1)
     runtime_error ("Array rank of SARRAY is not 1.");
@@ -188,7 +184,7 @@ stat_i8_sub (char *name, gfc_array_i8 *sarray, GFC_INTEGER_8 *status,
   /* Make a null terminated copy of the string.  */
   str = gfc_alloca (name_len + 1);
   memcpy (str, name, name_len);
-  str[name_len] = '\0'; 
+  str[name_len] = '\0';
 
   val = stat(str, &sb);
 
@@ -205,13 +201,13 @@ stat_i8_sub (char *name, gfc_array_i8 *sarray, GFC_INTEGER_8 *status,
 
       /* Number of (hard) links  */
       sarray->data[3 * sarray->dim[0].stride] = sb.st_nlink;
-  
+
       /* Owner's uid  */
       sarray->data[4 * sarray->dim[0].stride] = sb.st_uid;
 
       /* Owner's gid  */
       sarray->data[5 * sarray->dim[0].stride] = sb.st_gid;
-  
+
       /* ID of device containing directory entry for file (0 if not available) */
 #if HAVE_STRUCT_STAT_ST_RDEV
       sarray->data[6 * sarray->dim[0].stride] = sb.st_rdev;
@@ -246,7 +242,7 @@ stat_i8_sub (char *name, gfc_array_i8 *sarray, GFC_INTEGER_8 *status,
 #endif
     }
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(stat_i8_sub);
@@ -275,13 +271,13 @@ stat_i8 (char *name, gfc_array_i8 *sarray, gfc_charlen_type name_len)
 
 
 /* SUBROUTINE FSTAT(UNIT, SARRAY, STATUS)
-   INTEGER, INTENT(IN) :: UNIT 
+   INTEGER, INTENT(IN) :: UNIT
    INTEGER, INTENT(OUT) :: SARRAY(13)
-   INTEGER, INTENT(OUT), OPTIONAL :: STATUS 
+   INTEGER, INTENT(OUT), OPTIONAL :: STATUS
 
    FUNCTION FSTAT(UNIT, SARRAY)
    INTEGER FSTAT
-   INTEGER, INTENT(IN) :: UNIT 
+   INTEGER, INTENT(IN) :: UNIT
    INTEGER, INTENT(OUT) :: SARRAY(13)  */
 
 extern void fstat_i4_sub (GFC_INTEGER_4 *, gfc_array_i4 *, GFC_INTEGER_4 *);
@@ -293,8 +289,6 @@ fstat_i4_sub (GFC_INTEGER_4 *unit, gfc_array_i4 *sarray, GFC_INTEGER_4 *status)
   int val;
   struct stat sb;
 
-  index_type stride[GFC_MAX_DIMENSIONS];
-      
   /* If the rank of the array is not 1, abort.  */
   if (GFC_DESCRIPTOR_RANK (sarray) != 1)
     runtime_error ("Array rank of SARRAY is not 1.");
@@ -318,7 +312,7 @@ fstat_i4_sub (GFC_INTEGER_4 *unit, gfc_array_i4 *sarray, GFC_INTEGER_4 *status)
 
       /* Inode number  */
       sarray->data[1 * sarray->dim[0].stride] = sb.st_ino;
-  
+
       /* File mode  */
       sarray->data[2 * sarray->dim[0].stride] = sb.st_mode;
 
@@ -330,7 +324,7 @@ fstat_i4_sub (GFC_INTEGER_4 *unit, gfc_array_i4 *sarray, GFC_INTEGER_4 *status)
 
       /* Owner's gid  */
       sarray->data[5 * sarray->dim[0].stride] = sb.st_gid;
-  
+
       /* ID of device containing directory entry for file (0 if not available) */
 #if HAVE_STRUCT_STAT_ST_RDEV
       sarray->data[6 * sarray->dim[0].stride] = sb.st_rdev;
@@ -365,7 +359,7 @@ fstat_i4_sub (GFC_INTEGER_4 *unit, gfc_array_i4 *sarray, GFC_INTEGER_4 *status)
 #endif
     }
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(fstat_i4_sub);
@@ -379,8 +373,6 @@ fstat_i8_sub (GFC_INTEGER_8 *unit, gfc_array_i8 *sarray, GFC_INTEGER_8 *status)
   int val;
   struct stat sb;
 
-  index_type stride[GFC_MAX_DIMENSIONS];
-      
   /* If the rank of the array is not 1, abort.  */
   if (GFC_DESCRIPTOR_RANK (sarray) != 1)
     runtime_error ("Array rank of SARRAY is not 1.");
@@ -416,7 +408,7 @@ fstat_i8_sub (GFC_INTEGER_8 *unit, gfc_array_i8 *sarray, GFC_INTEGER_8 *status)
 
       /* Owner's gid  */
       sarray->data[5 * sarray->dim[0].stride] = sb.st_gid;
-  
+
       /* ID of device containing directory entry for file (0 if not available) */
 #if HAVE_STRUCT_STAT_ST_RDEV
       sarray->data[6 * sarray->dim[0].stride] = sb.st_rdev;
@@ -451,7 +443,7 @@ fstat_i8_sub (GFC_INTEGER_8 *unit, gfc_array_i8 *sarray, GFC_INTEGER_8 *status)
 #endif
     }
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(fstat_i8_sub);
diff --git a/libgfortran/intrinsics/symlnk.c b/libgfortran/intrinsics/symlnk.c
index d18fe2f6929a1baf045680fe1e59873e08fb46b6..66fa990412abe5198fab671bd40536e412f12cac 100644
--- a/libgfortran/intrinsics/symlnk.c
+++ b/libgfortran/intrinsics/symlnk.c
@@ -35,6 +35,9 @@ Boston, MA 02111-1307, USA.  */
 
 #include "../io/io.h"
 
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -64,15 +67,15 @@ symlnk_i4_sub (char *path1, char *path2, GFC_INTEGER_4 *status,
   /* Make a null terminated copy of the strings.  */
   str1 = gfc_alloca (path1_len + 1);
   memcpy (str1, path1, path1_len);
-  str1[path1_len] = '\0'; 
+  str1[path1_len] = '\0';
 
   str2 = gfc_alloca (path2_len + 1);
   memcpy (str2, path2, path2_len);
-  str2[path2_len] = '\0'; 
+  str2[path2_len] = '\0';
 
   val = symlink (str1, str2);
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(symlnk_i4_sub);
@@ -97,15 +100,15 @@ symlnk_i8_sub (char *path1, char *path2, GFC_INTEGER_8 *status,
   /* Make a null terminated copy of the strings.  */
   str1 = gfc_alloca (path1_len + 1);
   memcpy (str1, path1, path1_len);
-  str1[path1_len] = '\0'; 
+  str1[path1_len] = '\0';
 
   str2 = gfc_alloca (path2_len + 1);
   memcpy (str2, path2, path2_len);
-  str2[path2_len] = '\0'; 
+  str2[path2_len] = '\0';
 
   val = symlink (str1, str2);
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (val == 0) ? 0 : errno;
 }
 iexport(symlnk_i8_sub);
diff --git a/libgfortran/intrinsics/unlink.c b/libgfortran/intrinsics/unlink.c
index 2b4792bf808ecd7b17daa109ce2e86e9e15583fb..52328de50f113e7649f917084bec66565f48e648 100644
--- a/libgfortran/intrinsics/unlink.c
+++ b/libgfortran/intrinsics/unlink.c
@@ -1,5 +1,5 @@
 /* Implementation of the UNLINK intrinsic.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    Contributed by Steven G. Kargl <kargls@comcast.net>.
 
 This file is part of the GNU Fortran 95 runtime library (libgfortran).
@@ -51,7 +51,7 @@ iexport_proto(unlink_i4_sub);
 void
 unlink_i4_sub (char *name, GFC_INTEGER_4 *status, gfc_charlen_type name_len)
 {
-  char *str, *s;
+  char *str;
   GFC_INTEGER_4 stat;
 
   /* Trim trailing spaces from name.  */
@@ -61,11 +61,11 @@ unlink_i4_sub (char *name, GFC_INTEGER_4 *status, gfc_charlen_type name_len)
   /* Make a null terminated copy of the string.  */
   str = gfc_alloca (name_len + 1);
   memcpy (str, name, name_len);
-  str[name_len] = '\0'; 
+  str[name_len] = '\0';
 
   stat = unlink (str);
 
-  if (status != NULL) 
+  if (status != NULL)
     *status = (stat == 0) ? stat : errno;
 }
 iexport(unlink_i4_sub);
diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c
index f0d8dbe205fded29212d2a3c557cedf1bf911f98..8fb62e34c13387ac5f6f8a31d5f5dfcd66289c4f 100644
--- a/libgfortran/io/unit.c
+++ b/libgfortran/io/unit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
    Contributed by Andy Vaught
 
 This file is part of the GNU Fortran 95 runtime library (libgfortran).
@@ -288,7 +288,6 @@ is_internal_unit ()
 void
 init_units (void)
 {
-  gfc_offset m, n;
   gfc_unit *u;
   int i;
 
diff --git a/libgfortran/runtime/string.c b/libgfortran/runtime/string.c
index 07f374eea048aa2902835ff3578ed75a71d242ff..5fff97f5a3cacc68932c0fe9b8411c8c75be0dc5 100644
--- a/libgfortran/runtime/string.c
+++ b/libgfortran/runtime/string.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
    Contributed by Paul Brook
 
 This file is part of the GNU Fortran 95 runtime library (libgfortran).
@@ -40,12 +40,11 @@ Boston, MA 02111-1307, USA.  */
 static int
 compare0 (const char *s1, int s1_len, const char *s2)
 {
-  int i;
   int len;
 
   /* Strip trailing blanks from the Fortran string.  */
-  len = fstrlen(s1, s1_len);
-  return strncasecmp(s1,s2,len) == 0;
+  len = fstrlen (s1, s1_len);
+  return strncasecmp (s1, s2, len) == 0;
 }