diff options
Diffstat (limited to 'libXt/util')
-rw-r--r-- | libXt/util/Makefile.am | 62 | ||||
-rw-r--r-- | libXt/util/Shell.ht | 192 | ||||
-rw-r--r-- | libXt/util/StrDefs.ct | 102 | ||||
-rw-r--r-- | libXt/util/StrDefs.ht | 122 | ||||
-rw-r--r-- | libXt/util/makestrs.c | 1492 | ||||
-rw-r--r-- | libXt/util/makestrs.man | 432 | ||||
-rw-r--r-- | libXt/util/string.list | 796 |
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 + |