From 04b9037c707f3fd179ded0648fa654aa9c95a2a8 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Thu, 16 May 2013 19:21:59 +0100 Subject: [PATCH] Simplify and improve Guile FILE * in typemap Fix incorrect special variable $name and remove unnecessary temporary variable. --- Lib/guile/ports.i | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/Lib/guile/ports.i b/Lib/guile/ports.i index 5940b4d3b..7691d3e31 100644 --- a/Lib/guile/ports.i +++ b/Lib/guile/ports.i @@ -21,33 +21,30 @@ */ %typemap(in, doc="$NAME is a file port or a FILE * pointer") FILE * - ( int closep ) { - if (SWIG_ConvertPtr($input, (void**) &($1), $1_descriptor, 0) == 0) { - closep = 0; - } - else if(!(SCM_FPORTP($input))) - scm_wrong_type_arg("$name", $argnum, $input); - else { - int fd; - if (SCM_OUTPUT_PORT_P($input)) - scm_force_output($input); - fd=dup(SCM_FPORT_FDES($input)); - if(fd==-1) - scm_misc_error("$name", strerror(errno), SCM_EOL); - $1=fdopen(fd, - SCM_OUTPUT_PORT_P($input) - ? (SCM_INPUT_PORT_P($input) - ? "r+" : "w") - : "r"); - if($1==NULL) - scm_misc_error("$name", strerror(errno), SCM_EOL); - closep = 1; + if (SWIG_ConvertPtr($input, (void**) &($1), $1_descriptor, 0) != 0) { + if (!(SCM_FPORTP($input))) { + scm_wrong_type_arg("$symname", $argnum, $input); + } else { + int fd; + if (SCM_OUTPUT_PORT_P($input)) { + scm_force_output($input); + } + fd=dup(SCM_FPORT_FDES($input)); + if (fd==-1) { + scm_misc_error("$symname", strerror(errno), SCM_EOL); + } + $1=fdopen(fd, SCM_OUTPUT_PORT_P($input) ? (SCM_INPUT_PORT_P($input) ? "r+" : "w") : "r"); + if ($1==NULL) { + scm_misc_error("$symname", strerror(errno), SCM_EOL); + } + } } } %typemap(freearg) FILE* { - if (closep$argnum) + if ($1) { fclose($1); + } }