summaryrefslogtreecommitdiff
path: root/libguile/filesys.c
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2001-06-26 10:59:34 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2001-06-26 10:59:34 +0000
commit36284627919a6968174b5f17369349187a2b4b1b (patch)
tree216f50e019e44f18a0d96769c0db47775e26b6f0 /libguile/filesys.c
parentfbcd68abe9c55fdaa762246a84f3324f11f1b0f8 (diff)
downloadguile-36284627919a6968174b5f17369349187a2b4b1b.tar.gz
* Deprecated scm_makfromstr and added scm_mem2string as a replacement.
* Eliminated some potential gc problems. * Eliminated some signedness problems. * Minor changes.
Diffstat (limited to 'libguile/filesys.c')
-rw-r--r--libguile/filesys.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/libguile/filesys.c b/libguile/filesys.c
index 913343234..1d4afd341 100644
--- a/libguile/filesys.c
+++ b/libguile/filesys.c
@@ -333,7 +333,7 @@ SCM_DEFINE (scm_close, "close", 1, 0, 0,
not an error. */
if (rv < 0 && errno != EBADF)
SCM_SYSERROR;
- return SCM_NEGATE_BOOL(rv < 0);
+ return SCM_BOOL (rv >= 0);
}
#undef FUNC_NAME
@@ -529,23 +529,22 @@ SCM_DEFINE (scm_stat, "stat", 1, 0, 0,
struct stat stat_temp;
if (SCM_INUMP (object))
- SCM_SYSCALL (rv = fstat (SCM_INUM (object), &stat_temp));
+ {
+ SCM_SYSCALL (rv = fstat (SCM_INUM (object), &stat_temp));
+ }
+ else if (SCM_STRINGP (object))
+ {
+ SCM_STRING_COERCE_0TERMINATION_X (object);
+ SCM_SYSCALL (rv = stat (SCM_STRING_CHARS (object), &stat_temp));
+ }
else
{
- SCM_VALIDATE_NIM (1,object);
- if (SCM_STRINGP (object))
- {
- SCM_STRING_COERCE_0TERMINATION_X (object);
- SCM_SYSCALL (rv = stat (SCM_STRING_CHARS (object), &stat_temp));
- }
- else
- {
- object = SCM_COERCE_OUTPORT (object);
- SCM_VALIDATE_OPFPORT(1,object);
- fdes = SCM_FPORT_FDES (object);
- SCM_SYSCALL (rv = fstat (fdes, &stat_temp));
- }
+ object = SCM_COERCE_OUTPORT (object);
+ SCM_VALIDATE_OPFPORT (1, object);
+ fdes = SCM_FPORT_FDES (object);
+ SCM_SYSCALL (rv = fstat (fdes, &stat_temp));
}
+
if (rv == -1)
{
int en = errno;
@@ -735,7 +734,7 @@ SCM_DEFINE (scm_readdir, "readdir", 1, 0, 0,
if (errno != 0)
SCM_SYSERROR;
- return (rdent ? scm_makfromstr (rdent->d_name, NAMLEN (rdent), 0)
+ return (rdent ? scm_mem2string (rdent->d_name, NAMLEN (rdent))
: SCM_EOF_VAL);
}
#undef FUNC_NAME
@@ -845,7 +844,7 @@ SCM_DEFINE (scm_getcwd, "getcwd", 0, 0, 0,
}
if (rv == 0)
SCM_SYSERROR;
- result = scm_makfromstr (wd, strlen (wd), 0);
+ result = scm_mem2string (wd, strlen (wd));
scm_must_free (wd);
return result;
}
@@ -1272,7 +1271,7 @@ SCM_DEFINE (scm_readlink, "readlink", 1, 0, 0,
}
if (rv == -1)
SCM_SYSERROR;
- result = scm_makfromstr (buf, rv, 0);
+ result = scm_mem2string (buf, rv);
scm_must_free (buf);
return result;
}