It's an interesting patch, and I'd like to consider it once we're done with the X11R7.5 release that's being finished off now - it's too late in the release cycle for something this big in 7.5 I think though.
-alan- Marko Myllynen wrote: > Ping? > > Marko Myllynen wrote: >> Hi, >> >> with the release of XFree86 4.4 an inclusion system of compose files was >> added to Xlib to allow inclusion of the default compose file (with %L), >> any compose files from user's home directory (with %H), or a compose >> file with a hard coded path [1]. However, even today including system >> level compose files is not possible in a platform independent manner >> although the machinery for including compose files and overriding >> previously defined compositions is already in place. >> >> With the ability to include system level compose files one could greatly >> reduce the need for compose file rule duplication and the work needed to >> propagate changes in one compose file to others. For example, currently >> the Finnish compose file fi_FI.UTF-8 weights over 5000 lines [2] but it >> is almost identical with en_US.UTF-8 except for perhaps half a dozen >> compositions. >> >> Please consider something like the patch below to allow one to include >> system level compose files with the following kind of syntax: >> >> include "%S/en_US.UTF-8/Compose" >> >> 1) http://www.xfree86.org/4.4.0/RELNOTES5.html#42 >> 2) >> http://cgit.freedesktop.org/xorg/lib/libX11/tree/nls/fi_FI.UTF-8/Compose.pre >> >> >> Signed-off-by: Marko Myllynen <mylly...@redhat.com> >> >> >> --- a/modules/im/ximcp/imLcPrs.c >> +++ b/modules/im/ximcp/imLcPrs.c >> @@ -44,6 +44,13 @@ OR PERFORMANCE OF THIS SOFTWARE. >> #include <sys/stat.h> >> #include <stdio.h> >> >> +#define XLC_BUFSIZE 256 >> + >> +extern void xlocaledir( >> + char *buf, >> + int buf_len >> +); >> + >> extern int _Xmbstowcs( >> wchar_t *wstr, >> char *str, >> @@ -304,6 +311,7 @@ static char* >> TransFileName(Xim im, char *name) >> { >> char *home = NULL, *lcCompose = NULL; >> + char dir[XLC_BUFSIZE]; >> char *i = name, *ret, *j; >> int l = 0; >> >> @@ -324,6 +332,10 @@ TransFileName(Xim im, char *name) >> if (lcCompose) >> l += strlen(lcCompose); >> break; >> + case 'S': >> + xlocaledir(dir, XLC_BUFSIZE); >> + l += strlen(dir); >> + break; >> } >> } else { >> l++; >> @@ -355,6 +367,10 @@ TransFileName(Xim im, char *name) >> Xfree(lcCompose); >> } >> break; >> + case 'S': >> + strcpy(j, dir); >> + j += strlen(dir); >> + break; >> } >> i++; >> } else { >> >> --- a/src/xlibi18n/lcFile.c >> +++ b/src/xlibi18n/lcFile.c >> @@ -219,7 +219,7 @@ _XlcParsePath( >> #define XLOCALEDIR "/usr/lib/X11/locale" >> #endif >> >> -static void >> +void >> xlocaledir( >> char *buf, >> int buf_len) >> >> > -- -Alan Coopersmith- alan.coopersm...@sun.com Sun Microsystems, Inc. - X Window System Engineering _______________________________________________ xorg-devel mailing list xorg-devel@lists.x.org http://lists.x.org/mailman/listinfo/xorg-devel