From dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0 Mon Sep 17 00:00:00 2001 From: marha Date: Mon, 12 Sep 2011 11:27:51 +0200 Subject: Synchronised line endinge with release branch --- libXt/util/Makefile.am | 62 +- libXt/util/Shell.ht | 192 +++--- libXt/util/StrDefs.ct | 102 ++-- libXt/util/StrDefs.ht | 122 ++-- libXt/util/makestrs.c | 1492 +++++++++++++++++++++++------------------------ libXt/util/makestrs.man | 432 +++++++------- libXt/util/string.list | 796 ++++++++++++------------- 7 files changed, 1599 insertions(+), 1599 deletions(-) (limited to 'libXt/util') 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 -#endif -#include - -/*********************************************************************** - * - * Shell Widget - * - ***********************************************************************/ -/* - * Shell-specific resources names, classes, and a representation type. - */ - -#ifndef XTSTRINGDEFINES -#define _XtShell_h_Const const -#endif - -<<>> - -#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 +#endif +#include + +/*********************************************************************** + * + * Shell Widget + * + ***********************************************************************/ +/* + * Shell-specific resources names, classes, and a representation type. + */ + +#ifndef XTSTRINGDEFINES +#define _XtShell_h_Const const +#endif + +<<>> + +#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 - -<<>> - +/*********************************************************** + +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 + +<<>> + 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 - -<<>> - -#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 + +<<>> + +#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 -#include -#include -#include - -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 "<<>>" - -/* 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 +#include +#include +#include + +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 "<<>>" + +/* 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 -.RE -.RS 4 -\&#feature -.RE -.RS 4 -\&#externref -.RE -.RS 4 -\&#externdef [] -.RE -.RS 4 -[#ctempl ] -.RE -.LP -.RS 4 -\&#file -.RE -.RS 4 -\&#table -.RE -.RS 4 -[#htempl] -.RE -.RS 4 - -.RE -.RS 4 -\&... -.RE -.RS 4 - -.RE -.RS 4 -[#table -.RE -.RS 4 - -.RE -.RS 4 -\&... -.RE -.RS 4 - -.RE -.RS 4 -\& ... -.RE -.RS 4 -\&#table -.RE -.RS 4 -\& ...] -.RE -.RS 4 -[#file -.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 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 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 <<>> -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 +.RE +.RS 4 +\&#feature +.RE +.RS 4 +\&#externref +.RE +.RS 4 +\&#externdef [] +.RE +.RS 4 +[#ctempl ] +.RE +.LP +.RS 4 +\&#file +.RE +.RS 4 +\&#table +.RE +.RS 4 +[#htempl] +.RE +.RS 4 + +.RE +.RS 4 +\&... +.RE +.RS 4 + +.RE +.RS 4 +[#table +.RE +.RS 4 + +.RE +.RS 4 +\&... +.RE +.RS 4 + +.RE +.RS 4 +\& ... +.RE +.RS 4 +\&#table +.RE +.RS 4 +\& ...] +.RE +.RS 4 +[#file +.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 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 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 <<>> +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 + -- cgit v1.2.3