aboutsummaryrefslogtreecommitdiff
path: root/libXt/util
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-09-12 11:27:51 +0200
committermarha <marha@users.sourceforge.net>2011-09-12 11:27:51 +0200
commitdafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0 (patch)
treebdf833cc6a4fc9035411779e10dd9e8478201885 /libXt/util
parent0b40f5f4b54453a77f4b09c431f8efc6875da61f (diff)
downloadvcxsrv-dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0.tar.gz
vcxsrv-dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0.tar.bz2
vcxsrv-dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0.zip
Synchronised line endinge with release branch
Diffstat (limited to 'libXt/util')
-rw-r--r--libXt/util/Makefile.am62
-rw-r--r--libXt/util/Shell.ht192
-rw-r--r--libXt/util/StrDefs.ct102
-rw-r--r--libXt/util/StrDefs.ht122
-rw-r--r--libXt/util/makestrs.c1492
-rw-r--r--libXt/util/makestrs.man432
-rw-r--r--libXt/util/string.list796
7 files changed, 1599 insertions, 1599 deletions
diff --git a/libXt/util/Makefile.am b/libXt/util/Makefile.am
index 625c05aa7..dedfa6b56 100644
--- a/libXt/util/Makefile.am
+++ b/libXt/util/Makefile.am
@@ -1,31 +1,31 @@
-noinst_PROGRAMS = makestrs
-
-CC = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS_FOR_BUILD@
-LDFLAGS = @LDFLAGS_FOR_BUILD@
-
-EXTRA_DIST = \
- Shell.ht \
- StrDefs.ct \
- StrDefs.ht \
- string.list
-
-AM_CFLAGS = $(XT_CFLAGS)
-makestrs_SOURCES = makestrs.c
-
-
-# Man page
-appmandir = $(APP_MAN_DIR)
-
-appman_PRE = makestrs.man
-
-noinst_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
-
-EXTRA_DIST += $(appman_PRE)
-CLEANFILES = $(noinst_DATA)
-
-SUFFIXES = .$(APP_MAN_SUFFIX) .man
-
-# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
-.man.$(APP_MAN_SUFFIX):
- $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
+noinst_PROGRAMS = makestrs
+
+CC = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS_FOR_BUILD@
+LDFLAGS = @LDFLAGS_FOR_BUILD@
+
+EXTRA_DIST = \
+ Shell.ht \
+ StrDefs.ct \
+ StrDefs.ht \
+ string.list
+
+AM_CFLAGS = $(XT_CFLAGS)
+makestrs_SOURCES = makestrs.c
+
+
+# Man page
+appmandir = $(APP_MAN_DIR)
+
+appman_PRE = makestrs.man
+
+noinst_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
+
+EXTRA_DIST += $(appman_PRE)
+CLEANFILES = $(noinst_DATA)
+
+SUFFIXES = .$(APP_MAN_SUFFIX) .man
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+.man.$(APP_MAN_SUFFIX):
+ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/libXt/util/Shell.ht b/libXt/util/Shell.ht
index 821854dfd..c6e25b0fd 100644
--- a/libXt/util/Shell.ht
+++ b/libXt/util/Shell.ht
@@ -1,96 +1,96 @@
-/***********************************************************
-
-Copyright 1987, 1988, 1994, 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 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifndef _XtShell_h
-#define _XtShell_h
-
-#ifndef XT_NO_SM
-#include <X11/SM/SMlib.h>
-#endif
-#include <X11/Intrinsic.h>
-
-/***********************************************************************
- *
- * Shell Widget
- *
- ***********************************************************************/
-/*
- * Shell-specific resources names, classes, and a representation type.
- */
-
-#ifndef XTSTRINGDEFINES
-#define _XtShell_h_Const const
-#endif
-
-<<<STRING_TABLE_GOES_HERE>>>
-
-#ifndef XTSTRINGDEFINES
-#undef _XtShell_h_Const
-#endif
-
-/* Class record constants */
-
-typedef struct _ShellClassRec *ShellWidgetClass;
-typedef struct _OverrideShellClassRec *OverrideShellWidgetClass;
-typedef struct _WMShellClassRec *WMShellWidgetClass;
-typedef struct _TransientShellClassRec *TransientShellWidgetClass;
-typedef struct _TopLevelShellClassRec *TopLevelShellWidgetClass;
-typedef struct _ApplicationShellClassRec *ApplicationShellWidgetClass;
-typedef struct _SessionShellClassRec *SessionShellWidgetClass;
-
-#ifndef SHELL
-externalref WidgetClass shellWidgetClass;
-externalref WidgetClass overrideShellWidgetClass;
-externalref WidgetClass wmShellWidgetClass;
-externalref WidgetClass transientShellWidgetClass;
-externalref WidgetClass topLevelShellWidgetClass;
-externalref WidgetClass applicationShellWidgetClass;
-externalref WidgetClass sessionShellWidgetClass;
-#endif
-
-#endif /* _XtShell_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 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 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifndef _XtShell_h
+#define _XtShell_h
+
+#ifndef XT_NO_SM
+#include <X11/SM/SMlib.h>
+#endif
+#include <X11/Intrinsic.h>
+
+/***********************************************************************
+ *
+ * Shell Widget
+ *
+ ***********************************************************************/
+/*
+ * Shell-specific resources names, classes, and a representation type.
+ */
+
+#ifndef XTSTRINGDEFINES
+#define _XtShell_h_Const const
+#endif
+
+<<<STRING_TABLE_GOES_HERE>>>
+
+#ifndef XTSTRINGDEFINES
+#undef _XtShell_h_Const
+#endif
+
+/* Class record constants */
+
+typedef struct _ShellClassRec *ShellWidgetClass;
+typedef struct _OverrideShellClassRec *OverrideShellWidgetClass;
+typedef struct _WMShellClassRec *WMShellWidgetClass;
+typedef struct _TransientShellClassRec *TransientShellWidgetClass;
+typedef struct _TopLevelShellClassRec *TopLevelShellWidgetClass;
+typedef struct _ApplicationShellClassRec *ApplicationShellWidgetClass;
+typedef struct _SessionShellClassRec *SessionShellWidgetClass;
+
+#ifndef SHELL
+externalref WidgetClass shellWidgetClass;
+externalref WidgetClass overrideShellWidgetClass;
+externalref WidgetClass wmShellWidgetClass;
+externalref WidgetClass transientShellWidgetClass;
+externalref WidgetClass topLevelShellWidgetClass;
+externalref WidgetClass applicationShellWidgetClass;
+externalref WidgetClass sessionShellWidgetClass;
+#endif
+
+#endif /* _XtShell_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/util/StrDefs.ct b/libXt/util/StrDefs.ct
index a4d6efa00..c3b15d861 100644
--- a/libXt/util/StrDefs.ct
+++ b/libXt/util/StrDefs.ct
@@ -1,51 +1,51 @@
-/***********************************************************
-
-Copyright 1987, 1988, 1994, 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 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#define Const const
-
-<<<STRING_TABLE_GOES_HERE>>>
-
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 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 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#define Const const
+
+<<<STRING_TABLE_GOES_HERE>>>
+
diff --git a/libXt/util/StrDefs.ht b/libXt/util/StrDefs.ht
index c57ce4558..b003bb85b 100644
--- a/libXt/util/StrDefs.ht
+++ b/libXt/util/StrDefs.ht
@@ -1,61 +1,61 @@
-/***********************************************************
-
-Copyright 1987, 1988, 1994, 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 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifndef _XtStringDefs_h_
-#define _XtStringDefs_h_
-
-#ifndef XTSTRINGDEFINES
-#define _XtStringDefs_h_Const const
-#endif
-
-<<<STRING_TABLE_GOES_HERE>>>
-
-#ifndef XTSTRINGDEFINES
-#undef _XtStringDefs_h_Const
-#endif
-
-#endif /* _XtStringDefs_h_ */
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 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 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifndef _XtStringDefs_h_
+#define _XtStringDefs_h_
+
+#ifndef XTSTRINGDEFINES
+#define _XtStringDefs_h_Const const
+#endif
+
+<<<STRING_TABLE_GOES_HERE>>>
+
+#ifndef XTSTRINGDEFINES
+#undef _XtStringDefs_h_Const
+#endif
+
+#endif /* _XtStringDefs_h_ */
diff --git a/libXt/util/makestrs.c b/libXt/util/makestrs.c
index 3f531936b..902d461c5 100644
--- a/libXt/util/makestrs.c
+++ b/libXt/util/makestrs.c
@@ -1,746 +1,746 @@
-/*
-
-Copyright (c) 1991, 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.
-
-*/
-
-/* Constructs string definitions */
-
-#include <stdio.h>
-#include <X11/Xos.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-typedef struct _TableEnt {
- struct _TableEnt* next;
- char* left;
- char* right;
- int offset;
-} TableEnt;
-
-typedef struct _Table {
- struct _Table* next;
- TableEnt* tableent;
- TableEnt* tableentcurrent;
- TableEnt** tableenttail;
- char* name;
- int offset;
-} Table;
-
-typedef struct _File {
- struct _File* next;
- FILE* tmpl;
- char* name;
- Table* table;
- Table* tablecurrent;
- Table** tabletail;
-} File;
-
-static File* file = NULL;
-static File* filecurrent = NULL;
-static File** filetail = &file;
-static char* conststr;
-static char* prefixstr = NULL;
-static char* featurestr = NULL;
-static char* ctmplstr = NULL;
-static char* fileprotstr;
-static char* externrefstr;
-static char* externdefstr;
-
-#ifndef FALSE
-# define FALSE 0
-# define TRUE !(FALSE)
-#endif
-
-static int solaris_abi_names = FALSE;
-
-#define X_DEFAULT_ABI 0
-#define X_ARRAYPER_ABI 1
-#define X_INTEL_ABI 2
-#define X_INTEL_ABI_BC 3
-#define X_SPARC_ABI 4
-#define X_FUNCTION_ABI 5
-
-#define X_MAGIC_STRING "<<<STRING_TABLE_GOES_HERE>>>"
-
-/* Wrapper for fopen()
- * Prepend filename with an includedir which can be specified on the
- * commandline. Needed to separate source and build directories.
- */
-static char* includedir = NULL;
-static FILE *ifopen(const char *file, const char *mode)
-{
- size_t len;
- char *buffer;
- FILE *ret;
-
- if (includedir == NULL)
- return fopen(file, mode);
-
- len = strlen(file) + strlen(includedir) + 1;
- buffer = (char*)malloc(len + 1);
- if (buffer == NULL)
- return NULL;
-
- strcpy(buffer, includedir);
- strcat(buffer, "/");
- strcat(buffer, file);
-
- ret = fopen(buffer, mode);
-
- free(buffer);
- return ret;
-}
-
-static void WriteHeaderProlog (FILE *f, File *phile)
-{
- Table* t;
- TableEnt* te;
-
- (void) fprintf (f, "#ifdef %s\n", featurestr);
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next) {
- if (strcmp (te->left, "RAtom") == 0) {
- (void) fprintf (f,
- "#ifndef %s%s\n#define %s%s \"%s\"\n#endif\n",
- prefixstr, te->left, prefixstr, te->left, te->right);
- } else {
- (void) fprintf (f,
- "#define %s%s \"%s\"\n",
- prefixstr, te->left, te->right);
- }
- }
- (void) fprintf (f, "%s", "#else\n");
-}
-
-static void IntelABIWriteHeader (FILE *f, File *phile)
-{
- Table* t;
- TableEnt* te;
-
- WriteHeaderProlog (f, phile);
-
- for (t = phile->table; t; t = t->next) {
- (void) fprintf (f, "%s %sConst char %s[];\n",
- externrefstr, conststr ? conststr : fileprotstr, t->name);
- for (te = t->tableent; te; te = te->next)
- (void) fprintf (f,
- "#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n",
- prefixstr, te->left, prefixstr, te->left, t->name, te->offset);
- }
-
- (void) fprintf (f, "#endif /* %s */\n", featurestr);
-}
-
-static void SPARCABIWriteHeader (FILE *f, File *phile)
-{
- Table* t;
- TableEnt* te;
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- (void) fprintf (f, "#define %s%s \"%s\"\n",
- prefixstr, te->left, te->right);
-}
-
-static void FunctionWriteHeader (FILE *f, File *phile)
-{
- Table* t;
- TableEnt* te;
-
- WriteHeaderProlog (f, phile);
-
- (void) fprintf (f, "%s %sConst char* %s();\n",
- externrefstr, conststr ? conststr : fileprotstr,
- phile->table->name);
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- (void) fprintf (f,
- "#ifndef %s%s\n#define %s%s (%s(%d))\n#endif\n",
- prefixstr, te->left, prefixstr, te->left, phile->table->name,
- te->offset);
-
- (void) fprintf (f, "#endif /* %s */\n", featurestr);
-}
-
-static void ArrayperWriteHeader (FILE *f, File *phile)
-{
- Table* t;
- TableEnt* te;
-
- WriteHeaderProlog (f, phile);
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- (void) fprintf (f,
- "#ifndef %s%s\n%s %sConst char %s%s[];\n#endif\n",
- prefixstr, te->left,
- externrefstr, conststr ? conststr : fileprotstr,
- prefixstr, te->left);
-
- (void) fprintf (f, "#endif /* %s */\n", featurestr);
-}
-
-static void DefaultWriteHeader (FILE *f, File *phile)
-{
- Table* t;
- TableEnt* te;
-
- WriteHeaderProlog (f, phile);
-
- (void) fprintf (f, "%s %sConst char %s[];\n",
- externrefstr, conststr ? conststr : fileprotstr,
- phile->table->name);
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- (void) fprintf (f,
- "#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n",
- prefixstr, te->left, prefixstr, te->left, phile->table->name,
- te->offset);
-
- (void) fprintf (f, "#endif /* %s */\n", featurestr);
-}
-
-static void CopyTmplProlog (FILE *tmpl, FILE *f)
-{
- char buf[1024];
- static char* magic_string = X_MAGIC_STRING;
- int magic_string_len = strlen (magic_string);
-
- while (fgets (buf, sizeof buf, tmpl)) {
- if (strncmp (buf, magic_string, magic_string_len) == 0) {
- return;
- }
- (void) fputs (buf, f);
- }
-}
-
-static void CopyTmplEpilog (FILE *tmpl, FILE *f)
-{
- char buf[1024];
-
- while (fgets (buf, sizeof buf, tmpl))
- (void) fputs (buf, f);
-}
-
-static char* abistring[] = {
- "Default", "Array per string", "Intel", "Intel BC", "SPARC", "Function" };
-
-static void WriteHeader (char *tagline, File *phile, int abi)
-{
- FILE* f;
- char* tmp;
- static void (*headerproc[])(FILE *f, File *phile) = {
- DefaultWriteHeader, ArrayperWriteHeader,
- IntelABIWriteHeader, IntelABIWriteHeader,
- SPARCABIWriteHeader, FunctionWriteHeader };
-
- if ((f = fopen (phile->name, "w+")) == NULL) exit (1);
-
- if (phile->tmpl) CopyTmplProlog (phile->tmpl, f);
-
- (void) fprintf (f,
- "%s\n%s\n/* %s ABI version -- Do not edit */\n",
- "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */",
- "/* This file is automatically generated. */",
- abistring[abi]);
-
- if (tagline) (void) fprintf (f, "/* %s */\n\n", tagline);
-
- /* do the right thing for Motif, i.e. avoid _XmXmStrDefs_h_ */
- if (strcmp (prefixstr, "Xm") == 0) {
- if ((fileprotstr = malloc (strlen (phile->name) + 3)) == NULL)
- exit (1);
- (void) sprintf (fileprotstr, "_%s_", phile->name);
- } else {
- if ((fileprotstr = malloc (strlen (phile->name) + strlen (prefixstr) + 3)) == NULL)
- exit (1);
- (void) sprintf (fileprotstr, "_%s%s_", prefixstr, phile->name);
- }
-
- for (tmp = fileprotstr; *tmp; tmp++) if (*tmp == '.') *tmp = '_';
-
- (*headerproc[abi])(f, phile);
-
- if (phile->tmpl) CopyTmplEpilog (phile->tmpl, f);
-
- (void) free (fileprotstr);
- (void) fclose (phile->tmpl);
- (void) fclose (f);
-}
-
-static void WriteSourceLine (TableEnt *te, int abi, int fudge)
-{
- char* c;
-
- for (c = te->right; *c; c++) (void) printf ("'%c',", *c);
- (void) printf ("%c", '0');
- if (te->next || fudge) (void) printf ("%c", ',');
- (void) printf ("%s", "\n");
-}
-
-static char* const_string = "%s %sConst char %s[] = {\n";
-
-static void IntelABIWriteSource (int abi)
-{
- File* phile;
-
- for (phile = file; phile; phile = phile->next) {
- Table* t;
- TableEnt* te;
-
- for (t = phile->table; t; t = t->next) {
- (void) printf (const_string, externdefstr,
- conststr ? conststr : "", t->name);
- for (te = t->tableent; te; te = te->next)
- WriteSourceLine (te, abi, 0);
- (void) printf ("%s\n\n", "};");
- }
- }
-}
-
-static void IntelABIBCWriteSource (int abi)
-{
- File* phile;
-
- for (phile = file; phile; phile = phile->next) {
- Table* t;
- TableEnt* te;
-
- (void) printf (const_string, externdefstr,
- conststr ? conststr : "", phile->table->name);
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- WriteSourceLine (te, abi, t->next ? 1 : 0);
- (void) printf ("%s\n\n", "};");
-
- if (phile->table->next) {
- (void) printf (const_string, externdefstr,
- conststr ? conststr : "", phile->table->next->name);
- for (t = phile->table->next; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- WriteSourceLine (te, abi, 0);
- (void) printf ("%s\n\n", "};");
- }
- }
-}
-
-static void FunctionWriteSource (int abi)
-{
- File* phile;
-
- for (phile = file; phile; phile = phile->next) {
- Table* t;
- TableEnt* te;
-
- (void) printf ("static %sConst char _%s[] = {\n",
- conststr ? conststr : "", phile->table->name);
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- WriteSourceLine (te, abi, t->next ? 1 : 0);
- (void) printf ("%s\n\n", "};");
-
- (void) printf ("%sConst char* %s(index)\n int index;\n{\n return &_%s[index];\n}\n\n",
- conststr ? conststr : "",
- phile->table->name, phile->table->name);
- }
-}
-
-static void ArrayperWriteSource (int abi)
-{
- File* phile;
- static int done_atom;
-
- for (phile = file; phile; phile = phile->next) {
- Table* t;
- TableEnt* te;
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next) {
- if (strcmp (te->left, "RAtom") == 0) {
- if (done_atom) return;
- done_atom = 1;
- }
- (void) printf ("%s %sConst char %s%s[] = \"%s\";\n",
- externdefstr, conststr ? conststr : "",
- prefixstr,
- te->left, te->right);
- }
- }
-}
-
-static void DefaultWriteSource (int abi)
-{
- File* phile;
-
- for (phile = file; phile; phile = phile->next) {
- Table* t;
- TableEnt* te;
-
- (void) printf (const_string, externdefstr, conststr ? conststr : "",
- phile->table->name);
-
- for (t = phile->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next)
- WriteSourceLine (te, abi, t->next ? 1 : 0);
- (void) printf ("%s\n\n", "};");
- }
-}
-
-static void WriteSource(char *tagline, int abi)
-{
- static void (*sourceproc[])(int) = {
- DefaultWriteSource, ArrayperWriteSource,
- IntelABIWriteSource, IntelABIBCWriteSource,
- DefaultWriteSource, FunctionWriteSource };
-
- FILE* tmpl;
-
- if (ctmplstr) {
- tmpl = ifopen (ctmplstr, "r");
-
- if (tmpl) CopyTmplProlog (tmpl, stdout);
- else {
- (void) fprintf (stderr, "Expected template %s, not found\n",
- ctmplstr);
- exit (1);
- }
- } else
- tmpl = NULL;
-
-
- (void) printf ("%s\n%s\n/* %s ABI version -- Do not edit */\n",
- "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */",
- "/* This file is automatically generated. */",
- abistring[abi]);
-
- if (tagline) (void) printf ("/* %s */\n\n", tagline);
-
- (*sourceproc[abi])(abi);
-
- if (tmpl) CopyTmplEpilog (tmpl, stdout);
-}
-
-static void DoLine(char *buf)
-{
-#define X_NO_TOKEN 0
-#define X_FILE_TOKEN 1
-#define X_TABLE_TOKEN 2
-#define X_PREFIX_TOKEN 3
-#define X_FEATURE_TOKEN 4
-#define X_EXTERNREF_TOKEN 5
-#define X_EXTERNDEF_TOKEN 6
-#define X_CTMPL_TOKEN 7
-#define X_HTMPL_TOKEN 8
-#define X_CONST_TOKEN 9
-
- int token;
- char lbuf[1024];
- static char* file_str = "#file";
- static char* table_str = "#table";
- static char* prefix_str = "#prefix";
- static char* feature_str = "#feature";
- static char* externref_str = "#externref";
- static char* externdef_str = "#externdef";
- static char* ctmpl_str = "#ctmpl";
- static char* htmpl_str = "#htmpl";
- static char* const_str = "#const";
-
- if (strncmp (buf, file_str, strlen (file_str)) == 0)
- token = X_FILE_TOKEN;
- else if (strncmp (buf, table_str, strlen (table_str)) == 0)
- token = X_TABLE_TOKEN;
- else if (strncmp (buf, prefix_str, strlen (prefix_str)) == 0)
- token = X_PREFIX_TOKEN;
- else if (strncmp (buf, feature_str, strlen (feature_str)) == 0)
- token = X_FEATURE_TOKEN;
- else if (strncmp (buf, externref_str, strlen (externref_str)) == 0)
- token = X_EXTERNREF_TOKEN;
- else if (strncmp (buf, externdef_str, strlen (externdef_str)) == 0)
- token = X_EXTERNDEF_TOKEN;
- else if (strncmp (buf, ctmpl_str, strlen (ctmpl_str)) == 0)
- token = X_CTMPL_TOKEN;
- else if (strncmp (buf, htmpl_str, strlen (htmpl_str)) == 0)
- token = X_HTMPL_TOKEN;
- else if (strncmp (buf, const_str, strlen (const_str)) == 0)
- token = X_CONST_TOKEN;
- else
- token = X_NO_TOKEN;
-
- switch (token) {
- case X_FILE_TOKEN:
- {
- File* phile;
-
- if ((phile = (File*) malloc (sizeof(File))) == NULL)
- exit(1);
- if ((phile->name = malloc (strlen (buf + strlen (file_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (phile->name, buf + strlen (file_str) + 1);
- phile->table = NULL;
- phile->tablecurrent = NULL;
- phile->tabletail = &phile->table;
- phile->next = NULL;
- phile->tmpl = NULL;
-
- *filetail = phile;
- filetail = &phile->next;
- filecurrent = phile;
- }
- break;
- case X_TABLE_TOKEN:
- {
- Table* table;
- if ((table = (Table*) malloc (sizeof(Table))) == NULL)
- exit(1);
- if ((table->name = malloc (strlen (buf + strlen (table_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (table->name, buf + strlen (table_str) + 1);
- if (solaris_abi_names) {
- if (strcmp(table->name, "XtStringsR6") == 0) {
- strcpy(table->name, "XtR6Strings");
- } else if (strcmp(table->name, "XtShellStringsR6") == 0) {
- strcpy(table->name, "XtR6ShellStrings");
- }
- }
- table->tableent = NULL;
- table->tableentcurrent = NULL;
- table->tableenttail = &table->tableent;
- table->next = NULL;
- table->offset = 0;
-
- *filecurrent->tabletail = table;
- filecurrent->tabletail = &table->next;
- filecurrent->tablecurrent = table;
- }
- break;
- case X_PREFIX_TOKEN:
- if ((prefixstr = malloc (strlen (buf + strlen (prefix_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (prefixstr, buf + strlen (prefix_str) + 1);
- break;
- case X_FEATURE_TOKEN:
- if ((featurestr = malloc (strlen (buf + strlen (feature_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (featurestr, buf + strlen (feature_str) + 1);
- break;
- case X_EXTERNREF_TOKEN:
- if ((externrefstr = malloc (strlen (buf + strlen (externref_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (externrefstr, buf + strlen (externref_str) + 1);
- break;
- case X_EXTERNDEF_TOKEN:
- if ((externdefstr = malloc (strlen (buf + strlen (externdef_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (externdefstr, buf + strlen (externdef_str) + 1);
- break;
- case X_CTMPL_TOKEN:
- if ((ctmplstr = malloc (strlen (buf + strlen (ctmpl_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (ctmplstr, buf + strlen (ctmpl_str) + 1);
- break;
- case X_HTMPL_TOKEN:
- if ((filecurrent->tmpl = ifopen (buf + strlen (htmpl_str) + 1, "r")) == NULL) {
- (void) fprintf (stderr,
- "Expected template %s, not found\n", htmpl_str);
- exit (1);
- }
- break;
- case X_CONST_TOKEN:
- if ((conststr = malloc (strlen (buf + strlen (const_str)) + 1)) == NULL)
- exit(1);
- (void) strcpy (conststr, buf + strlen (const_str) + 1);
- break;
- default:
- {
- char* right;
- TableEnt* tableent;
- int llen;
- int rlen;
- int len;
-
- if ((right = index(buf, ' ')))
- *right++ = 0;
- else
- right = buf + 1;
- if (buf[0] == 'H') {
- strcpy (lbuf, prefixstr);
- strcat (lbuf, right);
- right = lbuf;
- }
-
- llen = len = strlen(buf) + 1;
- rlen = strlen(right) + 1;
- if (right != buf + 1) len += rlen;
- if ((tableent = (TableEnt*)malloc(sizeof(TableEnt) + len)) == NULL)
- exit(1);
- tableent->left = (char *)(tableent + 1);
- strcpy(tableent->left, buf);
- if (llen != len) {
- tableent->right = tableent->left + llen;
- strcpy(tableent->right, right);
- } else {
- tableent->right = tableent->left + 1;
- }
- tableent->next = NULL;
-
- *filecurrent->tablecurrent->tableenttail = tableent;
- filecurrent->tablecurrent->tableenttail = &tableent->next;
- filecurrent->tablecurrent->tableentcurrent = tableent;
- }
- break;
- }
-}
-
-static void IntelABIIndexEntries (File *file)
-{
- Table* t;
- TableEnt* te;
-
- for (t = file->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next) {
- te->offset = t->offset;
- t->offset += strlen (te->right);
- t->offset++;
- }
-}
-
-static void DefaultIndexEntries (File *file)
-{
- Table* t;
- TableEnt* te;
- int offset = 0;
-
- for (t = file->table; t; t = t->next)
- for (te = t->tableent; te; te = te->next) {
- te->offset = offset;
- offset += strlen (te->right);
- offset++;
- }
-}
-
-static void IndexEntries (File *file, int abi)
-{
- switch (abi) {
- case X_SPARC_ABI:
- break;
- case X_INTEL_ABI:
- case X_INTEL_ABI_BC:
- IntelABIIndexEntries (file);
- break;
- default:
- DefaultIndexEntries (file);
- break;
- }
-}
-
-static char* DoComment (char *line)
-{
- char* tag;
- char* eol;
- char* ret;
- int len;
-
- /* assume that the first line with two '$' in it is the RCS tag line */
- if ((tag = index (line, '$')) == NULL) return NULL;
- if ((eol = index (tag + 1, '$')) == NULL) return NULL;
- len = eol - tag;
- if ((ret = malloc (len)) == NULL)
- exit (1);
- (void) strncpy (ret, tag + 1, len - 1);
- ret[len - 2] = 0;
- return ret;
-}
-
-int main(int argc, char *argv[])
-{
- int len, i;
- char* tagline = NULL;
- File* phile;
- FILE *f;
- char buf[1024];
- int abi =
-#ifndef ARRAYPERSTR
- X_DEFAULT_ABI;
-#else
- X_ARRAYPER_ABI;
-#endif
-
- f = stdin;
- if (argc > 1) {
- for (i = 1; i < argc; i++) {
- if (strcmp (argv[i], "-f") == 0) {
- if (++i < argc)
- f = fopen (argv[i], "r");
- else
- return 1;
- }
- if (strcmp (argv[i], "-i") == 0) {
- if (++i < argc)
- includedir = argv[i];
- else
- return 1;
- }
- if (strcmp (argv[i], "-sparcabi") == 0)
- abi = X_SPARC_ABI;
- if (strcmp (argv[i], "-intelabi") == 0)
- abi = X_INTEL_ABI;
- if (strcmp (argv[i], "-functionabi") == 0)
- abi = X_FUNCTION_ABI;
- if (strcmp (argv[i], "-earlyR6bc") == 0 && abi == X_INTEL_ABI)
- abi = X_INTEL_ABI_BC;
- if (strcmp (argv[i], "-arrayperabi") == 0)
- abi = X_ARRAYPER_ABI;
-#ifdef ARRAYPERSTR
- if (strcmp (argv[i], "-defaultabi") == 0)
- abi = X_DEFAULT_ABI;
-#endif
- if (strcmp (argv[i], "-solarisabinames") == 0)
- solaris_abi_names = TRUE;
- }
- }
-
- if (f == NULL) return 1;
- while (fgets(buf, sizeof buf, f)) {
- if (!buf[0] || buf[0] == '\n')
- continue;
- if (buf[0] == '!') {
- if (tagline) continue;
- tagline = DoComment (buf);
- continue;
- }
- if (buf[(len = strlen (buf) - 1)] == '\n') buf[len] = '\0';
- DoLine(buf);
- }
- for (phile = file; phile; phile = phile->next) {
- if (abi != X_ARRAYPER_ABI) IndexEntries (phile, abi);
- WriteHeader (tagline, phile, abi);
- }
- WriteSource(tagline, abi);
- return 0;
-}
-
+/*
+
+Copyright (c) 1991, 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.
+
+*/
+
+/* Constructs string definitions */
+
+#include <stdio.h>
+#include <X11/Xos.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+typedef struct _TableEnt {
+ struct _TableEnt* next;
+ char* left;
+ char* right;
+ int offset;
+} TableEnt;
+
+typedef struct _Table {
+ struct _Table* next;
+ TableEnt* tableent;
+ TableEnt* tableentcurrent;
+ TableEnt** tableenttail;
+ char* name;
+ int offset;
+} Table;
+
+typedef struct _File {
+ struct _File* next;
+ FILE* tmpl;
+ char* name;
+ Table* table;
+ Table* tablecurrent;
+ Table** tabletail;
+} File;
+
+static File* file = NULL;
+static File* filecurrent = NULL;
+static File** filetail = &file;
+static char* conststr;
+static char* prefixstr = NULL;
+static char* featurestr = NULL;
+static char* ctmplstr = NULL;
+static char* fileprotstr;
+static char* externrefstr;
+static char* externdefstr;
+
+#ifndef FALSE
+# define FALSE 0
+# define TRUE !(FALSE)
+#endif
+
+static int solaris_abi_names = FALSE;
+
+#define X_DEFAULT_ABI 0
+#define X_ARRAYPER_ABI 1
+#define X_INTEL_ABI 2
+#define X_INTEL_ABI_BC 3
+#define X_SPARC_ABI 4
+#define X_FUNCTION_ABI 5
+
+#define X_MAGIC_STRING "<<<STRING_TABLE_GOES_HERE>>>"
+
+/* Wrapper for fopen()
+ * Prepend filename with an includedir which can be specified on the
+ * commandline. Needed to separate source and build directories.
+ */
+static char* includedir = NULL;
+static FILE *ifopen(const char *file, const char *mode)
+{
+ size_t len;
+ char *buffer;
+ FILE *ret;
+
+ if (includedir == NULL)
+ return fopen(file, mode);
+
+ len = strlen(file) + strlen(includedir) + 1;
+ buffer = (char*)malloc(len + 1);
+ if (buffer == NULL)
+ return NULL;
+
+ strcpy(buffer, includedir);
+ strcat(buffer, "/");
+ strcat(buffer, file);
+
+ ret = fopen(buffer, mode);
+
+ free(buffer);
+ return ret;
+}
+
+static void WriteHeaderProlog (FILE *f, File *phile)
+{
+ Table* t;
+ TableEnt* te;
+
+ (void) fprintf (f, "#ifdef %s\n", featurestr);
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next) {
+ if (strcmp (te->left, "RAtom") == 0) {
+ (void) fprintf (f,
+ "#ifndef %s%s\n#define %s%s \"%s\"\n#endif\n",
+ prefixstr, te->left, prefixstr, te->left, te->right);
+ } else {
+ (void) fprintf (f,
+ "#define %s%s \"%s\"\n",
+ prefixstr, te->left, te->right);
+ }
+ }
+ (void) fprintf (f, "%s", "#else\n");
+}
+
+static void IntelABIWriteHeader (FILE *f, File *phile)
+{
+ Table* t;
+ TableEnt* te;
+
+ WriteHeaderProlog (f, phile);
+
+ for (t = phile->table; t; t = t->next) {
+ (void) fprintf (f, "%s %sConst char %s[];\n",
+ externrefstr, conststr ? conststr : fileprotstr, t->name);
+ for (te = t->tableent; te; te = te->next)
+ (void) fprintf (f,
+ "#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n",
+ prefixstr, te->left, prefixstr, te->left, t->name, te->offset);
+ }
+
+ (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void SPARCABIWriteHeader (FILE *f, File *phile)
+{
+ Table* t;
+ TableEnt* te;
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ (void) fprintf (f, "#define %s%s \"%s\"\n",
+ prefixstr, te->left, te->right);
+}
+
+static void FunctionWriteHeader (FILE *f, File *phile)
+{
+ Table* t;
+ TableEnt* te;
+
+ WriteHeaderProlog (f, phile);
+
+ (void) fprintf (f, "%s %sConst char* %s();\n",
+ externrefstr, conststr ? conststr : fileprotstr,
+ phile->table->name);
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ (void) fprintf (f,
+ "#ifndef %s%s\n#define %s%s (%s(%d))\n#endif\n",
+ prefixstr, te->left, prefixstr, te->left, phile->table->name,
+ te->offset);
+
+ (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void ArrayperWriteHeader (FILE *f, File *phile)
+{
+ Table* t;
+ TableEnt* te;
+
+ WriteHeaderProlog (f, phile);
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ (void) fprintf (f,
+ "#ifndef %s%s\n%s %sConst char %s%s[];\n#endif\n",
+ prefixstr, te->left,
+ externrefstr, conststr ? conststr : fileprotstr,
+ prefixstr, te->left);
+
+ (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void DefaultWriteHeader (FILE *f, File *phile)
+{
+ Table* t;
+ TableEnt* te;
+
+ WriteHeaderProlog (f, phile);
+
+ (void) fprintf (f, "%s %sConst char %s[];\n",
+ externrefstr, conststr ? conststr : fileprotstr,
+ phile->table->name);
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ (void) fprintf (f,
+ "#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n",
+ prefixstr, te->left, prefixstr, te->left, phile->table->name,
+ te->offset);
+
+ (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void CopyTmplProlog (FILE *tmpl, FILE *f)
+{
+ char buf[1024];
+ static char* magic_string = X_MAGIC_STRING;
+ int magic_string_len = strlen (magic_string);
+
+ while (fgets (buf, sizeof buf, tmpl)) {
+ if (strncmp (buf, magic_string, magic_string_len) == 0) {
+ return;
+ }
+ (void) fputs (buf, f);
+ }
+}
+
+static void CopyTmplEpilog (FILE *tmpl, FILE *f)
+{
+ char buf[1024];
+
+ while (fgets (buf, sizeof buf, tmpl))
+ (void) fputs (buf, f);
+}
+
+static char* abistring[] = {
+ "Default", "Array per string", "Intel", "Intel BC", "SPARC", "Function" };
+
+static void WriteHeader (char *tagline, File *phile, int abi)
+{
+ FILE* f;
+ char* tmp;
+ static void (*headerproc[])(FILE *f, File *phile) = {
+ DefaultWriteHeader, ArrayperWriteHeader,
+ IntelABIWriteHeader, IntelABIWriteHeader,
+ SPARCABIWriteHeader, FunctionWriteHeader };
+
+ if ((f = fopen (phile->name, "w+")) == NULL) exit (1);
+
+ if (phile->tmpl) CopyTmplProlog (phile->tmpl, f);
+
+ (void) fprintf (f,
+ "%s\n%s\n/* %s ABI version -- Do not edit */\n",
+ "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */",
+ "/* This file is automatically generated. */",
+ abistring[abi]);
+
+ if (tagline) (void) fprintf (f, "/* %s */\n\n", tagline);
+
+ /* do the right thing for Motif, i.e. avoid _XmXmStrDefs_h_ */
+ if (strcmp (prefixstr, "Xm") == 0) {
+ if ((fileprotstr = malloc (strlen (phile->name) + 3)) == NULL)
+ exit (1);
+ (void) sprintf (fileprotstr, "_%s_", phile->name);
+ } else {
+ if ((fileprotstr = malloc (strlen (phile->name) + strlen (prefixstr) + 3)) == NULL)
+ exit (1);
+ (void) sprintf (fileprotstr, "_%s%s_", prefixstr, phile->name);
+ }
+
+ for (tmp = fileprotstr; *tmp; tmp++) if (*tmp == '.') *tmp = '_';
+
+ (*headerproc[abi])(f, phile);
+
+ if (phile->tmpl) CopyTmplEpilog (phile->tmpl, f);
+
+ (void) free (fileprotstr);
+ (void) fclose (phile->tmpl);
+ (void) fclose (f);
+}
+
+static void WriteSourceLine (TableEnt *te, int abi, int fudge)
+{
+ char* c;
+
+ for (c = te->right; *c; c++) (void) printf ("'%c',", *c);
+ (void) printf ("%c", '0');
+ if (te->next || fudge) (void) printf ("%c", ',');
+ (void) printf ("%s", "\n");
+}
+
+static char* const_string = "%s %sConst char %s[] = {\n";
+
+static void IntelABIWriteSource (int abi)
+{
+ File* phile;
+
+ for (phile = file; phile; phile = phile->next) {
+ Table* t;
+ TableEnt* te;
+
+ for (t = phile->table; t; t = t->next) {
+ (void) printf (const_string, externdefstr,
+ conststr ? conststr : "", t->name);
+ for (te = t->tableent; te; te = te->next)
+ WriteSourceLine (te, abi, 0);
+ (void) printf ("%s\n\n", "};");
+ }
+ }
+}
+
+static void IntelABIBCWriteSource (int abi)
+{
+ File* phile;
+
+ for (phile = file; phile; phile = phile->next) {
+ Table* t;
+ TableEnt* te;
+
+ (void) printf (const_string, externdefstr,
+ conststr ? conststr : "", phile->table->name);
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ WriteSourceLine (te, abi, t->next ? 1 : 0);
+ (void) printf ("%s\n\n", "};");
+
+ if (phile->table->next) {
+ (void) printf (const_string, externdefstr,
+ conststr ? conststr : "", phile->table->next->name);
+ for (t = phile->table->next; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ WriteSourceLine (te, abi, 0);
+ (void) printf ("%s\n\n", "};");
+ }
+ }
+}
+
+static void FunctionWriteSource (int abi)
+{
+ File* phile;
+
+ for (phile = file; phile; phile = phile->next) {
+ Table* t;
+ TableEnt* te;
+
+ (void) printf ("static %sConst char _%s[] = {\n",
+ conststr ? conststr : "", phile->table->name);
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ WriteSourceLine (te, abi, t->next ? 1 : 0);
+ (void) printf ("%s\n\n", "};");
+
+ (void) printf ("%sConst char* %s(index)\n int index;\n{\n return &_%s[index];\n}\n\n",
+ conststr ? conststr : "",
+ phile->table->name, phile->table->name);
+ }
+}
+
+static void ArrayperWriteSource (int abi)
+{
+ File* phile;
+ static int done_atom;
+
+ for (phile = file; phile; phile = phile->next) {
+ Table* t;
+ TableEnt* te;
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next) {
+ if (strcmp (te->left, "RAtom") == 0) {
+ if (done_atom) return;
+ done_atom = 1;
+ }
+ (void) printf ("%s %sConst char %s%s[] = \"%s\";\n",
+ externdefstr, conststr ? conststr : "",
+ prefixstr,
+ te->left, te->right);
+ }
+ }
+}
+
+static void DefaultWriteSource (int abi)
+{
+ File* phile;
+
+ for (phile = file; phile; phile = phile->next) {
+ Table* t;
+ TableEnt* te;
+
+ (void) printf (const_string, externdefstr, conststr ? conststr : "",
+ phile->table->name);
+
+ for (t = phile->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next)
+ WriteSourceLine (te, abi, t->next ? 1 : 0);
+ (void) printf ("%s\n\n", "};");
+ }
+}
+
+static void WriteSource(char *tagline, int abi)
+{
+ static void (*sourceproc[])(int) = {
+ DefaultWriteSource, ArrayperWriteSource,
+ IntelABIWriteSource, IntelABIBCWriteSource,
+ DefaultWriteSource, FunctionWriteSource };
+
+ FILE* tmpl;
+
+ if (ctmplstr) {
+ tmpl = ifopen (ctmplstr, "r");
+
+ if (tmpl) CopyTmplProlog (tmpl, stdout);
+ else {
+ (void) fprintf (stderr, "Expected template %s, not found\n",
+ ctmplstr);
+ exit (1);
+ }
+ } else
+ tmpl = NULL;
+
+
+ (void) printf ("%s\n%s\n/* %s ABI version -- Do not edit */\n",
+ "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */",
+ "/* This file is automatically generated. */",
+ abistring[abi]);
+
+ if (tagline) (void) printf ("/* %s */\n\n", tagline);
+
+ (*sourceproc[abi])(abi);
+
+ if (tmpl) CopyTmplEpilog (tmpl, stdout);
+}
+
+static void DoLine(char *buf)
+{
+#define X_NO_TOKEN 0
+#define X_FILE_TOKEN 1
+#define X_TABLE_TOKEN 2
+#define X_PREFIX_TOKEN 3
+#define X_FEATURE_TOKEN 4
+#define X_EXTERNREF_TOKEN 5
+#define X_EXTERNDEF_TOKEN 6
+#define X_CTMPL_TOKEN 7
+#define X_HTMPL_TOKEN 8
+#define X_CONST_TOKEN 9
+
+ int token;
+ char lbuf[1024];
+ static char* file_str = "#file";
+ static char* table_str = "#table";
+ static char* prefix_str = "#prefix";
+ static char* feature_str = "#feature";
+ static char* externref_str = "#externref";
+ static char* externdef_str = "#externdef";
+ static char* ctmpl_str = "#ctmpl";
+ static char* htmpl_str = "#htmpl";
+ static char* const_str = "#const";
+
+ if (strncmp (buf, file_str, strlen (file_str)) == 0)
+ token = X_FILE_TOKEN;
+ else if (strncmp (buf, table_str, strlen (table_str)) == 0)
+ token = X_TABLE_TOKEN;
+ else if (strncmp (buf, prefix_str, strlen (prefix_str)) == 0)
+ token = X_PREFIX_TOKEN;
+ else if (strncmp (buf, feature_str, strlen (feature_str)) == 0)
+ token = X_FEATURE_TOKEN;
+ else if (strncmp (buf, externref_str, strlen (externref_str)) == 0)
+ token = X_EXTERNREF_TOKEN;
+ else if (strncmp (buf, externdef_str, strlen (externdef_str)) == 0)
+ token = X_EXTERNDEF_TOKEN;
+ else if (strncmp (buf, ctmpl_str, strlen (ctmpl_str)) == 0)
+ token = X_CTMPL_TOKEN;
+ else if (strncmp (buf, htmpl_str, strlen (htmpl_str)) == 0)
+ token = X_HTMPL_TOKEN;
+ else if (strncmp (buf, const_str, strlen (const_str)) == 0)
+ token = X_CONST_TOKEN;
+ else
+ token = X_NO_TOKEN;
+
+ switch (token) {
+ case X_FILE_TOKEN:
+ {
+ File* phile;
+
+ if ((phile = (File*) malloc (sizeof(File))) == NULL)
+ exit(1);
+ if ((phile->name = malloc (strlen (buf + strlen (file_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (phile->name, buf + strlen (file_str) + 1);
+ phile->table = NULL;
+ phile->tablecurrent = NULL;
+ phile->tabletail = &phile->table;
+ phile->next = NULL;
+ phile->tmpl = NULL;
+
+ *filetail = phile;
+ filetail = &phile->next;
+ filecurrent = phile;
+ }
+ break;
+ case X_TABLE_TOKEN:
+ {
+ Table* table;
+ if ((table = (Table*) malloc (sizeof(Table))) == NULL)
+ exit(1);
+ if ((table->name = malloc (strlen (buf + strlen (table_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (table->name, buf + strlen (table_str) + 1);
+ if (solaris_abi_names) {
+ if (strcmp(table->name, "XtStringsR6") == 0) {
+ strcpy(table->name, "XtR6Strings");
+ } else if (strcmp(table->name, "XtShellStringsR6") == 0) {
+ strcpy(table->name, "XtR6ShellStrings");
+ }
+ }
+ table->tableent = NULL;
+ table->tableentcurrent = NULL;
+ table->tableenttail = &table->tableent;
+ table->next = NULL;
+ table->offset = 0;
+
+ *filecurrent->tabletail = table;
+ filecurrent->tabletail = &table->next;
+ filecurrent->tablecurrent = table;
+ }
+ break;
+ case X_PREFIX_TOKEN:
+ if ((prefixstr = malloc (strlen (buf + strlen (prefix_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (prefixstr, buf + strlen (prefix_str) + 1);
+ break;
+ case X_FEATURE_TOKEN:
+ if ((featurestr = malloc (strlen (buf + strlen (feature_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (featurestr, buf + strlen (feature_str) + 1);
+ break;
+ case X_EXTERNREF_TOKEN:
+ if ((externrefstr = malloc (strlen (buf + strlen (externref_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (externrefstr, buf + strlen (externref_str) + 1);
+ break;
+ case X_EXTERNDEF_TOKEN:
+ if ((externdefstr = malloc (strlen (buf + strlen (externdef_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (externdefstr, buf + strlen (externdef_str) + 1);
+ break;
+ case X_CTMPL_TOKEN:
+ if ((ctmplstr = malloc (strlen (buf + strlen (ctmpl_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (ctmplstr, buf + strlen (ctmpl_str) + 1);
+ break;
+ case X_HTMPL_TOKEN:
+ if ((filecurrent->tmpl = ifopen (buf + strlen (htmpl_str) + 1, "r")) == NULL) {
+ (void) fprintf (stderr,
+ "Expected template %s, not found\n", htmpl_str);
+ exit (1);
+ }
+ break;
+ case X_CONST_TOKEN:
+ if ((conststr = malloc (strlen (buf + strlen (const_str)) + 1)) == NULL)
+ exit(1);
+ (void) strcpy (conststr, buf + strlen (const_str) + 1);
+ break;
+ default:
+ {
+ char* right;
+ TableEnt* tableent;
+ int llen;
+ int rlen;
+ int len;
+
+ if ((right = index(buf, ' ')))
+ *right++ = 0;
+ else
+ right = buf + 1;
+ if (buf[0] == 'H') {
+ strcpy (lbuf, prefixstr);
+ strcat (lbuf, right);
+ right = lbuf;
+ }
+
+ llen = len = strlen(buf) + 1;
+ rlen = strlen(right) + 1;
+ if (right != buf + 1) len += rlen;
+ if ((tableent = (TableEnt*)malloc(sizeof(TableEnt) + len)) == NULL)
+ exit(1);
+ tableent->left = (char *)(tableent + 1);
+ strcpy(tableent->left, buf);
+ if (llen != len) {
+ tableent->right = tableent->left + llen;
+ strcpy(tableent->right, right);
+ } else {
+ tableent->right = tableent->left + 1;
+ }
+ tableent->next = NULL;
+
+ *filecurrent->tablecurrent->tableenttail = tableent;
+ filecurrent->tablecurrent->tableenttail = &tableent->next;
+ filecurrent->tablecurrent->tableentcurrent = tableent;
+ }
+ break;
+ }
+}
+
+static void IntelABIIndexEntries (File *file)
+{
+ Table* t;
+ TableEnt* te;
+
+ for (t = file->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next) {
+ te->offset = t->offset;
+ t->offset += strlen (te->right);
+ t->offset++;
+ }
+}
+
+static void DefaultIndexEntries (File *file)
+{
+ Table* t;
+ TableEnt* te;
+ int offset = 0;
+
+ for (t = file->table; t; t = t->next)
+ for (te = t->tableent; te; te = te->next) {
+ te->offset = offset;
+ offset += strlen (te->right);
+ offset++;
+ }
+}
+
+static void IndexEntries (File *file, int abi)
+{
+ switch (abi) {
+ case X_SPARC_ABI:
+ break;
+ case X_INTEL_ABI:
+ case X_INTEL_ABI_BC:
+ IntelABIIndexEntries (file);
+ break;
+ default:
+ DefaultIndexEntries (file);
+ break;
+ }
+}
+
+static char* DoComment (char *line)
+{
+ char* tag;
+ char* eol;
+ char* ret;
+ int len;
+
+ /* assume that the first line with two '$' in it is the RCS tag line */
+ if ((tag = index (line, '$')) == NULL) return NULL;
+ if ((eol = index (tag + 1, '$')) == NULL) return NULL;
+ len = eol - tag;
+ if ((ret = malloc (len)) == NULL)
+ exit (1);
+ (void) strncpy (ret, tag + 1, len - 1);
+ ret[len - 2] = 0;
+ return ret;
+}
+
+int main(int argc, char *argv[])
+{
+ int len, i;
+ char* tagline = NULL;
+ File* phile;
+ FILE *f;
+ char buf[1024];
+ int abi =
+#ifndef ARRAYPERSTR
+ X_DEFAULT_ABI;
+#else
+ X_ARRAYPER_ABI;
+#endif
+
+ f = stdin;
+ if (argc > 1) {
+ for (i = 1; i < argc; i++) {
+ if (strcmp (argv[i], "-f") == 0) {
+ if (++i < argc)
+ f = fopen (argv[i], "r");
+ else
+ return 1;
+ }
+ if (strcmp (argv[i], "-i") == 0) {
+ if (++i < argc)
+ includedir = argv[i];
+ else
+ return 1;
+ }
+ if (strcmp (argv[i], "-sparcabi") == 0)
+ abi = X_SPARC_ABI;
+ if (strcmp (argv[i], "-intelabi") == 0)
+ abi = X_INTEL_ABI;
+ if (strcmp (argv[i], "-functionabi") == 0)
+ abi = X_FUNCTION_ABI;
+ if (strcmp (argv[i], "-earlyR6bc") == 0 && abi == X_INTEL_ABI)
+ abi = X_INTEL_ABI_BC;
+ if (strcmp (argv[i], "-arrayperabi") == 0)
+ abi = X_ARRAYPER_ABI;
+#ifdef ARRAYPERSTR
+ if (strcmp (argv[i], "-defaultabi") == 0)
+ abi = X_DEFAULT_ABI;
+#endif
+ if (strcmp (argv[i], "-solarisabinames") == 0)
+ solaris_abi_names = TRUE;
+ }
+ }
+
+ if (f == NULL) return 1;
+ while (fgets(buf, sizeof buf, f)) {
+ if (!buf[0] || buf[0] == '\n')
+ continue;
+ if (buf[0] == '!') {
+ if (tagline) continue;
+ tagline = DoComment (buf);
+ continue;
+ }
+ if (buf[(len = strlen (buf) - 1)] == '\n') buf[len] = '\0';
+ DoLine(buf);
+ }
+ for (phile = file; phile; phile = phile->next) {
+ if (abi != X_ARRAYPER_ABI) IndexEntries (phile, abi);
+ WriteHeader (tagline, phile, abi);
+ }
+ WriteSource(tagline, abi);
+ return 0;
+}
+
diff --git a/libXt/util/makestrs.man b/libXt/util/makestrs.man
index 3bb43559e..0bb1b0ad3 100644
--- a/libXt/util/makestrs.man
+++ b/libXt/util/makestrs.man
@@ -1,216 +1,216 @@
-.\" Copyright (c) 1993, 1994, 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
-.\" dealing in this Software without prior written authorization from The
-.\" Open Group.
-.\"
-.TH MAKESTRS 1 __xorgversion__
-.SH NAME
-makestrs \- makes string table C source and header(s)
-.SH SYNOPSIS
-.B makestrs [-f source] [-i includedir] [-abioptions ...]
-.SH DESCRIPTION
-The
-.I makestrs
-command creates string table C source files and headers.
-If
-.I -f
-.I source
-is not specified
-.I makestrs
-will read from
-.IR stdin .
-The C source file is always written to
-.IR stdout .
-.I makestrs
-creates one or more C header files as specified in the source file.
-The following options may be specified:
-.IR -sparcabi ,
-.IR -intelabi ,
-.IR -functionabi ,
-.IR -arrayperabi ,
-and
-.I -defaultabi.
-.LP
-.I -sparcabi
-is used on SPARC platforms conforming to the SPARC
-Compliance Definition, i.e. SVR4/Solaris.
-.LP
-.I -intelabi
-is used on Intel platforms conforming to the System
-V Application Binary Interface, i.e. SVR4.
-.LP
-.I -earlyR6abi
-may be used in addition to
-.I -intelabi
-for situations
-where the vendor wishes to maintain binary compatibility between
-X11R6 public-patch 11 (and earlier) and X11R6 public-patch 12 (and later).
-.LP
-.I -functionabi
-generates a functional abi to the string table. This
-mechanism imposes a severe performance penalty and it's recommended
-that you not use it.
-.LP
-.I -arrayperabi
-results in a separate array for each string. This is
-the default behavior if makestrs was compiled with -DARRAYPERSTR
-(it almost never is).
-.LP
-.I -defaultabi
-forces the generation of the "normal" string table even
-if makestrs was compiled with -DARRAYPERSTR. Since makestrs is almost
-never compiled with -DARRAYPERSTR this is the default behavior if
-no abioptions are specified.
-.LP
-.I -i includedir
-forces the reading of templates from the includedir instead of the local
-directory. This is useful to have separate source and build directories.
-.SH SYNTAX
-The syntax for string-list file is (items in square brackets are optional):
-.RS 4
-\&#prefix <text>
-.RE
-.RS 4
-\&#feature <text>
-.RE
-.RS 4
-\&#externref <text>
-.RE
-.RS 4
-\&#externdef [<text>]
-.RE
-.RS 4
-[#ctempl <text>]
-.RE
-.LP
-.RS 4
-\&#file <filename>
-.RE
-.RS 4
-\&#table <tablename>
-.RE
-.RS 4
-[#htempl]
-.RE
-.RS 4
-<text>
-.RE
-.RS 4
-\&...
-.RE
-.RS 4
-<text>
-.RE
-.RS 4
-[#table <tablename>
-.RE
-.RS 4
-<text>
-.RE
-.RS 4
-\&...
-.RE
-.RS 4
-<text>
-.RE
-.RS 4
-\& ...
-.RE
-.RS 4
-\&#table <tablename>
-.RE
-.RS 4
-\& ...]
-.RE
-.RS 4
-[#file <filename>
-.RE
-.RS 4
-\& ...]
-.RE
-.LP
-In words you may have one or more #file directives. Each #file may have
-one or more #table directives.
-.LP
-The #prefix directive determines the string that makestr will prefix
-to each definition.
-.LP
-The #feature directive determines the string that makestr will use
-for the feature-test macro, e.g. X[TM]STRINGDEFINES.
-.LP
-The #externref directive determines the string that makestr will use
-for the extern clause, typically this will be "extern" but Motif wants
-it to be "externalref"
-.LP
-The #externdef directive determines the string that makestr will use
-for the declaration, typically this will be the null string (note that
-makestrs requires a trailing space in this case, i.e. "#externdef "),
-and Motif will use "externaldef(_xmstrings).
-.LP
-The #ctmpl directive determines the name of the file used as a template
-for the C source file that is generated
-.LP
-Each #file <filename> directive will result in a corresponding header
-file by that name containing the appropriate definitions as specified
-by command line options. A single C source file containing the
-declarations for the definitions in all the headers will be printed
-to stdout.
-.LP
-The #htmpl directive determines the name of the file used as a template
-for the C header file that is generated.
-.LP
-Each #table <tablename> directive will be processed in accordance with
-the ABI. On most platforms all tables will be catenated into a single
-table with the name of the first table for that file. To conform to
-the Intel ABI separate tables will be generated with the names indicated.
-.LP
-The template files specified by the #ctmpl and #htmpl directives
-are processed by copying line for line from the template file to
-the appropriate output file. The line containing the string
-.I <<<STRING_TABLE_GOES_HERE>>>
-is not copied to the output file. The appropriate data is then
-copied to the output file and then the remainder of the template
-file is copied to the output file.
-.SH BUGS
-makestrs is not very forgiving of syntax errors. Sometimes you need
-a trailing space after # directives, other times they will mess you
-up. No warning messages are emitted.
-.SH SEE ALSO
-SPARC Compliance Definition 2.2., SPARC International Inc.,
-535 Middlefield Road, Suite 210, Menlo Park, CA 94025
-.LP
-System V Application Binary Interface, Third Edition,
-ISBN 0-13-100439-5
-UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
-NJ 07632
-.LP
-System V Application Binary Interface, Third Edition, Intel386
-Architecture Processor Supplement
-ISBN 0-13-104670-5
-UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
-NJ 07632
-.LP
-System V Application Binary Interface, Third Edition, SPARC
-Architecture Processor Supplement
-ISBN 0-13-104696-9
-UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
-NJ 07632
+.\" Copyright (c) 1993, 1994, 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
+.\" dealing in this Software without prior written authorization from The
+.\" Open Group.
+.\"
+.TH MAKESTRS 1 __xorgversion__
+.SH NAME
+makestrs \- makes string table C source and header(s)
+.SH SYNOPSIS
+.B makestrs [-f source] [-i includedir] [-abioptions ...]
+.SH DESCRIPTION
+The
+.I makestrs
+command creates string table C source files and headers.
+If
+.I -f
+.I source
+is not specified
+.I makestrs
+will read from
+.IR stdin .
+The C source file is always written to
+.IR stdout .
+.I makestrs
+creates one or more C header files as specified in the source file.
+The following options may be specified:
+.IR -sparcabi ,
+.IR -intelabi ,
+.IR -functionabi ,
+.IR -arrayperabi ,
+and
+.I -defaultabi.
+.LP
+.I -sparcabi
+is used on SPARC platforms conforming to the SPARC
+Compliance Definition, i.e. SVR4/Solaris.
+.LP
+.I -intelabi
+is used on Intel platforms conforming to the System
+V Application Binary Interface, i.e. SVR4.
+.LP
+.I -earlyR6abi
+may be used in addition to
+.I -intelabi
+for situations
+where the vendor wishes to maintain binary compatibility between
+X11R6 public-patch 11 (and earlier) and X11R6 public-patch 12 (and later).
+.LP
+.I -functionabi
+generates a functional abi to the string table. This
+mechanism imposes a severe performance penalty and it's recommended
+that you not use it.
+.LP
+.I -arrayperabi
+results in a separate array for each string. This is
+the default behavior if makestrs was compiled with -DARRAYPERSTR
+(it almost never is).
+.LP
+.I -defaultabi
+forces the generation of the "normal" string table even
+if makestrs was compiled with -DARRAYPERSTR. Since makestrs is almost
+never compiled with -DARRAYPERSTR this is the default behavior if
+no abioptions are specified.
+.LP
+.I -i includedir
+forces the reading of templates from the includedir instead of the local
+directory. This is useful to have separate source and build directories.
+.SH SYNTAX
+The syntax for string-list file is (items in square brackets are optional):
+.RS 4
+\&#prefix <text>
+.RE
+.RS 4
+\&#feature <text>
+.RE
+.RS 4
+\&#externref <text>
+.RE
+.RS 4
+\&#externdef [<text>]
+.RE
+.RS 4
+[#ctempl <text>]
+.RE
+.LP
+.RS 4
+\&#file <filename>
+.RE
+.RS 4
+\&#table <tablename>
+.RE
+.RS 4
+[#htempl]
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+\&...
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+[#table <tablename>
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+\&...
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+\& ...
+.RE
+.RS 4
+\&#table <tablename>
+.RE
+.RS 4
+\& ...]
+.RE
+.RS 4
+[#file <filename>
+.RE
+.RS 4
+\& ...]
+.RE
+.LP
+In words you may have one or more #file directives. Each #file may have
+one or more #table directives.
+.LP
+The #prefix directive determines the string that makestr will prefix
+to each definition.
+.LP
+The #feature directive determines the string that makestr will use
+for the feature-test macro, e.g. X[TM]STRINGDEFINES.
+.LP
+The #externref directive determines the string that makestr will use
+for the extern clause, typically this will be "extern" but Motif wants
+it to be "externalref"
+.LP
+The #externdef directive determines the string that makestr will use
+for the declaration, typically this will be the null string (note that
+makestrs requires a trailing space in this case, i.e. "#externdef "),
+and Motif will use "externaldef(_xmstrings).
+.LP
+The #ctmpl directive determines the name of the file used as a template
+for the C source file that is generated
+.LP
+Each #file <filename> directive will result in a corresponding header
+file by that name containing the appropriate definitions as specified
+by command line options. A single C source file containing the
+declarations for the definitions in all the headers will be printed
+to stdout.
+.LP
+The #htmpl directive determines the name of the file used as a template
+for the C header file that is generated.
+.LP
+Each #table <tablename> directive will be processed in accordance with
+the ABI. On most platforms all tables will be catenated into a single
+table with the name of the first table for that file. To conform to
+the Intel ABI separate tables will be generated with the names indicated.
+.LP
+The template files specified by the #ctmpl and #htmpl directives
+are processed by copying line for line from the template file to
+the appropriate output file. The line containing the string
+.I <<<STRING_TABLE_GOES_HERE>>>
+is not copied to the output file. The appropriate data is then
+copied to the output file and then the remainder of the template
+file is copied to the output file.
+.SH BUGS
+makestrs is not very forgiving of syntax errors. Sometimes you need
+a trailing space after # directives, other times they will mess you
+up. No warning messages are emitted.
+.SH SEE ALSO
+SPARC Compliance Definition 2.2., SPARC International Inc.,
+535 Middlefield Road, Suite 210, Menlo Park, CA 94025
+.LP
+System V Application Binary Interface, Third Edition,
+ISBN 0-13-100439-5
+UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
+NJ 07632
+.LP
+System V Application Binary Interface, Third Edition, Intel386
+Architecture Processor Supplement
+ISBN 0-13-104670-5
+UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
+NJ 07632
+.LP
+System V Application Binary Interface, Third Edition, SPARC
+Architecture Processor Supplement
+ISBN 0-13-104696-9
+UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
+NJ 07632
diff --git a/libXt/util/string.list b/libXt/util/string.list
index 1ebea29e7..5e8d8519f 100644
--- a/libXt/util/string.list
+++ b/libXt/util/string.list
@@ -1,398 +1,398 @@
-! NOTE: To maintain binary compatibility, you can only APPEND items within
-! a given list!!!!
-!
-! See the makestrs(1) manual.
-!
-
-#prefix Xt
-#feature XTSTRINGDEFINES
-#externref extern
-#externdef
-! note that the trailing space is required in the #externdef line.
-#ctmpl util/StrDefs.ct
-
-#file StringDefs.h
-#table XtStrings
-#htmpl util/StrDefs.ht
-
-Naccelerators
-NallowHoriz
-NallowVert
-NancestorSensitive
-Nbackground
-NbackgroundPixmap
-Nbitmap
-NborderColor
-Nborder borderColor
-NborderPixmap
-NborderWidth
-Ncallback
-Nchildren
-Ncolormap
-Ndepth
-NdestroyCallback
-NeditType
-Nfile
-Nfont
-NforceBars
-Nforeground
-Nfunction
-Nheight
-Nhighlight
-NhSpace
-Nindex
-NinitialResourcesPersistent
-NinnerHeight
-NinnerWidth
-NinnerWindow
-NinsertPosition
-NinternalHeight
-NinternalWidth
-NjumpProc
-Njustify
-NknobHeight
-NknobIndent
-NknobPixel
-NknobWidth
-Nlabel
-Nlength
-NlowerRight
-NmappedWhenManaged
-NmenuEntry
-Nname
-Nnotify
-NnumChildren
-Norientation
-Nparameter
-Npixmap
-NpopupCallback
-NpopdownCallback
-Nresize
-NreverseVideo
-Nscreen
-NscrollProc
-NscrollDCursor
-NscrollHCursor
-NscrollLCursor
-NscrollRCursor
-NscrollUCursor
-NscrollVCursor
-Nselection
-NselectionArray
-Nsensitive
-Nshown
-Nspace
-Nstring
-NtextOptions
-NtextSink
-NtextSource
-Nthickness
-Nthumb
-NthumbProc
-Ntop
-Ntranslations
-NunrealizeCallback
-Nupdate
-NuseBottom
-NuseRight
-Nvalue
-NvSpace
-Nwidth
-Nwindow
-Nx
-Ny
-CAccelerators
-CBackground
-CBitmap
-CBoolean
-CBorderColor
-CBorderWidth
-CCallback
-CColormap
-CColor
-CCursor
-CDepth
-CEditType
-CEventBindings
-CFile
-CFont
-CForeground
-CFraction
-CFunction
-CHeight
-CHSpace
-CIndex
-CInitialResourcesPersistent
-CInsertPosition
-CInterval
-CJustify
-CKnobIndent
-CKnobPixel
-CLabel
-CLength
-CMappedWhenManaged
-CMargin
-CMenuEntry
-CNotify
-COrientation
-CParameter
-CPixmap
-CPosition
-CReadOnly
-CResize
-CReverseVideo
-CScreen
-CScrollProc
-CScrollDCursor
-CScrollHCursor
-CScrollLCursor
-CScrollRCursor
-CScrollUCursor
-CScrollVCursor
-CSelection
-CSensitive
-CSelectionArray
-CSpace
-CString
-CTextOptions
-CTextPosition
-CTextSink
-CTextSource
-CThickness
-CThumb
-CTranslations
-CValue
-CVSpace
-CWidth
-CWindow
-CX
-CY
-RAcceleratorTable
-RAtom
-RBitmap
-RBool
-RBoolean
-RCallback
-RCallProc
-RCardinal
-RColor
-RColormap
-RCursor
-RDimension
-RDisplay
-REditMode
-REnum
-RFile
-RFloat
-RFont
-RFontStruct
-RFunction
-RGeometry
-RImmediate
-RInitialState
-RInt
-RJustify
-RLongBoolean Bool
-RObject
-ROrientation
-RPixel
-RPixmap
-RPointer
-RPosition
-RScreen
-RShort
-RString
-RStringArray
-RStringTable
-RUnsignedChar
-RTranslationTable
-RVisual
-RWidget
-RWidgetClass
-RWidgetList
-RWindow
-Eoff
-Efalse
-Eno
-Eon
-Etrue
-Eyes
-Evertical
-Ehorizontal
-EtextRead read
-EtextAppend append
-EtextEdit edit
-Extdefaultbackground
-Extdefaultforeground
-Extdefaultfont
-NfontSet
-RFontSet
-CFontSet
-
-#table XtStringsR6
-
-RGravity
-NcreateHook
-NchangeHook
-NconfigureHook
-NgeometryHook
-NdestroyHook
-Nshells
-NnumShells
-RCommandArgArray
-RDirectoryString
-REnvironmentArray
-RRestartStyle
-RSmcConn
-Hcreate
-HsetValues
-HmanageChildren
-HunmanageChildren
-HmanageSet
-HunmanageSet
-HrealizeWidget
-HunrealizeWidget
-HaddCallback
-HaddCallbacks
-HremoveCallback
-HremoveCallbacks
-HremoveAllCallbacks
-HaugmentTranslations
-HoverrideTranslations
-HuninstallTranslations
-HsetKeyboardFocus
-HsetWMColormapWindows
-HsetMappedWhenManaged
-HmapWidget
-HunmapWidget
-Hpopup
-HpopupSpringLoaded
-Hpopdown
-Hconfigure
-HpreGeometry
-HpostGeometry
-Hdestroy
-
-#file Shell.h
-#table XtShellStrings
-#htmpl util/Shell.ht
-
-NiconName
-CIconName
-NiconPixmap
-CIconPixmap
-NiconWindow
-CIconWindow
-NiconMask
-CIconMask
-NwindowGroup
-CWindowGroup
-Nvisual
-CVisual
-NtitleEncoding
-CTitleEncoding
-NsaveUnder
-CSaveUnder
-Ntransient
-CTransient
-NoverrideRedirect
-COverrideRedirect
-NtransientFor
-CTransientFor
-NiconNameEncoding
-CIconNameEncoding
-NallowShellResize
-CAllowShellResize
-NcreatePopupChildProc
-CCreatePopupChildProc
-Ntitle
-CTitle
-RAtom
-Nargc
-CArgc
-Nargv
-CArgv
-NiconX
-CIconX
-NiconY
-CIconY
-Ninput
-CInput
-Niconic
-CIconic
-NinitialState
-CInitialState
-Ngeometry
-CGeometry
-NbaseWidth
-CBaseWidth
-NbaseHeight
-CBaseHeight
-NwinGravity
-CWinGravity
-NminWidth
-CMinWidth
-NminHeight
-CMinHeight
-NmaxWidth
-CMaxWidth
-NmaxHeight
-CMaxHeight
-NwidthInc
-CWidthInc
-NheightInc
-CHeightInc
-NminAspectY
-CMinAspectY
-NmaxAspectY
-CMaxAspectY
-NminAspectX
-CMinAspectX
-NmaxAspectX
-CMaxAspectX
-NwmTimeout
-CWmTimeout
-NwaitForWm waitforwm
-CWaitForWm Waitforwm
-
-#table XtShellStringsR6
-
-Nwaitforwm
-CWaitforwm
-NclientLeader
-CClientLeader
-NwindowRole
-CWindowRole
-Nurgency
-CUrgency
-NcancelCallback
-NcloneCommand
-CCloneCommand
-Nconnection
-CConnection
-NcurrentDirectory
-CCurrentDirectory
-NdieCallback
-NdiscardCommand
-CDiscardCommand
-Nenvironment
-CEnvironment
-NinteractCallback
-NjoinSession
-CJoinSession
-NprogramPath
-CProgramPath
-NresignCommand
-CResignCommand
-NrestartCommand
-CRestartCommand
-NrestartStyle
-CRestartStyle
-NsaveCallback
-NsaveCompleteCallback
-NsessionID
-CSessionID
-NshutdownCommand
-CShutdownCommand
-NerrorCallback
-
+! NOTE: To maintain binary compatibility, you can only APPEND items within
+! a given list!!!!
+!
+! See the makestrs(1) manual.
+!
+
+#prefix Xt
+#feature XTSTRINGDEFINES
+#externref extern
+#externdef
+! note that the trailing space is required in the #externdef line.
+#ctmpl util/StrDefs.ct
+
+#file StringDefs.h
+#table XtStrings
+#htmpl util/StrDefs.ht
+
+Naccelerators
+NallowHoriz
+NallowVert
+NancestorSensitive
+Nbackground
+NbackgroundPixmap
+Nbitmap
+NborderColor
+Nborder borderColor
+NborderPixmap
+NborderWidth
+Ncallback
+Nchildren
+Ncolormap
+Ndepth
+NdestroyCallback
+NeditType
+Nfile
+Nfont
+NforceBars
+Nforeground
+Nfunction
+Nheight
+Nhighlight
+NhSpace
+Nindex
+NinitialResourcesPersistent
+NinnerHeight
+NinnerWidth
+NinnerWindow
+NinsertPosition
+NinternalHeight
+NinternalWidth
+NjumpProc
+Njustify
+NknobHeight
+NknobIndent
+NknobPixel
+NknobWidth
+Nlabel
+Nlength
+NlowerRight
+NmappedWhenManaged
+NmenuEntry
+Nname
+Nnotify
+NnumChildren
+Norientation
+Nparameter
+Npixmap
+NpopupCallback
+NpopdownCallback
+Nresize
+NreverseVideo
+Nscreen
+NscrollProc
+NscrollDCursor
+NscrollHCursor
+NscrollLCursor
+NscrollRCursor
+NscrollUCursor
+NscrollVCursor
+Nselection
+NselectionArray
+Nsensitive
+Nshown
+Nspace
+Nstring
+NtextOptions
+NtextSink
+NtextSource
+Nthickness
+Nthumb
+NthumbProc
+Ntop
+Ntranslations
+NunrealizeCallback
+Nupdate
+NuseBottom
+NuseRight
+Nvalue
+NvSpace
+Nwidth
+Nwindow
+Nx
+Ny
+CAccelerators
+CBackground
+CBitmap
+CBoolean
+CBorderColor
+CBorderWidth
+CCallback
+CColormap
+CColor
+CCursor
+CDepth
+CEditType
+CEventBindings
+CFile
+CFont
+CForeground
+CFraction
+CFunction
+CHeight
+CHSpace
+CIndex
+CInitialResourcesPersistent
+CInsertPosition
+CInterval
+CJustify
+CKnobIndent
+CKnobPixel
+CLabel
+CLength
+CMappedWhenManaged
+CMargin
+CMenuEntry
+CNotify
+COrientation
+CParameter
+CPixmap
+CPosition
+CReadOnly
+CResize
+CReverseVideo
+CScreen
+CScrollProc
+CScrollDCursor
+CScrollHCursor
+CScrollLCursor
+CScrollRCursor
+CScrollUCursor
+CScrollVCursor
+CSelection
+CSensitive
+CSelectionArray
+CSpace
+CString
+CTextOptions
+CTextPosition
+CTextSink
+CTextSource
+CThickness
+CThumb
+CTranslations
+CValue
+CVSpace
+CWidth
+CWindow
+CX
+CY
+RAcceleratorTable
+RAtom
+RBitmap
+RBool
+RBoolean
+RCallback
+RCallProc
+RCardinal
+RColor
+RColormap
+RCursor
+RDimension
+RDisplay
+REditMode
+REnum
+RFile
+RFloat
+RFont
+RFontStruct
+RFunction
+RGeometry
+RImmediate
+RInitialState
+RInt
+RJustify
+RLongBoolean Bool
+RObject
+ROrientation
+RPixel
+RPixmap
+RPointer
+RPosition
+RScreen
+RShort
+RString
+RStringArray
+RStringTable
+RUnsignedChar
+RTranslationTable
+RVisual
+RWidget
+RWidgetClass
+RWidgetList
+RWindow
+Eoff
+Efalse
+Eno
+Eon
+Etrue
+Eyes
+Evertical
+Ehorizontal
+EtextRead read
+EtextAppend append
+EtextEdit edit
+Extdefaultbackground
+Extdefaultforeground
+Extdefaultfont
+NfontSet
+RFontSet
+CFontSet
+
+#table XtStringsR6
+
+RGravity
+NcreateHook
+NchangeHook
+NconfigureHook
+NgeometryHook
+NdestroyHook
+Nshells
+NnumShells
+RCommandArgArray
+RDirectoryString
+REnvironmentArray
+RRestartStyle
+RSmcConn
+Hcreate
+HsetValues
+HmanageChildren
+HunmanageChildren
+HmanageSet
+HunmanageSet
+HrealizeWidget
+HunrealizeWidget
+HaddCallback
+HaddCallbacks
+HremoveCallback
+HremoveCallbacks
+HremoveAllCallbacks
+HaugmentTranslations
+HoverrideTranslations
+HuninstallTranslations
+HsetKeyboardFocus
+HsetWMColormapWindows
+HsetMappedWhenManaged
+HmapWidget
+HunmapWidget
+Hpopup
+HpopupSpringLoaded
+Hpopdown
+Hconfigure
+HpreGeometry
+HpostGeometry
+Hdestroy
+
+#file Shell.h
+#table XtShellStrings
+#htmpl util/Shell.ht
+
+NiconName
+CIconName
+NiconPixmap
+CIconPixmap
+NiconWindow
+CIconWindow
+NiconMask
+CIconMask
+NwindowGroup
+CWindowGroup
+Nvisual
+CVisual
+NtitleEncoding
+CTitleEncoding
+NsaveUnder
+CSaveUnder
+Ntransient
+CTransient
+NoverrideRedirect
+COverrideRedirect
+NtransientFor
+CTransientFor
+NiconNameEncoding
+CIconNameEncoding
+NallowShellResize
+CAllowShellResize
+NcreatePopupChildProc
+CCreatePopupChildProc
+Ntitle
+CTitle
+RAtom
+Nargc
+CArgc
+Nargv
+CArgv
+NiconX
+CIconX
+NiconY
+CIconY
+Ninput
+CInput
+Niconic
+CIconic
+NinitialState
+CInitialState
+Ngeometry
+CGeometry
+NbaseWidth
+CBaseWidth
+NbaseHeight
+CBaseHeight
+NwinGravity
+CWinGravity
+NminWidth
+CMinWidth
+NminHeight
+CMinHeight
+NmaxWidth
+CMaxWidth
+NmaxHeight
+CMaxHeight
+NwidthInc
+CWidthInc
+NheightInc
+CHeightInc
+NminAspectY
+CMinAspectY
+NmaxAspectY
+CMaxAspectY
+NminAspectX
+CMinAspectX
+NmaxAspectX
+CMaxAspectX
+NwmTimeout
+CWmTimeout
+NwaitForWm waitforwm
+CWaitForWm Waitforwm
+
+#table XtShellStringsR6
+
+Nwaitforwm
+CWaitforwm
+NclientLeader
+CClientLeader
+NwindowRole
+CWindowRole
+Nurgency
+CUrgency
+NcancelCallback
+NcloneCommand
+CCloneCommand
+Nconnection
+CConnection
+NcurrentDirectory
+CCurrentDirectory
+NdieCallback
+NdiscardCommand
+CDiscardCommand
+Nenvironment
+CEnvironment
+NinteractCallback
+NjoinSession
+CJoinSession
+NprogramPath
+CProgramPath
+NresignCommand
+CResignCommand
+NrestartCommand
+CRestartCommand
+NrestartStyle
+CRestartStyle
+NsaveCallback
+NsaveCompleteCallback
+NsessionID
+CSessionID
+NshutdownCommand
+CShutdownCommand
+NerrorCallback
+