New API function iso_init_with_flag().
Moved setup of locale from various places to util.c:iso_init_locale(). It is now called by the iso_init*() functions only.
This commit is contained in:
parent
183ed6cc5a
commit
da2619c42a
@ -954,11 +954,13 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
||||
target->eltorito = (src->bootcat == NULL ? 0 : 1);
|
||||
target->catalog = src->bootcat;
|
||||
|
||||
#ifdef Libisofs_setlocale_in_iniT
|
||||
/* default to locale charset */
|
||||
/* ??? ts Nov 25 2008 :
|
||||
Shouldn't this go to library initialization or even to app ?
|
||||
*/
|
||||
setlocale(LC_CTYPE, "");
|
||||
#endif
|
||||
|
||||
target->input_charset = strdup(iso_get_local_charset(0));
|
||||
|
||||
|
@ -2153,10 +2153,12 @@ int iso_image_filesystem_new(IsoDataSource *src, struct iso_read_opts *opts,
|
||||
data->aaip_load = !opts->noaaip;
|
||||
data->aaip_version = -1;
|
||||
|
||||
#ifdef Libisofs_setlocale_in_iniT
|
||||
/* ??? ts Nov 25 2008 :
|
||||
Shouldn't this go to library initialization or even to app ?
|
||||
*/
|
||||
setlocale(LC_CTYPE, "");
|
||||
#endif
|
||||
|
||||
data->local_charset = strdup(iso_get_local_charset(0));
|
||||
if (data->local_charset == NULL) {
|
||||
|
@ -873,13 +873,26 @@ struct iso_stream
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize libisofs. You must call this before any usage of the library.
|
||||
* Initialize libisofs. Before any usage of the library you must either call
|
||||
* this function or iso_init_with_flag().
|
||||
* @return 1 on success, < 0 on error
|
||||
*
|
||||
* @since 0.6.2
|
||||
*/
|
||||
int iso_init();
|
||||
|
||||
/**
|
||||
* Initialize libisofs. Before any usage of the library you must either call
|
||||
* this function or iso_init() which is equivalent to iso_init_with_flag(0).
|
||||
* @param flag
|
||||
* Bitfield for control purposes
|
||||
* bit0= do not set up locale by LC_* environment variables
|
||||
* @return 1 on success, < 0 on error
|
||||
*
|
||||
* @since 0.6.18
|
||||
*/
|
||||
int iso_init_with_flag(int flag);
|
||||
|
||||
/**
|
||||
* Finalize libisofs.
|
||||
*
|
||||
@ -4830,5 +4843,8 @@ struct burn_source {
|
||||
#define Libisofs_with_iso_iconV yes
|
||||
*/
|
||||
|
||||
/* Cleanup : make call setlocale() at init time resp. never
|
||||
*/
|
||||
#define Libisofs_setlocale_in_iniT yes
|
||||
|
||||
#endif /*LIBISO_LIBISOFS_H_*/
|
||||
|
@ -15,6 +15,9 @@
|
||||
#include "libisofs.h"
|
||||
#include "messages.h"
|
||||
|
||||
#include "util.h"
|
||||
|
||||
|
||||
/*
|
||||
* error codes are 32 bit numbers, that follow the following conventions:
|
||||
*
|
||||
@ -55,8 +58,15 @@ int abort_threshold = LIBISO_MSGS_SEV_FAILURE;
|
||||
|
||||
struct libiso_msgs *libiso_msgr = NULL;
|
||||
|
||||
int iso_init()
|
||||
|
||||
/*
|
||||
@param flag bit0= do not set up locale by LC_* environment variables
|
||||
*/
|
||||
int iso_init_with_flag(int flag)
|
||||
{
|
||||
if (! (flag & 1)) {
|
||||
iso_init_locale(0);
|
||||
}
|
||||
if (libiso_msgr == NULL) {
|
||||
if (libiso_msgs_new(&libiso_msgr, 0) <= 0)
|
||||
return ISO_FATAL_ERROR;
|
||||
@ -66,6 +76,12 @@ int iso_init()
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int iso_init()
|
||||
{
|
||||
return iso_init_with_flag(0);
|
||||
}
|
||||
|
||||
void iso_finish()
|
||||
{
|
||||
libiso_msgs_destroy(&libiso_msgr, 0);
|
||||
|
@ -1619,10 +1619,12 @@ char *ucs2str(const char *buf, size_t len)
|
||||
|
||||
/* convert to local charset */
|
||||
|
||||
#ifdef Libisofs_setlocale_in_iniT
|
||||
/* ??? ts Nov 25 2008 :
|
||||
Shouldn't this go to library initialization or even to app ?
|
||||
*/
|
||||
setlocale(LC_CTYPE, "");
|
||||
#endif
|
||||
|
||||
#ifdef Libisofs_with_iso_iconV
|
||||
conv_ret = iso_iconv_open(&conv, iso_get_local_charset(0), "UCS-2BE", 0);
|
||||
@ -1688,3 +1690,10 @@ int iso_lib_is_compatible(int major, int minor, int micro)
|
||||
|| (cminor == minor && cmicro >= micro)));
|
||||
}
|
||||
|
||||
int iso_init_locale(int flag)
|
||||
{
|
||||
setlocale(LC_CTYPE, "");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -25,6 +25,11 @@
|
||||
|
||||
int int_pow(int base, int power);
|
||||
|
||||
/**
|
||||
* Set up locale by LC_* environment variables.
|
||||
*/
|
||||
int iso_init_locale(int flag);
|
||||
|
||||
/**
|
||||
* Convert the charset encoding of a given string.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user