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 <[email protected]> > > > --- 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) > >
-- Marko Myllynen _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
