glibc/locale/programs/localedef.h
Ulrich Drepper a7b65cdc9a Update.
2002-04-18  Ulrich Drepper  <drepper@redhat.com>

	* locale/programs/locfile.c (to_archive): New variable.  To collect
	data which has to be added to the locale archive.
	(write_all_categories): Take new third parameter with locale name.
	Unless no_archive flag set add new locale data to the archive
	(write_locale_data): Unless no-archive flag set store generated data
	in to_archive data structure instead of generation output file.
	Add new parameter with locale category index.
	* locale/programs/locfile.h: Add new parameters in declaractions of
	write_all_categories and write_locale_data.
	* locale/programs/localedef.c: Recognize --no-archive, --list-archive,
	--add-to-archive, and --delete-from-archive options.  Pass extra
	parameter to write_all_categories.
	* locale/programs/localedef.h: Add prototypes for functions in
	locarchive.c.
	* locale/locarchive.h: New file.
	* locale/programs/locarchive.c: New file.
	* locale/Makefile (distribute): Add programs/locarchive.c and
	locarchive.h.
	(localedef-modules): Add md5 and locarchive.
	Add vpath to crypt subdir for md5.c.

	* locale/programs/ld-address.c: Pass locale category ID as new second
	parameter to write_locale_data.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/ld-ctype.c: Likewise.
	* locale/programs/ld-identification.c: Likewise.
	* locale/programs/ld-measurement.c: Likewise.
	* locale/programs/ld-messages.c: Likewise.
	* locale/programs/ld-monetary.c: Likewise.
	* locale/programs/ld-name.c: Likewise.
	* locale/programs/ld-numeric.c: Likewise.
	* locale/programs/ld-paper.c: Likewise.
	* locale/programs/ld-telephone.c: Likewise.
	* locale/programs/ld-time.c: Likewise.

	* locale/simple-hash.c: Move compute_hashval function from here...
	* locale/hashval.h: ...to here.  New file.
	* locale/simple-hash.h: Add prototype for compute_hashval.

	* include/libintl.h: Minor cleanups.

	* elf/reldep7.c: New file.
	* elf/reldep7mod1.c: New file.
	* elf/reldep7mod2.c: New file.
	* elf/Makefile: Add rules to build and run reldep7.
2002-04-18 08:08:23 +00:00

181 lines
5.2 KiB
C

/* General definitions for localedef(1).
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#ifndef _LOCALEDEF_H
#define _LOCALEDEF_H 1
/* Get the basic locale definitions. */
#include <errno.h>
#include <locale.h>
#include <stdbool.h>
#include <stddef.h>
#include "repertoire.h"
#include "../locarchive.h"
/* We need a bitmask for the locales. */
enum
{
CTYPE_LOCALE = 1 << LC_CTYPE,
NUMERIC_LOCALE = 1 << LC_NUMERIC,
TIME_LOCALE = 1 << LC_TIME,
COLLATE_LOCALE = 1 << LC_COLLATE,
MONETARY_LOCALE = 1 << LC_MONETARY,
MESSAGES_LOCALE = 1 << LC_MESSAGES,
PAPER_LOCALE = 1 << LC_PAPER,
NAME_LOCALE = 1 << LC_NAME,
ADDRESS_LOCALE = 1 << LC_ADDRESS,
TELEPHONE_LOCALE = 1 << LC_TELEPHONE,
MEASUREMENT_LOCALE = 1 << LC_MEASUREMENT,
IDENTIFICATION_LOCALE = 1 << LC_IDENTIFICATION,
ALL_LOCALES = (1 << LC_CTYPE
| 1 << LC_NUMERIC
| 1 << LC_TIME
| 1 << LC_COLLATE
| 1 << LC_MONETARY
| 1 << LC_MESSAGES
| 1 << LC_PAPER
| 1 << LC_NAME
| 1 << LC_ADDRESS
| 1 << LC_TELEPHONE
| 1 << LC_MEASUREMENT
| 1 << LC_IDENTIFICATION)
};
/* Opaque types for the different locales. */
struct locale_ctype_t;
struct locale_collate_t;
struct locale_monetary_t;
struct locale_numeric_t;
struct locale_time_t;
struct locale_messages_t;
struct locale_paper_t;
struct locale_name_t;
struct locale_address_t;
struct locale_telephone_t;
struct locale_measurement_t;
struct locale_identification_t;
/* Definitions for the locale. */
struct localedef_t
{
struct localedef_t *next;
const char *name;
int needed;
int avail;
union
{
void *generic;
struct locale_ctype_t *ctype;
struct locale_collate_t *collate;
struct locale_monetary_t *monetary;
struct locale_numeric_t *numeric;
struct locale_time_t *time;
struct locale_messages_t *messages;
struct locale_paper_t *paper;
struct locale_name_t *name;
struct locale_address_t *address;
struct locale_telephone_t *telephone;
struct locale_measurement_t *measurement;
struct locale_identification_t *identification;
} categories[__LC_LAST];
size_t len[__LC_LAST];
const char *copy_name[__LC_LAST];
const char *repertoire_name;
};
/* Global variables of the localedef program. */
extern int verbose;
extern int be_quiet;
extern int oldstyle_tables;
extern const char *repertoire_global;
extern int max_locarchive_open_retry;
extern bool no_archive;
/* Prototypes for a few program-wide used functions. */
extern void *xmalloc (size_t __n);
extern void *xcalloc (size_t __n, size_t __size);
extern void *xrealloc (void *__p, size_t __n);
extern char *xstrdup (const char *__str);
/* Wrapper to switch LC_CTYPE back to the locale specified in the
environment for output. */
#define WITH_CUR_LOCALE(stmt) \
do { \
int saved_errno = errno; \
const char *cur_locale_ = setlocale (LC_CTYPE, NULL); \
setlocale (LC_CTYPE, ""); \
errno = saved_errno; \
stmt; \
setlocale (LC_CTYPE, cur_locale_); \
} while (0)
/* Mark given locale as to be read. */
extern struct localedef_t *add_to_readlist (int locale, const char *name,
const char *repertoire_name,
int generate,
struct localedef_t *copy_locale);
/* Find the information for the locale NAME. */
extern struct localedef_t *find_locale (int locale, const char *name,
const char *repertoire_name,
const struct charmap_t *charmap);
/* Load (if necessary) the information for the locale NAME. */
extern struct localedef_t *load_locale (int locale, const char *name,
const char *repertoire_name,
const struct charmap_t *charmap,
struct localedef_t *copy_locale);
/* Open the locale archive. */
extern void open_archive (struct locarhandle *ah);
/* Close the locale archive. */
extern void close_archive (struct locarhandle *ah);
/* Add given locale data to the archive. */
extern int add_locale_to_archive (struct locarhandle *ah, const char *name,
locale_data_t data, bool replace);
/* Add content of named directories to locale archive. */
extern int add_locales_to_archive (size_t nlist, char *list[], bool replace);
/* Removed named locales from archive. */
extern int delete_locales_from_archive (size_t nlist, char *list[]);
/* List content of locale archive. */
extern void show_archive_content (void);
#endif /* localedef.h */