From 2af3aabf0e7eb1514d39b29a6b58fcd0d4de41d1 Mon Sep 17 00:00:00 2001 From: Kaleb Keithley Date: Fri, 14 Nov 2003 15:54:54 +0000 Subject: R6.6 is the Xorg base-line --- listing.c | 500 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 500 insertions(+) create mode 100644 listing.c (limited to 'listing.c') diff --git a/listing.c b/listing.c new file mode 100644 index 0000000..c87e178 --- /dev/null +++ b/listing.c @@ -0,0 +1,500 @@ +/* $Xorg: listing.c,v 1.5 2001/02/09 02:05:49 xorgcvs Exp $ */ +/************************************************************ + Copyright 1996 by Silicon Graphics Computer Systems, Inc. + + 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 Silicon Graphics not be + used in advertising or publicity pertaining to distribution + of the software without specific prior written permission. + Silicon Graphics makes no representation about the suitability + of this software for any purpose. It is provided "as is" + without any express or implied warranty. + + SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + GRAPHICS 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. + + ********************************************************/ +/*********************************************************** + +Copyright 1988, 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 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. + +******************************************************************/ + + +#include +#include +#include +#include +#include + +#if defined(sgi) +#include +#endif + +#define DEBUG_VAR_NOT_LOCAL +#define DEBUG_VAR listingDebug +#include "xkbcomp.h" +#ifndef X_NOT_STDC_ENV +#include +#endif +#ifndef X_NOT_POSIX +#ifdef _POSIX_SOURCE +#include +#else +#define _POSIX_SOURCE +#include +#undef _POSIX_SOURCE +#endif +#endif +#ifndef PATH_MAX +#ifdef WIN32 +#define PATH_MAX 512 +#else +#include +#endif +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else +#define PATH_MAX 1024 +#endif +#endif +#endif + +#ifdef WIN32 +#define BOOL wBOOL +#include +#undef BOOL +#define FileName(file) file.cFileName +#else +#define FileName(file) file->d_name +#ifndef X_NOT_POSIX +#include +#else +#ifdef SYSV +#include +#else +#ifdef USG +#include +#else +#include +#ifndef dirent +#define dirent direct +#endif +#endif +#endif +#endif +#endif + +#include "xkbpath.h" +#include "parseutils.h" +#include "misc.h" +#include "tokens.h" +#include + +#define lowbit(x) ((x) & (-(x))) + +static int szListing= 0; +static int nListed= 0; +static int nFilesListed= 0; + +typedef struct _Listing { + char * file; + char * map; +} Listing; + +static int szMapOnly; +static int nMapOnly; +static char ** mapOnly; + +static Listing * list= NULL; + +/***====================================================================***/ + +int +#if NeedFunctionPrototypes +AddMapOnly(char *map) +#else +AddMapOnly(map) + char *map; +#endif +{ + if (nMapOnly>=szMapOnly) { + if (szMapOnly<1) szMapOnly= 5; + else szMapOnly*= 2; + mapOnly= uTypedRealloc(list,szMapOnly,char *); + if (!mapOnly) { + WSGO("Couldn't allocate list of maps\n"); + return 0; + } + } + mapOnly[nMapOnly++]= map; + return 1; +} + +int +#if NeedFunctionPrototypes +AddListing(char *file,char *map) +#else +AddListing(file,map) + char *file; + char *map; +#endif +{ + if (nListed>=szListing) { + if (szListing<1) szListing= 10; + else szListing*= 2; + list= uTypedRealloc(list,szListing,Listing); + if (!list) { + WSGO("Couldn't allocate list of files and maps\n"); + ACTION("Exiting\n"); + exit(1); + } + } + + list[nListed].file= file; + list[nListed].map= map; + nListed++; + if (file!=NULL) + nFilesListed++; + return 1; +} + +/***====================================================================***/ + +static void +#if NeedFunctionPrototypes +ListFile(FILE *outFile,char *fileName,XkbFile *map) +#else +ListFile(outFile,fileName,map) +FILE * outFile; +char * fileName; +XkbFile * map; +#endif +{ +register unsigned flags; +char * mapName; + + flags= map->flags; + if ((flags&XkbLC_Hidden)&&(!(verboseLevel&WantHiddenMaps))) + return; + if ((flags&XkbLC_Partial)&&(!(verboseLevel&WantPartialMaps))) + return; + if (verboseLevel&WantLongListing) { + fprintf(outFile,(flags&XkbLC_Hidden)?"h":"-"); + fprintf(outFile,(flags&XkbLC_Default)?"d":"-"); + fprintf(outFile,(flags&XkbLC_Partial)?"p":"-"); + fprintf(outFile,"----- "); + if (map->type==XkmSymbolsIndex) { + fprintf(outFile,(flags&XkbLC_AlphanumericKeys)?"a":"-"); + fprintf(outFile,(flags&XkbLC_ModifierKeys)?"m":"-"); + fprintf(outFile,(flags&XkbLC_KeypadKeys)?"k":"-"); + fprintf(outFile,(flags&XkbLC_FunctionKeys)?"f":"-"); + fprintf(outFile,(flags&XkbLC_AlternateGroup)?"g":"-"); + fprintf(outFile,"--- "); + } + else fprintf(outFile,"-------- "); + } + mapName= map->name; + if ((!(verboseLevel&WantFullNames))&&((flags&XkbLC_Default)!=0)) + mapName= NULL; + if (dirsToStrip>0) { + char *tmp,*last; + int i; + for (i=0,tmp=last=fileName;(i9) + fprintf(stderr,"should list:\n"); +#endif + for (i=0;i9) { + fprintf(stderr,"%s(%s)\n",(list[i].file?list[i].file:"*"), + (list[i].map?list[i].map:"*")); + } +#endif + oldWarningLevel= warningLevel; + warningLevel= 0; + if (list[i].file) { + struct stat sbuf; + + if (stat(list[i].file,&sbuf)<0) { + if (oldWarningLevel>5) + WARN1("Couldn't open \"%s\"\n",list[i].file); + continue; + } + if (S_ISDIR(sbuf.st_mode)) { + if (verboseLevel&ListRecursive) + AddDirectory(list[i].file,NULL,NULL,NULL); + continue; + } + + inputFile= fopen(list[i].file,"r"); + if (!inputFile) { + if (oldWarningLevel>5) + WARN1("Couldn't open \"%s\"\n",list[i].file); + continue; + } + if (XKBParseFile(inputFile,&rtrn)&&(rtrn!=NULL)) { + mapName= list[i].map; + mapToUse= rtrn; + for (;mapToUse;mapToUse= (XkbFile *)mapToUse->common.next) { + if (!MapMatches(mapToUse->name,mapName)) + continue; + ListFile(outFile,list[i].file,mapToUse); + } + } + fclose(inputFile); + } + warningLevel= oldWarningLevel; + } + return 1; +} + -- cgit v1.2.3