summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2005-12-06 22:35:05 +0000
committerMarius Vollmer <mvo@zagadka.de>2005-12-06 22:35:05 +0000
commitd9c36d2a6f76b3c7acd29e324bee7f4e9da00075 (patch)
tree8d0897f374a46ca8a2469a58686b6b8606dde62e
parent08f489c98bed402dd196f85cdce231ae72abf9b7 (diff)
downloadguile-d9c36d2a6f76b3c7acd29e324bee7f4e9da00075.tar.gz
(scm_find_executable): Compile fix -- fgetc returns an
unsigned char cast to an int, or -1 for EOS.
-rw-r--r--libguile/ChangeLog7
-rw-r--r--libguile/script.c9
2 files changed, 13 insertions, 3 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 242ca3935..68fb26f57 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-07 Marius Vollmer <mvo@zagadka.de>
+
+ From Andy Wingo.
+
+ * script.c (scm_find_executable): Compile fix -- fgetc returns an
+ unsigned char cast to an int, or -1 for EOS.
+
2005-12-06 Marius Vollmer <mvo@zagadka.de>
* srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
diff --git a/libguile/script.c b/libguile/script.c
index a5e8b0af2..4a50ee233 100644
--- a/libguile/script.c
+++ b/libguile/script.c
@@ -120,7 +120,7 @@ char *
scm_find_executable (const char *name)
{
char tbuf[MAXPATHLEN];
- int i = 0;
+ int i = 0, c;
FILE *f;
/* fprintf(stderr, "s_f_e checking access %s ->%d\n", name, access(name, X_OK)); fflush(stderr); */
@@ -132,16 +132,19 @@ scm_find_executable (const char *name)
if ((fgetc (f) == '#') && (fgetc (f) == '!'))
{
while (1)
- switch (tbuf[i++] = fgetc (f))
+ switch (c = fgetc (f))
{
case /*WHITE_SPACES */ ' ':
case '\t':
case '\r':
case '\f':
case EOF:
- tbuf[--i] = 0;
+ tbuf[i] = 0;
fclose (f);
return scm_cat_path (0L, tbuf, 0L);
+ default:
+ tbuf[i++] = c;
+ break;
}
}
fclose (f);