Simplify and improve Guile FILE * in typemap

Fix incorrect special variable $name and remove unnecessary temporary
variable.
This commit is contained in:
William S Fulton 2013-05-16 19:21:59 +01:00
commit 04b9037c70

View file

@ -21,33 +21,30 @@
*/ */
%typemap(in, doc="$NAME is a file port or a FILE * pointer") FILE * %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) { if (SWIG_ConvertPtr($input, (void**) &($1), $1_descriptor, 0) != 0) {
closep = 0; if (!(SCM_FPORTP($input))) {
} scm_wrong_type_arg("$symname", $argnum, $input);
else if(!(SCM_FPORTP($input))) } else {
scm_wrong_type_arg("$name", $argnum, $input);
else {
int fd; int fd;
if (SCM_OUTPUT_PORT_P($input)) if (SCM_OUTPUT_PORT_P($input)) {
scm_force_output($input); scm_force_output($input);
}
fd=dup(SCM_FPORT_FDES($input)); fd=dup(SCM_FPORT_FDES($input));
if(fd==-1) if (fd==-1) {
scm_misc_error("$name", strerror(errno), SCM_EOL); scm_misc_error("$symname", strerror(errno), SCM_EOL);
$1=fdopen(fd, }
SCM_OUTPUT_PORT_P($input) $1=fdopen(fd, SCM_OUTPUT_PORT_P($input) ? (SCM_INPUT_PORT_P($input) ? "r+" : "w") : "r");
? (SCM_INPUT_PORT_P($input) if ($1==NULL) {
? "r+" : "w") scm_misc_error("$symname", strerror(errno), SCM_EOL);
: "r"); }
if($1==NULL) }
scm_misc_error("$name", strerror(errno), SCM_EOL);
closep = 1;
} }
} }
%typemap(freearg) FILE* { %typemap(freearg) FILE* {
if (closep$argnum) if ($1) {
fclose($1); fclose($1);
} }
}