1998-04-03 15:34  Ulrich Drepper  <drepper@cygnus.com>

	* iconv/gconv_int.h: New file.  Internal header.
	* iconv/Makefile (distribute): Add gconv_int.h.
	* iconv/gconv.h: Remove definition which are now in gconv_int.h.
	* iconv/gconv_builtin.c: Adopt for gconv_int.h introduction.
	* iconv/gconv_close.c: Likewise.
	* iconv/gconv_conf.c: Likewise.
	* iconv/gconv_db.c: Likewise.
	* iconv/gconv_dl.c: Likewise.
	* iconv/gconv_int.h: Likewise.
	* iconv/gconv_open.c: Likewise.
	* iconv/iconv.c: Likewise.
	* iconv/iconv_close.c: Likewise.
	* iconv/iconv_open.c: Likewise.
	* iconv/iconv_prog.c: Likewise.

1998-04-03  Ulrich Drepper  <drepper@cygnus.com>

	* iconvdata/ksc5601.c: Correct Perl scripts and make them omit the
	missing braces.
This commit is contained in:
Ulrich Drepper 1998-04-03 15:46:53 +00:00
parent 6f0ee4628f
commit e62c19f12c
15 changed files with 1701 additions and 1613 deletions

View File

@ -1,3 +1,25 @@
1998-04-03 15:34 Ulrich Drepper <drepper@cygnus.com>
* iconv/gconv_int.h: New file. Internal header.
* iconv/Makefile (distribute): Add gconv_int.h.
* iconv/gconv.h: Remove definition which are now in gconv_int.h.
* iconv/gconv_builtin.c: Adopt for gconv_int.h introduction.
* iconv/gconv_close.c: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_db.c: Likewise.
* iconv/gconv_dl.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_open.c: Likewise.
* iconv/iconv.c: Likewise.
* iconv/iconv_close.c: Likewise.
* iconv/iconv_open.c: Likewise.
* iconv/iconv_prog.c: Likewise.
1998-04-03 Ulrich Drepper <drepper@cygnus.com>
* iconvdata/ksc5601.c: Correct Perl scripts and make them omit the
missing braces.
1998-04-03 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nis_table.c (nis_list): Fix FOLLOW_PATH and ALL_RESULTS flags.

View File

@ -25,7 +25,7 @@ headers = iconv.h gconv.h
routines = iconv_open iconv iconv_close \
gconv_open gconv gconv_close gconv_db gconv_conf \
gconv_dl gconv_builtin gconv_simple
distribute = gconv_builtin.h
distribute = gconv_builtin.h gconv_int.h
others = iconv_prog

View File

