mirror of
https://gitlab.freedesktop.org/xorg/lib/libx11.git
synced 2026-05-08 04:28:04 +02:00
Constify lc_name argument to _XlcLocaleDirName() & _XlcLocaleLibDirName()
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@oracle.com>
This commit is contained in:
parent
07e4e86410
commit
8ebbffa985
3 changed files with 35 additions and 61 deletions
|
|
@ -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) == NULL)
|
||||
return (XLCd)NULL;
|
||||
if (_XlcLocaleLibDirName(lc_lib_dir, BUFSIZE, (char *)lc_name) == (char*)NULL)
|
||||
if (_XlcLocaleLibDirName(lc_lib_dir, BUFSIZE, lc_name) == NULL)
|
||||
return (XLCd)NULL;
|
||||
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue