From 4379f7cc87893920159d1ff2d88653d1cbad54ec Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Thu, 25 Jan 2024 16:38:10 +0100 Subject: [PATCH] Xnamespace: namespace extension skeleton Add tiny skeleton for the namespace extension. Disabled by default, can be enabled via +extension arg, but doesn't actually do something yet. Signed-off-by: Enrico Weigelt, metux IT consult --- Xext/namespace/meson.build | 8 ++++++++ Xext/namespace/namespace.c | 16 ++++++++++++++++ Xext/namespace/namespace.h | 18 ++++++++++++++++++ include/meson.build | 5 +++-- meson.build | 12 ++++++++++++ meson_options.txt | 2 ++ mi/miinitext.c | 3 +++ miext/extinit_priv.h | 2 ++ 8 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 Xext/namespace/meson.build create mode 100644 Xext/namespace/namespace.c create mode 100644 Xext/namespace/namespace.h diff --git a/Xext/namespace/meson.build b/Xext/namespace/meson.build new file mode 100644 index 000000000..f8ce18fe8 --- /dev/null +++ b/Xext/namespace/meson.build @@ -0,0 +1,8 @@ +libxserver_namespace = static_library( + 'libxserver_namespace', + [ + 'namespace.c', + ], + include_directories: inc, + dependencies: common_dep, +) diff --git a/Xext/namespace/namespace.c b/Xext/namespace/namespace.c new file mode 100644 index 000000000..3a74e592a --- /dev/null +++ b/Xext/namespace/namespace.c @@ -0,0 +1,16 @@ +#include + +#include + +#include "include/os.h" +#include "miext/extinit_priv.h" + +#include "namespace.h" + +Bool noNamespaceExtension = TRUE; + +void +NamespaceExtensionInit(void) +{ + XNS_LOG("initializing namespace extension ...\n"); +} diff --git a/Xext/namespace/namespace.h b/Xext/namespace/namespace.h new file mode 100644 index 000000000..96a307bb4 --- /dev/null +++ b/Xext/namespace/namespace.h @@ -0,0 +1,18 @@ +#ifndef __XSERVER_NAMESPACE_H +#define __XSERVER_NAMESPACE_H + +#include +#include + +#define XNS_LOG(...) do { printf("XNS "); printf(__VA_ARGS__); } while (0) + +static inline Bool streq(const char *a, const char *b) +{ + if (!a && !b) + return TRUE; + if (!a || !b) + return FALSE; + return (strcmp(a,b) == 0); +} + +#endif /* __XSERVER_NAMESPACE_H */ diff --git a/include/meson.build b/include/meson.build index 650b86e6d..5ed4c1b24 100644 --- a/include/meson.build +++ b/include/meson.build @@ -228,6 +228,7 @@ conf_data.set('SHAPE', '1') conf_data.set('XACE', build_xace ? '1' : false) conf_data.set('XCMISC', '1') conf_data.set('XCSECURITY', build_xsecurity ? '1' : false) +conf_data.set('CONFIG_NAMESPACE', build_namespace ? '1' : false) conf_data.set('XDMCP', xdmcp_dep.found() ? '1' : false) conf_data.set('XF86BIGFONT', build_xf86bigfont ? '1' : false) conf_data.set('XF86DRI', build_dri1 ? '1' : false) @@ -245,9 +246,9 @@ conf_data.set('XvExtension', build_xv ? '1' : false) conf_data.set('XvMCExtension', build_xvmc ? '1' : false) # needed by several extensions -build_registry_resource = (build_xselinux or build_res) +build_registry_resource = (build_xselinux or build_res or build_namespace) conf_data.set('X_REGISTRY_RESOURCE', build_registry_resource ? '1' : false) -build_registry_request = (build_xselinux or build_xsecurity or with_dtrace) +build_registry_request = (build_xselinux or build_xsecurity or with_dtrace or build_namespace) conf_data.set('X_REGISTRY_REQUEST', build_registry_request ? '1' : false) conf_data.set('HAVE_SHA1_IN_' + sha1.to_upper(), '1', description: 'Use @0@ SHA1 functions'.format(sha1)) diff --git a/meson.build b/meson.build index c911bb60e..b94849ee6 100644 --- a/meson.build +++ b/meson.build @@ -568,6 +568,13 @@ if build_xsecurity endif endif +build_namespace = get_option('namespace') +if build_namespace + if not build_xace + error('cannot build Container extension without X-ACE') + endif +endif + build_xv = get_option('xv') build_xvmc = get_option('xvmc') if not build_xv @@ -819,6 +826,11 @@ libxserver = [ libxserver += libxserver_dri3 +if build_namespace + subdir('Xext/namespace') + libxserver += libxserver_namespace +endif + subdir('hw') if host_machine.system() != 'windows' diff --git a/meson_options.txt b/meson_options.txt index 2beb07d9e..228e2917b 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -90,6 +90,8 @@ option('xace', type: 'boolean', value: true, description: 'X-ACE extension') option('xselinux', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'XSELINUX extension') +option('namespace', type: 'boolean', value: true, + description: 'Container/namespace extension') option('xinerama', type: 'boolean', value: true, description: 'Xinerama extension') option('xcsecurity', type: 'boolean', value: false, diff --git a/mi/miinitext.c b/mi/miinitext.c index cd8d836df..1de3d4b2d 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -115,6 +115,9 @@ static const ExtensionModule staticExtensions[] = { #ifdef XCSECURITY {SecurityExtensionInit, "SECURITY", &noSecurityExtension}, #endif +#ifdef CONFIG_NAMESPACE + {NamespaceExtensionInit, "NAMESPACE", &noNamespaceExtension}, +#endif #ifdef XINERAMA {PanoramiXExtensionInit, "XINERAMA", &noPanoramiXExtension}, #endif /* XINERAMA */ diff --git a/miext/extinit_priv.h b/miext/extinit_priv.h index 8e06a3f76..10351807d 100644 --- a/miext/extinit_priv.h +++ b/miext/extinit_priv.h @@ -23,6 +23,7 @@ extern Bool noShapeExtension; extern Bool noTestExtensions; extern Bool noXFixesExtension; extern Bool noXFree86BigfontExtension; +extern Bool noNamespaceExtension; void CompositeExtensionInit(void); void DamageExtensionInit(void); @@ -53,5 +54,6 @@ void XvMCExtensionInit(void); void dri3_extension_init(void); void PseudoramiXExtensionInit(void); void present_extension_init(void); +void NamespaceExtensionInit(void); #endif /* _XSERVER_EXTINIT_PRIV_H */