mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 00:10:10 +00:00
Update.
1998-05-15 21:07 Ulrich Drepper <drepper@cygnus.com> * iconv/gconv.h (gconv_step_data): Add new fields invocation_counter and internal_use. * iconv/gconv_open.c (__gconv_open): Initialize invocation_counter and internal_use. * iconv/skeleton.c: Increment invocation_counter. * iconvdata/iso-2022-kr.c: When used in iconv() emit designator sequence first. * iconv/skeleton.c (FROM_DIRECTION): Completely embrace expression. * iconvdata/iso-2022-jp.c: Likewise. * iconvdata/iso646.c: Likewise. * iconvdata/Makefile: Correct rpath definition for ISO-2022-KR.
This commit is contained in:
parent
bd687f7ab4
commit
e3e0a182a7
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
1998-05-15 21:07 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* iconv/gconv.h (gconv_step_data): Add new fields invocation_counter
|
||||
and internal_use.
|
||||
* iconv/gconv_open.c (__gconv_open): Initialize invocation_counter
|
||||
and internal_use.
|
||||
* iconv/skeleton.c: Increment invocation_counter.
|
||||
* iconvdata/iso-2022-kr.c: When used in iconv() emit designator
|
||||
sequence first.
|
||||
|
||||
* iconv/skeleton.c (FROM_DIRECTION): Completely embrace expression.
|
||||
* iconvdata/iso-2022-jp.c: Likewise.
|
||||
* iconvdata/iso646.c: Likewise.
|
||||
|
||||
* iconvdata/Makefile: Correct rpath definition for ISO-2022-KR.
|
||||
|
||||
1998-05-15 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* iconv/gconv_db.c (derivation_lookup): Use __tfind correctly.
|
||||
|
@ -100,8 +100,17 @@ struct gconv_step_data
|
||||
char *outbuf; /* Output buffer for this step. */
|
||||
char *outbufend; /* Address of first byte after the output buffer. */
|
||||
|
||||
/* Is this the last module in the chain. */
|
||||
int is_last;
|
||||
|
||||
/* Counter for number of invocations of the module function for this
|
||||
desriptor. */
|
||||
int invocation_counter;
|
||||
|
||||
/* Flag whether this is an internal use of the module (in the mb*towc*
|
||||
and wc*tomb* functions) or regular with iconv(3). */
|
||||
int internal_use;
|
||||
|
||||
mbstate_t *statep;
|
||||
mbstate_t __state; /* This element should not be used directly by
|
||||
any module; always use STATEP! */
|
||||
|
@ -65,6 +65,12 @@ __gconv_open (const char *toset, const char *fromset, gconv_t *handle)
|
||||
buffer. */
|
||||
data[cnt].is_last = cnt == nsteps - 1;
|
||||
|
||||
/* Reset the counter. */
|
||||
data[cnt].invocation_counter = 0;
|
||||
|
||||
/* It's a regular use. */
|
||||
data[cnt].internal_use = 0;
|
||||
|
||||
/* We use the `mbstate_t' member in DATA. */
|
||||
data[cnt].statep = &data[cnt].__state;
|
||||
|
||||
|
@ -90,7 +90,7 @@ static int from_object;
|
||||
static int to_object;
|
||||
|
||||
# ifndef FROM_DIRECTION
|
||||
# define FROM_DIRECTION step->data == &from_object
|
||||
# define FROM_DIRECTION (step->data == &from_object)
|
||||
# endif
|
||||
#else
|
||||
# ifndef FROM_DIRECTION
|
||||
@ -346,6 +346,9 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data,
|
||||
#ifdef END_LOOP
|
||||
END_LOOP
|
||||
#endif
|
||||
|
||||
/* We finished one use of this step. */
|
||||
++data->invocation_counter;
|
||||
}
|
||||
|
||||
return status;
|
||||
|
@ -165,8 +165,8 @@ $(objpfx)EUC-TW.so: $(objpfx)libCNS.so
|
||||
LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,$(gconvdir)
|
||||
$(objpfx)ISO-2022-JP.so: $(objpfx)libJIS.so $(objpfx)libGB.so \
|
||||
$(objpfx)libCNS.so $(objpfx)libKSC.so
|
||||
LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,$(gconvdir)
|
||||
$(objpfx)ISO-2022-JP.so: $(objpfx)libKSC.so
|
||||
LDFLAGS-ISO-2022-KR.so = -Wl,-rpath,$(gconvdir)
|
||||
$(objpfx)ISO-2022-KR.so: $(objpfx)libKSC.so
|
||||
|
||||
LDFLAGS-libJIS.so = -Wl,-soname,$(@F)
|
||||
LDFLAGS-libKSC.so = -Wl,-soname,$(@F)
|
||||
|
@ -50,7 +50,7 @@ struct gap
|
||||
#define MAX_NEEDED_FROM 4
|
||||
#define MIN_NEEDED_TO 4
|
||||
#define MAX_NEEDED_TO 4
|
||||
#define FROM_DIRECTION dir == from_iso2022jp
|
||||
#define FROM_DIRECTION (dir == from_iso2022jp)
|
||||
#define PREPARE_LOOP \
|
||||
enum direction dir = ((struct iso2022jp_data *) step->data)->dir; \
|
||||
enum variant var = ((struct iso2022jp_data *) step->data)->var; \
|
||||
|
@ -44,7 +44,18 @@
|
||||
#define MAX_NEEDED_TO 4
|
||||
#define PREPARE_LOOP \
|
||||
int save_set; \
|
||||
int set = data->statep->count;
|
||||
int set = data->statep->count; \
|
||||
if (!FROM_DIRECTION && !data->internal_use && data->invocation_counter == 0)\
|
||||
{ \
|
||||
/* Emit the designator sequence. */ \
|
||||
if (outptr + 4 > outend) \
|
||||
return GCONV_FULL_OUTPUT; \
|
||||
\
|
||||
*outptr++ = '\x1b'; \
|
||||
*outptr++ = '\x24'; \
|
||||
*outptr++ = '\x29'; \
|
||||
*outptr++ = '\x43'; \
|
||||
}
|
||||
#define EXTRA_LOOP_ARGS , set
|
||||
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
||||
#define DEFINE_FINI 0
|
||||
#define MIN_NEEDED_FROM 1
|
||||
#define MIN_NEEDED_TO 4
|
||||
#define FROM_DIRECTION dir == from_iso646
|
||||
#define FROM_DIRECTION (dir == from_iso646)
|
||||
#define PREPARE_LOOP \
|
||||
enum direction dir = ((struct iso646_data *) step->data)->dir; \
|
||||
enum variant var = ((struct iso646_data *) step->data)->var;
|
||||
|
Loading…
Reference in New Issue
Block a user