xserver: Branch 'master' - 22 commits
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 16 22:41:10 UTC 2025
hw/xfree86/sdksyms.sh | 1
include/meson.build | 1
include/xkbfile.h | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++
include/xkbrules.h | 73 +++++++++++++++++++++++
include/xkbsrv.h | 2
test/test_xkb.c | 1
xkb/XKBMisc.c | 5 -
xkb/ddxLoad.c | 7 --
xkb/maprules.c | 124 ++++++++++++++++++++++++++--------------
xkb/xkb.c | 40 ------------
xkb/xkbInit.c | 3
xkb/xkbfile_priv.h | 45 --------------
xkb/xkbfmisc.c | 45 +++++++++++++-
xkb/xkbfmisc_priv.h | 79 -------------------------
xkb/xkbout.c | 3
xkb/xkbout_priv.h | 32 ----------
xkb/xkbrules_priv.h | 61 -------------------
xkb/xkmread.c | 6 -
18 files changed, 360 insertions(+), 322 deletions(-)
New commits:
commit 122345d48426525eccb0186f1d64fe61a3685e89
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: move XkbConvertGetByNameComponents and make it static"
This reverts commit 114c1c84b1b1dae2d74f7a719e8e682920cc1557.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbfile.h b/include/xkbfile.h
index 706f94018..df2221313 100644
--- a/include/xkbfile.h
+++ b/include/xkbfile.h
@@ -86,6 +86,14 @@ extern _X_EXPORT int XkbFindKeycodeByName(XkbDescPtr /* xkb */ ,
Bool /* use_aliases */
);
+/***====================================================================***/
+
+extern _X_EXPORT unsigned XkbConvertGetByNameComponents(Bool /* toXkm */ ,
+ unsigned /* orig */
+ );
+
+/***====================================================================***/
+
extern _X_EXPORT Bool XkbWriteXKBKeycodes(FILE * /* file */ ,
XkbDescPtr /* result */ ,
Bool /* topLevel */ ,
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 313309155..2433b7d73 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5906,45 +5906,6 @@ ProcXkbListComponents(ClientPtr client)
return Success;
}
-static unsigned
-XkbConvertGetByNameComponents(Bool toXkm, unsigned orig)
-{
- unsigned rtrn;
-
- rtrn = 0;
- if (toXkm) {
- if (orig & XkbGBN_TypesMask)
- rtrn |= XkmTypesMask;
- if (orig & XkbGBN_CompatMapMask)
- rtrn |= XkmCompatMapMask;
- if (orig & XkbGBN_SymbolsMask)
- rtrn |= XkmSymbolsMask;
- if (orig & XkbGBN_IndicatorMapMask)
- rtrn |= XkmIndicatorsMask;
- if (orig & XkbGBN_KeyNamesMask)
- rtrn |= XkmKeyNamesMask;
- if (orig & XkbGBN_GeometryMask)
- rtrn |= XkmGeometryMask;
- }
- else {
- if (orig & XkmTypesMask)
- rtrn |= XkbGBN_TypesMask;
- if (orig & XkmCompatMapMask)
- rtrn |= XkbGBN_CompatMapMask;
- if (orig & XkmSymbolsMask)
- rtrn |= XkbGBN_SymbolsMask;
- if (orig & XkmIndicatorsMask)
- rtrn |= XkbGBN_IndicatorMapMask;
- if (orig & XkmKeyNamesMask)
- rtrn |= XkbGBN_KeyNamesMask;
- if (orig & XkmGeometryMask)
- rtrn |= XkbGBN_GeometryMask;
- if (orig != 0)
- rtrn |= XkbGBN_OtherNamesMask;
- }
- return rtrn;
-}
-
/***====================================================================***/
int
ProcXkbGetKbdByName(ClientPtr client)
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index a2063e40f..146e36683 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -390,3 +390,42 @@ XkbFindKeycodeByName(XkbDescPtr xkb, char *name, Bool use_aliases)
}
return 0;
}
+
+unsigned
+XkbConvertGetByNameComponents(Bool toXkm, unsigned orig)
+{
+ unsigned rtrn;
+
+ rtrn = 0;
+ if (toXkm) {
+ if (orig & XkbGBN_TypesMask)
+ rtrn |= XkmTypesMask;
+ if (orig & XkbGBN_CompatMapMask)
+ rtrn |= XkmCompatMapMask;
+ if (orig & XkbGBN_SymbolsMask)
+ rtrn |= XkmSymbolsMask;
+ if (orig & XkbGBN_IndicatorMapMask)
+ rtrn |= XkmIndicatorsMask;
+ if (orig & XkbGBN_KeyNamesMask)
+ rtrn |= XkmKeyNamesMask;
+ if (orig & XkbGBN_GeometryMask)
+ rtrn |= XkmGeometryMask;
+ }
+ else {
+ if (orig & XkmTypesMask)
+ rtrn |= XkbGBN_TypesMask;
+ if (orig & XkmCompatMapMask)
+ rtrn |= XkbGBN_CompatMapMask;
+ if (orig & XkmSymbolsMask)
+ rtrn |= XkbGBN_SymbolsMask;
+ if (orig & XkmIndicatorsMask)
+ rtrn |= XkbGBN_IndicatorMapMask;
+ if (orig & XkmKeyNamesMask)
+ rtrn |= XkbGBN_KeyNamesMask;
+ if (orig & XkmGeometryMask)
+ rtrn |= XkbGBN_GeometryMask;
+ if (orig != 0)
+ rtrn |= XkbGBN_OtherNamesMask;
+ }
+ return rtrn;
+}
commit d0d62a791b84eba4858ddcda3becc04595d41735
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport functions from xkbfmisc.c"
This reverts commit 5d98664ec13803b6ddfd0d317c8cc57765706b8c.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbfile.h b/include/xkbfile.h
index 317f15937..706f94018 100644
--- a/include/xkbfile.h
+++ b/include/xkbfile.h
@@ -71,6 +71,21 @@ typedef void (*XkbFileAddOnFunc) (FILE * /* file */ ,
_XFUNCPROTOBEGIN
+#define _XkbKSLower (1<<0)
+#define _XkbKSUpper (1<<1)
+
+#define XkbKSIsLower(k) (_XkbKSCheckCase(k)&_XkbKSLower)
+#define XkbKSIsUpper(k) (_XkbKSCheckCase(k)&_XkbKSUpper)
+#define XkbKSIsKeypad(k) (((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal))
+
+extern _X_EXPORT unsigned _XkbKSCheckCase(KeySym /* sym */
+ );
+
+extern _X_EXPORT int XkbFindKeycodeByName(XkbDescPtr /* xkb */ ,
+ char * /* name */ ,
+ Bool /* use_aliases */
+ );
+
extern _X_EXPORT Bool XkbWriteXKBKeycodes(FILE * /* file */ ,
XkbDescPtr /* result */ ,
Bool /* topLevel */ ,
@@ -111,6 +126,14 @@ extern _X_EXPORT Bool XkbWriteXKBGeometry(FILE * /* file */ ,
void * /* priv */
);
+extern _X_EXPORT Bool XkbWriteXKBKeymapForNames(FILE * /* file */ ,
+ XkbComponentNamesPtr /* names */
+ ,
+ XkbDescPtr /* xkb */ ,
+ unsigned /* want */ ,
+ unsigned /* need */
+ );
+
/***====================================================================***/
extern _X_EXPORT unsigned XkmReadFile(FILE * /* file */ ,
diff --git a/xkb/XKBMisc.c b/xkb/XKBMisc.c
index fd180fad2..253e1774b 100644
--- a/xkb/XKBMisc.c
+++ b/xkb/XKBMisc.c
@@ -29,12 +29,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <stdio.h>
#include <X11/X.h>
#include <X11/Xproto.h>
-#include <X11/keysym.h>
-
-#include "xkb/xkbfmisc_priv.h"
-
#include "misc.h"
#include "inputstr.h"
+#include <X11/keysym.h>
#include <xkbsrv.h>
/***====================================================================***/
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index bfdb6f467..30f593bda 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -40,7 +40,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "dix/dix_priv.h"
#include "os/osdep.h"
-#include "xkb/xkbfmisc_priv.h"
#include "inputstr.h"
#include "scrnintstr.h"
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 744dba63d..313309155 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -34,7 +34,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "dix/dix_priv.h"
#include "os/osdep.h"
-#include "xkb/xkbfmisc_priv.h"
#include "misc.h"
#include "inputstr.h"
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index c09c11b1a..a2063e40f 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -29,15 +29,14 @@
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
+
#include <X11/Xos.h>
#include <X11/Xfuncs.h>
#include <X11/extensions/XKMformat.h>
+
#include <X11/X.h>
#include <X11/keysym.h>
#include <X11/Xproto.h>
-
-#include "xkb/xkbfmisc_priv.h"
-
#include "misc.h"
#include "inputstr.h"
#include "dix.h"
diff --git a/xkb/xkbfmisc_priv.h b/xkb/xkbfmisc_priv.h
deleted file mode 100644
index b08947b91..000000000
--- a/xkb/xkbfmisc_priv.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* SPDX-License-Identifier: MIT OR X11
- *
- * Copyright © 2024 Enrico Weigelt, metux IT consult <info at metux.net>
- */
-#ifndef _XSERVER_XKB_XKBFMISC_PRIV_H
-#define _XSERVER_XKB_XKBFMISC_PRIV_H
-
-/* needed for X11/keysymdef.h to define all symdefs */
-#define XK_MISCELLANY
-
-#include <stdio.h>
-#include <X11/X.h>
-#include <X11/Xdefs.h>
-#include <X11/keysymdef.h>
-
-#include "xkbstr.h"
-
-/*
- * return mask bits for _XkbKSCheckCase()
- */
-#define _XkbKSLower (1<<0)
-#define _XkbKSUpper (1<<1)
-
-/*
- * check whether given KeySym is a upper or lower case key
- *
- * @param sym the KeySym to check
- * @return mask of _XkbKS* flags
- */
-unsigned int _XkbKSCheckCase(KeySym sym);
-
-/*
- * check whether given KeySym is an lower case key
- *
- * @param k the KeySym to check
- * @return TRUE if k is a lower case key
- */
-static inline Bool XkbKSIsLower(KeySym k) { return _XkbKSCheckCase(k)&_XkbKSLower; }
-
-/*
- * check whether given KeySym is an upper case key
- *
- * @param k the KeySym to check
- * @return TRUE if k is a upper case key
- */
-static inline Bool XkbKSIsUpper(KeySym k) { return _XkbKSCheckCase(k)&_XkbKSUpper; }
-
-/*
- * check whether given KeySym is an keypad key
- *
- * @param k the KeySym to check
- * @return TRUE if k is a keypad key
- */
-static inline Bool XkbKSIsKeypad(KeySym k) { return (((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal)); }
-
-/*
- * find a keycode by its name
- *
- * @param xkb pointer to xkb descriptor
- * @param name the key name
- * @param use_aliases TRUE if aliases should be resolved
- * @return keycode ID
- */
-int XkbFindKeycodeByName(XkbDescPtr xkb, char *name, Bool use_aliases);
-
-/*
- * write keymap for given component names
- *
- * @param file the FILE to write to
- * @param names pointer to list of keymap component names to write out
- * @param xkb pointer to xkb descriptor
- * @param want bitmask of wanted elements
- * @param need bitmask of needed elements
- * @return TRUE if succeeded
-*/
-Bool XkbWriteXKBKeymapForNames(FILE *file, XkbComponentNamesPtr names,
- XkbDescPtr xkb, unsigned want, unsigned need);
-
-#endif /* _XSERVER_XKB_XKBFMISC_PRIV_H */
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
index 1fd45e7af..98130fc32 100644
--- a/xkb/xkbout.c
+++ b/xkb/xkbout.c
@@ -35,7 +35,6 @@
#include <X11/Xproto.h>
#include <X11/extensions/XKMformat.h>
-#include "xkb/xkbfmisc_priv.h"
#include "xkb/xkbtext_priv.h"
#include "misc.h"
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index b40f8fc64..45da55660 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -27,15 +27,14 @@
#include <dix-config.h>
#include <stdio.h>
+
#include <X11/Xos.h>
#include <X11/Xfuncs.h>
+
#include <X11/X.h>
#include <X11/Xproto.h>
#include <X11/keysym.h>
#include <X11/extensions/XKMformat.h>
-
-#include "xkb/xkbfmisc_priv.h"
-
#include "misc.h"
#include "inputstr.h"
#include "xkbstr.h"
commit f5085758180a01f460701c579d732a121be51ee8
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport functions from xkbout.c"
This reverts commit 660657a2c3a28d92d5671b44bc20de49ceacf971.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbfile.h b/include/xkbfile.h
index 172d0c1f7..317f15937 100644
--- a/include/xkbfile.h
+++ b/include/xkbfile.h
@@ -71,6 +71,48 @@ typedef void (*XkbFileAddOnFunc) (FILE * /* file */ ,
_XFUNCPROTOBEGIN
+extern _X_EXPORT Bool XkbWriteXKBKeycodes(FILE * /* file */ ,
+ XkbDescPtr /* result */ ,
+ Bool /* topLevel */ ,
+ Bool /* showImplicit */ ,
+ XkbFileAddOnFunc /* addOn */ ,
+ void * /* priv */
+ );
+
+extern _X_EXPORT Bool XkbWriteXKBKeyTypes(FILE * /* file */ ,
+ XkbDescPtr /* result */ ,
+ Bool /* topLevel */ ,
+ Bool /* showImplicit */ ,
+ XkbFileAddOnFunc /* addOn */ ,
+ void * /* priv */
+ );
+
+extern _X_EXPORT Bool XkbWriteXKBCompatMap(FILE * /* file */ ,
+ XkbDescPtr /* result */ ,
+ Bool /* topLevel */ ,
+ Bool /* showImplicit */ ,
+ XkbFileAddOnFunc /* addOn */ ,
+ void * /* priv */
+ );
+
+extern _X_EXPORT Bool XkbWriteXKBSymbols(FILE * /* file */ ,
+ XkbDescPtr /* result */ ,
+ Bool /* topLevel */ ,
+ Bool /* showImplicit */ ,
+ XkbFileAddOnFunc /* addOn */ ,
+ void * /* priv */
+ );
+
+extern _X_EXPORT Bool XkbWriteXKBGeometry(FILE * /* file */ ,
+ XkbDescPtr /* result */ ,
+ Bool /* topLevel */ ,
+ Bool /* showImplicit */ ,
+ XkbFileAddOnFunc /* addOn */ ,
+ void * /* priv */
+ );
+
+/***====================================================================***/
+
extern _X_EXPORT unsigned XkmReadFile(FILE * /* file */ ,
unsigned /* need */ ,
unsigned /* want */ ,
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index 2ec3b85ed..c09c11b1a 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -37,7 +37,6 @@
#include <X11/Xproto.h>
#include "xkb/xkbfmisc_priv.h"
-#include "xkb/xkbout_priv.h"
#include "misc.h"
#include "inputstr.h"
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
index e1b97a56f..1fd45e7af 100644
--- a/xkb/xkbout.c
+++ b/xkb/xkbout.c
@@ -36,7 +36,6 @@
#include <X11/extensions/XKMformat.h>
#include "xkb/xkbfmisc_priv.h"
-#include "xkb/xkbout_priv.h"
#include "xkb/xkbtext_priv.h"
#include "misc.h"
diff --git a/xkb/xkbout_priv.h b/xkb/xkbout_priv.h
deleted file mode 100644
index 790a009ec..000000000
--- a/xkb/xkbout_priv.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* SPDX-License-Identifier: MIT OR X11
- *
- * Copyright © 2024 Enrico Weigelt, metux IT consult <info at metux.net>
- */
-#ifndef _XSERVER_XKB_XKBFOUT_PRIV_H
-#define _XSERVER_XKB_XKBFOUT_PRIV_H
-
-#include <stdio.h>
-#include <X11/X.h>
-#include <X11/Xdefs.h>
-
-#include "xkbstr.h"
-
-typedef void (*XkbFileAddOnFunc) (FILE *file,
- XkbDescPtr result,
- Bool topLevel,
- Bool showImplicit,
- int fileSection,
- void *priv);
-
-Bool XkbWriteXKBKeyTypes(FILE *file, XkbDescPtr result, Bool topLevel,
- Bool showImplicit, XkbFileAddOnFunc addOn, void *priv);
-Bool XkbWriteXKBKeycodes(FILE *file, XkbDescPtr result, Bool topLevel,
- Bool showImplicit, XkbFileAddOnFunc addOn, void *priv);
-Bool XkbWriteXKBCompatMap(FILE *file, XkbDescPtr result, Bool topLevel,
- Bool showImplicit, XkbFileAddOnFunc addOn, void *priv);
-Bool XkbWriteXKBSymbols(FILE *file, XkbDescPtr result, Bool topLevel,
- Bool showImplicit, XkbFileAddOnFunc addOn, void *priv);
-Bool XkbWriteXKBGeometry(FILE *file, XkbDescPtr result, Bool topLevel,
- Bool showImplicit, XkbFileAddOnFunc addOn, void *priv);
-
-#endif /* _XSERVER_XKB_XKBFOUT_PRIV_H */
commit f666efd73a1c60c60fb00e5f8153676cb4c3386e
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport remaining internal declarations"
This reverts commit 3f8a5475c917326c780f87e3f2dff11cd7d17d0f.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbfile.h b/include/xkbfile.h
index 9bc25cd94..172d0c1f7 100644
--- a/include/xkbfile.h
+++ b/include/xkbfile.h
@@ -29,4 +29,53 @@
#include "xkbstr.h"
+typedef void (*XkbFileAddOnFunc) (FILE * /* file */ ,
+ XkbDescPtr /* result */ ,
+ Bool /* topLevel */ ,
+ Bool /* showImplicit */ ,
+ int /* fileSection */ ,
+ void * /* priv */
+ );
+
+/***====================================================================***/
+
+#define _XkbSuccess 0 /* unused */
+#define _XkbErrMissingNames 1
+#define _XkbErrMissingTypes 2
+#define _XkbErrMissingReqTypes 3
+#define _XkbErrMissingSymbols 4
+#define _XkbErrMissingVMods 5 /* unused */
+#define _XkbErrMissingIndicators 6 /* unused */
+#define _XkbErrMissingCompatMap 7
+#define _XkbErrMissingSymInterps 8 /* unused */
+#define _XkbErrMissingGeometry 9
+#define _XkbErrIllegalDoodad 10 /* unused */
+#define _XkbErrIllegalTOCType 11 /* unused */
+#define _XkbErrIllegalContents 12
+#define _XkbErrEmptyFile 13 /* unused */
+#define _XkbErrFileNotFound 14 /* unused */
+#define _XkbErrFileCannotOpen 15 /* unused */
+#define _XkbErrBadValue 16
+#define _XkbErrBadMatch 17
+#define _XkbErrBadTypeName 18
+#define _XkbErrBadTypeWidth 19
+#define _XkbErrBadFileType 20
+#define _XkbErrBadFileVersion 21
+#define _XkbErrBadFileFormat 22 /* unused */
+#define _XkbErrBadAlloc 23
+#define _XkbErrBadLength 24
+#define _XkbErrXReqFailure 25 /* unused */
+#define _XkbErrBadImplementation 26
+
+/***====================================================================***/
+
+_XFUNCPROTOBEGIN
+
+extern _X_EXPORT unsigned XkmReadFile(FILE * /* file */ ,
+ unsigned /* need */ ,
+ unsigned /* want */ ,
+ XkbDescPtr * /* result */
+ );
+
+_XFUNCPROTOEND
#endif /* _XKBFILE_H_ */
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index e147aabce..bfdb6f467 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -40,7 +40,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "dix/dix_priv.h"
#include "os/osdep.h"
-#include "xkb/xkbfile_priv.h"
#include "xkb/xkbfmisc_priv.h"
#include "inputstr.h"
diff --git a/xkb/xkbfile_priv.h b/xkb/xkbfile_priv.h
deleted file mode 100644
index 3a37b9d49..000000000
--- a/xkb/xkbfile_priv.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: MIT OR X11
- *
- * Copyright © 2024 Enrico Weigelt, metux IT consult <info at metux.net>
- * Copyright © 1994 by Silicon Graphics Computer Systems, Inc.
- */
-#ifndef _XSERVER_XKB_XKBFILE_PRIV_H
-#define _XSERVER_XKB_XKBFILE_PRIV_H
-
-#include <stdio.h>
-#include <X11/X.h>
-#include <X11/Xdefs.h>
-
-#include "xkbstr.h"
-
-/* XKB error codes */
-#define _XkbErrMissingNames 1
-#define _XkbErrMissingTypes 2
-#define _XkbErrMissingReqTypes 3
-#define _XkbErrMissingSymbols 4
-#define _XkbErrMissingCompatMap 7
-#define _XkbErrMissingGeometry 9
-#define _XkbErrIllegalContents 12
-#define _XkbErrBadValue 16
-#define _XkbErrBadMatch 17
-#define _XkbErrBadTypeName 18
-#define _XkbErrBadTypeWidth 19
-#define _XkbErrBadFileType 20
-#define _XkbErrBadFileVersion 21
-#define _XkbErrBadAlloc 23
-#define _XkbErrBadLength 24
-#define _XkbErrBadImplementation 26
-
-/*
- * read xkm file
- *
- * @param file the FILE to read from
- * @param need mask of needed elements (fails if some are missing)
- * @param want mask of wanted elements
- * @param result pointer to xkb descriptor to load the data into
- * @return mask of elements missing (from need | want)
- */
-unsigned XkmReadFile(FILE *file, unsigned need, unsigned want,
- XkbDescPtr *result);
-
-#endif /* _XSERVER_XKB_XKBFILE_PRIV_H */
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index cdcb443ba..b40f8fc64 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -34,7 +34,6 @@
#include <X11/keysym.h>
#include <X11/extensions/XKMformat.h>
-#include "xkb/xkbfile_priv.h"
#include "xkb/xkbfmisc_priv.h"
#include "misc.h"
commit 8540bda07aa2b1c7399f56f3e563ff2bde3d8d4f
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "include: drop now empty xkbfile.h"
This reverts commit f8fc46cbbfa3253d24d65fc2d129f8b4b5fd76aa.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh
index 4747846f5..4df88f63f 100755
--- a/hw/xfree86/sdksyms.sh
+++ b/hw/xfree86/sdksyms.sh
@@ -271,6 +271,7 @@ cat > sdksyms.c << EOF
#include "window.h"
#include "windowstr.h"
#include "xace.h"
+#include "xkbfile.h"
#include "xkbsrv.h"
#include "xkbstr.h"
#include "xkbrules.h"
diff --git a/include/meson.build b/include/meson.build
index 994b4cfba..2393c1625 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -499,6 +499,7 @@ if build_xorg
'displaymode.h',
'window.h',
'windowstr.h',
+ 'xkbfile.h',
'xkbsrv.h',
'xkbstr.h',
'xkbrules.h',
diff --git a/include/xkbfile.h b/include/xkbfile.h
new file mode 100644
index 000000000..9bc25cd94
--- /dev/null
+++ b/include/xkbfile.h
@@ -0,0 +1,32 @@
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef _XKBFILE_H_
+#define _XKBFILE_H_ 1
+
+#include "xkbstr.h"
+
+#endif /* _XKBFILE_H_ */
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index ab3a40743..2f291886b 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -818,7 +818,7 @@ extern _X_EXPORT Bool XkbDeviceApplyKeymap(DeviceIntPtr /* dst */ ,
extern _X_EXPORT void XkbCopyControls(XkbDescPtr /* dst */ ,
XkbDescPtr /* src */ );
-#include "xkbstr.h"
+#include "xkbfile.h"
#include "xkbrules.h"
extern _X_EXPORT unsigned int XkbDDXLoadKeymapByNames(DeviceIntPtr /* keybd */ ,
diff --git a/test/test_xkb.c b/test/test_xkb.c
index 11a0f4ce8..2fd9d1f36 100644
--- a/test/test_xkb.c
+++ b/test/test_xkb.c
@@ -44,6 +44,7 @@
#include <xkbsrv.h>
#include "../xkb/xkbgeom.h"
#include <X11/extensions/XKMformat.h>
+#include "xkbfile.h"
#include <assert.h>
#include "tests-common.h"
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index edd4de4b5..2819935eb 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -48,6 +48,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "property.h"
#include "scrnintstr.h"
#include "xkbgeom.h"
+#include "xkbfile.h"
#define CREATE_ATOM(s) MakeAtom(s,sizeof(s)-1,1)
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
index a8b2f1523..e1b97a56f 100644
--- a/xkb/xkbout.c
+++ b/xkb/xkbout.c
@@ -46,6 +46,7 @@
#include <xkbsrv.h>
#include "xkbgeom.h"
+#include "xkbfile.h"
#define VMOD_HIDE_VALUE 0
#define VMOD_SHOW_VALUE 1
commit d8aedc5cfc705e36c22041e06682621020b13413
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: drop unused XkbRF_LoadRulesByName()"
This reverts commit e38eeb471865b7a7812583d55f8f9991f8a0271a.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 8832c01e2..ab5b4b266 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -98,6 +98,13 @@ extern _X_EXPORT Bool XkbRF_LoadRules(FILE * /* file */ ,
XkbRF_RulesPtr /* rules */
);
+extern _X_EXPORT Bool XkbRF_LoadRulesByName(char * /* base */ ,
+ char * /* locale */ ,
+ XkbRF_RulesPtr /* rules */
+ );
+
+/***====================================================================***/
+
extern _X_EXPORT XkbRF_RulesPtr XkbRF_Create(void);
extern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
diff --git a/xkb/maprules.c b/xkb/maprules.c
index a324c67a0..0b6c107ae 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -963,6 +963,37 @@ XkbRF_LoadRules(FILE * file, XkbRF_RulesPtr rules)
return TRUE;
}
+Bool
+XkbRF_LoadRulesByName(char *base, char *locale, XkbRF_RulesPtr rules)
+{
+ FILE *file;
+ char buf[PATH_MAX];
+ Bool ok;
+
+ if ((!base) || (!rules))
+ return FALSE;
+ if (locale) {
+ if (snprintf(buf, PATH_MAX, "%s-%s", base, locale) >= PATH_MAX)
+ return FALSE;
+ }
+ else {
+ if (strlen(base) + 1 > PATH_MAX)
+ return FALSE;
+ strcpy(buf, base);
+ }
+
+ file = fopen(buf, "r");
+ if ((!file) && (locale)) { /* fallback if locale was specified */
+ strcpy(buf, base);
+ file = fopen(buf, "r");
+ }
+ if (!file)
+ return FALSE;
+ ok = XkbRF_LoadRules(file, rules);
+ fclose(file);
+ return ok;
+}
+
/***====================================================================***/
XkbRF_RulesPtr
commit f21c9b9fc3a9cfbce22dc5de5daad9b23e87a284
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: drop unused _XKB_RF_NAMES_PROP_MAXLEN define"
This reverts commit 975aed300e0a32118a98a7aaf2a5a0cab26a18e6.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 0203984fe..8832c01e2 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -107,6 +107,7 @@ extern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
/***====================================================================***/
#define _XKB_RF_NAMES_PROP_ATOM "_XKB_RULES_NAMES"
+#define _XKB_RF_NAMES_PROP_MAXLEN 1024
_XFUNCPROTOEND
#endif /* _XKBRULES_H_ */
commit d74398ef1d596290681c39323572fd4611fad62e
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: drop unused XkbRF_Invalid define from xkbrules.h"
This reverts commit 5030f23f943d632416e304365c481d9d67dc70c1.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 8f8ad11e7..0203984fe 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -71,6 +71,7 @@ typedef struct _XkbRF_Group {
#define XkbRF_Option (1L<<2)
#define XkbRF_Append (1L<<3)
#define XkbRF_Normal (1L<<4)
+#define XkbRF_Invalid (1L<<5)
typedef struct _XkbRF_Rules {
unsigned short sz_rules;
commit 9cac71e660beea6882afc4d51e90894f025708ed
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: move _XKB_RF_NAMES_PROP_ATOM define into xkbInit.c"
This reverts commit 1a9592ea4b37fbdcb7cbf0f72dcde5159cfd6094.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 6be20ea5f..8f8ad11e7 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -103,5 +103,9 @@ extern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
Bool /* freeRules */
);
+/***====================================================================***/
+
+#define _XKB_RF_NAMES_PROP_ATOM "_XKB_RULES_NAMES"
+
_XFUNCPROTOEND
#endif /* _XKBRULES_H_ */
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index d187a1e87..edd4de4b5 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -49,8 +49,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "scrnintstr.h"
#include "xkbgeom.h"
-#define _XKB_RF_NAMES_PROP_ATOM "_XKB_RULES_NAMES"
-
#define CREATE_ATOM(s) MakeAtom(s,sizeof(s)-1,1)
#if defined(__alpha) || defined(__alpha__)
commit adf0fa5b195148c8342771906db2e27050c30985
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: move XkbRF_* defines into xkb/maprules.c"
This reverts commit b535fd7a4c4baec990e726fb2c4c00b74c1cc57b.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 74473cb24..6be20ea5f 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -67,6 +67,11 @@ typedef struct _XkbRF_Group {
char *words;
} XkbRF_GroupRec, *XkbRF_GroupPtr;
+#define XkbRF_PendingMatch (1L<<1)
+#define XkbRF_Option (1L<<2)
+#define XkbRF_Append (1L<<3)
+#define XkbRF_Normal (1L<<4)
+
typedef struct _XkbRF_Rules {
unsigned short sz_rules;
unsigned short num_rules;
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 395b5bfab..a324c67a0 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -47,11 +47,7 @@
#include "xkbstr.h"
#include <xkbsrv.h>
-
-#define XkbRF_PendingMatch (1L<<1)
-#define XkbRF_Option (1L<<2)
-#define XkbRF_Append (1L<<3)
-#define XkbRF_Normal (1L<<4)
+/***====================================================================***/
#define DFLT_LINE_SIZE 128
commit ef329d6a5c50f4b5c775f8fb5aad07caea809c3c
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport XkbRF_GetComponents()"
This reverts commit d3b328ba4a70bc74f9dde6d004023b185d70beaa.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 97887ec78..74473cb24 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -80,6 +80,14 @@ typedef struct _XkbRF_Rules {
_XFUNCPROTOBEGIN
+/* Seems preferable to dragging xkbstr.h in. */
+ struct _XkbComponentNames;
+
+extern _X_EXPORT Bool XkbRF_GetComponents(XkbRF_RulesPtr /* rules */ ,
+ XkbRF_VarDefsPtr /* var_defs */ ,
+ struct _XkbComponentNames * /* names */
+ );
+
extern _X_EXPORT Bool XkbRF_LoadRules(FILE * /* file */ ,
XkbRF_RulesPtr /* rules */
);
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index 8001cb25d..e147aabce 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -42,7 +42,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "os/osdep.h"
#include "xkb/xkbfile_priv.h"
#include "xkb/xkbfmisc_priv.h"
-#include "xkb/xkbrules_priv.h"
#include "inputstr.h"
#include "scrnintstr.h"
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 83abe8076..395b5bfab 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -40,9 +40,6 @@
#include <X11/Xfuncs.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
-
-#include "xkb/xkbrules_priv.h"
-
#include "misc.h"
#include "inputstr.h"
#include "dix.h"
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
deleted file mode 100644
index 7e73ec7a3..000000000
--- a/xkb/xkbrules_priv.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: MIT OR X11
- *
- * Copyright © 2024 Enrico Weigelt, metux IT consult <info at metux.net>
- */
-#ifndef _XSERVER_XKB_XKBRULES_PRIV_H
-#define _XSERVER_XKB_XKBRULES_PRIV_H
-
-#include <X11/Xdefs.h>
-
-#include "include/xkbrules.h"
-
-struct _XkbComponentNames;
-
-Bool XkbRF_GetComponents(XkbRF_RulesPtr rules,
- XkbRF_VarDefsPtr var_defs,
- struct _XkbComponentNames *names);
-
-#endif /* _XSERVER_XKB_XKBRULES_PRIV_H */
commit fef268f6801790e10dcf7327cdb707548e995513
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport XkbRF_LoadRules()"
This reverts commit c376cd2c3dfc82b842e0db8abdddd6fa0e455cdb.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 11bd6ab93..97887ec78 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -80,6 +80,10 @@ typedef struct _XkbRF_Rules {
_XFUNCPROTOBEGIN
+extern _X_EXPORT Bool XkbRF_LoadRules(FILE * /* file */ ,
+ XkbRF_RulesPtr /* rules */
+ );
+
extern _X_EXPORT XkbRF_RulesPtr XkbRF_Create(void);
extern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index e498f6ced..7e73ec7a3 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -5,7 +5,6 @@
#ifndef _XSERVER_XKB_XKBRULES_PRIV_H
#define _XSERVER_XKB_XKBRULES_PRIV_H
-#include <stdio.h>
#include <X11/Xdefs.h>
#include "include/xkbrules.h"
@@ -16,6 +15,4 @@ Bool XkbRF_GetComponents(XkbRF_RulesPtr rules,
XkbRF_VarDefsPtr var_defs,
struct _XkbComponentNames *names);
-Bool XkbRF_LoadRules(FILE *file, XkbRF_RulesPtr rules);
-
#endif /* _XSERVER_XKB_XKBRULES_PRIV_H */
commit cb285e18c0a75f7a02968bb0c2ecdbd24e49050c
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport XkbRF_Create()"
This reverts commit 89475cbed488b46278ca46812d6443eba9d33797.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index ac9de2bfd..11bd6ab93 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -80,6 +80,8 @@ typedef struct _XkbRF_Rules {
_XFUNCPROTOBEGIN
+extern _X_EXPORT XkbRF_RulesPtr XkbRF_Create(void);
+
extern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
Bool /* freeRules */
);
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index 932ce3f1d..e498f6ced 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -18,6 +18,4 @@ Bool XkbRF_GetComponents(XkbRF_RulesPtr rules,
Bool XkbRF_LoadRules(FILE *file, XkbRF_RulesPtr rules);
-XkbRF_RulesPtr XkbRF_Create(void);
-
#endif /* _XSERVER_XKB_XKBRULES_PRIV_H */
commit dafa74fa1bb435c08bf863888517d5ac79090017
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport XkbRF_Free()"
This reverts commit 34372cb3da14f6086614ca4d8c9c5294c7b793bf.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index b2c1c7230..ac9de2bfd 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -76,4 +76,13 @@ typedef struct _XkbRF_Rules {
XkbRF_GroupPtr groups;
} XkbRF_RulesRec, *XkbRF_RulesPtr;
+/***====================================================================***/
+
+_XFUNCPROTOBEGIN
+
+extern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
+ Bool /* freeRules */
+ );
+
+_XFUNCPROTOEND
#endif /* _XKBRULES_H_ */
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index 8f1688030..932ce3f1d 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -20,6 +20,4 @@ Bool XkbRF_LoadRules(FILE *file, XkbRF_RulesPtr rules);
XkbRF_RulesPtr XkbRF_Create(void);
-void XkbRF_Free(XkbRF_RulesPtr rules, Bool freeRules);
-
#endif /* _XSERVER_XKB_XKBRULES_PRIV_H */
commit 01fa00fb906b21199233f76c774a505768df4b17
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport XkbRF_RulesRec struct"
This reverts commit 043dc8041c09c444fe04b0322518205bd668b31c.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 98068afac..b2c1c7230 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -67,4 +67,13 @@ typedef struct _XkbRF_Group {
char *words;
} XkbRF_GroupRec, *XkbRF_GroupPtr;
+typedef struct _XkbRF_Rules {
+ unsigned short sz_rules;
+ unsigned short num_rules;
+ XkbRF_RulePtr rules;
+ unsigned short sz_groups;
+ unsigned short num_groups;
+ XkbRF_GroupPtr groups;
+} XkbRF_RulesRec, *XkbRF_RulesPtr;
+
#endif /* _XKBRULES_H_ */
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index 71b1a8cd0..8f1688030 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -10,15 +10,6 @@
#include "include/xkbrules.h"
-typedef struct _XkbRF_Rules {
- unsigned short sz_rules;
- unsigned short num_rules;
- XkbRF_RulePtr rules;
- unsigned short sz_groups;
- unsigned short num_groups;
- XkbRF_GroupPtr groups;
-} XkbRF_RulesRec, *XkbRF_RulesPtr;
-
struct _XkbComponentNames;
Bool XkbRF_GetComponents(XkbRF_RulesPtr rules,
commit 396e3e7a54dab218ab9dde518912da936990480a
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport XkbRF_GroupRec struct"
This reverts commit 83c8a90a61a2dbeb755752ac66e16506be9aba34.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 2add6996e..98068afac 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -61,4 +61,10 @@ typedef struct _XkbRF_Rule {
unsigned flags;
} XkbRF_RuleRec, *XkbRF_RulePtr;
+typedef struct _XkbRF_Group {
+ int number;
+ const char *name;
+ char *words;
+} XkbRF_GroupRec, *XkbRF_GroupPtr;
+
#endif /* _XKBRULES_H_ */
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index 918be5339..71b1a8cd0 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -10,12 +10,6 @@
#include "include/xkbrules.h"
-typedef struct _XkbRF_Group {
- int number;
- const char *name;
- char *words;
-} XkbRF_GroupRec, *XkbRF_GroupPtr;
-
typedef struct _XkbRF_Rules {
unsigned short sz_rules;
unsigned short num_rules;
commit 033936539b55cb7a923ea3fc7fbdde3f8f9dc2b9
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: unexport XkbRF_RuleRec struct"
This reverts commit a82fa008359022ed1beb05d403d3f1dbe933b2ff.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/include/xkbrules.h b/include/xkbrules.h
index 20ea78e17..2add6996e 100644
--- a/include/xkbrules.h
+++ b/include/xkbrules.h
@@ -44,4 +44,21 @@ typedef struct _XkbRF_VarDefs {
const char *options;
} XkbRF_VarDefsRec, *XkbRF_VarDefsPtr;
+typedef struct _XkbRF_Rule {
+ int number;
+ int layout_num;
+ int variant_num;
+ const char *model;
+ const char *layout;
+ const char *variant;
+ const char *option;
+ /* yields */
+ const char *keycodes;
+ const char *symbols;
+ const char *types;
+ const char *compat;
+ const char *geometry;
+ unsigned flags;
+} XkbRF_RuleRec, *XkbRF_RulePtr;
+
#endif /* _XKBRULES_H_ */
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index b494edb8d..918be5339 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -10,23 +10,6 @@
#include "include/xkbrules.h"
-typedef struct _XkbRF_Rule {
- int number;
- int layout_num;
- int variant_num;
- const char *model;
- const char *layout;
- const char *variant;
- const char *option;
- /* yields */
- const char *keycodes;
- const char *symbols;
- const char *types;
- const char *compat;
- const char *geometry;
- unsigned flags;
-} XkbRF_RuleRec, *XkbRF_RulePtr;
-
typedef struct _XkbRF_Group {
int number;
const char *name;
commit 950462f6e67db0e358643e0a488404dc630a9d88
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: make XkbRF_Create() static inline"
This reverts commit 60d37d0158ad9e1c29e4740e73911083e218c332.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 9c6f7c2b3..83abe8076 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -970,6 +970,16 @@ XkbRF_LoadRules(FILE * file, XkbRF_RulesPtr rules)
return TRUE;
}
+/***====================================================================***/
+
+XkbRF_RulesPtr
+XkbRF_Create(void)
+{
+ return calloc(1, sizeof(XkbRF_RulesRec));
+}
+
+/***====================================================================***/
+
void
XkbRF_Free(XkbRF_RulesPtr rules, Bool freeRules)
{
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index 3739c15a8..b494edb8d 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -6,7 +6,6 @@
#define _XSERVER_XKB_XKBRULES_PRIV_H
#include <stdio.h>
-#include <stdlib.h>
#include <X11/Xdefs.h>
#include "include/xkbrules.h"
@@ -51,10 +50,7 @@ Bool XkbRF_GetComponents(XkbRF_RulesPtr rules,
Bool XkbRF_LoadRules(FILE *file, XkbRF_RulesPtr rules);
-static inline XkbRF_RulesPtr XkbRF_Create(void)
-{
- return calloc(1, sizeof(XkbRF_RulesRec));
-}
+XkbRF_RulesPtr XkbRF_Create(void);
void XkbRF_Free(XkbRF_RulesPtr rules, Bool freeRules);
commit 03b1d94dc386ba03b1a73edcd611765859dd2da2
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: maprules: put some loop counters into local scope"
This reverts commit ffd7ca8af2885da59c9879abe8a15d698e73aa4a.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/xkb/maprules.c b/xkb/maprules.c
index fe064fd14..9c6f7c2b3 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -262,6 +262,7 @@ SetUpRemap(InputLine * line, RemapSpec * remap)
{
char *tok, *str;
unsigned present, l_ndx_present, v_ndx_present;
+ register int i;
int len, ndx;
_Xstrtokparams strtok_buf;
Bool found;
@@ -276,7 +277,7 @@ SetUpRemap(InputLine * line, RemapSpec * remap)
str = NULL;
if (strcmp(tok, "=") == 0)
continue;
- for (int i = 0; i < MAX_WORDS; i++) {
+ for (i = 0; i < MAX_WORDS; i++) {
len = strlen(cname[i]);
if (strncmp(cname[i], tok, len) == 0) {
if (strlen(tok) > len) {
@@ -322,7 +323,7 @@ SetUpRemap(InputLine * line, RemapSpec * remap)
unsigned mask = PART_MASK;
ErrorF("Mapping needs at least one of ");
- for (int i = 0; (i < MAX_WORDS); i++) {
+ for (i = 0; (i < MAX_WORDS); i++) {
if ((1L << i) & mask) {
mask &= ~(1L << i);
if (mask)
@@ -375,7 +376,7 @@ CheckLine(InputLine * line,
RemapSpec * remap, XkbRF_RulePtr rule, XkbRF_GroupPtr group)
{
char *str, *tok;
- register int nread;
+ register int nread, i;
FileSpec tmp;
_Xstrtokparams strtok_buf;
Bool append = FALSE;
@@ -397,8 +398,6 @@ CheckLine(InputLine * line,
return FALSE;
group->name = Xstrdup(gname);
group->words = Xstrdup(words);
-
- int i;
for (i = 1, words = group->words; *words; words++) {
if (*words == ' ') {
*words++ = '\0';
@@ -462,7 +461,7 @@ CheckLine(InputLine * line,
rule->geometry = Xstrdup(tmp.name[GEOMETRY]);
rule->layout_num = rule->variant_num = 0;
- for (int i = 0; i < nread; i++) {
+ for (i = 0; i < nread; i++) {
if (remap->remap[i].index) {
if (remap->remap[i].word == LAYOUT)
rule->layout_num = remap->remap[i].index;
@@ -490,7 +489,9 @@ _Concat(char *str1, const char *str2)
static void
squeeze_spaces(char *p1)
{
- for (char *p2 = p1; *p2; p2++) {
+ char *p2;
+
+ for (p2 = p1; *p2; p2++) {
*p1 = *p2;
if (*p1 != ' ')
p1++;
@@ -516,6 +517,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
else {
char *p;
char *layout;
+ int i;
layout = Xstrdup(defs->layout);
if (layout == NULL)
@@ -523,7 +525,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
squeeze_spaces(layout);
mdefs->layout[1] = layout;
p = layout;
- for (int i = 2; i <= XkbNumKbdGroups; i++) {
+ for (i = 2; i <= XkbNumKbdGroups; i++) {
if ((p = strchr(p, ','))) {
*p++ = '\0';
mdefs->layout[i] = p;
@@ -544,6 +546,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
else {
char *p;
char *variant;
+ int i;
variant = Xstrdup(defs->variant);
if (variant == NULL)
@@ -551,7 +554,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
squeeze_spaces(variant);
mdefs->variant[1] = variant;
p = variant;
- for (int i = 2; i <= XkbNumKbdGroups; i++) {
+ for (i = 2; i <= XkbNumKbdGroups; i++) {
if ((p = strchr(p, ','))) {
*p++ = '\0';
mdefs->variant[i] = p;
commit 1598978df25158249271a420190f28b594a22d67
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: maprules: use static struct init instead of memset()"
This reverts commit a88b17565bd98f2a5112e7e05ed1507c15c996f0.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/xkb/maprules.c b/xkb/maprules.c
index b5bdfefc3..fe064fd14 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -376,6 +376,7 @@ CheckLine(InputLine * line,
{
char *str, *tok;
register int nread;
+ FileSpec tmp;
_Xstrtokparams strtok_buf;
Bool append = FALSE;
@@ -418,9 +419,7 @@ CheckLine(InputLine * line,
DebugF("Illegal line of data ignored\n");
return FALSE;
}
-
- FileSpec tmp = { 0 };
-
+ memset((char *) &tmp, 0, sizeof(FileSpec));
str = line->line;
for (nread = 0; (tok = _XStrtok(str, " ", strtok_buf)) != NULL; nread++) {
str = NULL;
commit 8f184bb6ca34ef662d3f8e20d2cddee6c05f9101
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: drop obsolete parameter from XkbRF_Free()"
This reverts commit abfbc768240f740192e00e3c136d37f93bec542d.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index a231e96bf..8001cb25d 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -436,14 +436,14 @@ XkbDDXNamesFromRules(DeviceIntPtr keybd,
if (!XkbRF_LoadRules(file, rules)) {
LogMessage(X_ERROR, "XKB: Couldn't parse rules file %s\n", rules_name);
fclose(file);
- XkbRF_Free(rules);
+ XkbRF_Free(rules, TRUE);
return FALSE;
}
memset(names, 0, sizeof(*names));
complete = XkbRF_GetComponents(rules, defs, names);
fclose(file);
- XkbRF_Free(rules);
+ XkbRF_Free(rules, TRUE);
if (!complete)
LogMessage(X_ERROR, "XKB: Rules returned no components\n");
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 222b6107e..b5bdfefc3 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -969,7 +969,7 @@ XkbRF_LoadRules(FILE * file, XkbRF_RulesPtr rules)
}
void
-XkbRF_Free(XkbRF_RulesPtr rules)
+XkbRF_Free(XkbRF_RulesPtr rules, Bool freeRules)
{
int i;
XkbRF_RulePtr rule;
@@ -988,8 +988,11 @@ XkbRF_Free(XkbRF_RulesPtr rules)
free((void *) rule->types);
free((void *) rule->compat);
free((void *) rule->geometry);
+ memset((char *) rule, 0, sizeof(XkbRF_RuleRec));
}
free(rules->rules);
+ rules->num_rules = rules->sz_rules = 0;
+ rules->rules = NULL;
}
if (rules->groups) {
@@ -998,8 +1001,10 @@ XkbRF_Free(XkbRF_RulesPtr rules)
free(group->words);
}
free(rules->groups);
+ rules->num_groups = 0;
+ rules->groups = NULL;
}
-
- free(rules);
+ if (freeRules)
+ free(rules);
return;
}
diff --git a/xkb/xkbrules_priv.h b/xkb/xkbrules_priv.h
index deb29d093..3739c15a8 100644
--- a/xkb/xkbrules_priv.h
+++ b/xkb/xkbrules_priv.h
@@ -56,6 +56,6 @@ static inline XkbRF_RulesPtr XkbRF_Create(void)
return calloc(1, sizeof(XkbRF_RulesRec));
}
-void XkbRF_Free(XkbRF_RulesPtr rules);
+void XkbRF_Free(XkbRF_RulesPtr rules, Bool freeRules);
#endif /* _XSERVER_XKB_XKBRULES_PRIV_H */
commit 239b212c657dccb5e1cbbcb0d287a02affbdc3ad
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date: Sat Jul 12 11:47:06 2025 -0700
Revert "xkb: simplify loops in XkbRF_Free()"
This reverts commit a0c1eeea98b907abc0fd1200f2be6308c854d5c6.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2046>
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 8a1944ef5..222b6107e 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -971,34 +971,31 @@ XkbRF_LoadRules(FILE * file, XkbRF_RulesPtr rules)
void
XkbRF_Free(XkbRF_RulesPtr rules)
{
+ int i;
+ XkbRF_RulePtr rule;
+ XkbRF_GroupPtr group;
+
if (!rules)
return;
-
if (rules->rules) {
- XkbRF_RulePtr r = rules->rules;
- int num = rules->num_rules;
- for (int i = 0; i < num; i++) {
- // the typecast on free() is necessary because the pointers are const
- free((void *) r[i].model);
- free((void *) r[i].layout);
- free((void *) r[i].variant);
- free((void *) r[i].option);
- free((void *) r[i].keycodes);
- free((void *) r[i].symbols);
- free((void *) r[i].types);
- free((void *) r[i].compat);
- free((void *) r[i].geometry);
+ for (i = 0, rule = rules->rules; i < rules->num_rules; i++, rule++) {
+ free((void *) rule->model);
+ free((void *) rule->layout);
+ free((void *) rule->variant);
+ free((void *) rule->option);
+ free((void *) rule->keycodes);
+ free((void *) rule->symbols);
+ free((void *) rule->types);
+ free((void *) rule->compat);
+ free((void *) rule->geometry);
}
free(rules->rules);
}
if (rules->groups) {
- XkbRF_GroupPtr g = rules->groups;
- int num = rules->num_groups;
- for (int i = 0; i < num; i++) {
- // the typecast on free() is necessary because the pointers are const
- free((void *) g[i].name);
- free(g[i].words);
+ for (i = 0, group = rules->groups; i < rules->num_groups; i++, group++) {
+ free((void *) group->name);
+ free(group->words);
}
free(rules->groups);
}
More information about the xorg-commit
mailing list