diff -Naur recode-3.6/lib/error.c recode-new/lib/error.c --- recode-3.6/lib/error.c 2000-08-02 21:21:13.000000000 -0400 +++ recode-new/lib/error.c 2005-11-27 02:50:50.000000000 -0500 @@ -80,7 +80,7 @@ /* The calling program should define program_name and set it to the name of the executing program. */ -extern char *program_name; +# define program_name getprogname() # ifdef HAVE_STRERROR_R # define __strerror_r strerror_r diff -Naur recode-3.6/src/hash.h recode-new/src/hash.h --- recode-3.6/src/hash.h 2000-08-02 21:21:15.000000000 -0400 +++ recode-new/src/hash.h 2005-11-27 01:59:59.000000000 -0500 @@ -21,6 +21,11 @@ /* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use obstacks instead of malloc, and recompile `hash.c' with same setting. */ +#define hash_lookup recode_hash_lookup +#define hash_delete recode_hash_delete +#define hash_free recode_hash_free +#define hash_insert recode_hash_insert + #ifndef PARAMS # if PROTOTYPES || __STDC__ # define PARAMS(Args) Args diff -Naur recode-3.6/src/libiconv.c recode-new/src/libiconv.c --- recode-3.6/src/libiconv.c 2000-07-01 13:13:25.000000000 -0400 +++ recode-new/src/libiconv.c 2005-11-27 01:59:59.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1999, 2000 Free Software Foundation, Inc. + Copyright © 1999, 2000, 2001 Free Software Foundation, Inc. Contributed by François Pinard , 1999, and Bruno Haible , 2000. @@ -195,12 +195,17 @@ memcpy() doesn't do here, because the regions might overlap. memmove() isn't worth it, because we rarely have to move more than 12 bytes. */ - if (input > input_buffer && input_left > 0) + cursor = input_buffer; + if (input_left > 0) { - cursor = input_buffer; - do - *cursor++ = *input++; - while (--input_left > 0); + if (input > input_buffer) + { + do + *cursor++ = *input++; + while (--input_left > 0); + } + else + cursor += input_left; } } diff -Naur recode-3.6/src/recode.c recode-new/src/recode.c --- recode-3.6/src/recode.c 2000-07-01 14:22:55.000000000 -0400 +++ recode-new/src/recode.c 2005-11-27 02:03:47.000000000 -0500 @@ -1,6 +1,6 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. - Contributed by François Pinard , 1990. + Copyright � 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. + Contributed by Fran�ois Pinard , 1990. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License @@ -32,8 +32,6 @@ #endif #include "hash.h" - -extern const char *program_name; /* Error handling. */ diff -Naur recode-3.6/src/request.c recode-new/src/request.c --- recode-3.6/src/request.c 2000-06-28 14:40:21.000000000 -0400 +++ recode-new/src/request.c 2005-11-27 01:59:59.000000000 -0500 @@ -1073,7 +1073,7 @@ if (task->output.cursor + 4 >= task->output.limit) { RECODE_OUTER outer = task->request->outer; - size_t old_size = task->output.limit - task->output.buffer; + size_t old_size = task->output.cursor - task->output.buffer; size_t new_size = task->output.cursor + 4 - task->output.buffer; /* FIXME: Rethink about how the error should be reported. */ diff -Naur recode-3.6/src/task.c recode-new/src/task.c --- recode-3.6/src/task.c 2000-07-01 13:50:43.000000000 -0400 +++ recode-new/src/task.c 2005-11-27 01:59:59.000000000 -0500 @@ -1198,6 +1198,8 @@ else success = transform_mere_copy (subtask); + task->output = subtask->output; + if (subtask->input.name && *subtask->input.name) fclose (subtask->input.file); if (subtask->output.name && *subtask->output.name)