[PATCH:libX11 14/22] Constify lc_name argument to _XlcLocaleDirName() & _XlcLocaleLibDirName()
walter harms
wharms at bfs.de
Mon Aug 12 07:07:11 PDT 2013
Am 12.08.2013 09:04, schrieb Alan Coopersmith:
> Makes code considerably less crufty and clears gcc warnings:
> XlcDL.c: In function '_XlcDynamicLoad':
> XlcDL.c:384:44: warning: cast discards '__attribute__((const))' qualifier
> from pointer target type [-Wcast-qual]
> XlcDL.c:386:51: warning: cast discards '__attribute__((const))' qualifier
> from pointer target type [-Wcast-qual]
>
> Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
> ---
> src/xlibi18n/XlcDL.c | 6 ++--
> src/xlibi18n/XlcPubI.h | 4 +--
> src/xlibi18n/lcFile.c | 86 +++++++++++++++++-------------------------------
> 3 files changed, 35 insertions(+), 61 deletions(-)
>
> diff --git a/src/xlibi18n/XlcDL.c b/src/xlibi18n/XlcDL.c
> index 2bef4ac..5788005 100644
> --- a/src/xlibi18n/XlcDL.c
> +++ b/src/xlibi18n/XlcDL.c
> @@ -381,9 +381,9 @@ _XlcDynamicLoad(const char *lc_name)
>
> if (lc_name == NULL) return (XLCd)NULL;
>
> - if (_XlcLocaleDirName(lc_dir, BUFSIZE, (char *)lc_name) == (char *)NULL)
> + if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == (char *)NULL)
> return (XLCd)NULL;
> - if (_XlcLocaleLibDirName(lc_lib_dir, BUFSIZE, (char *)lc_name) == (char*)NULL)
> + if (_XlcLocaleLibDirName(lc_lib_dir, BUFSIZE, lc_name) == (char*)NULL)
> return (XLCd)NULL;
>
"== (char*)NULL" ?? why not "== NULL" ?
re,
wh
> resolve_object(lc_dir, lc_name);
> @@ -510,7 +510,7 @@ _XDynamicUnRegisterIMInstantiateCallback(
> XPointer client_data)
> {
> char lc_dir[BUFSIZE];
> - char *lc_name;
> + const char *lc_name;
> dynamicUnregisterProcp im_unregisterIM = (dynamicUnregisterProcp)NULL;
> Bool ret_flag = False;
> int count;
> diff --git a/src/xlibi18n/XlcPubI.h b/src/xlibi18n/XlcPubI.h
> index 22ac2bd..a83d243 100644
> --- a/src/xlibi18n/XlcPubI.h
> +++ b/src/xlibi18n/XlcPubI.h
> @@ -207,13 +207,13 @@ extern int _XlcResolveI18NPath(
> extern char *_XlcLocaleLibDirName(
> char* /* dir_name */,
> size_t, /* dir_len */
> - char* /* lc_name */
> + const char* /* lc_name */
> );
>
> extern char *_XlcLocaleDirName(
> char* /* dir_name */,
> size_t, /* dir_len */
> - char* /* lc_name */
> + const char* /* lc_name */
> );
>
> extern XPointer _XlcCreateLocaleDataBase(
> diff --git a/src/xlibi18n/lcFile.c b/src/xlibi18n/lcFile.c
> index 8f0137a..6b0e4c9 100644
> --- a/src/xlibi18n/lcFile.c
> +++ b/src/xlibi18n/lcFile.c
> @@ -615,14 +615,14 @@ _XlcResolveI18NPath(char *buf, int buf_len)
> }
>
> char *
> -_XlcLocaleDirName(char *dir_name, size_t dir_len, char *lc_name)
> +_XlcLocaleDirName(char *dir_name, size_t dir_len, const char *lc_name)
> {
> - char dir[PATH_MAX], buf[PATH_MAX], *name = NULL;
> + char dir[PATH_MAX], buf[PATH_MAX];
> int i, n;
> char *args[NUM_LOCALEDIR];
> static char locale_alias[] = LOCALE_ALIAS;
> - char *target_name = (char*)0;
> - char *target_dir = (char*)0;
> + char *target_name = NULL;
> + char *target_dir = NULL;
> char *nlc_name = NULL;
> static char* last_dir_name = 0;
> static size_t last_dir_len = 0;
> @@ -637,6 +637,8 @@ _XlcLocaleDirName(char *dir_name, size_t dir_len, char *lc_name)
> xlocaledir (dir, PATH_MAX);
> n = _XlcParsePath(dir, args, 256);
> for (i = 0; i < n; ++i) {
> + char *name = NULL;
> +
> if (args[i] == NULL)
> continue;
>
> @@ -651,18 +653,15 @@ _XlcLocaleDirName(char *dir_name, size_t dir_len, char *lc_name)
> }
> }
>
> - /* If name is not an alias, use lc_name for locale.dir search */
> - if (name == NULL)
> - name = lc_name;
> -
> /* look at locale.dir */
>
> target_dir = args[i];
> if (snprintf(buf, PATH_MAX, "%s/locale.dir", target_dir) < PATH_MAX) {
> - target_name = resolve_name(name, buf, RtoL);
> + /* If name is not an alias, use lc_name for locale.dir search */
> + target_name = resolve_name(name ? name : lc_name, buf, RtoL);
> }
> - if (name != lc_name)
> - Xfree(name);
> + Xfree(name);
> + name = NULL;
> if (target_name != NULL) {
> char *p = 0;
> if ((p = strstr(target_name, "/XLC_LOCALE"))) {
> @@ -672,27 +671,15 @@ _XlcLocaleDirName(char *dir_name, size_t dir_len, char *lc_name)
> Xfree(target_name);
> target_name = NULL;
> }
> - name = NULL;
> }
> if (nlc_name) Xfree(nlc_name);
>
> - if (target_name == NULL) {
> + if (target_name == NULL)
> /* vendor locale name == Xlocale name, no expansion of alias */
> - target_dir = args[0];
> - target_name = lc_name;
> - }
> - /* snprintf(dir_name, dir_len, "%s/%", target_dir, target_name); */
> - strncpy(dir_name, target_dir, dir_len - 1);
> - if (strlen(target_dir) >= dir_len - 1) {
> - dir_name[dir_len - 1] = '\0';
> - } else {
> - strcat(dir_name, "/");
> - strncat(dir_name, target_name, dir_len - strlen(dir_name) - 1);
> - if (strlen(target_name) >= dir_len - strlen(dir_name) - 1)
> - dir_name[dir_len - 1] = '\0';
> - }
> - if (target_name != lc_name)
> - Xfree(target_name);
> + snprintf(dir_name, dir_len, "%s/%s", args[0], lc_name);
> + else
> + snprintf(dir_name, dir_len, "%s/%s", target_dir, target_name);
> + Xfree(target_name);
>
> if (last_dir_name != 0)
> Xfree (last_dir_name);
> @@ -707,14 +694,14 @@ _XlcLocaleDirName(char *dir_name, size_t dir_len, char *lc_name)
> }
>
> char *
> -_XlcLocaleLibDirName(char *dir_name, size_t dir_len, char *lc_name)
> +_XlcLocaleLibDirName(char *dir_name, size_t dir_len, const char *lc_name)
> {
> - char dir[PATH_MAX], buf[PATH_MAX], *name = NULL;
> + char dir[PATH_MAX], buf[PATH_MAX];
> int i, n;
> char *args[NUM_LOCALEDIR];
> static char locale_alias[] = LOCALE_ALIAS;
> - char *target_name = (char*)0;
> - char *target_dir = (char*)0;
> + char *target_name = NULL;
> + char *target_dir = NULL;
> char *nlc_name = NULL;
> static char* last_dir_name = 0;
> static size_t last_dir_len = 0;
> @@ -729,6 +716,8 @@ _XlcLocaleLibDirName(char *dir_name, size_t dir_len, char *lc_name)
> xlocalelibdir (dir, PATH_MAX);
> n = _XlcParsePath(dir, args, 256);
> for (i = 0; i < n; ++i) {
> + char *name = NULL;
> +
> if (args[i] == NULL)
> continue;
>
> @@ -743,18 +732,15 @@ _XlcLocaleLibDirName(char *dir_name, size_t dir_len, char *lc_name)
> }
> }
>
> - /* If name is not an alias, use lc_name for locale.dir search */
> - if (name == NULL)
> - name = lc_name;
> -
> /* look at locale.dir */
>
> target_dir = args[i];
> if (snprintf(buf, PATH_MAX, "%s/locale.dir", target_dir) < PATH_MAX) {
> - target_name = resolve_name(name, buf, RtoL);
> + /* If name is not an alias, use lc_name for locale.dir search */
> + target_name = resolve_name(name ? name : lc_name, buf, RtoL);
> }
> - if (name != lc_name)
> - Xfree(name);
> + Xfree(name);
> + name = NULL;
> if (target_name != NULL) {
> char *p = 0;
> if ((p = strstr(target_name, "/XLC_LOCALE"))) {
> @@ -764,27 +750,15 @@ _XlcLocaleLibDirName(char *dir_name, size_t dir_len, char *lc_name)
> Xfree(target_name);
> target_name = NULL;
> }
> - name = NULL;
> }
> if (nlc_name) Xfree(nlc_name);
>
> - if (target_name == NULL) {
> + if (target_name == NULL)
> /* vendor locale name == Xlocale name, no expansion of alias */
> - target_dir = args[0];
> - target_name = lc_name;
> - }
> - /* snprintf(dir_name, dir_len, "%s/%", target_dir, target_name); */
> - strncpy(dir_name, target_dir, dir_len - 1);
> - if (strlen(target_dir) >= dir_len - 1) {
> - dir_name[dir_len - 1] = '\0';
> - } else {
> - strcat(dir_name, "/");
> - strncat(dir_name, target_name, dir_len - strlen(dir_name) - 1);
> - if (strlen(target_name) >= dir_len - strlen(dir_name) - 1)
> - dir_name[dir_len - 1] = '\0';
> - }
> - if (target_name != lc_name)
> - Xfree(target_name);
> + snprintf(dir_name, dir_len, "%s/%s", args[0], lc_name);
> + else
> + snprintf(dir_name, dir_len, "%s/%s", target_dir, target_name);
> + Xfree(target_name);
>
> if (last_dir_name != 0)
> Xfree (last_dir_name);
More information about the xorg-devel
mailing list