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.coopersm...@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); _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel