summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:52 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:52 +0000
commit541fcb6c9e1bbf65885b1c2c2e27609544fe62d6 (patch)
treea7803e550b145f04cc2f8434a53ee91d7d85e0c6
R6.6 is the Xorg base-lineXORG-MAINXORG-STABLE
-rw-r--r--appres.c175
-rw-r--r--appres.man89
2 files changed, 264 insertions, 0 deletions
diff --git a/appres.c b/appres.c
new file mode 100644
index 0000000..b2fc9e3
--- /dev/null
+++ b/appres.c
@@ -0,0 +1,175 @@
+/*
+ * $Xorg: appres.c,v 1.4 2001/02/09 02:05:27 xorgcvs Exp $
+ *
+ *
+Copyright 1989, 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.
+ * *
+ * Author: Jim Fulton, MIT X Consortium
+ */
+
+#include <X11/Intrinsic.h>
+#include <stdio.h>
+
+#define NONAME "-AppResTest-"
+
+char *ProgramName;
+
+XrmQuark XrmQString;
+
+static void usage ()
+{
+ fprintf (stderr,
+ "usage: %s [class [instance]] [-1] [toolkitoptions]\n",
+ ProgramName);
+ fprintf (stderr,
+ "-1 list resources only at the specified level\n");
+ fprintf (stderr,
+ "The number of class and instance elements must be equal.\n");
+ exit (1);
+}
+
+/* stolen from Xlib Xrm.c */
+static void PrintBindingQuarkList(bindings, quarks, stream)
+ XrmBindingList bindings;
+ XrmQuarkList quarks;
+ FILE *stream;
+{
+ Bool firstNameSeen;
+
+ for (firstNameSeen = False; *quarks; bindings++, quarks++) {
+ if (*bindings == XrmBindLoosely) {
+ (void) fprintf(stream, "*");
+ } else if (firstNameSeen) {
+ (void) fprintf(stream, ".");
+ }
+ firstNameSeen = True;
+ (void) fputs(XrmQuarkToString(*quarks), stream);
+ }
+}
+
+/* stolen from Xlib Xrm.c */
+/* output out the entry in correct file syntax */
+/*ARGSUSED*/
+static Bool DumpEntry(db, bindings, quarks, type, value, data)
+ XrmDatabase *db;
+ XrmBindingList bindings;
+ XrmQuarkList quarks;
+ XrmRepresentation *type;
+ XrmValuePtr value;
+ XPointer data;
+{
+ FILE *stream = (FILE *)data;
+ register unsigned int i;
+ register char *s;
+ register char c;
+
+ if (*type != XrmQString)
+ (void) putc('!', stream);
+ PrintBindingQuarkList(bindings, quarks, stream);
+ s = value->addr;
+ i = value->size;
+ if (*type == XrmQString) {
+ (void) fputs(":\t", stream);
+ if (i)
+ i--;
+ }
+ else
+ fprintf(stream, "=%s:\t", XrmRepresentationToString(*type));
+ if (i && (*s == ' ' || *s == '\t'))
+ (void) putc('\\', stream); /* preserve leading whitespace */
+ while (i--) {
+ c = *s++;
+ if (c == '\n') {
+ if (i)
+ (void) fputs("\\n\\\n", stream);
+ else
+ (void) fputs("\\n", stream);
+ } else if (c == '\\')
+ (void) fputs("\\\\", stream);
+ else if ((c < ' ' && c != '\t') ||
+ ((unsigned char)c >= 0x7f && (unsigned char)c < 0xa0))
+ (void) fprintf(stream, "\\%03o", (unsigned char)c);
+ else
+ (void) putc(c, stream);
+ }
+ (void) putc('\n', stream);
+ return False;
+}
+
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ Widget toplevel;
+ char *iname = NONAME, *cname = NONAME;
+ XtAppContext xtcontext;
+ XrmName names[101];
+ XrmClass classes[101];
+ int i;
+ int mode = XrmEnumAllLevels;
+
+ ProgramName = argv[0];
+ if (argc > 1 && argv[1][0] != '-') {
+ cname = argv[1];
+ if (argc > 2 && argv[2][0] != '-')
+ iname = argv[2];
+ }
+
+ XrmStringToClassList(cname, classes);
+ XrmStringToNameList(iname, names);
+ for (i = 0; names[i]; i++)
+ ;
+ if (!i || classes[i] || !classes[i-1]) usage ();
+ argv[0] = XrmNameToString(names[0]);
+
+ toplevel = XtAppInitialize(&xtcontext, XrmClassToString(classes[0]),
+ NULL, 0, &argc, argv, NULL, NULL, 0);
+
+ iname = NULL;
+ cname = NULL;
+ for (i = 1; i < argc; i++) {
+ if (!strcmp(argv[i], "-1"))
+ mode = XrmEnumOneLevel;
+ else if (argv[i][0] == '-')
+ usage();
+ else if (!cname)
+ cname = argv[i];
+ else if (!iname)
+ iname = argv[i];
+ else
+ usage();
+ }
+
+ if (!iname) {
+ XtGetApplicationNameAndClass(XtDisplay(toplevel), &iname, &cname);
+ names[0] = XrmStringToName(iname);
+ }
+
+ XrmQString = XrmPermStringToQuark("String");
+
+ XrmEnumerateDatabase(XtDatabase(XtDisplay(toplevel)),
+ names, classes, mode,
+ DumpEntry, (XPointer)stdout);
+
+ exit (0);
+}
diff --git a/appres.man b/appres.man
new file mode 100644
index 0000000..8a59e78
--- /dev/null
+++ b/appres.man
@@ -0,0 +1,89 @@
+.\" $Xorg: appres.man,v 1.4 2001/02/09 02:05:27 xorgcvs Exp $
+.\" Copyright 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 dealings in this Software without prior written authorization
+.\" from The Open Group.
+.TH APPRES 1 "Release 6.4" "X Version 11"
+.SH NAME
+appres \- list X application resource database
+.SH SYNOPSIS
+.B "appres"
+[[class [instance]] [\-1] [toolkitoptions]
+.SH DESCRIPTION
+.PP
+The \fIappres\fP program prints the resources seen by an application
+(or subhierarchy of an application) with the specified \fIclass\fP and
+\fIinstance\fP names. It can be used to determine which
+resources a particular program will load. For example,
+.sp 1
+.in +.5i
+.nf
+% appres XTerm
+.fi
+.in -.5i
+.sp 1
+will list the resources that any \fIxterm\fP program will load.
+If no application class is specified, the class \fI-AppResTest-\fP is used.
+.PP
+To match a particular instance name, specify an instance name
+explicitly after the class name, or use the normal Xt toolkit option.
+For example,
+.sp 1
+.in +.5i
+.nf
+% appres XTerm myxterm
+.fi
+.in -.5i
+or
+.in +.5i
+.nf
+% appres XTerm \-name myxterm
+.fi
+.in -.5i
+.PP
+To list resources that match a subhierarchy of an application, specify
+hierarchical class and instance names. The number of class and instance
+components must be equal, and the instance name should not be
+specified with a toolkit option. For example,
+.sp 1
+.in +.5i
+.nf
+% appres Xman.TopLevelShell.Form xman.topBox.form
+.fi
+.in -.5i
+.sp 1
+will list the resources of widgets of \fIxman\fP topBox hierarchy.
+To list just the resources matching a specific level in the hierarcy,
+use the \-1 option. For example,
+.sp 1
+.in +.5i
+.nf
+% appres XTerm.VT100 xterm.vt100 \-1
+.fi
+.in -.5i
+.sp 1
+will list the resources matching the \fIxterm\fP vt100 widget.
+.SH "SEE ALSO"
+.PP
+X(1), xrdb(1), listres(1)
+.SH AUTHOR
+Jim Fulton, MIT X Consortium