@ -1,6 +1,5 @@
/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
@ -17,14 +16,16 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This header provides no interface for a user to the internals of
the gconv implementation in the libc. Therefore there is no use
for these definitions beside for writing additional gconv modules. */
#ifndef _GCONV_H
#define _GCONV_H 1
#include <features.h>
#include <sys/types.h>
#include <regex.h>
__BEGIN_DECLS
#define __need_size_t
#include <stddef.h>
/* ISO 10646 value used to signal invalid value. */
#define UNKNOWN_10646_CHAR ((wchar_t) 0xfffd)
@ -47,18 +48,6 @@ enum
};
/* Structure for alias definition. Simply to strings. */
struct gconv_alias
{
__const char *fromname;
__const char *toname;
};
/* Default size of intermediate buffers. */
#define GCONV_DEFAULT_BUFSIZE 8160
/* Forward declarations. */
struct gconv_step;
struct gconv_step_data;
@ -101,6 +90,7 @@ struct gconv_step_data
void *data; /* Pointer to step-local data. */
};
/* Combine conversion step description with data. */
typedef struct gconv_info
{
@ -109,107 +99,4 @@ typedef struct gconv_info
struct gconv_step_data *data;
} *gconv_t;
/* Description for an available conversion module. */
struct gconv_module
{
__const char *from_pattern;
__const char *from_constpfx;
size_t from_constpfx_len;
__const regex_t *from_regex;
__const char *to_string;
int cost;
__const char *module_name;
};
/* Global variables. */
/* Database of alias names. */
extern void *__gconv_alias_db;
/* Array with available modules. */
extern size_t __gconv_nmodules;
extern struct gconv_module **__gconv_modules_db;
/* Return in *HANDLE decriptor for transformation from FROMSET to TOSET. */
extern int __gconv_open __P ((__const char *__toset, __const char *__fromset,
gconv_t *__handle));
/* Free resources associated with transformation descriptor CD. */
extern int __gconv_close __P ((gconv_t cd));
/* Transform at most *INBYTESLEFT bytes from buffer starting at *INBUF
according to rules described by CD and place up to *OUTBYTESLEFT
bytes in buffer starting at *OUTBUF. Return number of written
characters in *CONVERTED if this pointer is not null. */
extern int __gconv __P ((gconv_t __cd,
__const char **__inbuf, size_t *__inbytesleft,
char **__outbuf, size_t *__outbytesleft,
size_t *__converted));
/* Return in *HANDLE a pointer to an array with *NSTEPS elements describing
the single steps necessary for transformation from FROMSET to TOSET. */
extern int __gconv_find_transform __P ((__const char *__toset,
__const char *__fromset,
struct gconv_step **__handle,
size_t *__nsteps));
/* Read all the configuration data and cache it. */
extern void __gconv_read_conf __P ((void));
/* Comparison function to search alias. */
extern int __gconv_alias_compare __P ((__const void *__p1,
__const void *__p2));
/* Clear reference to transformation step implementations which might
cause the code to be unloaded. */
extern int __gconv_close_transform __P ((struct gconv_step *__steps,
size_t __nsteps));
/* Find in the shared object associated with HANDLE for a function with
name NAME. Return function pointer or NULL. */
extern void *__gconv_find_func __P ((void *__handle, __const char *__name));
/* Load shared object named by NAME. If already loaded increment reference
count. */
extern void *__gconv_find_shlib __P ((__const char *__name));
/* Release shared object. If no further reference is available unload
the object. */
extern int __gconv_release_shlib __P ((void *__handle));
/* Fill STEP with information about builtin module with NAME. */
extern void __gconv_get_builtin_trans __P ((__const char *__name,
struct gconv_step *__step));
/* Builtin transformations. */
#ifdef _LIBC
# define __BUILTIN_TRANS(Name) \
extern int Name __P ((struct gconv_step *__step, \
struct gconv_step_data *__data, __const char *__inbuf,\
size_t *__inlen, size_t *__written, int __do_flush))
__BUILTIN_TRANS (__gconv_transform_dummy);
__BUILTIN_TRANS (__gconv_transform_ucs4_utf8);
__BUILTIN_TRANS (__gconv_transform_utf8_ucs4);
__BUILTIN_TRANS (__gconv_transform_ucs2_ucs4);
__BUILTIN_TRANS (__gconv_transform_ucs4_ucs2);
# undef __BUITLIN_TRANS
extern int __gconv_transform_init_rstate __P ((struct gconv_step *__step,
struct gconv_step_data *__data));
extern void __gconv_transform_end_rstate __P ((struct gconv_step_data *__data));
#endif
__END_DECLS
#endif /* gconv.h */

View File

