From e2cb7ac2a190c3d49d9b4a5be426ce3eec0b895b Mon Sep 17 00:00:00 2001 From: David Reveman Date: Fri, 12 Sep 2008 16:11:55 +0200 Subject: [PATCH] Remove old DMX config system. --- configure.ac | 4 - hw/dmx/Makefile.am | 5 +- hw/dmx/config/Canvas.c | 159 ----- hw/dmx/config/Canvas.h | 55 -- hw/dmx/config/CanvasP.h | 65 -- hw/dmx/config/Makefile.am | 89 --- hw/dmx/config/TODO | 7 - hw/dmx/config/dmxcompat.c | 236 ------- hw/dmx/config/dmxcompat.h | 44 -- hw/dmx/config/dmxconfig.c | 552 ---------------- hw/dmx/config/dmxconfig.h | 72 -- hw/dmx/config/dmxparse.c | 607 ----------------- hw/dmx/config/dmxparse.h | 297 --------- hw/dmx/config/dmxprint.c | 455 ------------- hw/dmx/config/dmxprint.h | 43 -- hw/dmx/config/dmxtodmx.c | 49 -- hw/dmx/config/dmxtodmx.man | 41 -- hw/dmx/config/parser.y | 226 ------- hw/dmx/config/scanner.l | 184 ------ hw/dmx/config/test-a.in | 1 - hw/dmx/config/test-a.out | 2 - hw/dmx/config/test-b.in | 1 - hw/dmx/config/test-b.out | 1 - hw/dmx/config/test-c.in | 1 - hw/dmx/config/test-c.out | 2 - hw/dmx/config/test-d.in | 1 - hw/dmx/config/test-d.out | 2 - hw/dmx/config/test-e.in | 1 - hw/dmx/config/test-e.out | 2 - hw/dmx/config/test-f.in | 2 - hw/dmx/config/test-f.out | Bin 69 -> 0 bytes hw/dmx/config/test-g.in | 4 - hw/dmx/config/test-g.out | 4 - hw/dmx/config/test-h.in | 7 - hw/dmx/config/test-h.out | 7 - hw/dmx/config/test-i.in | 3 - hw/dmx/config/test-i.out | 3 - hw/dmx/config/test-j.in | 13 - hw/dmx/config/test-j.out | 11 - hw/dmx/config/test-k.in | 3 - hw/dmx/config/test-k.out | 3 - hw/dmx/config/test-l.in | 12 - hw/dmx/config/test-l.out | 12 - hw/dmx/config/vdltodmx.c | 57 -- hw/dmx/config/vdltodmx.man | 95 --- hw/dmx/config/xdmxconfig.c | 1191 ---------------------------------- hw/dmx/config/xdmxconfig.man | 63 -- hw/dmx/dmxextension.c | 4 +- hw/dmx/dmxinit.c | 164 ++--- hw/dmx/dmxinit.h | 8 +- hw/dmx/dmxinput.h | 7 - hw/dmx/dmxlaunch.c | 16 +- hw/dmx/dmxlog.c | 11 +- hw/dmx/input/dmxbackend.c | 5 - hw/dmx/input/dmxcommon.c | 11 +- hw/dmx/input/dmxconsole.c | 5 +- hw/dmx/input/dmxinputinit.c | 214 ++---- 57 files changed, 151 insertions(+), 4988 deletions(-) delete mode 100644 hw/dmx/config/Canvas.c delete mode 100644 hw/dmx/config/Canvas.h delete mode 100644 hw/dmx/config/CanvasP.h delete mode 100644 hw/dmx/config/Makefile.am delete mode 100644 hw/dmx/config/TODO delete mode 100644 hw/dmx/config/dmxcompat.c delete mode 100644 hw/dmx/config/dmxcompat.h delete mode 100644 hw/dmx/config/dmxconfig.c delete mode 100644 hw/dmx/config/dmxconfig.h delete mode 100644 hw/dmx/config/dmxparse.c delete mode 100644 hw/dmx/config/dmxparse.h delete mode 100644 hw/dmx/config/dmxprint.c delete mode 100644 hw/dmx/config/dmxprint.h delete mode 100644 hw/dmx/config/dmxtodmx.c delete mode 100644 hw/dmx/config/dmxtodmx.man delete mode 100644 hw/dmx/config/parser.y delete mode 100644 hw/dmx/config/scanner.l delete mode 100644 hw/dmx/config/test-a.in delete mode 100644 hw/dmx/config/test-a.out delete mode 100644 hw/dmx/config/test-b.in delete mode 100644 hw/dmx/config/test-b.out delete mode 100644 hw/dmx/config/test-c.in delete mode 100644 hw/dmx/config/test-c.out delete mode 100644 hw/dmx/config/test-d.in delete mode 100644 hw/dmx/config/test-d.out delete mode 100644 hw/dmx/config/test-e.in delete mode 100644 hw/dmx/config/test-e.out delete mode 100644 hw/dmx/config/test-f.in delete mode 100644 hw/dmx/config/test-f.out delete mode 100644 hw/dmx/config/test-g.in delete mode 100644 hw/dmx/config/test-g.out delete mode 100644 hw/dmx/config/test-h.in delete mode 100644 hw/dmx/config/test-h.out delete mode 100644 hw/dmx/config/test-i.in delete mode 100644 hw/dmx/config/test-i.out delete mode 100644 hw/dmx/config/test-j.in delete mode 100644 hw/dmx/config/test-j.out delete mode 100644 hw/dmx/config/test-k.in delete mode 100644 hw/dmx/config/test-k.out delete mode 100644 hw/dmx/config/test-l.in delete mode 100644 hw/dmx/config/test-l.out delete mode 100644 hw/dmx/config/vdltodmx.c delete mode 100644 hw/dmx/config/vdltodmx.man delete mode 100644 hw/dmx/config/xdmxconfig.c delete mode 100644 hw/dmx/config/xdmxconfig.man diff --git a/configure.ac b/configure.ac index bec3325c0..4c560ac61 100644 --- a/configure.ac +++ b/configure.ac @@ -1601,9 +1601,6 @@ dnl Linux sources in DMX require if test "x$GLX" = xyes; then PKG_CHECK_MODULES([GL], [glproto]) fi - PKG_CHECK_MODULES([XDMXCONFIG_DEP], [xaw7 xmu xt xpm x11]) - AC_SUBST(XDMXCONFIG_DEP_CFLAGS) - AC_SUBST(XDMXCONFIG_DEP_LIBS) PKG_CHECK_MODULES([DMXEXAMPLES_DEP], [dmx xext x11]) AC_SUBST(DMXEXAMPLES_DEP_LIBS) PKG_CHECK_MODULES([DMXXMUEXAMPLES_DEP], [dmx xmu xext x11]) @@ -1869,7 +1866,6 @@ hw/xfree86/xf8_16bpp/Makefile hw/xfree86/utils/Makefile hw/xfree86/utils/cvt/Makefile hw/xfree86/utils/gtf/Makefile -hw/dmx/config/Makefile hw/dmx/doc/Makefile hw/dmx/examples/Makefile hw/dmx/input/Makefile diff --git a/hw/dmx/Makefile.am b/hw/dmx/Makefile.am index ab668acbc..c95e2abe1 100644 --- a/hw/dmx/Makefile.am +++ b/hw/dmx/Makefile.am @@ -1,6 +1,6 @@ -DIST_SUBDIRS = input config glxProxy examples doc +DIST_SUBDIRS = input glxProxy examples doc -SUBDIRS = input config examples +SUBDIRS = input examples bin_PROGRAMS = Xdmx if XINERAMA @@ -121,7 +121,6 @@ XDMX_LIBS = \ $(top_srcdir)/xfixes/libxfixes.la \ $(top_srcdir)/damageext/libdamageext.la \ input/libdmxinput.a \ - config/libdmxconfig.a \ $(XSERVER_LIBS) Xdmx_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) diff --git a/hw/dmx/config/Canvas.c b/hw/dmx/config/Canvas.c deleted file mode 100644 index c2eba876a..000000000 --- a/hw/dmx/config/Canvas.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 1987, 1998 The Open Group - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of The Open Group shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from The Open Group. - */ - -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - * This file was originally taken from xc/lib/Xaw/Template.c - */ - -#include -#include -#include "CanvasP.h" - -static void CanvasInitialize(Widget request, Widget w, - ArgList args, Cardinal *num_args) -{ -} - -static void CanvasExpose(Widget w, XEvent *event, Region region) -{ - CanvasExposeDataRec data; - - data.w = w; - data.event = event; - data.region = region; - - if (!XtIsRealized(w)) return; - XtCallCallbacks(w, XtNcanvasExposeCallback, (XtPointer)&data); -} - -static void CanvasResize(Widget w) -{ - if (!XtIsRealized(w)) return; - XtCallCallbacks(w, XtNcanvasResizeCallback, (XtPointer)w); -} - -static void CanvasAction(Widget w, XEvent *event, - String *params, Cardinal *num_params) -{ - XtCallCallbacks(w, XtNcallback, (XtPointer)event); -} - -#define offset(field) XtOffsetOf(CanvasRec, canvas.field) -static XtResource resources[] = { - { XtNcallback, XtCCallback, XtRCallback, - sizeof(XtCallbackList), offset(input_callback), XtRCallback, NULL }, - { XtNcanvasExposeCallback, XtCcanvasExposeCallback, XtRCallback, - sizeof(XtCallbackList), offset(expose_callback), XtRCallback, NULL }, - { XtNcanvasResizeCallback, XtCcanvasResizeCallback, XtRCallback, - sizeof(XtCallbackList), offset(resize_callback), XtRCallback, NULL }, -}; -#undef offset - -static XtActionsRec actions[] = -{ - {"canvas", CanvasAction}, -}; - -static char translations[] = -": canvas()\n\ -: canvas()\n\ -: canvas()\n\ -: canvas()\n\ -" -; - -#define Superclass (&widgetClassRec) -CanvasClassRec canvasClassRec = { - /* core */ - { - (WidgetClass)Superclass, /* superclass */ - "Canvas", /* class_name */ - sizeof(CanvasRec), /* widget_size */ - NULL, /* class_initialize */ - NULL, /* class_part_initialize */ - False, /* class_inited */ - CanvasInitialize, /* initialize */ - NULL, /* initialize_hook */ - XtInheritRealize, /* realize */ - actions, /* actions */ - XtNumber(actions), /* num_actions */ - resources, /* resources */ - XtNumber(resources), /* num_resources */ - NULLQUARK, /* xrm_class */ - True, /* compress_motion */ - True, /* compress_exposure */ - True, /* compress_enterleave */ - False, /* visible_interest */ - NULL, /* destroy */ - CanvasResize, /* resize */ - CanvasExpose, /* expose */ - NULL, /* set_values */ - NULL, /* set_values_hook */ - XtInheritSetValuesAlmost, /* set_values_almost */ - NULL, /* get_values_hook */ - NULL, /* accept_focus */ - XtVersion, /* version */ - NULL, /* callback_private */ - translations, /* tm_table */ - XtInheritQueryGeometry, /* query_geometry */ - XtInheritDisplayAccelerator, /* display_accelerator */ - NULL, /* extension */ - }, - /* canvas */ - { - NULL, /* extension */ - } -}; - -WidgetClass canvasWidgetClass = (WidgetClass)&canvasClassRec; diff --git a/hw/dmx/config/Canvas.h b/hw/dmx/config/Canvas.h deleted file mode 100644 index fe9a57f21..000000000 --- a/hw/dmx/config/Canvas.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - -Copyright 1987, 1998 The Open Group -Copyright 2002 Red Hat Inc., Durham, North Carolina. - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - * This file was originally taken from xc/lib/Xaw/Template.h - */ - -#ifndef _Canvas_h -#define _Canvas_h - -#include - -#define XtNcanvasExposeCallback "canvasExposeCallback" -#define XtCcanvasExposeCallback "CanvasExposeCallback" -#define XtNcanvasResizeCallback "canvasResizeCallback" -#define XtCcanvasResizeCallback "CanvasResizeCallback" - -typedef struct _CanvasClassRec *CanvasWidgetClass; -typedef struct _CanvasRec *CanvasWidget; -extern WidgetClass canvasWidgetClass; - -typedef struct _CanvasExposeDataRec { - Widget w; - XEvent *event; - Region region; -} CanvasExposeDataRec, *CanvasExposeDataPtr; - -#endif /* _Canvas_h */ diff --git a/hw/dmx/config/CanvasP.h b/hw/dmx/config/CanvasP.h deleted file mode 100644 index cf43710f1..000000000 --- a/hw/dmx/config/CanvasP.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - -Copyright 1987, 1998 The Open Group -Copyright 2002 Red Hat Inc., Durham, North Carolina. - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - * This file was originally taken from xc/lib/Xaw/TemplateP.h - */ - -#ifndef _CanvasP_h -#define _CanvasP_h - -#include "Canvas.h" - -/* include superclass private header file */ -#include - -typedef struct { - XtPointer extension; -} CanvasClassPart; - -typedef struct _CanvasClassRec { - CoreClassPart core_class; - CanvasClassPart canvas_class; -} CanvasClassRec; - -extern CanvasClassRec canvasClassRec; - -typedef struct { - XtCallbackList input_callback; - XtCallbackList expose_callback; - XtCallbackList resize_callback; -} CanvasPart; - -typedef struct _CanvasRec { - CorePart core; - CanvasPart canvas; -} CanvasRec; - -#endif /* _CanvasP_h */ diff --git a/hw/dmx/config/Makefile.am b/hw/dmx/config/Makefile.am deleted file mode 100644 index c31e04942..000000000 --- a/hw/dmx/config/Makefile.am +++ /dev/null @@ -1,89 +0,0 @@ -noinst_LIBRARIES = libdmxconfig.a - -LIBSRCS = parser.y \ - scanner.l \ - dmxparse.c \ - dmxparse.h \ - dmxprint.c \ - dmxprint.h \ - dmxcompat.c \ - dmxcompat.h \ - dmxconfig.c \ - dmxconfig.h - -parser.h: parser.c -scanner.c: scanner.l parser.h - -BUILT_SOURCES = parser.c parser.h scanner.c - -MAINTAINERCLEANFILES = $(BUILT_SOURCES) - -libdmxconfig_a_SOURCES = $(LIBSRCS) - -if GLX -GLX_DEFS = @GL_CFLAGS@ -GLX_INCS = -I@MESA_SOURCE@/include -endif - -AM_YFLAGS = -d -AM_CFLAGS = \ - $(DIX_CFLAGS) \ - -I$(top_srcdir)/hw/dmx \ - $(GLX_INCS) \ - -DHAVE_DMX_CONFIG_H \ - -DDMX_LOG_STANDALONE \ - $(GLX_DEFS) \ - @DMXMODULES_CFLAGS@ - -bin_PROGRAMS = xdmxconfig vdltodmx dmxtodmx - -xdmxconfig_DEPENDENCIES = libdmxconfig.a -xdmxconfig_SOURCES = \ - xdmxconfig.c \ - $(top_srcdir)/hw/dmx/dmxlog.c \ - Canvas.c \ - Canvas.h \ - CanvasP.h -xdmxconfig_LDADD = -L. -ldmxconfig @XDMXCONFIG_DEP_LIBS@ -xdmxconfig_CFLAGS = $(AM_CFLAGS) @XDMXCONFIG_DEP_CFLAGS@ - -vdltodmx_DEPENDENCIES = libdmxconfig.a -vdltodmx_SOURCES = vdltodmx.c -vdltodmx_LDADD = -L. -ldmxconfig - -dmxtodmx_DEPENDENCIES = libdmxconfig.a -dmxtodmx_SOURCES = dmxtodmx.c -dmxtodmx_LDADD = -L. -ldmxconfig - -appmandir = $(APP_MAN_DIR) - -appman_PRE = xdmxconfig.man vdltodmx.man dmxtodmx.man -appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@) - -CLEANFILES = $(appman_DATA) - -SUFFIXES = .$(APP_MAN_SUFFIX) .man - -# Strings to replace in man pages -XORGRELSTRING = @PACKAGE_STRING@ - XORGMANNAME = X Version 11 - -MAN_SUBSTS = -e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' - -.man.$(APP_MAN_SUFFIX): - sed $(MAN_SUBSTS) < $< > $@ - -EXTRA_DIST = \ - $(appman_PRE) \ - test-a.in test-a.out \ - test-b.in test-b.out \ - test-c.in test-c.out \ - test-d.in test-d.out \ - test-e.in test-e.out \ - test-f.in test-f.out \ - test-g.in test-g.out \ - test-h.in test-h.out \ - test-i.in test-i.out \ - test-j.in test-j.out \ - test-k.in test-k.out \ - test-l.in test-l.out diff --git a/hw/dmx/config/TODO b/hw/dmx/config/TODO deleted file mode 100644 index 2998ff4a0..000000000 --- a/hw/dmx/config/TODO +++ /dev/null @@ -1,7 +0,0 @@ -Fri May 31 13:20:17 2002 - -1) Sanitize values from input boxes. - -2) Add canvas colors to cavas widget resources or to command-line options. - -3) Add ability to edit option line(s) and wall. diff --git a/hw/dmx/config/dmxcompat.c b/hw/dmx/config/dmxcompat.c deleted file mode 100644 index b4190ffcc..000000000 --- a/hw/dmx/config/dmxcompat.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - */ - -/** \file - * This file provides some compatibility support for reading VDL files - * that are used by xmovie - * (http://www.llnl.gov/icc/sdd/img/xmovie/xmovie.shtml). - * - * This file is not used by the DMX server. - */ - -#ifdef HAVE_DMX_CONFIG_H -#include -#endif - -#include "dmxconfig.h" -#include "dmxparse.h" -#include "dmxcompat.h" -#include "parser.h" -#include -#include -#include -#include - -static int dmxVDLReadLine(FILE *str, char *buf, int len) -{ - if (fgets(buf, len, str)) return strlen(buf); - return 0; -} - -static int dmxVDLCount(const char *buf) -{ - return strtol(buf, NULL, 10); -} - -static void dmxVDLVirtualEntry(const char *buf, - char *name, int *len, - int *x, int *y) -{ - char *end; - const char *s; - char *d; - int start; - - *x = strtol(buf, &end, 10); - *y = strtol(end, &end, 10); - - for (s = end, d = name, start = 1; *s && *s != '['; ++s) { - if (start && isspace(*s)) continue; - *d++ = *s; - start = 0; - } - *d = '\0'; - while (d > name && isspace(d[-1])) *--d = '\0'; /* remove trailing space */ - *len = strlen(name); -} - -static void dmxVDLDisplayEntry(const char *buf, - char *name, int *len, - int *x, int *y, - int *xoff, int *yoff, - int *xorig, int *yorig) -{ - const char *pt; - char *end; - - pt = strchr(buf, ' '); - strncpy(name, buf, pt-buf); - name[pt-buf] = '\0'; - *len = strlen(name); - - *x = strtol(pt, &end, 10); - *y = strtol(end, &end, 10); - *xorig = strtol(end, &end, 10); - *yorig = strtol(end, &end, 10); - *xoff = strtol(end, &end, 10); - *yoff = strtol(end, NULL, 10); -} - -/** Read from the VDL format \a filename and return a newly allocated \a - * DMXConfigEntryPtr */ -DMXConfigEntryPtr dmxVDLRead(const char *filename) -{ - FILE *str; - char buf[2048]; /* RATS: Use ok */ - char *pt; - int lineno = 0; - DMXConfigEntryPtr entry = NULL; - DMXConfigVirtualPtr virtual = NULL; - DMXConfigSubPtr sub = NULL; - DMXConfigDisplayPtr display = NULL; - DMXConfigFullDimPtr fdim = NULL; - int vcount = 0; - int dcount = 0; - int icount = 0; - int x, y, xoff, yoff, xorig, yorig; - char name[2048]; /* RATS: Use ok */ - const char *tmp; - int len; - enum { - simulateFlag, - virtualCount, - virtualEntry, - displayCount, - displayEntry, - ignoreCount, - ignoreEntry - } state = simulateFlag; - - if (!filename) str = stdin; - else str = fopen(filename, "r"); - if (!str) return NULL; - - while (dmxVDLReadLine(str, buf, sizeof(buf))) { - DMXConfigCommentPtr comment = NULL; - - ++lineno; - for (pt = buf; *pt; pt++) - if (*pt == '\r' || *pt == '\n') { - *pt = '\0'; - break; - } - if (buf[0] == '#') { - tmp = dmxConfigCopyString(buf + 1, strlen(buf + 1)); - comment = dmxConfigCreateComment(T_COMMENT, lineno, tmp); - entry = dmxConfigAddEntry(entry, dmxConfigComment, comment, NULL); - continue; - } - switch (state) { - case simulateFlag: - state = virtualCount; - break; - case virtualCount: - vcount = dmxVDLCount(buf); - state = virtualEntry; - break; - case virtualEntry: - len = sizeof(name); - dmxVDLVirtualEntry(buf, name, &len, &x, &y); - tmp = dmxConfigCopyString(name, len); - virtual = dmxConfigCreateVirtual(NULL, - dmxConfigCreateString(T_STRING, - lineno, - NULL, - tmp), - dmxConfigCreatePair(T_DIMENSION, - lineno, - NULL, - x, y, 0, 0), - NULL, NULL, NULL); - state = displayCount; - break; - case displayCount: - dcount = dmxVDLCount(buf); - state = displayEntry; - break; - case displayEntry: - dmxVDLDisplayEntry(buf, name, &len, &x, &y, &xoff, &yoff, - &xorig, &yorig); - tmp = dmxConfigCopyString(name, len); - fdim = dmxConfigCreateFullDim( - dmxConfigCreatePartDim( - dmxConfigCreatePair(T_DIMENSION, - lineno, - NULL, - x, y, 0, 0), - dmxConfigCreatePair(T_OFFSET, - lineno, - NULL, - xoff, yoff, - xoff, yoff)), - NULL); - display = dmxConfigCreateDisplay(NULL, - dmxConfigCreateString(T_STRING, - lineno, - NULL, - tmp), - fdim, - dmxConfigCreatePair(T_ORIGIN, - lineno, - NULL, - xorig, yorig, - 0, 0), - NULL); - sub = dmxConfigAddSub(sub, dmxConfigSubDisplay(display)); - if (!--dcount) { - state = ignoreCount; - virtual->subentry = sub; - entry = dmxConfigAddEntry(entry, - dmxConfigVirtual, - NULL, - virtual); - virtual = NULL; - sub = NULL; - } - break; - case ignoreCount: - icount = dmxVDLCount(buf); - state = ignoreEntry; - break; - case ignoreEntry: - if (!--icount) state = virtualEntry; - break; - } - } - return entry; -} diff --git a/hw/dmx/config/dmxcompat.h b/hw/dmx/config/dmxcompat.h deleted file mode 100644 index 718892040..000000000 --- a/hw/dmx/config/dmxcompat.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -/** \file - * Interface to VDL compatibility support. \see dmxcompat.c - * - * This file is not used by the DMX server. - */ - -#ifndef _DMXCOMPAT_H_ -#define _DMXCOMPAT_H_ - -extern DMXConfigEntryPtr dmxVDLRead(const char *filename); -#endif diff --git a/hw/dmx/config/dmxconfig.c b/hw/dmx/config/dmxconfig.c deleted file mode 100644 index f450e0325..000000000 --- a/hw/dmx/config/dmxconfig.c +++ /dev/null @@ -1,552 +0,0 @@ -/* - * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -/** \file - * Provides interface for reading DMX configuration files and for - * combining that information with command-line configuration parameters. */ - - -#ifdef HAVE_DMX_CONFIG_H -#include -#endif - -#include "dmx.h" -#include "dmxinput.h" -#include "dmxconfig.h" -#include "dmxparse.h" -#include "dmxlog.h" -#include "dmxcb.h" -#include "dmxstat.h" -#include "parser.h" - -extern int yyparse(void); -extern FILE *yyin; - -static char *dmxXkbRules; -static char *dmxXkbModel; -static char *dmxXkbLayout; -static char *dmxXkbVariant; -static char *dmxXkbOptions; - -/** Stores lists of configuration information. */ -typedef struct DMXConfigListStruct { - const char *name; - DevUnion value[8]; - struct DMXConfigListStruct *next; -} DMXConfigList, *DMXConfigListPtr; - -/** This stucture stores the parsed configuration information. */ -typedef struct DMXConfigCmdStruct { - const char *filename; - const char *config; - DMXConfigList *displays; - DMXConfigList *inputs; - DMXConfigList *xinputs; -} DMXConfigCmd, *DMXConfigCmdPtr; - -DMXConfigEntryPtr dmxConfigEntry; -static DMXConfigCmd dmxConfigCmd; - -static int dmxDisplaysFromCommandLine = 0; -static int dmxNumDetached = 4; - -/** Make a note that \a display is the name of an X11 display that - * should be initialized as a backend (output) display. Called from - * #ddxProcessArgument. */ -void dmxConfigStoreDisplay(const char *name, - const char *display, - const char *authType, - int authTypeLen, - const char *authData, - int authDataLen, - int virtualFb) -{ - DMXConfigListPtr entry = malloc(sizeof(*entry)); - - entry->name = strdup (name); - entry->value[0].ptr = strdup (display); - entry->value[1].ptr = dmxMemDup (authType, authTypeLen); - entry->value[2].val = authTypeLen; - entry->value[3].ptr = dmxMemDup (authData, authDataLen); - entry->value[4].val = authDataLen; - entry->value[5].val = virtualFb; - entry->next = NULL; - if (!dmxConfigCmd.displays) dmxConfigCmd.displays = entry; - else { - DMXConfigList *pt; - for (pt = dmxConfigCmd.displays; pt->next; pt = pt->next); - if (!pt) - dmxLog(dmxFatal, "dmxConfigStoreDisplay: end of list non-NULL\n"); - pt->next = entry; - } - ++dmxDisplaysFromCommandLine; -} - -void dmxConfigStoreNumDetached(const char *num) -{ - int n = strtol (num, NULL, 0); - - if (n >= 0) - dmxNumDetached = n; -} - -/** Make a note that \a input is the name of an X11 display that should - * be used for input (either a backend or a console input device). */ -void dmxConfigStoreInput(const char *input) -{ - DMXConfigListPtr entry = malloc(sizeof(*entry)); - entry->name = strdup(input); - entry->next = NULL; - if (!dmxConfigCmd.inputs) dmxConfigCmd.inputs = entry; - else { - DMXConfigList *pt; - for (pt = dmxConfigCmd.inputs; pt->next; pt = pt->next); - if (!pt) - dmxLog(dmxFatal, "dmxConfigStoreInput: end of list non-NULL\n"); - pt->next = entry; - } -} - -/** Make a note that \a input is the name of an X11 display that should - * be used for input from XInput extension devices. */ -void dmxConfigStoreXInput(const char *input) -{ - DMXConfigListPtr entry = malloc(sizeof(*entry)); - entry->name = strdup(input); - entry->next = NULL; - if (!dmxConfigCmd.xinputs) dmxConfigCmd.xinputs = entry; - else { - DMXConfigList *pt; - for (pt = dmxConfigCmd.xinputs; pt->next; pt = pt->next); - if (!pt) - dmxLog(dmxFatal, "dmxConfigStoreXInput: end of list non-NULL\n"); - pt->next = entry; - } -} - -/** Make a note that \a file is the configuration file. */ -void dmxConfigStoreFile(const char *file) -{ - if (dmxConfigCmd.filename) - dmxLog(dmxFatal, "Only one -configfile allowed\n"); - dmxConfigCmd.filename = strdup(file); -} - -/** Make a note that \a config should be used as the configuration for - * current instantiation of the DMX server. */ -void dmxConfigStoreConfig(const char *config) -{ - if (dmxConfigCmd.config) dmxLog(dmxFatal, "Only one -config allowed\n"); - dmxConfigCmd.config = strdup(config); -} - -static int dmxConfigReadFile(const char *filename, int debug) -{ - FILE *str; - - if (!(str = fopen(filename, "r"))) return -1; - dmxLog(dmxInfo, "Reading configuration file \"%s\"\n", filename); - yyin = str; - yydebug = debug; - yyparse(); - fclose(str); - return 0; -} - -static const char *dmxConfigMatch(const char *target, DMXConfigEntryPtr entry) -{ - DMXConfigVirtualPtr v = entry->virtual; - const char *name = NULL; - - if (v && v->name) name = v->name; - - if (v && !dmxConfigCmd.config) return v->name ? v->name : ""; - if (!name) return NULL; - if (!strcmp(name, target)) return name; - return NULL; -} - -static DMXScreenInfo *dmxConfigAddDisplay(const char *name, - const char *display, - const char *authType, - int authTypeLen, - const char *authData, - int authDataLen, - int virtualFb) -{ - DMXScreenInfo *dmxScreen; - - if (!(dmxScreens = realloc(dmxScreens, - (dmxNumScreens+1) * sizeof(*dmxScreens)))) - dmxLog(dmxFatal, - "dmxConfigAddDisplay: realloc failed for screen %d (%s)\n", - dmxNumScreens, name); - - dmxScreen = &dmxScreens[dmxNumScreens]; - memset(dmxScreen, 0, sizeof(*dmxScreen)); - dmxScreen->name = strdup (name); - dmxScreen->display = strdup (display); - dmxScreen->index = dmxNumScreens; - dmxScreen->scrnWidth = 0; - dmxScreen->scrnHeight = 0; - dmxScreen->rootX = 0; - dmxScreen->rootY = 0; - dmxScreen->stat = dmxStatAlloc(); - dmxScreen->authType = dmxMemDup (authType, authTypeLen); - dmxScreen->authTypeLen = authTypeLen; - dmxScreen->authData = dmxMemDup (authData, authDataLen); - dmxScreen->authDataLen = authDataLen; - dmxScreen->virtualFb = virtualFb; - ++dmxNumScreens; - return dmxScreen; -} - -DMXInputInfo *dmxConfigAddInput(const char *name, int core) -{ - DMXInputInfo *dmxInput; - - if (!(dmxInputs = realloc(dmxInputs, - (dmxNumInputs+1) * sizeof(*dmxInputs)))) - dmxLog(dmxFatal, - "dmxConfigAddInput: realloc failed for input %d (%s)\n", - dmxNumInputs, name); - - dmxInput = &dmxInputs[dmxNumInputs]; - - memset(dmxInput, 0, sizeof(*dmxInput)); - dmxInput->name = name; - dmxInput->inputIdx = dmxNumInputs; - dmxInput->scrnIdx = -1; - dmxInput->core = core; - ++dmxNumInputs; - return dmxInput; -} - -static void dmxConfigCopyFromDisplay(DMXConfigDisplayPtr d) -{ - DMXScreenInfo *dmxScreen; - - dmxScreen = dmxConfigAddDisplay(d->name, d->name, - NULL, 0, NULL, 0, 0); - dmxScreen->where = PosAbsolute; - dmxScreen->whereX = d->rootXOrigin; - dmxScreen->whereY = d->rootYOrigin; -} - -static void dmxConfigCopyFromWall(DMXConfigWallPtr w) -{ - DMXConfigStringPtr pt; - DMXScreenInfo *dmxScreen; - int edge = dmxNumScreens; - int last = dmxNumScreens; - - if (!w->xwall && !w->ywall) { /* Try to make it square */ - int count; - for (pt = w->nameList, count = 0; pt; pt = pt->next) ++count; - w->xwall = sqrt(count) + .5; - } - - for (pt = w->nameList; pt; pt = pt->next) { - dmxScreen = dmxConfigAddDisplay(pt->string, pt->string, - NULL, 0, NULL, 0, 0); - if (pt == w->nameList) { /* Upper left */ - dmxScreen->where = PosAbsolute; - dmxScreen->whereX = 0; - dmxScreen->whereY = 0; - } else if (w->xwall) { /* Tile left to right, then top to bottom */ - if (!((dmxNumScreens-1) % w->xwall)) { - dmxScreen->where = PosBelow; - dmxScreen->whereRefScreen = edge; - edge = dmxNumScreens-1; - } else { - dmxScreen->where = PosRightOf; - dmxScreen->whereRefScreen = last; - } - } else { /* Tile top to bottom, then left to right */ - if (!((dmxNumScreens-1) % w->ywall)) { - dmxScreen->where = PosRightOf; - dmxScreen->whereRefScreen = edge; - edge = dmxNumScreens-1; - } else { - dmxScreen->where = PosBelow; - dmxScreen->whereRefScreen = last; - } - - } - last = dmxNumScreens-1; - if (dmxScreen->where == PosAbsolute) - dmxLog(dmxInfo, "Added %s at %d %d\n", - pt->string, dmxScreen->whereX, dmxScreen->whereY); - else - dmxLog(dmxInfo, "Added %s %s %s\n", - pt->string, - dmxScreen->where == PosBelow ? "below" : "right of", - dmxScreens[dmxScreen->whereRefScreen].name); - } -} - -static void dmxConfigCopyFromOption(DMXConfigOptionPtr o) -{ - DMXConfigStringPtr pt; - int argc = 0; - char **argv = NULL; - - if (serverGeneration != 1) return; /* FIXME: only do once, for now */ - if (!o || !o->string) return; - for (pt = o->option; pt; pt = pt->next) { - if (pt->string) { - ++argc; - argv = realloc(argv, (argc+1) * sizeof(*argv)); - argv[argc] = (char *)pt->string; - } - } - argv[0] = NULL; - ProcessCommandLine(argc+1, argv); - free(argv); -} - -static void dmxConfigCopyFromParam(DMXConfigParamPtr p) -{ - const char **argv; - int argc; - - if ((argv = dmxConfigLookupParam(p, "xkbrules", &argc)) && argc == 2) { - dmxConfigSetXkbRules(argv[1]); - } else if ((argv = dmxConfigLookupParam(p, "xkbmodel", &argc)) - && argc == 2) { - dmxConfigSetXkbModel(argv[1]); - } else if ((argv = dmxConfigLookupParam(p, "xkblayout", &argc)) - && argc == 2) { - dmxConfigSetXkbLayout(argv[1]); - } else if ((argv = dmxConfigLookupParam(p, "xkbvariant", &argc)) - && argc == 2) { - dmxConfigSetXkbVariant(argv[1]); - } else if ((argv = dmxConfigLookupParam(p, "xkboptions", &argc)) - && argc == 2) { - dmxConfigSetXkbOptions(argv[1]); - } -} - -static void dmxConfigCopyData(DMXConfigVirtualPtr v) -{ - DMXConfigSubPtr sub; - - if (v->dim) dmxSetWidthHeight(v->dim->x, v->dim->y); - else dmxSetWidthHeight(0, 0); - for (sub = v->subentry; sub; sub = sub->next) { - switch (sub->type) { - case dmxConfigDisplay: dmxConfigCopyFromDisplay(sub->display); break; - case dmxConfigWall: dmxConfigCopyFromWall(sub->wall); break; - case dmxConfigOption: dmxConfigCopyFromOption(sub->option); break; - case dmxConfigParam: dmxConfigCopyFromParam(sub->param); break; - default: - dmxLog(dmxFatal, - "dmxConfigCopyData: not a display, wall, or value\n"); - } - } -} - -static void dmxConfigFromCommandLine(void) -{ - DMXConfigListPtr pt; - int nDetached; - - dmxLog(dmxInfo, "Using configuration from command line\n"); - for (pt = dmxConfigCmd.displays; pt; pt = pt->next) { - DMXScreenInfo *dmxScreen = dmxConfigAddDisplay(pt->name, - pt->value[0].ptr, - pt->value[1].ptr, - pt->value[2].val, - pt->value[3].ptr, - pt->value[4].val, - pt->value[5].val); - if (dmxNumScreens == 1) { - dmxScreen->where = PosAbsolute; - dmxScreen->whereX = 0; - dmxScreen->whereY = 0; - dmxLog(dmxInfo, "Added %s at %d %d\n", - dmxScreen->name, dmxScreen->whereX, dmxScreen->whereY); - } else { - dmxScreen->where = PosRightOf; - dmxScreen->whereRefScreen = dmxNumScreens - 2; - if (dmxScreen->whereRefScreen < 0) dmxScreen->whereRefScreen = 0; - dmxLog(dmxInfo, "Added %s %s %s\n", - dmxScreen->name, - dmxScreen->where == PosBelow ? "below" : "right of", - dmxScreens[dmxScreen->whereRefScreen].name); - } - } - - nDetached = dmxNumDetached; - if (dmxNumScreens + nDetached > MAXSCREENS) - nDetached = MAXSCREENS - dmxNumScreens; - - if (nDetached > 0) - { - dmxLog (dmxInfo, "Adding %d detached displays\n", nDetached); - - while (nDetached--) - { - DMXScreenInfo *dmxScreen = dmxConfigAddDisplay ("", "", - NULL, 0, NULL, 0, - 0); - dmxScreen->where = PosAbsolute; - dmxScreen->whereX = 0; - dmxScreen->whereY = 0; - } - } -} - -static void dmxConfigFromConfigFile(void) -{ - DMXConfigEntryPtr pt; - const char *name; - - for (pt = dmxConfigEntry; pt; pt = pt->next) { - /* FIXME -- if an input is specified, use it */ - if (pt->type != dmxConfigVirtual) continue; - if ((name = dmxConfigMatch(dmxConfigCmd.config, pt))) { - dmxLog(dmxInfo, "Using configuration \"%s\"\n", name); - dmxConfigCopyData(pt->virtual); - return; - } - } - dmxLog(dmxFatal, "Could not find configuration \"%s\" in \"%s\"\n", - dmxConfigCmd.config, dmxConfigCmd.filename); -} - -static void dmxConfigConfigInputs(void) -{ - DMXConfigListPtr pt; - - if (dmxNumInputs) return; - - if (dmxConfigCmd.inputs) { /* Use command line */ - for (pt = dmxConfigCmd.inputs; pt; pt = pt->next) - dmxConfigAddInput(pt->name, TRUE); - } else if (dmxNumScreens) { /* Use first display */ - DMXInputInfo *dmxInput; - - if (!dmxScreens[0].virtualFb) - { - dmxInput = dmxConfigAddInput(xstrdup (dmxScreens[0].name), TRUE); - dmxInput->freename = TRUE; - dmxInput->scrnIdx = 0; - } - } else { /* Use dummy */ - dmxConfigAddInput("dummy", TRUE); - } - - if (dmxConfigCmd.xinputs) { /* Non-core devices from command line */ - for (pt = dmxConfigCmd.xinputs; pt; pt = pt->next) - dmxConfigAddInput(pt->name, FALSE); - } -} - -/** Set up the appropriate global variables so that the DMX server will - * be initialized using the configuration specified in the config file - * and on the command line. */ -void dmxConfigConfigure(void) -{ - if (dmxConfigEntry) { - dmxConfigFreeEntry(dmxConfigEntry); - dmxConfigEntry = NULL; - } - if (dmxConfigCmd.filename) { - if (dmxConfigCmd.displays) - dmxLog(dmxWarning, - "Using configuration file \"%s\" instead of command line\n", - dmxConfigCmd.filename); - dmxConfigReadFile(dmxConfigCmd.filename, 0); - dmxConfigFromConfigFile(); - } else { - if (dmxConfigCmd.config) - dmxLog(dmxWarning, - "Configuration name (%s) without configuration file\n", - dmxConfigCmd.config); - dmxConfigFromCommandLine(); - } - dmxConfigConfigInputs(); -} - -int dmxConfigDisplaysFromCommandLine(void) -{ - return dmxDisplaysFromCommandLine; -} - -/** This function determines the number of displays we WILL have and - * sets MAXSCREENS to that value. This is difficult since the number - * depends on the command line (which is easy to count) or on the config - * file, which has to be parsed. */ -void dmxConfigSetMaxScreens(void) -{ - static int processing = 0; - - if (processing) return; /* Prevent reentry via ProcessCommandLine */ - processing = 1; - if (dmxConfigCmd.filename) { - if (!dmxNumScreens) - dmxConfigConfigure(); -#ifndef MAXSCREENS - SetMaxScreens(dmxNumScreens); -#endif - } else -#ifndef MAXSCREENS - SetMaxScreens(dmxDisplaysFromCommandLine); -#endif - processing = 0; -} - -/** This macro is used to generate the following access methods: - * - dmxConfig{Set,Get}rules - * - dmxConfig{Set,Get}model - * - dmxConfig{Set,Get}layout - * - dmxConfig{Set,Get}variant - * - dmxConfig{Set,Get}options - * These methods are used to read and write information about the keyboard. */ - -#define GEN(param,glob,def) \ - void dmxConfigSet##glob(const char *param) { \ - if (dmx##glob) free((void *)dmx##glob); \ - dmx##glob = strdup(param); \ - } \ - char *dmxConfigGet##glob(void) { \ - return (char *)(dmx##glob ? dmx##glob : def); \ - } - -GEN(rules, XkbRules, DMX_DEFAULT_XKB_RULES) -GEN(model, XkbModel, DMX_DEFAULT_XKB_MODEL) -GEN(layout, XkbLayout, DMX_DEFAULT_XKB_LAYOUT) -GEN(variant, XkbVariant, DMX_DEFAULT_XKB_VARIANT) -GEN(options, XkbOptions, DMX_DEFAULT_XKB_OPTIONS) - diff --git a/hw/dmx/config/dmxconfig.h b/hw/dmx/config/dmxconfig.h deleted file mode 100644 index 7fb485675..000000000 --- a/hw/dmx/config/dmxconfig.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -/** \file - * Interface for DMX configuration file support. \see dmxconfig.c */ - -#ifndef _DMXCONFIG_H_ -#define _DMXCONFIG_H_ -#define DMX_DEFAULT_XKB_RULES "xfree86" -#define DMX_DEFAULT_XKB_MODEL "pc101" -#define DMX_DEFAULT_XKB_LAYOUT "us" -#define DMX_DEFAULT_XKB_VARIANT NULL -#define DMX_DEFAULT_XKB_OPTIONS NULL - -extern void dmxConfigStoreDisplay(const char *name, - const char *display, - const char *authType, - int authTypeLen, - const char *authData, - int authDataLen, - int virtualFb); -extern void dmxConfigStoreNumDetached(const char *num); -extern void dmxConfigStoreInput(const char *input); /* Core devices */ -extern void dmxConfigStoreXInput(const char *input); /* Non-core devices */ -extern void dmxConfigStoreFile(const char *file); -extern void dmxConfigStoreConfig(const char *config); -extern void dmxConfigConfigure(void); -extern int dmxConfigDisplaysFromCommandLine(void); -extern void dmxConfigSetMaxScreens(void); - -extern void dmxConfigSetXkbRules(const char *rules); -extern void dmxConfigSetXkbModel(const char *model); -extern void dmxConfigSetXkbLayout(const char *layout); -extern void dmxConfigSetXkbVariant(const char *variant); -extern void dmxConfigSetXkbOptions(const char *options); - -extern char *dmxConfigGetXkbRules(void); -extern char *dmxConfigGetXkbModel(void); -extern char *dmxConfigGetXkbLayout(void); -extern char *dmxConfigGetXkbVariant(void); -extern char *dmxConfigGetXkbOptions(void); -#endif diff --git a/hw/dmx/config/dmxparse.c b/hw/dmx/config/dmxparse.c deleted file mode 100644 index 28a1835af..000000000 --- a/hw/dmx/config/dmxparse.c +++ /dev/null @@ -1,607 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -/** \file - * - * This file provides support routines and helper functions to be used - * by the DMX configuration file parser. - * - * Because the DMX configuration file parsing should be capable of being - * used in a stand-alone fashion (i.e., independent from the DMX server - * source tree), no dependencies on other DMX routines are made. */ - -#ifdef HAVE_DMX_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include "dmxparse.h" - -/** A general error logging routine that does not depend on the dmxLog - * functions. */ -void dmxConfigLog(const char *format, ...) -{ - va_list args; - - va_start(args, format); - vprintf(format, args); /* RATS: All calls to dmxConfigLog from - * dmxparse.c and dmxprint.c use a - * trusted format. */ - va_end(args); -} - -void *dmxConfigAlloc(unsigned long bytes) -{ - void *area = calloc(1, bytes); - if (!area) { - dmxConfigLog("dmxConfigAlloc: out of memory\n"); - return NULL; - } - return area; -} - -void *dmxConfigRealloc(void *orig, unsigned long orig_bytes, - unsigned long bytes) -{ - unsigned char *area = realloc(orig, bytes); - if (!area) { - dmxConfigLog("dmxConfigRealloc: out of memory\n"); - return NULL; - } - memset(area + orig_bytes, 0, bytes - orig_bytes); - return area; -} - -const char *dmxConfigCopyString(const char *string, int length) -{ - char *copy; - - if (!length) length = strlen(string); - copy = dmxConfigAlloc(length + 1); - if (length) strncpy(copy, string, length); - copy[length] = '\0'; - return copy; -} - -void dmxConfigFree(void *area) -{ - if (area) free(area); -} - -DMXConfigTokenPtr dmxConfigCreateToken(int token, int line, - const char *comment) -{ - DMXConfigTokenPtr pToken = dmxConfigAlloc(sizeof(*pToken)); - pToken->token = token; - pToken->line = line; - pToken->comment = comment; - return pToken; -} - -void dmxConfigFreeToken(DMXConfigTokenPtr p) -{ - if (!p) return; - dmxConfigFree((void *)p->comment); - dmxConfigFree(p); -} - -DMXConfigStringPtr dmxConfigCreateString(int token, int line, - const char *comment, - const char *string) -{ - DMXConfigStringPtr pString = dmxConfigAlloc(sizeof(*pString)); - - pString->token = token; - pString->line = line; - pString->comment = comment; - pString->string = string; - return pString; -} - -void dmxConfigFreeString(DMXConfigStringPtr p) -{ - DMXConfigStringPtr next; - - if (!p) return; - do { - next = p->next; - dmxConfigFree((void *)p->comment); - dmxConfigFree((void *)p->string); - dmxConfigFree(p); - } while ((p = next)); -} - -DMXConfigNumberPtr dmxConfigCreateNumber(int token, int line, - const char *comment, - int number) -{ - DMXConfigNumberPtr pNumber = dmxConfigAlloc(sizeof(*pNumber)); - - pNumber->token = token; - pNumber->line = line; - pNumber->comment = comment; - pNumber->number = number; - return pNumber; -} - -void dmxConfigFreeNumber(DMXConfigNumberPtr p) -{ - if (!p) return; - dmxConfigFree((void *)p->comment); - dmxConfigFree(p); -} - -DMXConfigPairPtr dmxConfigCreatePair(int token, int line, - const char *comment, - int x, int y, - int xsign, int ysign) -{ - DMXConfigPairPtr pPair = dmxConfigAlloc(sizeof(*pPair)); - - pPair->token = token; - pPair->line = line; - pPair->comment = comment; - pPair->x = x; - pPair->y = y; - pPair->xsign = (xsign < 0) ? -1 : 1; - pPair->ysign = (ysign < 0) ? -1 : 1; - return pPair; -} - -void dmxConfigFreePair(DMXConfigPairPtr p) -{ - if (!p) return; - dmxConfigFree((void *)p->comment); - dmxConfigFree(p); -} - -DMXConfigCommentPtr dmxConfigCreateComment(int token, int line, - const char *comment) -{ - DMXConfigCommentPtr pComment = dmxConfigAlloc(sizeof(*pComment)); - - pComment->token = token; - pComment->line = line; - pComment->comment = comment; - return pComment; -} - -void dmxConfigFreeComment(DMXConfigCommentPtr p) -{ - if (!p) return; - dmxConfigFree((void *)p->comment); - dmxConfigFree(p); -} - -DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim, - DMXConfigPairPtr pOffset) -{ - DMXConfigPartDimPtr pPart = dmxConfigAlloc(sizeof(*pPart)); - pPart->dim = pDim; - pPart->offset = pOffset; - return pPart; -} - -void dmxConfigFreePartDim(DMXConfigPartDimPtr p) -{ - if (!p) return; - dmxConfigFreePair(p->dim); - dmxConfigFreePair(p->offset); - dmxConfigFree(p); -} - -DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn, - DMXConfigPartDimPtr pRoot) -{ - DMXConfigFullDimPtr pFull = dmxConfigAlloc(sizeof(*pFull)); - pFull->scrn = pScrn; - pFull->root = pRoot; - return pFull; -} - -void dmxConfigFreeFullDim(DMXConfigFullDimPtr p) -{ - if (!p) return; - dmxConfigFreePartDim(p->scrn); - dmxConfigFreePartDim(p->root); - dmxConfigFree(p); -} - -DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart, - DMXConfigStringPtr pName, - DMXConfigFullDimPtr pDim, - DMXConfigPairPtr pOrigin, - DMXConfigTokenPtr pEnd) -{ - DMXConfigDisplayPtr pDisplay = dmxConfigAlloc(sizeof(*pDisplay)); - - pDisplay->start = pStart; - pDisplay->dname = pName; - pDisplay->dim = pDim; - pDisplay->origin = pOrigin; - pDisplay->end = pEnd; - - pDisplay->name = pName ? pName->string : NULL; - pDisplay->rootXOrigin = pOrigin ? pOrigin->x : 0; - pDisplay->rootYOrigin = pOrigin ? pOrigin->y : 0; - - if (pDim && pDim->scrn && pDim->scrn->dim) { - pDisplay->scrnWidth = pDim->scrn->dim->x; - pDisplay->scrnHeight = pDim->scrn->dim->y; - } - if (pDim && pDim->scrn && pDim->scrn->offset) { - pDisplay->scrnX = pDim->scrn->offset->x; - pDisplay->scrnY = pDim->scrn->offset->y; - pDisplay->scrnXSign = pDim->scrn->offset->xsign; - pDisplay->scrnYSign = pDim->scrn->offset->ysign; - } - - if (pDim && pDim->root) { - if (pDim->root->dim) { - pDisplay->rootWidth = pDim->root->dim->x; - pDisplay->rootHeight = pDim->root->dim->y; - } - if (pDim->root->offset) { - pDisplay->rootX = pDim->root->offset->x; - pDisplay->rootY = pDim->root->offset->y; - pDisplay->rootXSign = pDim->root->offset->xsign; - pDisplay->rootYSign = pDim->root->offset->ysign; - } - } else { /* If no root specification, copy width - * and height from scrn -- leave offset - * as zero, since it is relative to - * scrn. */ - pDisplay->rootWidth = pDisplay->scrnWidth; - pDisplay->rootHeight = pDisplay->scrnHeight; - } - - - return pDisplay; -} - -void dmxConfigFreeDisplay(DMXConfigDisplayPtr p) -{ - if (!p) return; - dmxConfigFreeToken(p->start); - dmxConfigFreeString(p->dname); - dmxConfigFreeFullDim(p->dim); - dmxConfigFreeToken(p->end); - dmxConfigFree(p); -} - -DMXConfigWallPtr dmxConfigCreateWall(DMXConfigTokenPtr pStart, - DMXConfigPairPtr pWallDim, - DMXConfigPairPtr pDisplayDim, - DMXConfigStringPtr pNameList, - DMXConfigTokenPtr pEnd) -{ - DMXConfigWallPtr pWall = dmxConfigAlloc(sizeof(*pWall)); - - pWall->start = pStart; - pWall->wallDim = pWallDim; - pWall->displayDim = pDisplayDim; - pWall->nameList = pNameList; - pWall->end = pEnd; - - pWall->width = pDisplayDim ? pDisplayDim->x : 0; - pWall->height = pDisplayDim ? pDisplayDim->y : 0; - pWall->xwall = pWallDim ? pWallDim->x : 0; - pWall->ywall = pWallDim ? pWallDim->y : 0; - - return pWall; -} - -void dmxConfigFreeWall(DMXConfigWallPtr p) -{ - if (!p) return; - dmxConfigFreeToken(p->start); - dmxConfigFreePair(p->wallDim); - dmxConfigFreePair(p->displayDim); - dmxConfigFreeString(p->nameList); - dmxConfigFreeToken(p->end); - dmxConfigFree(p); -} - -DMXConfigOptionPtr dmxConfigCreateOption(DMXConfigTokenPtr pStart, - DMXConfigStringPtr pOption, - DMXConfigTokenPtr pEnd) -{ - int length = 0; - int offset = 0; - DMXConfigStringPtr p; - DMXConfigOptionPtr option = dmxConfigAlloc(sizeof(*option)); - - for (p = pOption; p; p = p->next) { - if (p->string) length += strlen(p->string) + 1; - } - - option->string = dmxConfigAlloc(length + 1); - - for (p = pOption; p; p = p->next) { - if (p->string) { - int len = strlen(p->string); - strncpy(option->string + offset, p->string, len); - offset += len; - if (p->next) option->string[offset++] = ' '; - } - } - option->string[offset] = '\0'; - - option->start = pStart; - option->option = pOption; - option->end = pEnd; - - return option; -} - -void dmxConfigFreeOption(DMXConfigOptionPtr p) -{ - if (!p) return; - if (p->string) free(p->string); - dmxConfigFreeToken(p->start); - dmxConfigFreeString(p->option); - dmxConfigFreeToken(p->end); - dmxConfigFree(p); -} - -const char **dmxConfigLookupParam(DMXConfigParamPtr p, const char *key, - int *argc) -{ - DMXConfigParamPtr pt; - - for (pt = p; pt; pt = pt->next) { - if (pt->argv && !strcasecmp(pt->argv[0], key)) { - *argc = pt->argc; - return pt->argv; - } - } - *argc = 0; - return NULL; -} - -DMXConfigParamPtr dmxConfigCreateParam(DMXConfigTokenPtr pStart, - DMXConfigTokenPtr pOpen, - DMXConfigStringPtr pParam, - DMXConfigTokenPtr pClose, - DMXConfigTokenPtr pEnd) -{ - DMXConfigParamPtr param = dmxConfigAlloc(sizeof(*param)); - DMXConfigStringPtr pt; - - param->argc = 0; - param->argv = NULL; - for (pt = pParam; pt; pt = pt->next) { - if (pt->string) { - param->argv = realloc(param->argv, - (param->argc+2) * sizeof(*param->argv)); - param->argv[param->argc] = pt->string; - ++param->argc; - } - } - if (param->argv) param->argv[param->argc] = NULL; - - param->start = pStart; - param->open = pOpen; - param->param = pParam; - param->close = pClose; - param->end = pEnd; - - return param; -} - -void dmxConfigFreeParam(DMXConfigParamPtr p) -{ - DMXConfigParamPtr next; - - if (!p) return; - do { - next = p->next; - dmxConfigFreeToken(p->start); - dmxConfigFreeToken(p->open); - dmxConfigFreeString(p->param); - dmxConfigFreeToken(p->close); - dmxConfigFreeToken(p->end); - dmxConfigFree(p->argv); - dmxConfigFree(p); - } while ((p = next)); -} - -DMXConfigSubPtr dmxConfigCreateSub(DMXConfigType type, - DMXConfigCommentPtr comment, - DMXConfigDisplayPtr display, - DMXConfigWallPtr wall, - DMXConfigOptionPtr option, - DMXConfigParamPtr param) -{ - DMXConfigSubPtr pSub = dmxConfigAlloc(sizeof(*pSub)); - pSub->type = type; - switch (type) { - case dmxConfigComment: pSub->comment = comment; break; - case dmxConfigDisplay: pSub->display = display; break; - case dmxConfigWall: pSub->wall = wall; break; - case dmxConfigOption: pSub->option = option; break; - case dmxConfigParam: pSub->param = param; break; - default: dmxConfigLog("Type %d not supported in subentry\n", type); break; - } - return pSub; -} - -void dmxConfigFreeSub(DMXConfigSubPtr sub) -{ - DMXConfigSubPtr pt; - - for (pt = sub; pt; pt = pt->next) { - switch (pt->type) { - case dmxConfigComment: dmxConfigFreeComment(pt->comment); break; - case dmxConfigDisplay: dmxConfigFreeDisplay(pt->display); break; - case dmxConfigWall: dmxConfigFreeWall(pt->wall); break; - case dmxConfigOption: dmxConfigFreeOption(pt->option); break; - case dmxConfigParam: dmxConfigFreeParam(pt->param); break; - default: - dmxConfigLog("Type %d not supported in subentry\n", pt->type); - break; - } - } - dmxConfigFree(sub); -} - -DMXConfigSubPtr dmxConfigSubComment(DMXConfigCommentPtr comment) -{ - return dmxConfigCreateSub(dmxConfigComment, comment, NULL, NULL, NULL, - NULL); -} - -DMXConfigSubPtr dmxConfigSubDisplay(DMXConfigDisplayPtr display) -{ - return dmxConfigCreateSub(dmxConfigDisplay, NULL, display, NULL, NULL, - NULL); -} - -DMXConfigSubPtr dmxConfigSubWall(DMXConfigWallPtr wall) -{ - return dmxConfigCreateSub(dmxConfigWall, NULL, NULL, wall, NULL, NULL); -} - -DMXConfigSubPtr dmxConfigSubOption(DMXConfigOptionPtr option) -{ - return dmxConfigCreateSub(dmxConfigOption, NULL, NULL, NULL, option, NULL); -} - -DMXConfigSubPtr dmxConfigSubParam(DMXConfigParamPtr param) -{ - return dmxConfigCreateSub(dmxConfigParam, NULL, NULL, NULL, NULL, param); -} - -extern DMXConfigSubPtr dmxConfigAddSub(DMXConfigSubPtr head, - DMXConfigSubPtr sub) -{ - DMXConfigSubPtr pt; - - if (!head) return sub; - for (pt = head; pt->next; pt = pt->next); - pt->next = sub; - return head; -} - -DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart, - DMXConfigStringPtr pName, - DMXConfigPairPtr pDim, - DMXConfigTokenPtr pOpen, - DMXConfigSubPtr pSubentry, - DMXConfigTokenPtr pClose) -{ - DMXConfigVirtualPtr pVirtual = dmxConfigAlloc(sizeof(*pVirtual)); - - pVirtual->start = pStart; - pVirtual->vname = pName; - pVirtual->dim = pDim; - pVirtual->open = pOpen; - pVirtual->subentry = pSubentry; - pVirtual->close = pClose; - - pVirtual->name = pName ? pName->string : NULL; - pVirtual->width = pDim ? pDim->x : 0; - pVirtual->height = pDim ? pDim->y : 0; - - return pVirtual; -} - -void dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual) -{ - dmxConfigFreeToken(virtual->start); - dmxConfigFreeString(virtual->vname); - dmxConfigFreePair(virtual->dim); - dmxConfigFreeToken(virtual->open); - dmxConfigFreeSub(virtual->subentry); - dmxConfigFreeToken(virtual->close); - dmxConfigFree(virtual); -} - -DMXConfigEntryPtr dmxConfigCreateEntry(DMXConfigType type, - DMXConfigCommentPtr comment, - DMXConfigVirtualPtr virtual) -{ - DMXConfigEntryPtr pEntry = dmxConfigAlloc(sizeof(*pEntry)); - pEntry->type = type; - switch (type) { - case dmxConfigComment: pEntry->comment = comment; break; - case dmxConfigVirtual: pEntry->virtual = virtual; break; - default: dmxConfigLog("Type %d not supported in entry\n", type); break; - } - return pEntry; -} - -void dmxConfigFreeEntry(DMXConfigEntryPtr entry) -{ - DMXConfigEntryPtr pt; - - for (pt = entry; pt; pt = pt->next) { - switch (pt->type) { - case dmxConfigComment: dmxConfigFreeComment(pt->comment); break; - case dmxConfigVirtual: dmxConfigFreeVirtual(pt->virtual); break; - default: - dmxConfigLog("Type %d not supported in entry\n", pt->type); - break; - } - } - dmxConfigFree(entry); -} - -DMXConfigEntryPtr dmxConfigAddEntry(DMXConfigEntryPtr head, - DMXConfigType type, - DMXConfigCommentPtr comment, - DMXConfigVirtualPtr virtual) -{ - DMXConfigEntryPtr child = dmxConfigCreateEntry(type, comment, virtual); - DMXConfigEntryPtr pt; - - if (!head) return child; - - for (pt = head; pt->next; pt = pt->next); - pt->next = child; - - return head; -} - -DMXConfigEntryPtr dmxConfigEntryComment(DMXConfigCommentPtr comment) -{ - return dmxConfigCreateEntry(dmxConfigComment, comment, NULL); -} - -DMXConfigEntryPtr dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual) -{ - return dmxConfigCreateEntry(dmxConfigVirtual, NULL, virtual); -} diff --git a/hw/dmx/config/dmxparse.h b/hw/dmx/config/dmxparse.h deleted file mode 100644 index de81d23b7..000000000 --- a/hw/dmx/config/dmxparse.h +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -/** \file - * Interface to DMX configuration file parser. \see dmxparse.c */ - -#ifndef _DMXPARSE_H_ -#define _DMXPARSE_H_ - -#include /* For FILE */ - -/** Stores tokens not stored in other structures (e.g., keywords and ;) */ -typedef struct _DMXConfigToken { - int token; - int line; - const char *comment; -} DMXConfigToken, *DMXConfigTokenPtr; - -/** Stores parsed strings. */ -typedef struct _DMXConfigString { - int token; - int line; - const char *comment; - const char *string; - struct _DMXConfigString *next; -} DMXConfigString, *DMXConfigStringPtr; - -/** Stores parsed numbers. */ -typedef struct _DMXConfigNumber { - int token; - int line; - const char *comment; - int number; -} DMXConfigNumber, *DMXConfigNumberPtr; - -/** Stores parsed pairs (e.g., x y) */ -typedef struct _DMXConfigPair { - int token; - int line; - const char *comment; - int x; - int y; - int xsign; - int ysign; -} DMXConfigPair, *DMXConfigPairPtr; - -/** Stores parsed comments not stored with a token. */ -typedef struct _DMXConfigComment { - int token; - int line; - const char *comment; -} DMXConfigComment, *DMXConfigCommentPtr; - -typedef enum { - dmxConfigComment, - dmxConfigVirtual, - dmxConfigDisplay, - dmxConfigWall, - dmxConfigOption, - dmxConfigParam -} DMXConfigType; - -/** Stores a geometry specification. */ -typedef struct _DMXConfigPartDim { - DMXConfigPairPtr dim; - DMXConfigPairPtr offset; -} DMXConfigPartDim, *DMXConfigPartDimPtr; - -/** Stores a pair of geometry specifications. */ -typedef struct _DMXConfigFullDim { - DMXConfigPartDimPtr scrn; - DMXConfigPartDimPtr root; -} DMXConfigFullDim, *DMXConfigFullDimPtr; - -/** Stores parsed display information. */ -typedef struct _DMXConfigDisplay { - /* Summary information */ - const char *name; - /* Screen Window Geometry */ - int scrnWidth, scrnHeight; - int scrnX, scrnY; - int scrnXSign, scrnYSign; - /* Root Window Geometry */ - int rootWidth, rootHeight; - int rootX, rootY; - int rootXSign, rootYSign; - /* Origin in global space */ - int rootXOrigin, rootYOrigin; - - /* Raw configuration information */ - DMXConfigTokenPtr start; - DMXConfigStringPtr dname; - DMXConfigFullDimPtr dim; - DMXConfigPairPtr origin; - DMXConfigTokenPtr end; -} DMXConfigDisplay, *DMXConfigDisplayPtr; - -/** Stores parsed wall information. */ -typedef struct _DMXConfigWall { - /* Summary information */ - int width, height; /* dimensions of displays */ - int xwall, ywall; /* dimensions of wall, in tiles */ - - - /* Raw configuration informaiton */ - DMXConfigTokenPtr start; - DMXConfigPairPtr wallDim; - DMXConfigPairPtr displayDim; - DMXConfigStringPtr nameList; - DMXConfigTokenPtr end; -} DMXConfigWall, *DMXConfigWallPtr; - -/** Stores parsed option information. */ -typedef struct _DMXConfigOption { - /* Summary information */ - char *string; - - /* Raw configuration informaiton */ - DMXConfigTokenPtr start; - DMXConfigStringPtr option; - DMXConfigTokenPtr end; -} DMXConfigOption, *DMXConfigOptionPtr; - -/** Stores parsed param information. */ -typedef struct _DMXConfigParam { - int argc; - const char **argv; - - DMXConfigTokenPtr start; - DMXConfigTokenPtr open; - DMXConfigStringPtr param; - DMXConfigTokenPtr close; - DMXConfigTokenPtr end; /* Either open/close OR end */ - struct _DMXConfigParam *next; -} DMXConfigParam, *DMXConfigParamPtr; - -/** Stores options under an entry (subentry). */ -typedef struct _DMXConfigSub { - DMXConfigType type; - DMXConfigCommentPtr comment; - DMXConfigDisplayPtr display; - DMXConfigWallPtr wall; - DMXConfigOptionPtr option; - DMXConfigParamPtr param; - struct _DMXConfigSub *next; -} DMXConfigSub, *DMXConfigSubPtr; - -/** Stores parsed virtual information. */ -typedef struct _DMXConfigVirtual { - /* Summary information */ - const char *name; - int width, height; - - /* Raw configuration information */ - DMXConfigTokenPtr start; - DMXConfigStringPtr vname; - DMXConfigPairPtr dim; - DMXConfigTokenPtr open; - DMXConfigSubPtr subentry; - DMXConfigTokenPtr close; -} DMXConfigVirtual, *DMXConfigVirtualPtr; - -/** Heads entry storage. */ -typedef struct _DMXConfigEntry { - DMXConfigType type; - DMXConfigCommentPtr comment; - DMXConfigVirtualPtr virtual; - struct _DMXConfigEntry *next; -} DMXConfigEntry, *DMXConfigEntryPtr; - -extern DMXConfigEntryPtr dmxConfigEntry; - -extern int yylex(void); -extern int yydebug; -extern void yyerror(const char *message); - -extern void dmxConfigLog(const char *format, ...); -extern void *dmxConfigAlloc(unsigned long bytes); -extern void *dmxConfigRealloc(void *orig, - unsigned long orig_bytes, - unsigned long bytes); -extern const char *dmxConfigCopyString(const char *string, - int length); -extern void dmxConfigFree(void *area); -extern DMXConfigTokenPtr dmxConfigCreateToken(int token, int line, - const char *comment); -extern void dmxConfigFreeToken(DMXConfigTokenPtr p); -extern DMXConfigStringPtr dmxConfigCreateString(int token, int line, - const char *comment, - const char *string); -extern void dmxConfigFreeString(DMXConfigStringPtr p); -extern DMXConfigNumberPtr dmxConfigCreateNumber(int token, int line, - const char *comment, - int number); -extern void dmxConfigFreeNumber(DMXConfigNumberPtr p); -extern DMXConfigPairPtr dmxConfigCreatePair(int token, int line, - const char *comment, - int x, int y, - int xsign, int ysign); -extern void dmxConfigFreePair(DMXConfigPairPtr p); -extern DMXConfigCommentPtr dmxConfigCreateComment(int token, int line, - const char *comment); -extern void dmxConfigFreeComment(DMXConfigCommentPtr p); -extern DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim, - DMXConfigPairPtr pOffset); -extern void dmxConfigFreePartDim(DMXConfigPartDimPtr p); -extern DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn, - DMXConfigPartDimPtr pRoot); -extern void dmxConfigFreeFullDim(DMXConfigFullDimPtr p); -extern DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart, - DMXConfigStringPtr pName, - DMXConfigFullDimPtr pDim, - DMXConfigPairPtr pOrigin, - DMXConfigTokenPtr pEnd); -extern void dmxConfigFreeDisplay(DMXConfigDisplayPtr p); -extern DMXConfigWallPtr dmxConfigCreateWall(DMXConfigTokenPtr pStart, - DMXConfigPairPtr pWallDim, - DMXConfigPairPtr pDisplayDim, - DMXConfigStringPtr pNameList, - DMXConfigTokenPtr pEnd); -extern void dmxConfigFreeWall(DMXConfigWallPtr p); -extern DMXConfigOptionPtr dmxConfigCreateOption(DMXConfigTokenPtr pStart, - DMXConfigStringPtr pOption, - DMXConfigTokenPtr pEnd); -extern void dmxConfigFreeOption(DMXConfigOptionPtr p); -extern DMXConfigParamPtr dmxConfigCreateParam(DMXConfigTokenPtr pStart, - DMXConfigTokenPtr pOpen, - DMXConfigStringPtr pParam, - DMXConfigTokenPtr pClose, - DMXConfigTokenPtr pEnd); -extern void dmxConfigFreeParam(DMXConfigParamPtr p); -extern const char **dmxConfigLookupParam(DMXConfigParamPtr p, - const char *key, - int *argc); -extern DMXConfigSubPtr dmxConfigCreateSub(DMXConfigType type, - DMXConfigCommentPtr comment, - DMXConfigDisplayPtr display, - DMXConfigWallPtr wall, - DMXConfigOptionPtr option, - DMXConfigParamPtr param); -extern void dmxConfigFreeSub(DMXConfigSubPtr sub); -extern DMXConfigSubPtr dmxConfigSubComment(DMXConfigCommentPtr comment); -extern DMXConfigSubPtr dmxConfigSubDisplay(DMXConfigDisplayPtr display); -extern DMXConfigSubPtr dmxConfigSubWall(DMXConfigWallPtr wall); -extern DMXConfigSubPtr dmxConfigSubOption(DMXConfigOptionPtr option); -extern DMXConfigSubPtr dmxConfigSubParam(DMXConfigParamPtr param); -extern DMXConfigSubPtr dmxConfigAddSub(DMXConfigSubPtr head, - DMXConfigSubPtr sub); -extern DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart, - DMXConfigStringPtr pName, - DMXConfigPairPtr pDim, - DMXConfigTokenPtr pOpen, - DMXConfigSubPtr pSubentry, - DMXConfigTokenPtr pClose); -extern void dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual); -extern DMXConfigEntryPtr dmxConfigCreateEntry(DMXConfigType type, - DMXConfigCommentPtr comment, - DMXConfigVirtualPtr virtual); -extern void dmxConfigFreeEntry(DMXConfigEntryPtr entry); -extern DMXConfigEntryPtr dmxConfigAddEntry(DMXConfigEntryPtr head, - DMXConfigType type, - DMXConfigCommentPtr comment, - DMXConfigVirtualPtr virtual); -extern DMXConfigEntryPtr dmxConfigEntryComment(DMXConfigCommentPtr comment); -extern DMXConfigEntryPtr dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual); - -#endif diff --git a/hw/dmx/config/dmxprint.c b/hw/dmx/config/dmxprint.c deleted file mode 100644 index 599ebf5df..000000000 --- a/hw/dmx/config/dmxprint.c +++ /dev/null @@ -1,455 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -/** \file - * - * This file provides support routines and helper functions to be used - * to pretty-print DMX configurations. - * - * Because the DMX configuration file parsing should be capable of being - * used in a stand-alone fashion (i.e., independent from the DMX server - * source tree), no dependencies on other DMX routines are made. */ - -#ifdef HAVE_DMX_CONFIG_H -#include -#endif - -#include "dmxconfig.h" -#include "dmxparse.h" -#include "dmxprint.h" -#include "parser.h" -#include -#include -#include - -static FILE *str = NULL; -static int indent = 0; -static int pos = 0; - -/** Stack of indentation information used for pretty-printing - * configuration information. */ -static struct stack { - int base; - int comment; - int step; - struct stack *next; -} *stack, initialStack = { 0, 0, 4, NULL }; - -static void dmxConfigIndent(void) -{ - int i; - if (indent < 0) indent = 0; - if (indent > 40) indent = 40; - for (i = 0; i < indent; i++) fprintf(str, " "); -} - -static void dmxConfigNewline(void) -{ - if (pos) fprintf(str, "\n"); - pos = 0; -} - -static void dmxConfigPushState(int base, int comment, int step) -{ - struct stack *new = dmxConfigAlloc(sizeof(*new)); - new->base = base; - new->comment = comment; - new->step = step; - new->next = stack; - stack = new; - indent = base; - dmxConfigNewline(); -} - -static void dmxConfigPushComment(void) -{ - if (stack) indent = stack->comment; -} - -static void dmxConfigPushStep(void) -{ - if (stack) indent = stack->step; -} - -static void dmxConfigPopState(void) -{ - struct stack *old = stack; - - if (!stack) return; - indent = old->base; - stack = old->next; - if (!stack) dmxConfigLog("Stack underflow\n"); - dmxConfigFree(old); - dmxConfigNewline(); -} - -static void dmxConfigOutput(int addSpace, int doNewline, const char *comment, - const char *format, ...) -{ - va_list args; - - if (!pos) dmxConfigIndent(); - else if (addSpace) fprintf(str, " "); - - if (format) { - va_start(args, format); - /* RATS: This hasn't been audited -- it - * could probably result in a buffer - * overflow. */ - pos += vfprintf(str, format, args); /* assumes no newlines! */ - va_end(args); - } - - if (comment) { - if (pos) fprintf(str, " "); - pos += fprintf(str, "#%s", comment); - dmxConfigNewline(); - dmxConfigPushComment(); - } else if (doNewline) dmxConfigNewline(); -} - -static void dmxConfigPrintComment(DMXConfigCommentPtr p) -{ - dmxConfigOutput(1, 1, p->comment, NULL); -} - -static void dmxConfigPrintTokenFlag(DMXConfigTokenPtr p, int flag) -{ - if (!p) return; - switch (p->token) { - case T_VIRTUAL: - dmxConfigPushState(0, 4, 4); - dmxConfigOutput(0, 0, p->comment, "virtual"); - break; - case T_DISPLAY: - dmxConfigPushState(4, 12, 16); - dmxConfigOutput(0, 0, p->comment, "display"); - break; - case T_WALL: - dmxConfigPushState(4, 12, 16); - dmxConfigOutput(0, 0, p->comment, "wall"); - break; - case T_OPTION: - dmxConfigPushState(4, 12, 16); - dmxConfigOutput(0, 0, p->comment, "option"); - break; - case T_PARAM: - dmxConfigPushState(4, 8, 12); - dmxConfigOutput(0, 0, p->comment, "param"); - break; - case ';': - dmxConfigOutput(0, 1, p->comment, ";"); - if (flag) dmxConfigPopState(); - break; - case '{': - dmxConfigOutput(1, 1, p->comment, "{"); - dmxConfigPushStep(); - break; - case '}': - if (flag) dmxConfigPopState(); - dmxConfigOutput(0, 1, p->comment, "}"); - break; - case '/': - dmxConfigOutput(1, 0, NULL, "/"); - break; - default: - dmxConfigLog("unknown token %d on line %d\n", p->token, p->line); - } -} - -static void dmxConfigPrintToken(DMXConfigTokenPtr p) -{ - dmxConfigPrintTokenFlag(p, 1); -} - -static void dmxConfigPrintTokenNopop(DMXConfigTokenPtr p) -{ - dmxConfigPrintTokenFlag(p, 0); -} - -static int dmxConfigPrintQuotedString(const char *s) -{ - const char *pt; - - if (!s || !s[0]) return 1; /* Quote empty string */ - for (pt = s; *pt; ++pt) if (isspace(*pt)) return 1; - return 0; -} - -static void dmxConfigPrintString(DMXConfigStringPtr p, int quote) -{ - DMXConfigStringPtr pt; - - if (!p) return; - for (pt = p; pt; pt = pt->next) { - if (quote && dmxConfigPrintQuotedString(pt->string)) { - dmxConfigOutput(1, 0, pt->comment, "\"%s\"", - pt->string ? pt->string : ""); - } else - dmxConfigOutput(1, 0, pt->comment, "%s", - pt->string ? pt->string : ""); - } -} - -static int dmxConfigPrintPair(DMXConfigPairPtr p, int addSpace) -{ - const char *format = NULL; - - if (!p) return 0; - switch (p->token) { - case T_ORIGIN: format = "@%dx%d"; break; - case T_DIMENSION: format = "%dx%d"; break; - case T_OFFSET: format = "%c%d%c%d"; break; - } - if (p->token == T_OFFSET) { - if (!p->comment && !p->x && !p->y && p->xsign >= 0 && p->ysign >= 0) - return 0; - dmxConfigOutput(addSpace, 0, p->comment, format, - p->xsign < 0 ? '-' : '+', p->x, - p->ysign < 0 ? '-' : '+', p->y); - } else { - if (!p->comment && !p->x && !p->y) return 0; - dmxConfigOutput(addSpace, 0, p->comment, format, p->x, p->y); - } - return 1; -} - -static void dmxConfigPrintDisplay(DMXConfigDisplayPtr p) -{ - DMXConfigToken dummyStart = { T_DISPLAY, 0, NULL }; - DMXConfigToken dummyEnd = { ';', 0, NULL }; - DMXConfigToken dummySep = { '/', 0, NULL }; - DMXConfigString dummyName = { T_STRING, 0, NULL, NULL, NULL }; - DMXConfigPair dummySDim = { T_DIMENSION, 0, NULL, 0, 0, 0, 0 }; - DMXConfigPair dummySOffset = { T_OFFSET, 0, NULL, 0, 0, 0, 0 }; - DMXConfigPair dummyRDim = { T_DIMENSION, 0, NULL, 0, 0, 0, 0 }; - DMXConfigPair dummyROffset = { T_OFFSET, 0, NULL, 0, 0, 0, 0 }; - DMXConfigPair dummyOrigin = { T_ORIGIN, 0, NULL, 0, 0, 0, 0 }; - int output; - - if (p->dname) p->dname->string = p->name; - else dummyName.string = p->name; - - if (p->dim && p->dim->scrn && p->dim->scrn->dim) { - p->dim->scrn->dim->x = p->scrnWidth; - p->dim->scrn->dim->y = p->scrnHeight; - } else { - dummySDim.x = p->scrnWidth; - dummySDim.y = p->scrnHeight; - } - - if (p->dim && p->dim->scrn && p->dim->scrn->offset) { - p->dim->scrn->offset->x = p->scrnX; - p->dim->scrn->offset->y = p->scrnY; - } else { - dummySOffset.x = p->scrnX; - dummySOffset.y = p->scrnY; - } - - if (p->dim && p->dim->root && p->dim->root->dim) { - p->dim->root->dim->x = p->rootWidth; - p->dim->root->dim->y = p->rootHeight; - } else { - dummyRDim.x = p->rootWidth; - dummyRDim.y = p->rootHeight; - } - - if (p->dim && p->dim->root && p->dim->root->offset) { - p->dim->root->offset->x = p->rootX; - p->dim->root->offset->y = p->rootY; - } else { - dummyROffset.x = p->rootX; - dummyROffset.y = p->rootY; - } - - if (p->origin) { - p->origin->x = p->rootXOrigin, p->origin->y = p->rootYOrigin; - p->origin->xsign = p->rootXSign, p->origin->ysign = p->rootYSign; - } else { - dummyOrigin.x = p->rootXOrigin, dummyOrigin.y = p->rootYOrigin; - dummyOrigin.xsign = p->rootXSign, dummyOrigin.ysign = p->rootYSign; - } - - dmxConfigPrintToken(p->start ? p->start : &dummyStart); - dmxConfigPrintString(p->dname ? p->dname : &dummyName, 1); - - if (p->dim && p->dim->scrn && p->dim->scrn->dim) - output = dmxConfigPrintPair(p->dim->scrn->dim, 1); - else - output = dmxConfigPrintPair(&dummySDim, 1); - if (p->dim && p->dim->scrn && p->dim->scrn->offset) - dmxConfigPrintPair(p->dim->scrn->offset, !output); - else - dmxConfigPrintPair(&dummySOffset, !output); - - if (p->scrnWidth != p->rootWidth - || p->scrnHeight != p->rootHeight - || p->rootX - || p->rootY) { - dmxConfigPrintToken(&dummySep); - if (p->dim && p->dim->root && p->dim->root->dim) - output = dmxConfigPrintPair(p->dim->root->dim, 1); - else - output = dmxConfigPrintPair(&dummyRDim, 1); - if (p->dim && p->dim->root && p->dim->root->offset) - dmxConfigPrintPair(p->dim->root->offset, !output); - else - dmxConfigPrintPair(&dummyROffset, !output); - } - - dmxConfigPrintPair(p->origin ? p->origin : &dummyOrigin, 1); - dmxConfigPrintToken(p->end ? p->end : &dummyEnd); -} - -static void dmxConfigPrintWall(DMXConfigWallPtr p) -{ - dmxConfigPrintToken(p->start); - dmxConfigPrintPair(p->wallDim, 1); - dmxConfigPrintPair(p->displayDim, 1); - dmxConfigPrintString(p->nameList, 1); - dmxConfigPrintToken(p->end); -} - -static void dmxConfigPrintOption(DMXConfigOptionPtr p) -{ - DMXConfigToken dummyStart = { T_OPTION, 0, NULL }; - DMXConfigString dummyOption = { T_STRING, 0, NULL, NULL, NULL }; - DMXConfigToken dummyEnd = { ';', 0, NULL }; - - dummyOption.string = p->string; - - dmxConfigPrintToken(p->start ? p->start : &dummyStart); - dmxConfigPrintString(&dummyOption, 0); - dmxConfigPrintToken(p->end ? p->end : &dummyEnd); -} - -static void dmxConfigPrintParam(DMXConfigParamPtr p) -{ - if (!p) return; - if (p->start) { - if (p->open && p->close) { - dmxConfigPrintToken(p->start); - dmxConfigPrintToken(p->open); - dmxConfigPrintParam(p->next); - dmxConfigPrintToken(p->close); - } else if (p->end && p->param) { - dmxConfigPrintToken(p->start); - dmxConfigPrintString(p->param, 1); - dmxConfigPrintToken(p->end); - } else - dmxConfigLog("dmxConfigPrintParam: cannot handle format (a)\n"); - } else if (p->end && p->param) { - dmxConfigPrintString(p->param, 1); - dmxConfigPrintTokenNopop(p->end); - dmxConfigPrintParam(p->next); - } else - dmxConfigLog("dmxConfigPrintParam: cannot handle format (b)\n"); -} - -static void dmxConfigPrintSub(DMXConfigSubPtr p) -{ - DMXConfigSubPtr pt; - - if (!p) return; - for (pt = p; pt; pt = pt->next) { - switch (pt->type) { - case dmxConfigComment: dmxConfigPrintComment(pt->comment); break; - case dmxConfigDisplay: dmxConfigPrintDisplay(pt->display); break; - case dmxConfigWall: dmxConfigPrintWall(pt->wall); break; - case dmxConfigOption: dmxConfigPrintOption(pt->option); break; - case dmxConfigParam: dmxConfigPrintParam(pt->param); break; - default: - dmxConfigLog("dmxConfigPrintSub:" - " cannot handle type %d in subentry\n", pt->type); - } - } -} - -static void dmxConfigPrintVirtual(DMXConfigVirtualPtr p) -{ - DMXConfigToken dummyStart = { T_VIRTUAL, 0, NULL }; - DMXConfigToken dummyOpen = { '{', 0, NULL }; - DMXConfigToken dummyClose = { '}', 0, NULL }; - DMXConfigString dummyName = { T_STRING, 0, NULL, NULL, NULL }; - DMXConfigPair dummyDim = { T_DIMENSION, 0, NULL, 0, 0 }; - - if (p->vname) p->vname->string = p->name; - else dummyName.string = p->name; - - if (p->dim) p->dim->x = p->width, p->dim->y = p->height; - else dummyDim.x = p->width, dummyDim.y = p->height; - - - dmxConfigPrintToken(p->start ? p->start : &dummyStart); - dmxConfigPrintString(p->vname ? p->vname : &dummyName, 1); - dmxConfigPrintPair(p->dim ? p->dim : &dummyDim, 1); - dmxConfigPrintToken(p->open ? p->open : &dummyOpen); - dmxConfigPrintSub(p->subentry); - dmxConfigPrintToken(p->close ? p->close : &dummyClose); -} - -/** The configuration information in \a entry will be pretty-printed to - * the \a stream. If \a stream is NULL, then stdout will be used. */ -void dmxConfigPrint(FILE *stream, DMXConfigEntryPtr entry) -{ - DMXConfigEntryPtr pt; - - if (!stream) str = stdout; - else str = stream; - - stack = &initialStack; - - for (pt = entry; pt; pt = pt->next) { - switch (pt->type) { - case dmxConfigComment: dmxConfigPrintComment(pt->comment); break; - case dmxConfigVirtual: dmxConfigPrintVirtual(pt->virtual); break; - default: - dmxConfigLog("dmxConfigPrint: cannot handle type %d in entry\n", - pt->type); - } - } - if (pos) dmxConfigNewline(); -} - -/** The configuration information in \a p will be pretty-printed to the - * \a stream. If \a stream is NULL, then stdout will be used. */ -void dmxConfigVirtualPrint(FILE *stream, DMXConfigVirtualPtr p) -{ - if (!stream) str = stdout; - else str = stream; - - stack = &initialStack; - - dmxConfigPrintVirtual(p); - if (pos) dmxConfigNewline(); -} diff --git a/hw/dmx/config/dmxprint.h b/hw/dmx/config/dmxprint.h deleted file mode 100644 index d162dea95..000000000 --- a/hw/dmx/config/dmxprint.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -/** \file - * Interface to DMX configuration file pretty-printer. \see dmxprint.c */ - -#ifndef _DMXPRINT_H_ -#define _DMXPRINT_H_ - -void dmxConfigPrint(FILE *str, DMXConfigEntryPtr entry); -void dmxConfigVirtualPrint(FILE *str, DMXConfigVirtualPtr p); - -#endif diff --git a/hw/dmx/config/dmxtodmx.c b/hw/dmx/config/dmxtodmx.c deleted file mode 100644 index 0d4ee4c09..000000000 --- a/hw/dmx/config/dmxtodmx.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2002 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - * This is a simple filter for testing. - */ - -#include "dmxconfig.h" -#include "dmxparse.h" -#include "dmxprint.h" -#include "dmxcompat.h" - -extern int yyparse(void); -extern FILE *yyin; - -int main(int argc, char **argv) -{ - yydebug = 0; - yyparse(); - dmxConfigPrint(stdout, dmxConfigEntry); - return 0; -} diff --git a/hw/dmx/config/dmxtodmx.man b/hw/dmx/config/dmxtodmx.man deleted file mode 100644 index 68c7f5b40..000000000 --- a/hw/dmx/config/dmxtodmx.man +++ /dev/null @@ -1,41 +0,0 @@ -.\" $XFree86$ -.\" Copyright 2002 Red Hat Inc., Durham, North Carolina. -.\" All Rights Reserved. -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining -.\" a copy of this software and associated documentation files (the -.\" "Software"), to deal in the Software without restriction, including -.\" without limitation on the rights to use, copy, modify, merge, -.\" publish, distribute, sublicense, and/or sell copies of the Software, -.\" and to permit persons to whom the Software is furnished to do so, -.\" subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice (including the -.\" next paragraph) shall be included in all copies or substantial -.\" portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -.\" NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS -.\" BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -.\" ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -.\" CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -.\" SOFTWARE. -.\" -.\" Authors: -.\" Rickard E. (Rik) Faith -.\" -.TH dmxtodmx 1 __vendorversion__ -.SH NAME -dmxtodmx - dmx configuration file parser and printer -.SH SYNOPSIS -.B dmxtodmx -.SH DESCRIPTION -.I dmxtodmx -reads the standard input, parsing a configuration file for the -.I Xdmx -distributed multi-head X server. After a successful parse, the file is -pretty-printed to standard output. -.SH "SEE ALSO" -Xdmx(1), vdltodmx(1), xdmxconfig(1) diff --git a/hw/dmx/config/parser.y b/hw/dmx/config/parser.y deleted file mode 100644 index ac2441017..000000000 --- a/hw/dmx/config/parser.y +++ /dev/null @@ -1,226 +0,0 @@ -/* $XFree86$ */ -/* - * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith - * - */ - -%{ -#ifdef HAVE_DMX_CONFIG_H -#include -#endif - -#include "dmxparse.h" -#include -#include -#define YYDEBUG 1 -#define YYERROR_VERBOSE -#define YY_USE_PROTOS - -DMXConfigEntryPtr dmxConfigEntry = NULL; -#define APPEND(type, h, t) \ -{ \ - type pt; \ - for (pt = h; pt->next; pt = pt->next); \ - pt->next = t; \ -} -%} - -%union { - DMXConfigTokenPtr token; - DMXConfigStringPtr string; - DMXConfigNumberPtr number; - DMXConfigPairPtr pair; - DMXConfigFullDimPtr fdim; - DMXConfigPartDimPtr pdim; - DMXConfigDisplayPtr display; - DMXConfigWallPtr wall; - DMXConfigOptionPtr option; - DMXConfigParamPtr param; - DMXConfigCommentPtr comment; - DMXConfigSubPtr subentry; - DMXConfigVirtualPtr virtual; - DMXConfigEntryPtr entry; -} - - /* Terminals */ -%token '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM -%token T_STRING -%token T_DIMENSION T_OFFSET T_ORIGIN -%token T_COMMENT T_LINE_COMMENT - - /* Non-termials */ -%type Display Wall Terminal Open Close -%type NameList Name -%type Dimension Offset Origin -%type PartialDim -%type FullDim -%type DisplayEntry -%type