diff options
author | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 16:49:22 +0000 |
---|---|---|
committer | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 16:49:22 +0000 |
commit | 83f8ee18a050cbad1a2d3770bc8c2ad0f89c3837 (patch) | |
tree | 3d12817ce4d194f37e02e7ccc00334d335841e13 /xfsinfo.c |
Initial revisionXORG-RELEASE-1-BASEXEVIE-MERGEXEVIE-BASEXORG-STABLE
Diffstat (limited to 'xfsinfo.c')
-rw-r--r-- | xfsinfo.c | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/xfsinfo.c b/xfsinfo.c new file mode 100644 index 0000000..14d2307 --- /dev/null +++ b/xfsinfo.c @@ -0,0 +1,177 @@ +/* + * xfsinfo -- report info about a font server + */ + +/* $TOG: fsinfo.c /main/7 1998/02/09 13:43:08 kaleb $ */ +/* + +Portions Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + +*/ +/* $XFree86: xc/programs/xfsinfo/xfsinfo.c,v 1.4 2001/12/14 20:01:42 dawes Exp $ */ + +/* + * Copyright 1990 Network Computing Devices; + * Portions Copyright 1987 by Digital Equipment Corporation + * + * 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, and that the names of Network Computing Devices + * or Digital not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. Network Computing Devices and Digital + * make no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR 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. + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <X11/Xos.h> +#include <X11/fonts/FSlib.h> + +static void print_server_info(FSServer *svr); +static void print_catalogue_info(FSServer *svr); +static void print_extension_info(FSServer *svr); +static void print_alternate_info(FSServer *svr); + +char *progname; + +static void +usage(void) +{ + fprintf(stderr, "usage: %s [-server server_name]\n", progname); + exit(-1); +} + +int +main(int argc, char *argv[]) +{ + FSServer *svr; + char *servername = NULL; + int i; + + progname = argv[0]; + + for (i = 1; i < argc; i++) { + if (strncmp(argv[i], "-s", 2) == 0) { + if (++i > argc) + usage(); + servername = argv[i]; + } else { + usage(); + } + } + + svr = FSOpenServer(servername); + + if (!svr) { + if (FSServerName(servername) == NULL) { + fprintf(stderr, "%s: no font server defined\n", progname); + exit(1); + } + fprintf(stderr, "%s: unable to open server \"%s\"\n", + progname, FSServerName(servername)); + exit(1); + } + print_server_info(svr); + FSCloseServer(svr); + exit(0); +} + +static void +print_server_info(FSServer *svr) +{ + printf("name of server: %s\n", FSServerString(svr)); + printf("version number: %d\n", FSProtocolVersion(svr)); + printf("vendor string: %s\n", FSServerVendor(svr)); + printf("vendor release number: %d\n", FSVendorRelease(svr)); + printf("maximum request size: %ld longwords (%ld bytes)\n", + FSMaxRequestSize(svr), FSMaxRequestSize(svr) * sizeof(long)); + print_catalogue_info(svr); + print_alternate_info(svr); + print_extension_info(svr); +} + +static void +print_catalogue_info(FSServer *svr) +{ + int n = 0; + char **cats = FSListCatalogues(svr, "*", 1000, &n); + + printf("number of catalogues: %d\n", n); + if (cats) { + int i; + + for (i = 0; i < n; i++) { + printf(" %s\n", cats[i]); + } + } +} + +static void +print_extension_info(FSServer *svr) +{ + int n = 0; + char **extlist = FSListExtensions(svr, &n); + + printf("number of extensions: %d\n", n); + if (extlist) { + int i; + + for (i = 0; i < n; i++) { + printf(" %s\n", extlist[i]); + } + } +} + +static void +print_alternate_info(FSServer *svr) +{ + AlternateServer *alts; + int i, + num; + + num = FSNumAlternateServers(svr); + printf("Number of alternate servers: %d\n", num); + if (num) { + alts = FSAlternateServers(svr); + for (i = 0; i < num; i++) { + printf(" #%1d\t%s%s\n", i, alts[i].name, + (alts[i].subset) ? "(subset)" : ""); + } + } +} |