#include "X.h" #include "Xmd.h" #include "os.h" #include "osstruct.h" #include "misc.h" #include "font.h" #define NEED_EVENTS #include "Xproto.h" #include "inputstr.h" #include "opaque.h" #include #include #include #include extern char *GetHeap(); long MaxClients = 128; Bool clientsDoomed = FALSE; mesa void XConnectionMgr_CreateWellKnownSockets(); mesa void XConnectionMgr_CloseDownConnection(); mesa void XConnectionMgr_ReallyMarkConnectionClosed(); mesa void XConnectionMgr_OnlyListenToOneClient(); mesa void XConnectionMgr_ListenToAllClients(); mesa FID XFileIO_FiOpenForRead(); mesa int XFileIO_FiRead(); mesa void XFileIO_FiClose(); mesa void XFileIO_SetDefaultFontPath(); mesa void XFileIO_SetFontPath(); mesa int XFileIO_ExpandFontName(); mesa FontPathPtr XFileIO_ExpandFontNamePattern(); mesa int * XConnectionMgr_ReadRequestFromClient(); mesa int XConnectionMgr_WriteToClient(); mesa void XConnectionMgr_WaitForSomething(); mesa void Runtime_Interrupt(); mesa long XMKDriver_getTimeInMillis(); char *index(); static FontPathRec fontSearchList; extern char *defaultFontPath; void CreateWellKnownSockets() { XConnectionMgr_CreateWellKnownSockets(); } Bool CloseDownConnection(client) ClientPtr client; { XConnectionMgr_CloseDownConnection(client); } void ReallyMarkConnectionClosed(client) ClientPtr client; { XConnectionMgr_ReallyMarkConnectionClosed(client); } void OnlyListenToOneClient(client) ClientPtr client; { XConnectionMgr_OnlyListenToOneClient(client); } void ListenToAllClients() { XConnectionMgr_ListenToAllClients(); } FID FiOpenForRead(lenn, name) int lenn; char *name; { char *newname; FID fid; newname = name; if (name[lenn-1] != '\0') { newname = (char *)Xalloc(lenn+1); strncpy(newname,name,lenn); newname[lenn] = '\0'; } fid = XFileIO_FiOpenForRead(name); if(name != newname) Xfree(newname); return(fid); } int FiRead(buf, itemsize, nitems, fid) char *buf; unsigned itemsize; unsigned nitems; FID fid; { if ( (long)buf & 0x80000000L ) return(XFileIO_FiRead((int *)buf, itemsize, nitems, fid)); else return(XFileIO_FiRead(buf, itemsize, nitems, fid)); } int FiClose(fid) FID fid; { XFileIO_FiClose(fid); return(0); } void SetDefaultFontPath(name) char *name; { int len = strlen( name); XFileIO_SetDefaultFontPath(name); fontSearchList.npaths = 1; fontSearchList.length = (int *)Xalloc(sizeof(int)); fontSearchList.length[0] = len; fontSearchList.paths = (char **)Xalloc(sizeof(char *)); fontSearchList.paths[0] = (char *)Xalloc(len + 1); bcopy(name, fontSearchList.paths[0], len); fontSearchList.paths[0][len] = '\0'; } void FreeFontRecord(pFP) FontPathPtr pFP; { int i; for(i=0;inpaths;i++) Xfree(pFP->paths[i]); Xfree(pFP->paths); Xfree(pFP->length); } /* * pnames is a pointer to counted strings, each string long word * aligned */ void SetFontPath( npaths, totalLength, countedStrings) int npaths; int totalLength; char * countedStrings; { int i; char * bufPtr = countedStrings; char n; FreeFontRecord(&fontSearchList); if (npaths == 0) { SetDefaultFontPath(defaultFontPath); } else { fontSearchList.length = (int *)Xalloc(npaths * sizeof(int)); fontSearchList.paths = (char **)Xalloc(npaths * sizeof(char *)); for (i=0; i') lowername[0] = '<'; len = XFileIO_ExpandFontName(lowername, ppPathname, GetHeap()); Xfree(lowername); return(len); } /******************************************************************* * ExpandFontPathPattern * * Returns a FontPathPtr with at most max-names, of names of fonts matching * the pattern. The pattern should use the ASCII encoding, and * upper/lower case does not matter. In the pattern, the '?' character * (octal value 77) will match any single character, and the character '*' * (octal value 52) will match any number of characters. The return * names are in lower case. * * Used only by protocol request ListFonts *******************************************************************/ FontPathPtr ExpandFontNamePattern(lenpat, countedPattern, maxNames) int lenpat; char *countedPattern; int maxNames; { char *pattern; int i; FontPathPtr fpr; /* * make a pattern which is guaranteed NULL-terminated */ pattern = (char *) ALLOCATE_LOCAL( lenpat+1); strncpy( pattern, countedPattern, lenpat); pattern[lenpat] = '\0'; if(pattern[0] == '/') pattern[0] = '<'; for ( i = 0; iindex, status, (int *)oldbuf)); else return((char *)XConnectionMgr_ReadRequestFromClient((long)who->index, status, oldbuf)); } int WriteToClient(who, remaining, buf) ClientPtr who; int remaining; char *buf; { if ( (long)buf & 0x80000000L ) return(XConnectionMgr_WriteToClient((long)who->index, remaining, (int *)buf)); else return(XConnectionMgr_WriteToClient((long)who->index, remaining, buf)); } int WaitForSomething(pClientsReady, nready, pNewClients, nnew) ClientPtr pClientsReady; int *nready; ClientPtr pNewClients; int *nnew; { XConnectionMgr_WaitForSomething(pClientsReady, nready, pNewClients, nnew); } int OsLookupColor(screen, name, len, pred, pgreen, pblue) int screen; char *name; int len; unsigned short *pred, *pgreen, *pblue; { return(0); } void OsInit() { } HangUp() { Runtime_Interrupt(); } Notice() { } ProcessCommandLine(argc, argv) int argc; char *argv[]; { } bcopy(src, dst, length) char *src, *dst; int length; { register int i; if(!((long)src & 0x80000000L)) src = (char *)((((long)src)<<1)|0x80000000L); if(!((long)dst & 0x80000000L)) dst = (char *)((((long)dst)<<1)|0x80000000L); for(i=0; i>1; } while(count++ < 32); return(0); } long GetTimeInMillis() { return(XMKDriver_getTimeInMillis()); } long random() { return( GetTimeInMillis()); } /* void ErrorF(s1,x1,x2,x3,x4,x5) char *s1; long x1, x2, x3, x4, x5; { Runtime_Interrupt(); printf(s1,x1,x2,x3,x4,x5); } */ insque(elem, pred) QdEventPtr elem, pred; { elem->forw = pred->forw; elem->back = pred; pred->forw = elem; if( elem->forw != NULL ) elem->forw->back = elem; } remque(elem) QdEventPtr elem; { if( elem->back != NULL ) elem->back->forw = elem->forw; if( elem->forw != NULL ) elem->forw->back = elem->back; } ResetHosts() { return(0); } AddHost() { return(0); } RemoveHost() { return(0); } GetHosts() { return(0); } ChangeAccessControl() { return(0); } pointer Xrealloc(ptr, amount) char *ptr; int amount; { char *ret; int *tmp; if(ptr == NULL) return(malloc(amount)); else { ret = realloc(ptr, amount); if( (long)ret & 0x80000000L ) return(ret); else { tmp = (int *)((long)ret); return((char *)(tmp)); } } } Xfree(ptr) char *ptr; { if(ptr!=NULL) free(ptr); } pointer Xalloc(size) int size; { return(malloc(size)); }