* Change a couple of functions to accept either symbols or strings only.
[bpt/guile.git] / libguile / fports.c
index e765c77..658ab26 100644 (file)
@@ -184,9 +184,9 @@ SCM_DEFINE (scm_setvbuf, "setvbuf", 2, 1, 0,
 
   /* silently discards buffered chars.  */
   if (pt->read_buf != &pt->shortbuf)
-    scm_must_free (pt->read_buf);
+    free (pt->read_buf);
   if (pt->write_buf != &pt->shortbuf)
-    scm_must_free (pt->write_buf);
+    free (pt->write_buf);
 
   scm_fport_buffer_add (port, csize, csize);
   return SCM_UNSPECIFIED;
@@ -276,15 +276,13 @@ SCM_DEFINE (scm_open_file, "open-file", 2, 0, 0,
   char *mode;
   char *ptr;
 
-  SCM_VALIDATE_ROSTRING (1,filename);
-  SCM_VALIDATE_ROSTRING (2,modes);
-  if (SCM_SUBSTRP (filename))
-    filename = scm_makfromstr (SCM_ROCHARS (filename), SCM_ROLENGTH (filename), 0);
-  if (SCM_SUBSTRP (modes))
-    modes = scm_makfromstr (SCM_ROCHARS (modes), SCM_ROLENGTH (modes), 0);
+  SCM_VALIDATE_STRING (1, filename);
+  SCM_VALIDATE_STRING (2, modes);
+  SCM_STRING_COERCE_0TERMINATION_X (filename);
+  SCM_STRING_COERCE_0TERMINATION_X (modes);
 
-  file = SCM_ROCHARS (filename);
-  mode = SCM_ROCHARS (modes);
+  file = SCM_STRING_CHARS (filename);
+  mode = SCM_STRING_CHARS (modes);
 
   switch (*mode)
     {