#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include "xf86Module.h"
#include "xf86Opt.h"
#include <X11/Xproto.h>
#include "modinit.h"
#include "globals.h"
static MODULESETUPPROTO(extmodSetup);
static ExtensionModule extensionModules[] = {
#ifdef XSELINUX
{
SELinuxExtensionInit,
SELINUX_EXTENSION_NAME,
&noSELinuxExtension,
NULL,
NULL
},
#endif
#ifdef SCREENSAVER
{
ScreenSaverExtensionInit,
ScreenSaverName,
&noScreenSaverExtension,
NULL,
NULL
},
#endif
#ifdef XF86VIDMODE
{
XFree86VidModeExtensionInit,
XF86VIDMODENAME,
&noXFree86VidModeExtension,
NULL,
NULL
},
#endif
#ifdef XFreeXDGA
{
XFree86DGAExtensionInit,
XF86DGANAME,
&noXFree86DGAExtension,
XFree86DGARegister,
NULL
},
#endif
#ifdef DPMSExtension
{
DPMSExtensionInit,
DPMSExtensionName,
&noDPMSExtension,
NULL,
NULL
},
#endif
#ifdef XV
{
XvExtensionInit,
XvName,
&noXvExtension,
XvRegister,
NULL
},
{
XvMCExtensionInit,
XvMCName,
&noXvExtension,
NULL,
NULL
},
#endif
#ifdef RES
{
ResExtensionInit,
XRES_NAME,
&noResExtension,
NULL,
NULL
},
#endif
{
NULL,
NULL,
NULL,
NULL,
NULL
}
};
static XF86ModuleVersionInfo VersRec =
{
"extmod",
MODULEVENDORSTRING,
MODINFOSTRING1,
MODINFOSTRING2,
XORG_VERSION_CURRENT,
1, 0, 0,
ABI_CLASS_EXTENSION,
ABI_EXTENSION_VERSION,
MOD_CLASS_EXTENSION,
{0,0,0,0}
};
_X_EXPORT XF86ModuleData extmodModuleData = { &VersRec, extmodSetup, NULL };
static pointer
extmodSetup(pointer module, pointer opts, int *errmaj, int *errmin)
{
int i;
for (i = 0; extensionModules[i].name != NULL; i++) {
if (opts) {
char *s;
if (asprintf(&s, "omit%s", extensionModules[i].name) != -1) {
pointer o;
o = xf86FindOption(opts, s);
free(s);
if (o) {
xf86MarkOptionUsed(o);
continue;
}
}
}
#ifdef XSELINUX
if (! strcmp(SELINUX_EXTENSION_NAME, extensionModules[i].name)) {
pointer o;
selinuxEnforcingState = SELINUX_MODE_DEFAULT;
if ((o = xf86FindOption(opts, "SELinux mode disabled"))) {
xf86MarkOptionUsed(o);
selinuxEnforcingState = SELINUX_MODE_DISABLED;
}
if ((o = xf86FindOption(opts, "SELinux mode permissive"))) {
xf86MarkOptionUsed(o);
selinuxEnforcingState = SELINUX_MODE_PERMISSIVE;
}
if ((o = xf86FindOption(opts, "SELinux mode enforcing"))) {
xf86MarkOptionUsed(o);
selinuxEnforcingState = SELINUX_MODE_ENFORCING;
}
}
#endif
LoadExtension(&extensionModules[i], FALSE);
}
return (pointer)1;
}