From c47e5a738d94dbd4c08837f570972ec77b57ad50 Mon Sep 17 00:00:00 2001 From: Vreixo Formoso Date: Sat, 5 Jan 2008 16:01:21 +0100 Subject: [PATCH] Let NULL input charset in image reading, that defaults to locale one. --- demo/iso_read.c | 2 +- src/fs_image.c | 11 +++++++++-- src/libisofs.h | 3 +++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/demo/iso_read.c b/demo/iso_read.c index a4213ae..e70fbd8 100644 --- a/demo/iso_read.c +++ b/demo/iso_read.c @@ -120,7 +120,7 @@ int main(int argc, char **argv) 0, /* uid; */ 0, /* gid; */ 0, /* mode */ - "UTF-8" /* input_charset */ + NULL /* input_charset */ }; if (argc != 2) { diff --git a/src/fs_image.c b/src/fs_image.c index 04517cb..729c732 100644 --- a/src/fs_image.c +++ b/src/fs_image.c @@ -1486,14 +1486,21 @@ int iso_image_filesystem_new(IsoDataSource *src, struct iso_read_opts *opts, data->mode = opts->mode & ~S_IFMT; data->messenger = messenger; - data->input_charset = strdup(opts->input_charset); - setlocale(LC_CTYPE, ""); data->local_charset = strdup(nl_langinfo(CODESET)); if (data->local_charset == NULL) { ret = ISO_MEM_ERROR; goto fs_cleanup; } + if (opts->input_charset != NULL) { + data->input_charset = strdup(opts->input_charset); + } else { + data->input_charset = strdup(data->local_charset); + } + if (data->input_charset == NULL) { + ret = ISO_MEM_ERROR; + goto fs_cleanup; + } ifs->open = ifs_fs_open; ifs->close = ifs_fs_close; diff --git a/src/libisofs.h b/src/libisofs.h index 0f4a969..1abbfb6 100644 --- a/src/libisofs.h +++ b/src/libisofs.h @@ -278,6 +278,9 @@ struct iso_read_opts //TODO differ file and dir mode //option to convert names to lower case? + /** + * Input charset for RR file names. NULL to use default locale charset. + */ char *input_charset; };