gregm@otc.otca.oz.au (Greg McFarlane) (09/05/90)
Submitted-by: Greg McFarlane <gregm@otc.otca.oz.au> Posting-number: Volume 9, Issue 18 Archive-name: xmon/part04 Submitted-by: gregm@otc.otca.oz.au Archive-name: xmon/part04 ---- Cut Here and unpack ---- #!/bin/sh # This is part 04 of xmon if touch 2>&1 | fgrep 'amc' > /dev/null then TOUCH=touch else TOUCH=true fi # ============= table11.c ============== if test X"$1" != X"-c" -a -f 'table11.c'; then echo "File already exists: skipping 'table11.c'" else echo "x - extracting table11.c (Text)" sed 's/^X//' << 'SHAR_EOF' > table11.c && X/* X * Project: XMON - An X protocol monitor X * X * File: table11.c X * X * Description: Table initialization for X11 protocol X * X * To initialize for the X11 protocol, we need to create data structures X * describing the data types used by X11. X * X * There are about 100-128 data types for X11. This start with the simple X * INT8, INT16, INT32 (byte, short, long), and the CARD8, CARD16, CARD32 X * (unsigned) and extend to records like RGB (a resource id, 3 color X * values and a bitmask to select a subset of the 3 color values). Each X * data type has an assigned type index. The type index identifies the X * type (with a #define in x11.h) and is used to access an entry in an X * array of type descriptors (TD). Each type descriptor has the type X * name, the kind of type, and a procedure to print an object of that X * type. The print procedure for a type <foo> is named Print<foo>. The X * kind of type is X * X * BUILTIN: one of the primitive types. X * X * ENUMERATED: value should be one of a small set of values. This type X * needs a list of allowed values (and their print names). X * X * SET: value is a bitmask of a small set of values. Each value X * is a one-bit mask (and its print name). X * X * RECORD: value is a record of fields of other types. X * X * The Type Descriptor array allows us to print a value if we know its X * type (index) and the bytes in memory that are its value. X * X */ X X#include "common.h" X X#include "xmond.h" X#include "x11.h" X X/* function prototypes: */ X/* table11.c: */ Xstatic TYPE DefineType P((short typeid , short class , char *name , IntCallback printproc )); Xstatic void DefineEValue P((TYPE type , long value , char *name )); Xstatic void DefineValues P((TYPE type , long value , int length , int ctype , char *name )); Xstatic void InitBuiltInTypes P((void )); Xstatic void InitEnumeratedTypes P((void )); Xstatic void InitSetTypes P((void )); Xstatic void PrintCHAR2B P((unsigned char *buf )); Xstatic int PrintPOINT P((unsigned char *buf )); Xstatic int PrintRECTANGLE P((unsigned char *buf )); Xstatic int PrintARC P((unsigned char *buf )); Xstatic int PrintHOST P((unsigned char *buf )); Xstatic int PrintTIMECOORD P((unsigned char *buf )); Xstatic int PrintFONTPROP P((unsigned char *buf )); Xstatic int PrintCHARINFO P((unsigned char *buf )); Xstatic int PrintSEGMENT P((unsigned char *buf )); Xstatic int PrintCOLORITEM P((unsigned char *buf )); Xstatic int PrintRGB P((unsigned char *buf )); Xstatic int PrintFORMAT P((unsigned char *buf )); Xstatic int PrintSCREEN P((unsigned char *buf )); Xstatic int PrintDEPTH P((unsigned char *buf )); Xstatic int PrintVISUALTYPE P((unsigned char *buf )); Xstatic void InitRecordTypes P((void )); Xstatic void InitValuesTypes P((void )); X X/* end function prototypes */ X XGlobal void XInitializeX11() X{ X InitBuiltInTypes(); X InitEnumeratedTypes(); X InitSetTypes(); X InitValuesTypes(); X InitRecordTypes(); X} X Xstatic TYPE XDefineType(typeid, class, name, printproc) X short typeid; X short class; X char *name; X IntCallback printproc; X{ X TD[typeid].Name = name; X TD[typeid].Type = class; X TD[typeid].ValueList = NULL; X TD[typeid].PrintProc = printproc; X return(&TD[typeid]); X} X X/* X * define an Enumerated Value (or a Set Value) X */ Xstatic void XDefineEValue(type, value, name) X TYPE type; X long value; X char *name; X{ X struct ValueListEntry *p; X X /* define the new value */ X p = (struct ValueListEntry *)malloc((long)(sizeof (struct ValueListEntry))); X p->Name = name; X p->Value = value; X X /* add an new value to the list. */ X if (type->ValueList == NULL || type->ValueList->Value > p->Value) X { X p->Next = type->ValueList; X type->ValueList = p; X } X else X { X /* keep the list sorted, smallest to largest */ X struct ValueListEntry *q = type->ValueList; X while (q->Next != NULL && q->Next->Value < p->Value) X q = q->Next; X p->Next = q->Next; X q->Next = p; X } X} X X/* X * a Values list is like an enumerated Value, but has a type and length in X * addition to a value and name. It is used to print a Values List X * X * A Values List is a bitmask (like a set), but if the bit is set on, then X * we have an associated value. We need to know the length and type of X * the associated value for each bit X */ Xstatic void XDefineValues(type, value, length, ctype, name) X TYPE type; X long value; X char *name; X{ X struct ValueListEntry *p; X X p = (struct ValueListEntry *)malloc((long)(sizeof (struct ValueListEntry))); X p->Name = name; X p->Type = ctype; X p->Length = length; X p->Value = value; X X /* add an new value to the list. */ X if (type->ValueList == NULL || type->ValueList->Value > p->Value) X { X p->Next = type->ValueList; X type->ValueList = p; X } X else X { X /* keep the list sorted, smallest to largest */ X struct ValueListEntry *q = type->ValueList; X while (q->Next != NULL && q->Next->Value < p->Value) X q = q->Next; X p->Next = q->Next; X q->Next = p; X } X} X Xstatic void XInitBuiltInTypes() X{ X (void) DefineType(INT8, BUILTIN, "INT8", PrintINT8); X (void) DefineType(INT16, BUILTIN, "INT16", PrintINT16); X (void) DefineType(INT32, BUILTIN, "INT32", PrintINT32); X (void) DefineType(CARD8, BUILTIN, "CARD8", PrintCARD8); X (void) DefineType(CARD16, BUILTIN, "CARD16", PrintCARD16); X (void) DefineType(CARD32, BUILTIN, "CARD32", PrintCARD32); X (void) DefineType(BYTE, BUILTIN, "BYTE", PrintBYTE); X (void) DefineType(CHAR8, BUILTIN, "CHAR8", PrintCHAR8); X (void) DefineType(STRING16, BUILTIN, "STRING16", PrintSTRING16); X (void) DefineType(STR, BUILTIN, "STR", PrintSTR); X (void) DefineType(WINDOW, BUILTIN, "WINDOW", PrintWINDOW); X (void) DefineType(WINDOWD, BUILTIN, "WINDOWD", PrintWINDOWD); X (void) DefineType(WINDOWNR, BUILTIN, "WINDOWNR", PrintWINDOWNR); X (void) DefineType(PIXMAP, BUILTIN, "PIXMAP", PrintPIXMAP); X (void) DefineType(PIXMAPNPR, BUILTIN, "PIXMAPNPR", PrintPIXMAPNPR); X (void) DefineType(PIXMAPC, BUILTIN, "PIXMAPC", PrintPIXMAPC); X (void) DefineType(CURSOR, BUILTIN, "CURSOR", PrintCURSOR); X (void) DefineType(FONT, BUILTIN, "FONT", PrintFONT); X (void) DefineType(GCONTEXT, BUILTIN, "GCONTEXT", PrintGCONTEXT); X (void) DefineType(COLORMAP, BUILTIN, "COLORMAP", PrintCOLORMAP); X (void) DefineType(COLORMAPC, BUILTIN, "COLORMAPC", PrintCOLORMAPC); X (void) DefineType(DRAWABLE, BUILTIN, "DRAWABLE", PrintDRAWABLE); X (void) DefineType(FONTABLE, BUILTIN, "FONTABLE", PrintFONTABLE); X (void) DefineType(ATOM, BUILTIN, "ATOM", PrintATOM); X (void) DefineType(ATOMT, BUILTIN, "ATOMT", PrintATOMT); X (void) DefineType(VISUALID, BUILTIN, "VISUALID", PrintVISUALID); X (void) DefineType(VISUALIDC, BUILTIN, "VISUALIDC", PrintVISUALIDC); X (void) DefineType(TIMESTAMP, BUILTIN, "TIMESTAMP", PrintTIMESTAMP); X (void) DefineType(RESOURCEID, BUILTIN, "RESOURCEID", PrintRESOURCEID); X (void) DefineType(KEYSYM, BUILTIN, "KEYSYM", PrintKEYSYM); X (void) DefineType(KEYCODE, BUILTIN, "KEYCODE", PrintKEYCODE); X (void) DefineType(KEYCODEA, BUILTIN, "KEYCODEA", PrintKEYCODEA); X (void) DefineType(BUTTON, BUILTIN, "BUTTON", PrintBUTTON); X (void) DefineType(BUTTONA, BUILTIN, "BUTTONA", PrintBUTTONA); X (void) DefineType(EVENTFORM, BUILTIN, "EVENTFORM", PrintEVENTFORM); X} X Xstatic void XInitEnumeratedTypes() X{ X TYPE p; X X p = DefineType(REQUEST, ENUMERATED, "REQUEST", PrintENUMERATED); X DefineEValue(p, 1L, "CreateWindow"); X DefineEValue(p, 2L, "ChangeWindowAttributes"); X DefineEValue(p, 3L, "GetWindowAttributes"); X DefineEValue(p, 4L, "DestroyWindow"); X DefineEValue(p, 5L, "DestroySubwindows"); X DefineEValue(p, 6L, "ChangeSaveSet"); X DefineEValue(p, 7L, "ReparentWindow"); X DefineEValue(p, 8L, "MapWindow"); X DefineEValue(p, 9L, "MapSubwindows"); X DefineEValue(p, 10L, "UnmapWindow"); X DefineEValue(p, 11L, "UnmapSubwindows"); X DefineEValue(p, 12L, "ConfigureWindow"); X DefineEValue(p, 13L, "CirculateWindow"); X DefineEValue(p, 14L, "GetGeometry"); X DefineEValue(p, 15L, "QueryTree"); X DefineEValue(p, 16L, "InternAtom"); X DefineEValue(p, 17L, "GetAtomName"); X DefineEValue(p, 18L, "ChangeProperty"); X DefineEValue(p, 19L, "DeleteProperty"); X DefineEValue(p, 20L, "GetProperty"); X DefineEValue(p, 21L, "ListProperties"); X DefineEValue(p, 22L, "SetSelectionOwner"); X DefineEValue(p, 23L, "GetSelectionOwner"); X DefineEValue(p, 24L, "ConvertSelection"); X DefineEValue(p, 25L, "SendEvent"); X DefineEValue(p, 26L, "GrabPointer"); X DefineEValue(p, 27L, "UngrabPointer"); X DefineEValue(p, 28L, "GrabButton"); X DefineEValue(p, 29L, "UngrabButton"); X DefineEValue(p, 30L, "ChangeActivePointerGrab"); X DefineEValue(p, 31L, "GrabKeyboard"); X DefineEValue(p, 32L, "UngrabKeyboard"); X DefineEValue(p, 33L, "GrabKey"); X DefineEValue(p, 34L, "UngrabKey"); X DefineEValue(p, 35L, "AllowEvents"); X DefineEValue(p, 36L, "GrabServer"); X DefineEValue(p, 37L, "UngrabServer"); X DefineEValue(p, 38L, "QueryPointer"); X DefineEValue(p, 39L, "GetMotionEvents"); X DefineEValue(p, 40L, "TranslateCoordinates"); X DefineEValue(p, 41L, "WarpPointer"); X DefineEValue(p, 42L, "SetInputFocus"); X DefineEValue(p, 43L, "GetInputFocus"); X DefineEValue(p, 44L, "QueryKeymap"); X DefineEValue(p, 45L, "OpenFont"); X DefineEValue(p, 46L, "CloseFont"); X DefineEValue(p, 47L, "QueryFont"); X DefineEValue(p, 48L, "QueryTextExtents"); X DefineEValue(p, 49L, "ListFonts"); X DefineEValue(p, 50L, "ListFontsWithInfo"); X DefineEValue(p, 51L, "SetFontPath"); X DefineEValue(p, 52L, "GetFontPath"); X DefineEValue(p, 53L, "CreatePixmap"); X DefineEValue(p, 54L, "FreePixmap"); X DefineEValue(p, 55L, "CreateGC"); X DefineEValue(p, 56L, "ChangeGC"); X DefineEValue(p, 57L, "CopyGC"); X DefineEValue(p, 58L, "SetDashes"); X DefineEValue(p, 59L, "SetClipRectangles"); X DefineEValue(p, 60L, "FreeGC"); X DefineEValue(p, 61L, "ClearArea"); X DefineEValue(p, 62L, "CopyArea"); X DefineEValue(p, 63L, "CopyPlane"); X DefineEValue(p, 64L, "PolyPoint"); X DefineEValue(p, 65L, "PolyLine"); X DefineEValue(p, 66L, "PolySegment"); X DefineEValue(p, 67L, "PolyRectangle"); X DefineEValue(p, 68L, "PolyArc"); X DefineEValue(p, 69L, "FillPoly"); X DefineEValue(p, 70L, "PolyFillRectangle"); X DefineEValue(p, 71L, "PolyFillArc"); X DefineEValue(p, 72L, "PutImage"); X DefineEValue(p, 73L, "GetImage"); X DefineEValue(p, 74L, "PolyText8"); X DefineEValue(p, 75L, "PolyText16"); X DefineEValue(p, 76L, "ImageText8"); X DefineEValue(p, 77L, "ImageText16"); X DefineEValue(p, 78L, "CreateColormap"); X DefineEValue(p, 79L, "FreeColormap"); X DefineEValue(p, 80L, "CopyColormapAndFree"); X DefineEValue(p, 81L, "InstallColormap"); X DefineEValue(p, 82L, "UninstallColormap"); X DefineEValue(p, 83L, "ListInstalledColormaps"); X DefineEValue(p, 84L, "AllocColor"); X DefineEValue(p, 85L, "AllocNamedColor"); X DefineEValue(p, 86L, "AllocColorCells"); X DefineEValue(p, 87L, "AllocColorPlanes"); X DefineEValue(p, 88L, "FreeColors"); X DefineEValue(p, 89L, "StoreColors"); X DefineEValue(p, 90L, "StoreNamedColor"); X DefineEValue(p, 91L, "QueryColors"); X DefineEValue(p, 92L, "LookupColor"); X DefineEValue(p, 93L, "CreateCursor"); X DefineEValue(p, 94L, "CreateGlyphCursor"); X DefineEValue(p, 95L, "FreeCursor"); X DefineEValue(p, 96L, "RecolorCursor"); X DefineEValue(p, 97L, "QueryBestSize"); X DefineEValue(p, 98L, "QueryExtension"); X DefineEValue(p, 99L, "ListExtensions"); X DefineEValue(p, 100L, "ChangeKeyboardMapping"); X DefineEValue(p, 101L, "GetKeyboardMapping"); X DefineEValue(p, 102L, "ChangeKeyboardControl"); X DefineEValue(p, 103L, "GetKeyboardControl"); X DefineEValue(p, 104L, "Bell"); X DefineEValue(p, 105L, "ChangePointerControl"); X DefineEValue(p, 106L, "GetPointerControl"); X DefineEValue(p, 107L, "SetScreenSaver"); X DefineEValue(p, 108L, "GetScreenSaver"); X DefineEValue(p, 109L, "ChangeHosts"); X DefineEValue(p, 110L, "ListHosts"); X DefineEValue(p, 111L, "SetAccessControl"); X DefineEValue(p, 112L, "SetCloseDownMode"); X DefineEValue(p, 113L, "KillClient"); X DefineEValue(p, 114L, "RotateProperties"); X DefineEValue(p, 115L, "ForceScreenSaver"); X DefineEValue(p, 116L, "SetPointerMapping"); X DefineEValue(p, 117L, "GetPointerMapping"); X DefineEValue(p, 118L, "SetModifierMapping"); X DefineEValue(p, 119L, "GetModifierMapping"); X DefineEValue(p, 127L, "NoOperation"); X X p = DefineType(REPLY, ENUMERATED, "REPLY", PrintENUMERATED); X DefineEValue(p, 3L, "GetWindowAttributes"); X DefineEValue(p, 14L, "GetGeometry"); X DefineEValue(p, 15L, "QueryTree"); X DefineEValue(p, 16L, "InternAtom"); X DefineEValue(p, 17L, "GetAtomName"); X DefineEValue(p, 20L, "GetProperty"); X DefineEValue(p, 21L, "ListProperties"); X DefineEValue(p, 23L, "GetSelectionOwner"); X DefineEValue(p, 26L, "GrabPointer"); X DefineEValue(p, 31L, "GrabKeyboard"); X DefineEValue(p, 38L, "QueryPointer"); X DefineEValue(p, 39L, "GetMotionEvents"); X DefineEValue(p, 40L, "TranslateCoordinates"); X DefineEValue(p, 43L, "GetInputFocus"); X DefineEValue(p, 44L, "QueryKeymap"); X DefineEValue(p, 47L, "QueryFont"); X DefineEValue(p, 48L, "QueryTextExtents"); X DefineEValue(p, 49L, "ListFonts"); X DefineEValue(p, 50L, "ListFontsWithInfo"); X DefineEValue(p, 52L, "GetFontPath"); X DefineEValue(p, 73L, "GetImage"); X DefineEValue(p, 83L, "ListInstalledColormaps"); X DefineEValue(p, 84L, "AllocColor"); X DefineEValue(p, 85L, "AllocNamedColor"); X DefineEValue(p, 86L, "AllocColorCells"); X DefineEValue(p, 87L, "AllocColorPlanes"); X DefineEValue(p, 91L, "QueryColors"); X DefineEValue(p, 92L, "LookupColor"); X DefineEValue(p, 97L, "QueryBestSize"); X DefineEValue(p, 98L, "QueryExtension"); X DefineEValue(p, 99L, "ListExtensions"); X DefineEValue(p, 101L, "GetKeyboardMapping"); X DefineEValue(p, 103L, "GetKeyboardControl"); X DefineEValue(p, 106L, "GetPointerControl"); X DefineEValue(p, 108L, "GetScreenSaver"); X DefineEValue(p, 110L, "ListHosts"); X DefineEValue(p, 116L, "SetPointerMapping"); X DefineEValue(p, 117L, "GetPointerMapping"); X DefineEValue(p, 118L, "SetModifierMapping"); X DefineEValue(p, 119L, "GetModifierMapping"); X X p = DefineType(ERROR, ENUMERATED, "ERROR", PrintENUMERATED); X DefineEValue(p, 1L, "Request"); X DefineEValue(p, 2L, "Value"); X DefineEValue(p, 3L, "Window"); X DefineEValue(p, 4L, "Pixmap"); X DefineEValue(p, 5L, "Atom"); X DefineEValue(p, 6L, "Cursor"); X DefineEValue(p, 7L, "Font"); X DefineEValue(p, 8L, "Match"); X DefineEValue(p, 9L, "Drawable"); X DefineEValue(p, 10L, "Access"); X DefineEValue(p, 11L, "Alloc"); X DefineEValue(p, 12L, "Colormap"); X DefineEValue(p, 13L, "GContext"); X DefineEValue(p, 14L, "IDChoice"); X DefineEValue(p, 15L, "Name"); X DefineEValue(p, 16L, "Length"); X DefineEValue(p, 17L, "Implementation"); X X p = DefineType(EVENT, ENUMERATED, "EVENT", PrintENUMERATED); X DefineEValue(p, 2L, "KeyPress"); X DefineEValue(p, 3L, "KeyRelease"); X DefineEValue(p, 4L, "ButtonPress"); X DefineEValue(p, 5L, "ButtonRelease"); X DefineEValue(p, 6L, "MotionNotify"); X DefineEValue(p, 7L, "EnterNotify"); X DefineEValue(p, 8L, "LeaveNotify"); X DefineEValue(p, 9L, "FocusIn"); X DefineEValue(p, 10L, "FocusOut"); X DefineEValue(p, 11L, "KeymapNotify"); X DefineEValue(p, 12L, "Expose"); X DefineEValue(p, 13L, "GraphicsExposure"); X DefineEValue(p, 14L, "NoExposure"); X DefineEValue(p, 15L, "VisibilityNotify"); X DefineEValue(p, 16L, "CreateNotify"); X DefineEValue(p, 17L, "DestroyNotify"); X DefineEValue(p, 18L, "UnmapNotify"); X DefineEValue(p, 19L, "MapNotify"); X DefineEValue(p, 20L, "MapRequest"); X DefineEValue(p, 21L, "ReparentNotify"); X DefineEValue(p, 22L, "ConfigureNotify"); X DefineEValue(p, 23L, "ConfigureRequest"); X DefineEValue(p, 24L, "GravityNotify"); X DefineEValue(p, 25L, "ResizeRequest"); X DefineEValue(p, 26L, "CirculateNotify"); X DefineEValue(p, 27L, "CirculateRequest"); X DefineEValue(p, 28L, "PropertyNotify"); X DefineEValue(p, 29L, "SelectionClear"); X DefineEValue(p, 30L, "SelectionRequest"); X DefineEValue(p, 31L, "SelectionNotify"); X DefineEValue(p, 32L, "ColormapNotify"); X DefineEValue(p, 33L, "ClientMessage"); X DefineEValue(p, 34L, "MappingNotify"); X X X p = DefineType(BITGRAVITY, ENUMERATED, "BITGRAVITY", PrintENUMERATED); X DefineEValue(p, 0L, "Forget"); X DefineEValue(p, 1L, "NorthWest"); X DefineEValue(p, 2L, "North"); X DefineEValue(p, 3L, "NorthEast"); X DefineEValue(p, 4L, "West"); X DefineEValue(p, 5L, "Center"); X DefineEValue(p, 6L, "East"); X DefineEValue(p, 7L, "SouthWest"); X DefineEValue(p, 8L, "South"); X DefineEValue(p, 9L, "SouthEast"); X DefineEValue(p, 10L, "Static"); X X p = DefineType(WINGRAVITY, ENUMERATED, "WINGRAVITY", PrintENUMERATED); X DefineEValue(p, 0L, "Unmap"); X DefineEValue(p, 1L, "NorthWest"); X DefineEValue(p, 2L, "North"); X DefineEValue(p, 3L, "NorthEast"); X DefineEValue(p, 4L, "West"); X DefineEValue(p, 5L, "Center"); X DefineEValue(p, 6L, "East"); X DefineEValue(p, 7L, "SouthWest"); X DefineEValue(p, 8L, "South"); X DefineEValue(p, 9L, "SouthEast"); X DefineEValue(p, 10L, "Static"); X X p = DefineType(BOOL, ENUMERATED, "BOOL", PrintENUMERATED); X DefineEValue(p, 0L, "False"); X DefineEValue(p, 1L, "True"); X X p = DefineType(HOSTFAMILY, ENUMERATED, "HOSTFAMILY", PrintENUMERATED); X DefineEValue(p, 0L, "Internet"); X DefineEValue(p, 1L, "DECnet"); X DefineEValue(p, 2L, "Chaos"); X X p = DefineType(PK_MODE, ENUMERATED, "PK_MODE", PrintENUMERATED); X DefineEValue(p, 0L, "Synchronous"); X DefineEValue(p, 1L, "Asynchronous"); X X p = DefineType(NO_YES, ENUMERATED, "NO_YES", PrintENUMERATED); X DefineEValue(p, 0L, "No"); X DefineEValue(p, 1L, "Yes"); X DefineEValue(p, 2L, "Default"); X X p = DefineType(WINDOWCLASS, ENUMERATED, "WINDOWCLASS", PrintENUMERATED); X DefineEValue(p, 0L, "CopyFromParent"); X DefineEValue(p, 1L, "InputOutput"); X DefineEValue(p, 2L, "InputOnly"); X X p = DefineType(BACKSTORE, ENUMERATED, "BACKSTORE", PrintENUMERATED); X DefineEValue(p, 0L, "NotUseful"); X DefineEValue(p, 1L, "WhenMapped"); X DefineEValue(p, 2L, "Always"); X X p = DefineType(MAPSTATE, ENUMERATED, "MAPSTATE", PrintENUMERATED); X DefineEValue(p, 0L, "Unmapped"); X DefineEValue(p, 1L, "Unviewable"); X DefineEValue(p, 2L, "Viewable"); X X p = DefineType(STACKMODE, ENUMERATED, "STACKMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Above"); X DefineEValue(p, 1L, "Below"); X DefineEValue(p, 2L, "TopIf"); X DefineEValue(p, 3L, "BottomIf"); X DefineEValue(p, 4L, "Opposite"); X X p = DefineType(CIRMODE, ENUMERATED, "CIRMODE", PrintENUMERATED); X DefineEValue(p, 0L, "RaiseLowest"); X DefineEValue(p, 1L, "LowerHighest"); X X p = DefineType(CHANGEMODE, ENUMERATED, "CHANGEMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Replace"); X DefineEValue(p, 1L, "Prepend"); X DefineEValue(p, 2L, "Append"); X X p = DefineType(GRABSTAT, ENUMERATED, "GRABSTAT", PrintENUMERATED); X DefineEValue(p, 0L, "Success"); X DefineEValue(p, 1L, "AlreadyGrabbed"); X DefineEValue(p, 2L, "InvalidTime"); X DefineEValue(p, 3L, "NotViewable"); X DefineEValue(p, 4L, "Frozen"); X X p = DefineType(EVENTMODE, ENUMERATED, "EVENTMODE", PrintENUMERATED); X DefineEValue(p, 0L, "AsyncPointer"); X DefineEValue(p, 1L, "SyncPointer"); X DefineEValue(p, 2L, "ReplayPointer"); X DefineEValue(p, 3L, "AsyncKeyboard"); X DefineEValue(p, 4L, "SyncKeyboard"); X DefineEValue(p, 5L, "ReplayKeyboard"); X DefineEValue(p, 6L, "AsyncBoth"); X DefineEValue(p, 7L, "SyncBoth"); X X p = DefineType(FOCUSAGENT, ENUMERATED, "FOCUSAGENT", PrintENUMERATED); X DefineEValue(p, 0L, "None"); X DefineEValue(p, 1L, "PointerRoot"); X DefineEValue(p, 2L, "Parent"); X X p = DefineType(DIRECT, ENUMERATED, "DIRECT", PrintENUMERATED); X DefineEValue(p, 0L, "LeftToRight"); X DefineEValue(p, 1L, "RightToLeft"); X X p = DefineType(GCFUNC, ENUMERATED, "GCFUNC", PrintENUMERATED); X DefineEValue(p, 0L, "Clear"); X DefineEValue(p, 1L, "And"); X DefineEValue(p, 2L, "AndReverse"); X DefineEValue(p, 3L, "Copy"); X DefineEValue(p, 4L, "AndInverted"); X DefineEValue(p, 5L, "Noop"); X DefineEValue(p, 6L, "Xor"); X DefineEValue(p, 7L, "Or"); X DefineEValue(p, 8L, "Nor"); X DefineEValue(p, 9L, "Equiv"); X DefineEValue(p, 10L, "Invert"); X DefineEValue(p, 11L, "OrReverse"); X DefineEValue(p, 12L, "CopyInverted"); X DefineEValue(p, 13L, "OrInverted"); X DefineEValue(p, 14L, "Nand"); X DefineEValue(p, 15L, "Set"); X X p = DefineType(LINESTYLE, ENUMERATED, "LINESTYLE", PrintENUMERATED); X DefineEValue(p, 0L, "Solid"); X DefineEValue(p, 1L, "OnOffDash"); X DefineEValue(p, 2L, "DoubleDash"); X X p = DefineType(CAPSTYLE, ENUMERATED, "CAPSTYLE", PrintENUMERATED); X DefineEValue(p, 0L, "NotLast"); X DefineEValue(p, 1L, "Butt"); X DefineEValue(p, 2L, "Round"); X DefineEValue(p, 3L, "Projecting"); X X p = DefineType(JOINSTYLE, ENUMERATED, "JOINSTYLE", PrintENUMERATED); X DefineEValue(p, 0L, "Miter"); X DefineEValue(p, 1L, "Round"); X DefineEValue(p, 2L, "Bevel"); X X p = DefineType(FILLSTYLE, ENUMERATED, "FILLSTYLE", PrintENUMERATED); X DefineEValue(p, 0L, "Solid"); X DefineEValue(p, 1L, "Tiled"); X DefineEValue(p, 2L, "Stippled"); X DefineEValue(p, 3L, "OpaqueStippled"); X X p = DefineType(FILLRULE, ENUMERATED, "FILLRULE", PrintENUMERATED); X DefineEValue(p, 0L, "EvenOdd"); X DefineEValue(p, 1L, "Winding"); X X p = DefineType(SUBWINMODE, ENUMERATED, "SUBWINMODE", PrintENUMERATED); X DefineEValue(p, 0L, "ClipByChildren"); X DefineEValue(p, 1L, "IncludeInferiors"); X X p = DefineType(ARCMODE, ENUMERATED, "ARCMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Chord"); X DefineEValue(p, 1L, "PieSlice"); X X p = DefineType(RECTORDER, ENUMERATED, "RECTORDER", PrintENUMERATED); X DefineEValue(p, 0L, "UnSorted"); X DefineEValue(p, 1L, "YSorted"); X DefineEValue(p, 2L, "YXSorted"); X DefineEValue(p, 3L, "YXBanded"); X X p = DefineType(COORMODE, ENUMERATED, "COORMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Origin"); X DefineEValue(p, 1L, "Previous"); X X p = DefineType(POLYSHAPE, ENUMERATED, "POLYSHAPE", PrintENUMERATED); X DefineEValue(p, 0L, "Complex"); X DefineEValue(p, 1L, "Nonconvex"); X DefineEValue(p, 2L, "Convex"); X X p = DefineType(IMAGEMODE, ENUMERATED, "IMAGEMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Bitmap"); X DefineEValue(p, 1L, "XYPixmap"); X DefineEValue(p, 2L, "ZPixmap"); X X p = DefineType(ALLORNONE, ENUMERATED, "ALLORNONE", PrintENUMERATED); X DefineEValue(p, 0L, "None"); X DefineEValue(p, 1L, "All"); X X p = DefineType(OBJECTCLASS, ENUMERATED, "OBJECTCLASS", PrintENUMERATED); X DefineEValue(p, 0L, "Cursor"); X DefineEValue(p, 1L, "Tile"); X DefineEValue(p, 2L, "Stipple"); X X p = DefineType(OFF_ON, ENUMERATED, "OFF_ON", PrintENUMERATED); X DefineEValue(p, 0L, "Off"); X DefineEValue(p, 1L, "On"); X DefineEValue(p, 2L, "Default"); X X p = DefineType(INS_DEL, ENUMERATED, "INS_DEL", PrintENUMERATED); X DefineEValue(p, 0L, "Insert"); X DefineEValue(p, 1L, "Delete"); X X p = DefineType(DIS_EN, ENUMERATED, "DIS_EN", PrintENUMERATED); X DefineEValue(p, 0L, "Disabled"); X DefineEValue(p, 1L, "Enabled"); X X p = DefineType(CLOSEMODE, ENUMERATED, "CLOSEMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Destroy"); X DefineEValue(p, 1L, "RetainPermanent"); X DefineEValue(p, 2L, "RetainTemporary"); X X p = DefineType(SAVEMODE, ENUMERATED, "SAVEMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Reset"); X DefineEValue(p, 1L, "Activate"); X X p = DefineType(RSTATUS, ENUMERATED, "RSTATUS", PrintENUMERATED); X DefineEValue(p, 0L, "Success"); X DefineEValue(p, 1L, "Busy"); X DefineEValue(p, 2L, "Failed"); X X p = DefineType(MOTIONDETAIL, ENUMERATED, "MOTIONDETAIL", PrintENUMERATED); X DefineEValue(p, 0L, "Normal"); X DefineEValue(p, 1L, "Hint"); X X p = DefineType(ENTERDETAIL, ENUMERATED, "ENTERDETAIL", PrintENUMERATED); X DefineEValue(p, 0L, "Ancestor"); X DefineEValue(p, 1L, "Virtual"); X DefineEValue(p, 2L, "Inferior"); X DefineEValue(p, 3L, "Nonlinear"); X DefineEValue(p, 4L, "NonlinearVirtual"); X DefineEValue(p, 5L, "Pointer"); X DefineEValue(p, 6L, "PointerRoot"); X DefineEValue(p, 7L, "None"); X X p = DefineType(BUTTONMODE, ENUMERATED, "BUTTONMODE", PrintENUMERATED); X DefineEValue(p, 0L, "Normal"); X DefineEValue(p, 1L, "Grab"); X DefineEValue(p, 2L, "Ungrab"); X DefineEValue(p, 3L, "WhileGrabbed"); X X p = DefineType(VISIBLE, ENUMERATED, "VISIBLE", PrintENUMERATED); X DefineEValue(p, 0L, "Unobscured"); X DefineEValue(p, 1L, "PartiallyObscured"); X DefineEValue(p, 2L, "FullyObscured"); X X p = DefineType(CIRSTAT, ENUMERATED, "CIRSTAT", PrintENUMERATED); X DefineEValue(p, 0L, "Top"); X DefineEValue(p, 1L, "Bottom"); X X p = DefineType(PROPCHANGE, ENUMERATED, "PROPCHANGE", PrintENUMERATED); X DefineEValue(p, 0L, "NewValue"); X DefineEValue(p, 1L, "Deleted"); X X p = DefineType(CMAPCHANGE, ENUMERATED, "CMAPCHANGE", PrintENUMERATED); X DefineEValue(p, 0L, "Uninstalled"); X DefineEValue(p, 1L, "Installed"); X X p = DefineType(MAPOBJECT, ENUMERATED, "MAPOBJECT", PrintENUMERATED); X DefineEValue(p, 0L, "Modifier"); X DefineEValue(p, 1L, "Keyboard"); X DefineEValue(p, 2L, "Pointer"); X X p = DefineType(BYTEMODE, ENUMERATED, "BYTEMODE", PrintENUMERATED); X DefineEValue(p, 0x42L, "MSB first"); X DefineEValue(p, 0x6CL, "LSB first"); X X p = DefineType(BYTEORDER, ENUMERATED, "BYTEORDER", PrintENUMERATED); X DefineEValue(p, 0L, "LSB first"); X DefineEValue(p, 1L, "MSB first"); X X p = DefineType(COLORCLASS, ENUMERATED, "COLORCLASS", PrintENUMERATED); X DefineEValue(p, 0L, "StaticGray"); X DefineEValue(p, 1L, "GrayScale"); X DefineEValue(p, 2L, "StaticColor"); X DefineEValue(p, 3L, "PseudoColor"); X DefineEValue(p, 4L, "TrueColor"); X DefineEValue(p, 5L, "DirectColor"); X} X Xstatic void XInitSetTypes() X{ X TYPE p; X X p = DefineType(SETofEVENT, SET, "SETofEVENT", PrintSET); X DefineEValue(p, 0x00000001L, "KeyPress"); X DefineEValue(p, 0x00000002L, "KeyRelease"); X DefineEValue(p, 0x00000004L, "ButtonPress"); X DefineEValue(p, 0x00000008L, "ButtonRelease"); X DefineEValue(p, 0x00000010L, "EnterWindow"); X DefineEValue(p, 0x00000020L, "LeaveWindow"); X DefineEValue(p, 0x00000040L, "PointerMotion"); X DefineEValue(p, 0x00000080L, "PointerMotionHint"); X DefineEValue(p, 0x00000100L, "Button1Motion"); X DefineEValue(p, 0x00000200L, "Button2Motion"); X DefineEValue(p, 0x00000400L, "Button3Motion"); X DefineEValue(p, 0x00000800L, "Button4Motion"); X DefineEValue(p, 0x00001000L, "Button5Motion"); X DefineEValue(p, 0x00002000L, "ButtonMotion"); X DefineEValue(p, 0x00004000L, "KeymapState"); X DefineEValue(p, 0x00008000L, "Exposure"); X DefineEValue(p, 0x00010000L, "VisibilityChange"); X DefineEValue(p, 0x00020000L, "StructureNotify"); X DefineEValue(p, 0x00040000L, "ResizeRedirect"); X DefineEValue(p, 0x00080000L, "SubstructureNotify"); X DefineEValue(p, 0x00100000L, "SubstructureRedirect"); X DefineEValue(p, 0x00200000L, "FocusChange"); X DefineEValue(p, 0x00400000L, "PropertyChange"); X DefineEValue(p, 0x00800000L, "ColormapChange"); X DefineEValue(p, 0x01000000L, "OwnerGrabButton"); X X p = DefineType(SETofPOINTEREVENT, SET, "SETofPOINTEREVENT", PrintSET); X DefineEValue(p, 0x00000004L, "ButtonPress"); X DefineEValue(p, 0x00000008L, "ButtonRelease"); X DefineEValue(p, 0x00000010L, "EnterWindow"); X DefineEValue(p, 0x00000020L, "LeaveWindow"); X DefineEValue(p, 0x00000040L, "PointerMotion"); X DefineEValue(p, 0x00000080L, "PointerMotionHint"); X DefineEValue(p, 0x00000100L, "Button1Motion"); X DefineEValue(p, 0x00000200L, "Button2Motion"); X DefineEValue(p, 0x00000400L, "Button3Motion"); X DefineEValue(p, 0x00000800L, "Button4Motion"); X DefineEValue(p, 0x00001000L, "Button5Motion"); X DefineEValue(p, 0x00002000L, "ButtonMotion"); X DefineEValue(p, 0x00004000L, "KeymapState"); X X p = DefineType(SETofDEVICEEVENT, SET, "SETofDEVICEEVENT", PrintSET); X DefineEValue(p, 0x00000001L, "KeyPress"); X DefineEValue(p, 0x00000002L, "KeyRelease"); X DefineEValue(p, 0x00000004L, "ButtonPress"); X DefineEValue(p, 0x00000008L, "ButtonRelease"); X DefineEValue(p, 0x00000040L, "PointerMotion"); X DefineEValue(p, 0x00000100L, "Button1Motion"); X DefineEValue(p, 0x00000200L, "Button2Motion"); X DefineEValue(p, 0x00000400L, "Button3Motion"); X DefineEValue(p, 0x00000800L, "Button4Motion"); X DefineEValue(p, 0x00001000L, "Button5Motion"); X DefineEValue(p, 0x00002000L, "ButtonMotion"); X X p = DefineType(SETofKEYBUTMASK, SET, "SETofKEYBUTMASK", PrintSET); X DefineEValue(p, 0x0001L, "Shift"); X DefineEValue(p, 0x0002L, "Lock"); X DefineEValue(p, 0x0004L, "Control"); X DefineEValue(p, 0x0008L, "Mod1"); X DefineEValue(p, 0x0010L, "Mod2"); X DefineEValue(p, 0x0020L, "Mod3"); X DefineEValue(p, 0x0040L, "Mod4"); X DefineEValue(p, 0x0080L, "Mod5"); X DefineEValue(p, 0x0100L, "Button1"); X DefineEValue(p, 0x0200L, "Button2"); X DefineEValue(p, 0x0400L, "Button3"); X DefineEValue(p, 0x0800L, "Button4"); X DefineEValue(p, 0x1000L, "Button5"); X X p = DefineType(SETofKEYMASK, SET, "SETofKEYMASK", PrintSET); X DefineEValue(p, 0x0001L, "Shift"); X DefineEValue(p, 0x0002L, "Lock"); X DefineEValue(p, 0x0004L, "Control"); X DefineEValue(p, 0x0008L, "Mod1"); X DefineEValue(p, 0x0010L, "Mod2"); X DefineEValue(p, 0x0020L, "Mod3"); X DefineEValue(p, 0x0040L, "Mod4"); X DefineEValue(p, 0x0080L, "Mod5"); X DefineEValue(p, 0x8000L, "AnyModifier"); X X p = DefineType(COLORMASK, SET, "COLORMASK", PrintSET); X DefineEValue(p, 0x01L, "do-red"); X DefineEValue(p, 0x02L, "do-green"); X DefineEValue(p, 0x04L, "do-blue"); X X p = DefineType(SCREENFOCUS, SET, "SCREENFOCUS", PrintSET); X DefineEValue(p, 0x01L, "focus"); X DefineEValue(p, 0x02L, "same-screen"); X} X X/* X * Print Routines for builtin record types X */ X Xstatic void XPrintCHAR2B(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 1, CARD8, "byte1"); X PrintField(buf, 1, 1, CARD8, "byte2"); X} X Xstatic int XPrintPOINT(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 2, INT16, "x"); X PrintField(buf, 2, 2, INT16, "y"); X return(4); X} X Xstatic int XPrintRECTANGLE(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 2, INT16, "x"); X PrintField(buf, 2, 2, INT16, "y"); X PrintField(buf, 4, 2, CARD16, "width"); X PrintField(buf, 6, 2, CARD16, "height"); X return(8); X} X Xstatic int XPrintARC(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 2, INT16, "x"); X PrintField(buf, 2, 2, INT16, "y"); X PrintField(buf, 4, 2, CARD16, "width"); X PrintField(buf, 6, 2, CARD16, "height"); X PrintField(buf, 8, 2, INT16, "angle1"); X PrintField(buf, 10, 2, INT16, "angle2"); X return(12); X} X Xstatic int XPrintHOST(buf) X unsigned char *buf; X{ X short n; X PrintField(buf, 0, 1, HOSTFAMILY, "family"); X PrintField(buf, 2, 2, DVALUE2(n), "length of address"); X n = IShort(&buf[2]); X PrintList(&buf[4], (long)n, BYTE, "address"); X return(pad((long)(4 + n))); X} X Xstatic int XPrintTIMECOORD(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 4, TIMESTAMP, "time"); X PrintField(buf, 4, 2, CARD16, "x"); X PrintField(buf, 6, 2, CARD16, "y"); X return(8); X} X Xstatic int XPrintFONTPROP(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 4, ATOM, "name"); X PrintField(buf, 4, 4, INT32, "value"); X return(8); X} X Xstatic int XPrintCHARINFO(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 2, INT16, "left-side-bearing"); X PrintField(buf, 2, 2, INT16, "right-side-bearing"); X PrintField(buf, 4, 2, INT16, "character-width"); X PrintField(buf, 6, 2, INT16, "ascent"); X PrintField(buf, 8, 2, INT16, "descent"); X PrintField(buf, 10, 2, CARD16, "attributes"); X return(12); X} X Xstatic int XPrintSEGMENT(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 2, INT16, "x1"); X PrintField(buf, 2, 2, INT16, "y1"); X PrintField(buf, 4, 2, INT16, "x2"); X PrintField(buf, 6, 2, INT16, "y2"); X return(8); X} X Xstatic int XPrintCOLORITEM(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 4, CARD32, "pixel"); X PrintField(buf, 4, 2, CARD16, "red"); X PrintField(buf, 6, 2, CARD16, "green"); X PrintField(buf, 8, 2, CARD16, "blue"); X PrintField(buf, 10, 1, COLORMASK, "component selector"); X return(12); X} X Xstatic int XPrintRGB(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 2, CARD16, "red"); X PrintField(buf, 2, 2, CARD16, "green"); X PrintField(buf, 4, 2, CARD16, "blue"); X return(8); X} X Xstatic int XPrintFORMAT(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 1, CARD8, "depth"); X PrintField(buf, 1, 1, CARD8, "bits-per-pixel"); X PrintField(buf, 2, 1, CARD8, "scanline-pad"); X return(8); X} X Xstatic int XPrintSCREEN(buf) X unsigned char *buf; X{ X short n /* number of elements in List of DEPTH */ ; X long m /* length (in bytes) of List of DEPTH */ ; X X PrintField(buf, 0, 4, WINDOW, "root"); X PrintField(buf, 4, 4, COLORMAP, "default-colormap"); X PrintField(buf, 8, 4, CARD32, "white-pixel"); X PrintField(buf, 12, 4, CARD32, "black-pixel"); X PrintField(buf, 16, 4, SETofEVENT, "current-input-masks"); X PrintField(buf, 20, 2, CARD16, "width-in-pixels"); X PrintField(buf, 22, 2, CARD16, "height-in-pixels"); X PrintField(buf, 24, 2, CARD16, "width-in-millimeters"); X PrintField(buf, 26, 2, CARD16, "height-in-millimeters"); X PrintField(buf, 28, 2, CARD16, "min-installed-maps"); X PrintField(buf, 30, 2, CARD16, "max-installed-maps"); X PrintField(buf, 32, 4, VISUALID, "root-visual"); X PrintField(buf, 36, 1, BACKSTORE, "backing-stores"); X PrintField(buf, 37, 1, BOOL, "save-unders"); X PrintField(buf, 38, 1, CARD8, "root-depth"); X PrintField(buf, 39, 1, CARD8, "number of allowed-depths"); X n = IByte(&buf[39]); X m = PrintList(&buf[40], (long)n, DEPTH, "allowed-depths"); X return(40 + m); X} X Xstatic int XPrintDEPTH(buf) X unsigned char *buf; X{ X short n /* number of elements in List of VISUALTYPE */ ; X short m /* length (in bytes) of List of VISUALTYPE */ ; X X PrintField(buf, 0, 1, CARD8, "depth"); X PrintField(buf, 2, 2, DVALUE2(n), "number of visuals"); X n = IShort(&buf[2]); X m = PrintList(&buf[8], (long)n, VISUALTYPE, "visuals"); X return(8 + m); X} X Xstatic int XPrintVISUALTYPE(buf) X unsigned char *buf; X{ X PrintField(buf, 0, 4, VISUALID, "visual-id"); X PrintField(buf, 4, 1, COLORCLASS, "class"); X PrintField(buf, 5, 1, CARD8, "bits-per-rgb-value"); X PrintField(buf, 6, 2, CARD16, "colormap-entries"); X PrintField(buf, 8, 4, CARD32, "red-mask"); X PrintField(buf, 12, 4, CARD32, "green-mask"); X PrintField(buf, 16, 4, CARD32, "blue-mask"); X return(24); X} X Xstatic void XInitRecordTypes() X{ X (void) DefineType(CHAR2B, RECORD, "CHAR2B", PrintCHAR2B); X (void) DefineType(POINT, RECORD, "POINT", PrintPOINT); X (void) DefineType(RECTANGLE, RECORD, "RECTANGLE", PrintRECTANGLE); X (void) DefineType(ARC, RECORD, "ARC", PrintARC); X (void) DefineType(HOST, RECORD, "HOST", PrintHOST); X (void) DefineType(TIMECOORD, RECORD, "TIMECOORD", PrintTIMECOORD); X (void) DefineType(FONTPROP, RECORD, "FONTPROP", PrintFONTPROP); X (void) DefineType(CHARINFO, RECORD, "CHARINFO", PrintCHARINFO); X (void) DefineType(SEGMENT, RECORD, "SEGMENT", PrintSEGMENT); X (void) DefineType(COLORITEM, RECORD, "COLORITEM", PrintCOLORITEM); X (void) DefineType(RGB, RECORD, "RGB", PrintRGB); X (void) DefineType(FORMAT, RECORD, "FORMAT", PrintFORMAT); X (void) DefineType(SCREEN, RECORD, "SCREEN", PrintSCREEN); X (void) DefineType(DEPTH, RECORD, "DEPTH", PrintDEPTH); X (void) DefineType(VISUALTYPE, RECORD, "VISUALTYPE", PrintVISUALTYPE); X} X Xstatic void XInitValuesTypes() X{ X TYPE p; X X p = DefineType(WINDOW_BITMASK, SET, "WINDOW_BITMASK", PrintSET); X X DefineValues(p, 0x00000001L, 4, PIXMAPNPR, "background-pixmap"); X DefineValues(p, 0x00000002L, 4, CARD32, "background-pixel"); X DefineValues(p, 0x00000004L, 4, PIXMAPC, "border-pixmap"); X DefineValues(p, 0x00000008L, 4, CARD32, "border-pixel"); X DefineValues(p, 0x00000010L, 1, BITGRAVITY, "bit-gravity"); X DefineValues(p, 0x00000020L, 1, WINGRAVITY, "win-gravity"); X DefineValues(p, 0x00000040L, 1, BACKSTORE, "backing-store"); X DefineValues(p, 0x00000080L, 4, CARD32, "backing-planes"); X DefineValues(p, 0x00000100L, 4, CARD32, "backing-pixel"); X DefineValues(p, 0x00000200L, 1, BOOL, "override-redirect"); X DefineValues(p, 0x00000400L, 1, BOOL, "save-under"); X DefineValues(p, 0x00000800L, 4, SETofEVENT, "event-mask"); X DefineValues(p, 0x00001000L, 4, SETofDEVICEEVENT, "do-not-propagate-mask"); X DefineValues(p, 0x00002000L, 4, COLORMAPC, "colormap"); X DefineValues(p, 0x00004000L, 4, CURSOR, "cursor"); X X p = DefineType(CONFIGURE_BITMASK, SET, "CONFIGURE_BITMASK", PrintSET); X DefineValues(p, 0x0001L, 2, INT16, "x"); X DefineValues(p, 0x0002L, 2, INT16, "y"); X DefineValues(p, 0x0004L, 2, CARD16, "width"); X DefineValues(p, 0x0008L, 2, CARD16, "height"); X DefineValues(p, 0x0010L, 2, CARD16, "border-width"); X DefineValues(p, 0x0020L, 4, WINDOW, "sibling"); X DefineValues(p, 0x0040L, 1, STACKMODE, "stack-mode"); X X p = DefineType(GC_BITMASK, SET, "GC_BITMASK", PrintSET); X DefineValues(p, 0x00000001L, 1, GCFUNC, "function"); X DefineValues(p, 0x00000002L, 4, CARD32, "plane-mask"); X DefineValues(p, 0x00000004L, 4, CARD32, "foreground"); X DefineValues(p, 0x00000008L, 4, CARD32, "background"); X DefineValues(p, 0x00000010L, 2, CARD16, "line-width"); X DefineValues(p, 0x00000020L, 1, LINESTYLE, "line-style"); X DefineValues(p, 0x00000040L, 1, CAPSTYLE, "cap-style"); X DefineValues(p, 0x00000080L, 1, JOINSTYLE, "join-style"); X DefineValues(p, 0x00000100L, 1, FILLSTYLE, "fill-style"); X DefineValues(p, 0x00000200L, 1, FILLRULE, "fill-rule"); X DefineValues(p, 0x00000400L, 4, PIXMAP, "tile"); X DefineValues(p, 0x00000800L, 4, PIXMAP, "stipple"); X DefineValues(p, 0x00001000L, 2, INT16, "tile-stipple-x-origin"); X DefineValues(p, 0x00002000L, 2, INT16, "tile-stipple-y-origin"); X DefineValues(p, 0x00004000L, 4, FONT, "font"); X DefineValues(p, 0x00008000L, 1, SUBWINMODE, "subwindow-mode"); X DefineValues(p, 0x00010000L, 1, BOOL, "graphics-exposures"); X DefineValues(p, 0x00020000L, 2, INT16, "clip-x-origin"); X DefineValues(p, 0x00040000L, 2, INT16, "clip-y-origin"); X DefineValues(p, 0x00080000L, 4, PIXMAP, "clip-mask"); X DefineValues(p, 0x00100000L, 2, CARD16, "dash-offset"); X DefineValues(p, 0x00200000L, 1, CARD8, "dashes"); X DefineValues(p, 0x00400000L, 1, ARCMODE, "arc-mode"); X X p = DefineType(KEYBOARD_BITMASK, SET, "KEYBOARD_BITMASK", PrintSET); X DefineValues(p, 0x0001L, 1, INT8, "key-click-percent"); X DefineValues(p, 0x0002L, 1, INT8, "bell-percent"); X DefineValues(p, 0x0004L, 2, INT16, "bell-pitch"); X DefineValues(p, 0x0008L, 2, INT16, "bell-duration"); X DefineValues(p, 0x0010L, 1, CARD8, "led"); X DefineValues(p, 0x0020L, 1, OFF_ON, "led-mode"); X DefineValues(p, 0x0040L, 1, KEYCODE, "key"); X DefineValues(p, 0x0080L, 1, OFF_ON, "auto-repeat-mode"); X} SHAR_EOF $TOUCH -am 0903162990 table11.c && chmod 0664 table11.c || echo "restore of table11.c failed" set `wc -c table11.c`;Wc_c=$1 if test "$Wc_c" != "37451"; then echo original size 37451, current size $Wc_c fi fi # ============= widgeti.c ============== if test X"$1" != X"-c" -a -f 'widgeti.c'; then echo "File already exists: skipping 'widgeti.c'" else echo "x - extracting widgeti.c (Text)" sed 's/^X//' << 'SHAR_EOF' > widgeti.c && X/* X * File: widgeti.c X * X * Description: Routines to build various widget combinations X */ X#include <stdio.h> X#include <strings.h> X#include <X11/cursorfont.h> X#include <X11/Intrinsic.h> X#include <X11/StringDefs.h> X#include <X11/Shell.h> X#include <X11/Xaw/Form.h> X#include <X11/Xaw/Command.h> X#include <X11/Xaw/Label.h> X#include <X11/Xaw/Box.h> X#include <X11/Xaw/List.h> X#include <X11/Xaw/Toggle.h> X#include <X11/Xaw/Viewport.h> X X#include "common.h" X#include "widgeti.h" X X/* function prototypes: */ X/* widgeti.c: */ X X/* end function prototypes */ X XDeclareArgs X Xstatic char toggle_translation_table[] = X "<EnterWindow>: highlight(Always) \n\ X <LeaveWindow>: unhighlight() \n\ X <Btn1Down>,<Btn1Up>: set() notify()"; X Xstatic XtTranslations toggle_trans; X XGlobal Widget Xinit_widgeti(name, app_class, argcp, argv) X char *name; X char *app_class; X int *argcp; X char **argv; X{ X return XtInitialize(NULL, app_class, NULL, 0, argcp, argv); X} X XGlobal Widget Xcreate_form(parent, fromH, fromV, borderWidth) XWidget parent; XWidget fromH; XWidget fromV; Xint borderWidth; X{ X Widget widget; X X numargs = 0; X AddArg(XtNfromHoriz, fromH); X AddArg(XtNfromVert, fromV); X AddArg(XtNborderWidth, borderWidth); X AddArg(XtNdefaultDistance, 2); X widget = XtCreateManagedWidget X ( X "form", formWidgetClass, parent, arglist, numargs X ); X return widget; X} X XGlobal Widget Xcreate_label(parent, fromH, fromV, width, borderWidth, string) XWidget parent; XWidget fromH; XWidget fromV; Xint width; Xint borderWidth; Xchar *string; X{ X Widget widget; X X numargs = 0; X AddArg(XtNfromHoriz, fromH); X AddArg(XtNfromVert, fromV); X AddArg(XtNlabel, string); X AddArg(XtNborderWidth, borderWidth); X if (width != 0) X { X AddArg(XtNwidth, width); X } X widget = XtCreateManagedWidget X ( X "label", labelWidgetClass, parent, arglist, numargs X ); X return widget; X} X XGlobal Widget Xcreate_command_button(parent, fromH, fromV, string, callback, data) XWidget parent; XWidget fromH; XWidget fromV; Xchar *string; XVoidCallback callback; XPointer data; X{ X Widget widget; X X numargs = 0; X AddArg(XtNfromHoriz, fromH); X AddArg(XtNfromVert, fromV); X AddArg(XtNlabel, string); X widget = XtCreateManagedWidget X ( X "command", commandWidgetClass, parent, arglist, numargs X ); X XtAddCallback(widget, XtNcallback, callback, data); X return widget; X} X XGlobal Widget Xcreate_one_of_many_toggle(label, parent, fromH, fromV, strings, callback) Xchar *label; XWidget parent; XWidget fromH; XWidget fromV; Xchar *strings; XVoidCallback callback; X{ X Widget form; X Widget widget; X Widget radio = NULL; X char *ptr; X X numargs = 0; X AddArg(XtNborderWidth, 0); X AddArg(XtNfromHoriz, fromH); X AddArg(XtNfromVert, fromV); X AddArg(XtNdefaultDistance, 0); X form = XtCreateManagedWidget X ( X "toggle_form", formWidgetClass, parent, arglist, numargs X ); X X numargs = 0; X AddArg(XtNborderWidth, 0); X AddArg(XtNlabel, label); X widget = XtCreateManagedWidget X ( X "label", labelWidgetClass, form, arglist, numargs X ); X X toggle_trans = XtParseTranslationTable(toggle_translation_table); X X do X { X ptr = index(strings, '\n'); X if (ptr != NULL) X *ptr = '\0'; X if (strlen(strings) > 0) X { X numargs = 0; X AddArg(XtNfromHoriz, widget); X AddArg(XtNtranslations, toggle_trans); X AddArg(XtNlabel, strings); X AddArg(XtNradioData, strings); X if (radio != NULL) X AddArg(XtNradioGroup, radio); X widget = XtCreateManagedWidget X ( X (radio == NULL) ? "radio" : "", X toggleWidgetClass, form, arglist, numargs X ); X XtAddCallback(widget, XtNcallback, callback, strings); X if (radio == NULL) X radio = widget; X } X if (ptr != NULL) X strings = ptr + 1; X } X while (ptr != NULL); X return form; X} X XGlobal void Xset_toggle_state(widget, data) XWidget widget; Xchar *data; X{ X Widget child; X WidgetList list; X Cardinal num; X int i; X char *radio_data; X X child = XtNameToWidget(widget, "radio"); X if (child == (Widget)NULL) X return; X XawToggleUnsetCurrent(child); X X numargs = 0; X AddArg(XtNchildren, &list); X AddArg(XtNnumChildren, &num); X XtGetValues(widget, arglist, numargs); X X for (i = 0; i < num; i++) X { X if (XtIsSubclass(child = list[i], toggleWidgetClass)) X { X numargs = 0; X AddArg(XtNradioData, &radio_data); X XtGetValues(child, arglist, numargs); X if (!strcmp(data, radio_data)) X { X numargs = 0; X AddArg(XtNstate, True); X XtSetValues(child, arglist, numargs); X break; X } X } X } X} X XGlobal char * Xget_toggle_state(widget) XWidget widget; X{ X Widget child; X char *rtn; X X child = XtNameToWidget(widget, "radio"); X if (child != (Widget)NULL) X rtn = (char *)XawToggleGetCurrent(child); X else X rtn = (char *)NULL; X return rtn; X} X XGlobal Widget Xcreate_viewlist X( X parent, fromH, fromV, list, width, height, borderWidth, callback, data X) XWidget parent; XWidget fromH; XWidget fromV; Xchar **list; Xint width; Xint height; Xint borderWidth; XVoidCallback callback; XPointer data; X{ X Widget view_list; X Widget list_area; X X numargs = 0; X AddArg(XtNfromHoriz, fromH); X AddArg(XtNfromVert, fromV); X AddArg(XtNborderWidth, borderWidth); X AddArg(XtNwidth, width); X AddArg(XtNheight, height); X AddArg(XtNallowVert, True); X AddArg(XtNforceBars, True); X view_list = XtCreateManagedWidget X ( X "view_list", viewportWidgetClass, parent, arglist, numargs X ); X X numargs = 0; X AddArg(XtNlist, list); X AddArg(XtNdefaultColumns, 1); X AddArg(XtNforceColumns, True); X AddArg(XtNverticalList, True); X list_area = XtCreateManagedWidget X ( X "list_area", listWidgetClass, view_list, arglist, numargs X ); X XtAddCallback(list_area, XtNcallback, callback, data); X X return view_list; X} X XGlobal void Xset_viewlist(widget, list, nitems, longest) X Widget widget; X char **list; X int nitems; X int longest; X{ X Widget child; X WidgetList wlist; X Cardinal num; X int i; X X numargs = 0; X AddArg(XtNchildren, &wlist); X AddArg(XtNnumChildren, &num); X XtGetValues(widget, arglist, numargs); X for (i = 0; i < num; i++) X if (XtIsSubclass(child = wlist[i], listWidgetClass)) X XawListChange(child, list, nitems, longest, False); X} SHAR_EOF $TOUCH -am 0903162990 widgeti.c && chmod 0775 widgeti.c || echo "restore of widgeti.c failed" set `wc -c widgeti.c`;Wc_c=$1 if test "$Wc_c" != "6219"; then echo original size 6219, current size $Wc_c fi fi # ============= xmonui.c ============== if test X"$1" != X"-c" -a -f 'xmonui.c'; then echo "File already exists: skipping 'xmonui.c'" else echo "x - extracting xmonui.c (Text)" sed 's/^X//' << 'SHAR_EOF' > xmonui.c && X/* X * Project: XMON - An X protocol monitor X * X * File: xmonui.c X * X * Description: Contains main() for xmondui X * X */ X X#include <X11/Xatom.h> X#include <X11/Intrinsic.h> X#include <X11/StringDefs.h> X#include <X11/Xaw/Form.h> X X#include "common.h" X#include "widgeti.h" X X/* function prototypes: */ X/* xmonui.c: */ Xstatic void quit_cb P((Widget w , caddr_t client_data , caddr_t call_data )); Xstatic void toggle_cb P((Widget widget , caddr_t client_data , caddr_t call_data )); Xstatic void list_cb P((Widget widget , caddr_t client_data , caddr_t call_data )); Xstatic void count_cb P((Widget widget , caddr_t client_data , caddr_t call_data )); Xstatic Widget build_toggle P((Widget parent , int toggle_index , Widget vert )); Xstatic Widget build_list P((Widget parent , int list_index , Widget horiz )); Xstatic Widget build_counting_buttons P((Widget parent , Widget vert , char *label , char **output_strings )); X X/* end function prototypes */ X X#define NUM_REQUESTS 120 X Xchar *request_monitor_list[NUM_REQUESTS + 1] = X{ X#include "requests.h" X}; X Xchar *request_block_list[NUM_REQUESTS + 1] = X{ X#include "requests.h" X}; X X#define NUM_EVENTS 33 X Xchar *event_monitor_list[NUM_EVENTS + 1] = X{ X#include "events.h" X}; X Xchar *event_block_list[NUM_EVENTS + 1] = X{ X#include "events.h" X}; X X#define NUM_COUNT_BUTTONS 5 X Xchar *count_names[NUM_COUNT_BUTTONS] = X{ X "start", "stop", "clear", "print", "print zero", X}; X Xchar *request_output_strings[NUM_COUNT_BUTTONS] = X{ X "startrequestcount", X "stoprequestcount", X "clearrequestcount", X "printrequestcount", X "printzerorequestcount", X}; X Xchar *event_output_strings[NUM_COUNT_BUTTONS] = X{ X "starteventcount", X "stopeventcount", X "cleareventcount", X "printeventcount", X "printzeroeventcount", X}; X Xchar *error_output_strings[NUM_COUNT_BUTTONS] = X{ X "starterrorcount", X "stoperrorcount", X "clearerrorcount", X "printerrorcount", X "printzeroerrorcount", X}; X Xtypedef struct X{ X char *label; X char *toggle_strings; X char *output_string; X char *default_string; X Widget widget; X} X ToggleData; X X#define DETAIL_STR "off\nnames\nmain\nfull\nhex" X Xstatic ToggleData toggledata[] = X{ X { X "output detail: request ", X DETAIL_STR, "request_verbose", "off" X /*"0\n1\n2\n3\n4", "request_verbose %s\n", "0"*/ X }, X { X " event ", X DETAIL_STR, "event_verbose", "off" X /*"0\n1\n2\n3\n4", "event_verbose %s\n", "0"*/ X }, X { X " error ", X DETAIL_STR, "error_verbose", "names" X /*"0\n1\n2\n3\n4", "error_verbose %s\n", "1"*/ X }, X { X " reply ", X DETAIL_STR, "reply_verbose", "off" X /*"0\n1\n2\n3\n4", "reply_verbose %s\n", "0"*/ X }, X { X "detail ", X DETAIL_STR, "selected_request_verbose", "full" X /*"0\n1\n2\n3\n4", "selected_request_verbose %s\n", "3"*/ X }, X { X "detail ", X DETAIL_STR, "selected_event_verbose", "full" X /*"0\n1\n2\n3\n4", "selected_event_verbose %s\n", "3"*/ X }, X { X " blocking ", X "on\noff", "request_blocking_%s\n", "on" X }, X { X " blocking ", X "on\noff", "event_blocking_%s\n", "on" X }, X}; X#define REQUEST_VERBOSE 4 X#define EVENT_VERBOSE 5 X#define REQUEST_BLOCKING 6 X#define EVENT_BLOCKING 7 X X#define NUM_TOGGLES (sizeof(toggledata) / sizeof(ToggleData)) X Xtypedef struct X{ X char **list; X int toggle_index; X int width; X int height; X int num_items; X char *list_output_string; X Widget widget; X} X ListData; X Xstatic ListData listdata[] = X{ X { X request_monitor_list, REQUEST_VERBOSE, 240, 197, NUM_REQUESTS, X "monitor_request_%s %s\n", X }, X { X request_block_list, REQUEST_BLOCKING, 240, 197, NUM_REQUESTS, X "block_request_%s %s\n", X }, X { X event_monitor_list, EVENT_VERBOSE, 240, 92, NUM_EVENTS, X "monitor_event_%s %s\n", X }, X { X event_block_list, EVENT_BLOCKING, 240, 92, NUM_EVENTS, X "block_event_%s %s\n", X }, X}; X#define REQUEST_MONITOR_LIST 0 X#define REQUEST_BLOCK_LIST 1 X#define EVENT_MONITOR_LIST 2 X#define EVENT_BLOCK_LIST 3 X X#define NUM_LISTS (sizeof(listdata) / sizeof(ListData)) X Xstatic void Xquit_cb(w, client_data, call_data) X Widget w; X caddr_t client_data; X caddr_t call_data; X{ X printf("quit\n"); X fflush(stdout); X exit(1); X} X Xstatic void Xtoggle_cb(widget, client_data, call_data) X Widget widget; X caddr_t client_data; X caddr_t call_data; X{ X int toggle_count; X X if (!(Bool)call_data) X return; X X for (toggle_count = 0; toggle_count < NUM_TOGGLES; toggle_count++) X if (toggledata[toggle_count].widget == XtParent(widget)) X { X if (toggle_count < 6) X { X printf(toggledata[toggle_count].output_string); X if (Streq((char*) client_data, "off")) X printf(" 0\n"); X else if (Streq((char*) client_data, "names")) X printf(" 1\n"); X else if (Streq((char*) client_data, "main")) X printf(" 2\n"); X else if (Streq((char*) client_data, "full")) X printf(" 3\n"); X else if (Streq((char*) client_data, "hex")) X printf(" 4\n"); X } X else X printf X ( X toggledata[toggle_count].output_string, (char *)client_data X ); X fflush(stdout); X return; X } X printf("error in toggle_cb\n"); X fflush(stdout); X} X Xstatic void Xlist_cb(widget, client_data, call_data) X Widget widget; X caddr_t client_data; X caddr_t call_data; X{ X XawListReturnStruct *return_struct; X Widget list_widget; X char *selected_string; X int list_count; X Bool on; X X list_widget = XtParent(widget); X return_struct = (XawListReturnStruct*) call_data; X for (list_count = 0; list_count < NUM_LISTS; list_count++) X if (listdata[list_count].widget == list_widget) X { X selected_string = X listdata[list_count].list[return_struct->list_index]; X on = (selected_string[4] == ' '); X selected_string[4] = '\0'; X printf X ( X listdata[list_count].list_output_string, X (on) ? "on" : "off", selected_string X ); X fflush(stdout); X selected_string[4] = (on) ? '*' : ' '; X set_viewlist X ( X list_widget, listdata[list_count].list, X listdata[list_count].num_items, listdata[list_count].width X ); X return; X } X printf("error in list_cb\n"); X fflush(stdout); X} X Xstatic void Xcount_cb(widget, client_data, call_data) X Widget widget; X caddr_t client_data; X caddr_t call_data; X{ X printf("%s\n", (char *)client_data); X fflush(stdout); X} X Xstatic Widget Xbuild_toggle(parent, toggle_index, vert) XWidget parent; Xint toggle_index; XWidget vert; X{ X Widget widget; X X widget = create_one_of_many_toggle X ( X toggledata[toggle_index].label, parent, NULL, vert, X toggledata[toggle_index].toggle_strings, toggle_cb X ); X toggledata[toggle_index].widget = widget; X set_toggle_state X ( X widget, toggledata[toggle_index].default_string X ); X return widget; X} X Xstatic Widget Xbuild_list(parent, list_index, horiz) XWidget parent; Xint list_index; XWidget horiz; X{ X Widget widget; X Widget form; X X X form = create_form(parent, horiz, NULL, 0); X widget = build_toggle(form, listdata[list_index].toggle_index, NULL); X widget = create_viewlist X ( X form, NULL, widget, listdata[list_index].list, X listdata[list_index].width, listdata[list_index].height, X 1, list_cb, (Pointer) 0 X ); X listdata[list_index].widget = widget; X set_viewlist X ( X widget, listdata[list_index].list, X listdata[list_index].num_items, listdata[list_index].width X ); X return form; X} X X/* Xstatic void Xsel_cb(w, client_data, call_data) X Widget w; X caddr_t client_data; X caddr_t call_data; X{ X Widget list_widget = (Widget)client_data; X XawScrollListReturnStruct *return_struct; X X return_struct = XawScrollListShowCurrent(list_widget); X if (return_struct->list_index == XAW_SCROLL_LIST_NONE) X printf("none selected\n"); X else X printf("item %d selected\n", return_struct->list_index); X fflush(stdout); X XawScrollListUnhighlight(list_widget); X} X X widget = create_command_button X ( X widget, NULL, list, "change", change_cb, list_widget X ); X widget = create_command_button X ( X widget, NULL, widget, "print selected", sel_cb, list_widget X ); X*/ X Xstatic Widget Xbuild_counting_buttons(parent, vert, label, output_strings) XWidget parent; XWidget vert; Xchar *label; Xchar **output_strings; X{ X Widget widget; X Widget form; X char string[100]; X int button; X X form = create_form(parent, NULL, vert, 0); X widget = create_label(form, NULL, NULL, 0, 0, label); X for (button = 0; button < NUM_COUNT_BUTTONS; button++) X widget = create_command_button X ( X form, widget, NULL, count_names[button], count_cb, X output_strings[button] X ); X return form; X} X XGlobal int Xmain(argc, argv) Xint argc; Xchar **argv; X{ X Widget toplevel; X Widget form; X Widget inner_form; X Widget lists_form; X Widget widget; X Widget list_widget; X int toggle_count; X X toplevel = init_widgeti("XmonUI", "XmonUI", &argc, argv); X form = create_form(toplevel, NULL, NULL, 0); X X/* quit button */ X widget = create_command_button(form, NULL, NULL, "quit", quit_cb,NULL); X X/* header */ X widget = create_label X ( X form, widget, NULL, 0,0," Xmon - X protocol monitor" X ); X X X/* verbose level toggles */ X for (toggle_count = 0; toggle_count < 4; toggle_count++) X widget = build_toggle(form, toggle_count, widget); X X/* counting buttons */ X widget = build_counting_buttons X ( X form, widget, "counting: requests", request_output_strings X ); X widget = build_counting_buttons X ( X form, widget, " events ", event_output_strings X ); X widget = build_counting_buttons X ( X form, widget, " errors ", error_output_strings X ); X X X/* selected requests section */ X inner_form = create_form(form, NULL, widget, 1); X widget = create_label(inner_form, NULL, NULL, 0, 0,"selected requests:"); X lists_form = create_form(inner_form, NULL, widget, 0); X widget = build_list(lists_form, REQUEST_MONITOR_LIST, NULL); X widget = build_list(lists_form, REQUEST_BLOCK_LIST, widget); X X/* selected events section */ X inner_form = create_form(form, NULL, inner_form, 1); X widget = create_label(inner_form, NULL, NULL, 0, 0, "selected events:"); X lists_form = create_form(inner_form, NULL, widget, 0); X widget = build_list(lists_form, EVENT_MONITOR_LIST, NULL); X widget = build_list(lists_form, EVENT_BLOCK_LIST, widget); X X XtRealizeWidget(toplevel); X XtMainLoop(); X} SHAR_EOF $TOUCH -am 0903162990 xmonui.c && chmod 0664 xmonui.c || echo "restore of xmonui.c failed" set `wc -c xmonui.c`;Wc_c=$1 if test "$Wc_c" != "10121"; then echo original size 10121, current size $Wc_c fi fi # ============= common.h ============== if test X"$1" != X"-c" -a -f 'common.h'; then echo "File already exists: skipping 'common.h'" else echo "x - extracting common.h (Text)" sed 's/^X//' << 'SHAR_EOF' > common.h && X/* X * File: common.c X * X * Description: Standard header file X * X */ X X#ifndef COMMON_H X#define COMMON_H X X#include <ctype.h> X#include <sys/types.h> X#include <string.h> X#include <stdio.h> X Xtypedef short Bool; Xtypedef caddr_t Pointer; Xtypedef void (*VoidCallback)(); /* ptr to void function */ Xtypedef int (*IntCallback)(); /* ptr to int function */ X X#define Global /* Global */ X#ifndef True X#define True (1) X#define False (0) X#endif X#define Streq(a,b) (strcmp(a,b) == 0) X#define Strneq(a,b,n) (strncmp(a,b,n) == 0) X#define abs(x) (((x) < 0) ? (-(x)) : (x)) X#define max(n1, n2) (((n1) < (n2)) ? (n2) : (n1)) X#define min(n1, n2) (((n1) > (n2)) ? (n2) : (n1)) X#define Tmalloc(type) (type *)malloc(sizeof(type)) X#define Tcalloc(n, type) (type *)calloc(n, sizeof(type)) X#define Tfree(ptr) free((char *)(ptr)) X X#ifdef __STDC__ X#define P(args) args X#else X#define P(args) () X#endif X Xvoid *malloc P((int size)); Xvoid *realloc P((char *ptr, int size)); Xvoid *calloc P((int nelem, int elsize)); Xvoid free P((char *ptr)); X X#endif /* COMMON_H */ SHAR_EOF $TOUCH -am 0903163790 common.h && chmod 0754 common.h || echo "restore of common.h failed" set `wc -c common.h`;Wc_c=$1 if test "$Wc_c" != "1104"; then echo original size 1104, current size $Wc_c fi fi # ============= events.h ============== if test X"$1" != X"-c" -a -f 'events.h'; then echo "File already exists: skipping 'events.h'" else echo "x - extracting events.h (Text)" sed 's/^X//' << 'SHAR_EOF' > events.h && X " 4 ButtonPress", X " 5 ButtonRelease", X " 26 CirculateNotify", X " 27 CirculateRequest", X " 33 ClientMessage", X " 32 ColormapNotify", X " 22 ConfigureNotify", X " 23 ConfigureRequest", X " 16 CreateNotify", X " 17 DestroyNotify", X " 7 EnterNotify", X " 12 Expose", X " 9 FocusIn", X " 10 FocusOut", X " 13 GraphicsExpose", X " 24 GravityNotify", X " 2 KeyPress", X " 3 KeyRelease", X " 11 KeymapNotify", X " 8 LeaveNotify", X " 19 MapNotify", X " 20 MapRequest", X " 34 MappingNotify", X " 6 MotionNotify", X " 14 NoExpose", X " 28 PropertyNotify", X " 21 ReparentNotify", X " 25 ResizeRequest", X " 29 SelectionClear", X " 31 SelectionNotify", X " 30 SelectionRequest", X " 18 UnmapNotify", X " 15 VisibilityNotify", X NULL, SHAR_EOF $TOUCH -am 0903162990 events.h && chmod 0664 events.h || echo "restore of events.h failed" set `wc -c events.h`;Wc_c=$1 if test "$Wc_c" != "773"; then echo original size 773, current size $Wc_c fi fi # ============= linkl.h ============== if test X"$1" != X"-c" -a -f 'linkl.h'; then echo "File already exists: skipping 'linkl.h'" else echo "x - extracting linkl.h (Text)" sed 's/^X//' << 'SHAR_EOF' > linkl.h && X/* X * File: linkl.h X * X */ X X#ifndef LINKL_H X#define LINKL_H X X#include "common.h" X Xtypedef struct _LinkLeaf X{ X struct _LinkLeaf* next; X struct _LinkLeaf* prev; X Pointer contents; X} X LinkLeaf; X Xtypedef struct X{ X LinkLeaf *top; X LinkLeaf *bottom; X LinkLeaf *current; X} X LinkList; X X#define ListIsEmpty(list) ((list)->top == (LinkLeaf *)(list)) X#define TopOfList(list) (list)->top->contents X#define CurrentContentsOfList(list) (list)->current->contents X X#define ForAllInList(list) for \ X ( \ X ((list)->current) = ((list)->top); \ X ((list)->current) != (LinkLeaf *)(list); \ X ((list)->current) = ((list)->current)->next \ X ) X X X/* function prototypes: */ X/* linkl.c: */ XGlobal void initList P((LinkList *list )); XGlobal void prependToList P((LinkList *list , Pointer contents )); XGlobal void appendToList P((LinkList *list , Pointer contents )); XGlobal Pointer deleteFirst P((LinkList *list )); XGlobal Pointer deleteLast P((LinkList *list )); XGlobal Pointer deleteCurrent P((LinkList *list )); XGlobal void AppendToCurrent P((LinkList *list , Pointer contents )); XGlobal void PrependToCurrent P((LinkList *list , Pointer contents )); XGlobal void freeList P((LinkList *list )); XGlobal void freeCurrent P((LinkList *list )); X X/* end function prototypes */ X X#endif /* LINKL_H */ SHAR_EOF $TOUCH -am 0903162990 linkl.h && chmod 0754 linkl.h || echo "restore of linkl.h failed" set `wc -c linkl.h`;Wc_c=$1 if test "$Wc_c" != "1368"; then echo original size 1368, current size $Wc_c fi fi # ============= requests.h ============== if test X"$1" != X"-c" -a -f 'requests.h'; then echo "File already exists: skipping 'requests.h'" else echo "x - extracting requests.h (Text)" sed 's/^X//' << 'SHAR_EOF' > requests.h && X " 84 AllocColor", X " 86 AllocColorCells", X " 87 AllocColorPlanes", X " 85 AllocNamedColor", X " 35 AllowEvents", X "104 Bell", X " 30 ChangeActivePointerGrab", X " 56 ChangeGC", X "109 ChangeHosts", X "102 ChangeKeyboardControl", X "100 ChangeKeyboardMapping", X "105 ChangePointerControl", X " 18 ChangeProperty", X " 6 ChangeSaveSet", X " 2 ChangeWindowAttributes", X " 13 CirculateWindow", X " 61 ClearArea", X " 46 CloseFont", X " 12 ConfigureWindow", X " 24 ConvertSelection", X " 62 CopyArea", X " 80 CopyColormapAndFree", X " 57 CopyGC", X " 63 CopyPlane", X " 78 CreateColormap", X " 93 CreateCursor", X " 55 CreateGC", X " 94 CreateGlyphCursor", X " 53 CreatePixmap", X " 1 CreateWindow", X " 19 DeleteProperty", X " 5 DestroySubwindows", X " 4 DestroyWindow", X " 69 FillPoly", X "115 ForceScreenSaver", X " 79 FreeColormap", X " 88 FreeColors", X " 95 FreeCursor", X " 60 FreeGC", X " 54 FreePixmap", X " 17 GetAtomName", X " 52 GetFontPath", X " 14 GetGeometry", X " 73 GetImage", X " 43 GetInputFocus", X "103 GetKeyboardControl", X "101 GetKeyboardMapping", X "119 GetModifierMapping", X " 39 GetMotionEvents", X "106 GetPointerControl", X "117 GetPointerMapping", X " 20 GetProperty", X "108 GetScreenSaver", X " 23 GetSelectionOwner", X " 3 GetWindowAttributes", X " 28 GrabButton", X " 33 GrabKey", X " 31 GrabKeyboard", X " 26 GrabPointer", X " 36 GrabServer", X " 77 ImageText16", X " 76 ImageText8", X " 81 InstallColormap", X " 16 InternAtom", X "113 KillClient", X " 99 ListExtensions", X " 49 ListFonts", X " 50 ListFontsWithInfo", X "110 ListHosts", X " 83 ListInstalledColormaps", X " 21 ListProperties", X " 92 LookupColor", X " 9 MapSubwindows", X " 8 MapWindow", X "127 NoOperation", X " 45 OpenFont", X " 68 PolyArc", X " 71 PolyFillArc", X " 70 PolyFillRectangle", X " 65 PolyLine", X " 64 PolyPoint", X " 67 PolyRectangle", X " 66 PolySegment", X " 75 PolyText16", X " 74 PolyText8", X " 72 PutImage", X " 97 QueryBestSize", X " 91 QueryColors", X " 98 QueryExtension", X " 47 QueryFont", X " 44 QueryKeymap", X " 38 QueryPointer", X " 48 QueryTextExtents", X " 15 QueryTree", X " 96 RecolorCursor", X " 7 ReparentWindow", X "114 RotateProperties", X " 25 SendEvent", X "111 SetAccessControl", X " 59 SetClipRectangles", X "112 SetCloseDownMode", X " 58 SetDashes", X " 51 SetFontPath", X " 42 SetInputFocus", X "118 SetModifierMapping", X "116 SetPointerMapping", X "107 SetScreenSaver", X " 22 SetSelectionOwner", X " 89 StoreColors", X " 90 StoreNamedColor", X " 40 TranslateCoords", X " 29 UngrabButton", X " 34 UngrabKey", X " 32 UngrabKeyboard", X " 27 UngrabPointer", X " 37 UngrabServer", X " 82 UninstallColormap", X " 11 UnmapSubwindows", X " 10 UnmapWindow", X " 41 WarpPointer", X NULL SHAR_EOF $TOUCH -am 0903162990 requests.h && chmod 0664 requests.h || echo "restore of requests.h failed" set `wc -c requests.h`;Wc_c=$1 if test "$Wc_c" != "2861"; then echo original size 2861, current size $Wc_c fi fi # ============= select_args.h ============== if test X"$1" != X"-c" -a -f 'select_args.h'; then echo "File already exists: skipping 'select_args.h'" else echo "x - extracting select_args.h (Text)" sed 's/^X//' << 'SHAR_EOF' > select_args.h && X/* X * Project: XMON - An X protocol monitor X * X * File: select_args.h X * X * Description: macros to handle the arguments to select(). X */ X X#ifndef SELECT_H X#define SELECT_H X X#include <sys/param.h> X X#define MAXSOCKS (NOFILE - 1) X#define mskcnt ((MAXSOCKS + 31) / 32) /* size of bit array */ X X#if (mskcnt==1) X#define BITMASK(i) (1 << (i)) X#define MASKIDX(i) 0 X#endif X#if (mskcnt>1) X#define BITMASK(i) (1 << ((i) & 31)) X#define MASKIDX(i) ((i) >> 5) X#endif X X#define MASKWORD(buf, i) buf[MASKIDX(i)] X#define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i) X#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i) X#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i)) X X#if (mskcnt==1) X#define COPYBITS(src, dst) dst[0] = src[0] X#define CLEARBITS(buf) buf[0] = 0 X#define MASKANDSETBITS(dst, b1, b2) dst[0] = (b1[0] & b2[0]) X#define ORBITS(dst, b1, b2) dst[0] = (b1[0] | b2[0]) X#define UNSETBITS(dst, b1) (dst[0] &= ~b1[0]) X#define ANYSET(src) (src[0]) X#endif X#if (mskcnt==2) X#define COPYBITS(src, dst) dst[0] = src[0]; dst[1] = src[1] X#define CLEARBITS(buf) buf[0] = 0; buf[1] = 0 X#define MASKANDSETBITS(dst, b1, b2) \ X dst[0] = (b1[0] & b2[0]);\ X dst[1] = (b1[1] & b2[1]) X#define ORBITS(dst, b1, b2) \ X dst[0] = (b1[0] | b2[0]);\ X dst[1] = (b1[1] | b2[1]) X#define UNSETBITS(dst, b1) \ X dst[0] &= ~b1[0]; \ X dst[1] &= ~b1[1] X#define ANYSET(src) (src[0] || src[1]) X#endif X#if (mskcnt==3) X#define COPYBITS(src, dst) dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; X#define CLEARBITS(buf) buf[0] = 0; buf[1] = 0; buf[2] = 0 X#define MASKANDSETBITS(dst, b1, b2) \ X dst[0] = (b1[0] & b2[0]);\ X dst[1] = (b1[1] & b2[1]);\ X dst[2] = (b1[2] & b2[2]) X#define ORBITS(dst, b1, b2) \ X dst[0] = (b1[0] | b2[0]);\ X dst[1] = (b1[1] | b2[1]);\ X dst[2] = (b1[2] | b2[2]) X#define UNSETBITS(dst, b1) \ X dst[0] &= ~b1[0]; \ X dst[1] &= ~b1[1]; \ X dst[2] &= ~b1[2] X#define ANYSET(src) (src[0] || src[1] || src[2]) X#endif X#if (mskcnt==4) X#define COPYBITS(src, dst) dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2];\ X dst[3] = src[3] X#define CLEARBITS(buf) buf[0] = 0; buf[1] = 0; buf[2] = 0; buf[3] = 0 X#define MASKANDSETBITS(dst, b1, b2) \ X dst[0] = (b1[0] & b2[0]);\ X dst[1] = (b1[1] & b2[1]);\ X dst[2] = (b1[2] & b2[2]);\ X dst[3] = (b1[3] & b2[3]) X#define ORBITS(dst, b1, b2) \ X dst[0] = (b1[0] | b2[0]);\ X dst[1] = (b1[1] | b2[1]);\ X dst[2] = (b1[2] | b2[2]);\ X dst[3] = (b1[3] | b2[3]) X#define UNSETBITS(dst, b1) \ X dst[0] &= ~b1[0]; \ X dst[1] &= ~b1[1]; \ X dst[2] &= ~b1[2]; \ X dst[3] &= ~b1[3] X#define ANYSET(src) (src[0] || src[1] || src[2] || src[3]) X#endif X X#if (mskcnt>4) X#define COPYBITS(src, dst) bcopy((caddr_t) src, (caddr_t) dst,\ X mskcnt*sizeof(long)) X#define CLEARBITS(buf) bzero((caddr_t) buf, mskcnt*sizeof(long)) X#define MASKANDSETBITS(dst, b1, b2) \ X { int cri; \ X for (cri=0; cri<mskcnt; cri++) \ X dst[cri] = (b1[cri] & b2[cri]) } X#define ORBITS(dst, b1, b2) \ X { int cri; \ X for (cri=0; cri<mskcnt; cri++) \ X dst[cri] = (b1[cri] | b2[cri]) } X#define UNSETBITS(dst, b1) \ X { int cri; \ X for (cri=0; cri<mskcnt; cri++) \ X dst[cri] &= ~b1[cri]; } X#define ANYSET(src) panic("ANYSET not implemented") X#endif X X#endif /* SELECT_H */ SHAR_EOF $TOUCH -am 0903162990 select_args.h && chmod 0664 select_args.h || echo "restore of select_args.h failed" set `wc -c select_args.h`;Wc_c=$1 if test "$Wc_c" != "3646"; then echo original size 3646, current size $Wc_c fi fi # ============= widgeti.h ============== if test X"$1" != X"-c" -a -f 'widgeti.h'; then echo "File already exists: skipping 'widgeti.h'" else echo "x - extracting widgeti.h (Text)" sed 's/^X//' << 'SHAR_EOF' > widgeti.h && X/* X * File: widgeti.h X * X * Description: Prototypes and defines for widgeti X */ X X#ifndef WIDGET_H X#define WIDGET_H X X#include <X11/Xlib.h> X#include <X11/Intrinsic.h> X#include <X11/StringDefs.h> X#include <X11/Xaw/List.h> X X#include "common.h" X X#define MaxNumXArgs 20 X X#define AddArg(arg, val) \ X XtSetArg(arglist[numargs], arg, (XtArgVal)val), numargs ++ X X#define DeclareArgs \ Xstatic Arg arglist[MaxNumXArgs]; \ Xstatic Cardinal numargs; X X/* function prototypes: */ X/* widgeti.c: */ XGlobal Widget init_widgeti P((char *name , char *app_class , int *argcp , char **argv )); XGlobal Widget create_form P((Widget parent , Widget fromH , Widget fromV , int borderWidth )); XGlobal Widget create_label P((Widget parent , Widget fromH , Widget fromV , int width , int borderWidth , char *string )); XGlobal Widget create_command_button P((Widget parent , Widget fromH , Widget fromV , char *string , VoidCallback callback , Pointer data )); XGlobal Widget create_one_of_many_toggle P((char *label , Widget parent , Widget fromH , Widget fromV , char *strings , VoidCallback callback )); XGlobal void set_toggle_state P((Widget widget , char *data )); XGlobal char *get_toggle_state P((Widget widget )); XGlobal Widget create_viewlist P((Widget parent , Widget fromH , Widget fromV , char **list , int width , int height , int borderWidth , VoidCallback callback , Pointer data )); XGlobal void set_viewlist P((Widget widget , char **list , int nitems , int longest )); X X/* end function prototypes */ X X#endif /* WIDGET_H */ X SHAR_EOF $TOUCH -am 0903162990 widgeti.h && chmod 0775 widgeti.h || echo "restore of widgeti.h failed" set `wc -c widgeti.h`;Wc_c=$1 if test "$Wc_c" != "1551"; then echo original size 1551, current size $Wc_c fi fi echo "End of part 4, continue with part 5" exit 0 dan ---------------------------------------------------- O'Reilly && Associates argv@sun.com / argv@ora.com Opinions expressed reflect those of the author only.