@ -18,9 +18,10 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <gconv.h>
#include <string.h>
#include <gconv_int.h>
#include <assert.h>
@ -48,6 +49,7 @@ static struct builtin_map
void
internal_function
__gconv_get_builtin_trans (const char *name, struct gconv_step *step)
{
size_t cnt;

View File

@ -1,5 +1,5 @@
/* Release any resource associated with given conversion descriptor.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -18,11 +18,13 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <gconv.h>
#include <stdlib.h>
#include <gconv_int.h>
int
internal_function
__gconv_close (gconv_t cd)
{
struct gconv_step *srunp;

View File

@ -20,7 +20,6 @@
#include <ctype.h>
#include <errno.h>
#include <gconv.h>
#include <search.h>
#include <stdio.h>
#include <stdlib.h>
@ -28,6 +27,8 @@
#include <unistd.h>
#include <sys/param.h>
#include <gconv_int.h>
/* This is the default path where we look for module lists. */
static const char default_gconv_path[] = GCONV_PATH;
@ -369,6 +370,7 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len,
/* Read all configuration files found in the user-specified and the default
path. */
void
internal_function
__gconv_read_conf (void)
{
const char *user_path = __secure_getenv ("GCONV_PATH");

View File

@ -1,5 +1,5 @@
/* Provide access to the collection of available transformation modules.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -18,12 +18,13 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <gconv.h>
#include <search.h>
#include <stdlib.h>
#include <string.h>
#include <bits/libc-lock.h>
#include <gconv_int.h>
/* Simple data structure for alias mapping. We have two names, `from'
and `to'. */
@ -93,6 +94,7 @@ static void *known_derivations;
/* Look up whether given transformation was already requested before. */
static int
internal_function
derivation_lookup (const char *fromset, const char *toset,
struct gconv_step **handle, size_t *nsteps)
{
@ -114,6 +116,7 @@ derivation_lookup (const char *fromset, const char *toset,
/* Add new derivation to list of known ones. */
static void
internal_function
add_derivation (const char *fromset, const char *toset,
struct gconv_step *handle, size_t nsteps)
{
@ -142,6 +145,7 @@ add_derivation (const char *fromset, const char *toset,
}
static void
internal_function
free_derivation (void *p)
{
struct known_derivation *deriv = (struct known_derivation *) p;
@ -479,6 +483,7 @@ find_derivation (const char *toset, const char *toset_expand,
int
internal_function
__gconv_find_transform (const char *toset, const char *fromset,
struct gconv_step **handle, size_t *nsteps)
{
@ -523,6 +528,7 @@ __gconv_find_transform (const char *toset, const char *fromset,
/* Release the entries of the modules list. */
int
internal_function
__gconv_close_transform (struct gconv_step *steps, size_t nsteps)
{
int result = GCONV_OK;

View File

@ -19,7 +19,6 @@
Boston, MA 02111-1307, USA. */
#include <dlfcn.h>
#include <gconv.h>
#include <inttypes.h>
#include <search.h>
#include <stdlib.h>
@ -28,6 +27,8 @@
#include <elf/ldsodefs.h>
#include <sys/param.h>
#include <gconv_int.h>
/* This is a tuning parameter. If a transformation module is not used
anymore it gets not immediately unloaded. Instead we wait a certain
@ -112,6 +113,7 @@ struct get_sym_args
};
static void
internal_function
get_sym (void *a)
{
struct get_sym_args *args = (struct get_sym_args *) a;
@ -123,6 +125,7 @@ get_sym (void *a)
void *
internal_function
__gconv_find_func (void *handle, const char *name)
{
struct get_sym_args args;
@ -139,6 +142,7 @@ __gconv_find_func (void *handle, const char *name)
/* Open the gconv database if necessary. A non-negative return value
means success. */
void *
internal_function
__gconv_find_shlib (const char *name)
{
void *result = NULL;
@ -234,6 +238,7 @@ do_release_shlib (const void *nodep, VISIT value, int level)
/* Notify system that a shared object is not longer needed. */
int
internal_function
__gconv_release_shlib (void *handle)
{
/* Acquire the lock. */

153
iconv/gconv_int.h Normal file
View File

@ -0,0 +1,153 @@
/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _GCONV_INT_H
#define _GCONV_INT_H 1
#include "gconv.h"
#include <regex.h>
__BEGIN_DECLS
/* Structure for alias definition. Simply to strings. */
struct gconv_alias
{
__const char *fromname;
__const char *toname;
};
/* Default size of intermediate buffers. */
#define GCONV_DEFAULT_BUFSIZE 8160
/* Description for an available conversion module. */
struct gconv_module
{
__const char *from_pattern;
__const char *from_constpfx;
size_t from_constpfx_len;
__const regex_t *from_regex;
__const char *to_string;
int cost;
__const char *module_name;
};
/* Global variables. */
/* Database of alias names. */
extern void *__gconv_alias_db;
/* Array with available modules. */
extern size_t __gconv_nmodules;
extern struct gconv_module **__gconv_modules_db;
/* Return in *HANDLE decriptor for transformation from FROMSET to TOSET. */
extern int __gconv_open __P ((__const char *__toset, __const char *__fromset,
gconv_t *__handle))
internal_function;
/* Free resources associated with transformation descriptor CD. */
extern int __gconv_close __P ((gconv_t cd))
internal_function;
/* Transform at most *INBYTESLEFT bytes from buffer starting at *INBUF
according to rules described by CD and place up to *OUTBYTESLEFT
bytes in buffer starting at *OUTBUF. Return number of written
characters in *CONVERTED if this pointer is not null. */
extern int __gconv __P ((gconv_t __cd,
__const char **__inbuf, size_t *__inbytesleft,
char **__outbuf, size_t *__outbytesleft,
size_t *__converted))
internal_function;
/* Return in *HANDLE a pointer to an array with *NSTEPS elements describing
the single steps necessary for transformation from FROMSET to TOSET. */
extern int __gconv_find_transform __P ((__const char *__toset,
__const char *__fromset,
struct gconv_step **__handle,
size_t *__nsteps))
internal_function;
/* Read all the configuration data and cache it. */
extern void __gconv_read_conf __P ((void))
internal_function;
/* Comparison function to search alias. */
extern int __gconv_alias_compare __P ((__const void *__p1,
__const void *__p2));
/* Clear reference to transformation step implementations which might
cause the code to be unloaded. */
extern int __gconv_close_transform __P ((struct gconv_step *__steps,
size_t __nsteps))
internal_function;
/* Find in the shared object associated with HANDLE for a function with
name NAME. Return function pointer or NULL. */
extern void *__gconv_find_func __P ((void *__handle, __const char *__name))
internal_function;
/* Load shared object named by NAME. If already loaded increment reference
count. */
extern void *__gconv_find_shlib __P ((__const char *__name))
internal_function;
/* Release shared object. If no further reference is available unload
the object. */
extern int __gconv_release_shlib __P ((void *__handle))
internal_function;
/* Fill STEP with information about builtin module with NAME. */
extern void __gconv_get_builtin_trans __P ((__const char *__name,
struct gconv_step *__step))
internal_function;
/* Builtin transformations. */
#ifdef _LIBC
# define __BUILTIN_TRANS(Name) \
extern int Name __P ((struct gconv_step *__step, \
struct gconv_step_data *__data, __const char *__inbuf,\
size_t *__inlen, size_t *__written, int __do_flush))
__BUILTIN_TRANS (__gconv_transform_dummy);
__BUILTIN_TRANS (__gconv_transform_ucs4_utf8);
__BUILTIN_TRANS (__gconv_transform_utf8_ucs4);
__BUILTIN_TRANS (__gconv_transform_ucs2_ucs4);
__BUILTIN_TRANS (__gconv_transform_ucs4_ucs2);
# undef __BUITLIN_TRANS
extern int __gconv_transform_init_rstate __P ((struct gconv_step *__step,
struct gconv_step_data *__data));
extern void __gconv_transform_end_rstate __P ((struct gconv_step_data *__data));
#endif
__END_DECLS
#endif /* gconv_int.h */

View File

@ -1,5 +1,5 @@
/* Find matching transformation algorithms and initialize steps.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -19,11 +19,13 @@
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <gconv.h>
#include <stdlib.h>
#include <gconv_int.h>
int
internal_function
__gconv_open (const char *toset, const char *fromset, gconv_t *handle)
{
struct gconv_step *steps;

View File

@ -1,6 +1,6 @@
/* Convert characters in input buffer using conversion descriptor to
output buffer.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -21,7 +21,8 @@
#include <errno.h>
#include <iconv.h>
#include <gconv.h>
#include <gconv_int.h>
#include <assert.h>

View File

@ -1,5 +1,5 @@
/* Release any resource associated with given conversion descriptor.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -21,7 +21,7 @@
#include <errno.h>
#include <iconv.h>
#include <gconv.h>
#include <gconv_int.h>
int

View File

@ -24,7 +24,7 @@
#include <stdlib.h>
#include <string.h>
#include <gconv.h>
#include <gconv_int.h>
static inline void

View File

@ -23,7 +23,6 @@
#include <errno.h>
#include <error.h>
#include <fcntl.h>
#include <gconv.h>
#include <iconv.h>
#include <locale.h>
#include <search.h>
@ -32,6 +31,7 @@
#include <string.h>
#include <unistd.h>
#include <sys/mman.h>
#include <gconv_int.h>
/* Get libc version number. */
#include "../version.h"

File diff suppressed because it is too large Load Diff