error.c revision 266e564d
1266e564dSmrg/* $XdotOrg: $ */ 2266e564dSmrg/* $Xorg: error.c,v 1.4 2001/02/09 02:03:26 xorgcvs Exp $ */ 3266e564dSmrg/****************************************************************************** 4266e564dSmrg 5266e564dSmrg 6266e564dSmrgCopyright 1993, 1998 The Open Group 7266e564dSmrg 8266e564dSmrgPermission to use, copy, modify, distribute, and sell this software and its 9266e564dSmrgdocumentation for any purpose is hereby granted without fee, provided that 10266e564dSmrgthe above copyright notice appear in all copies and that both that 11266e564dSmrgcopyright notice and this permission notice appear in supporting 12266e564dSmrgdocumentation. 13266e564dSmrg 14266e564dSmrgThe above copyright notice and this permission notice shall be included in 15266e564dSmrgall copies or substantial portions of the Software. 16266e564dSmrg 17266e564dSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18266e564dSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19266e564dSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20266e564dSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21266e564dSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22266e564dSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23266e564dSmrg 24266e564dSmrgExcept as contained in this notice, the name of The Open Group shall not be 25266e564dSmrgused in advertising or otherwise to promote the sale, use or other dealings 26266e564dSmrgin this Software without prior written authorization from The Open Group. 27266e564dSmrg 28266e564dSmrgAuthor: Ralph Mor, X Consortium 29266e564dSmrg******************************************************************************/ 30266e564dSmrg/* $XFree86: xc/lib/ICE/error.c,v 1.5 2001/10/28 03:32:28 tsi Exp $ */ 31266e564dSmrg 32266e564dSmrg#ifdef HAVE_CONFIG_H 33266e564dSmrg#include <config.h> 34266e564dSmrg#endif 35266e564dSmrg#include <X11/ICE/ICElib.h> 36266e564dSmrg#include "ICElibint.h" 37266e564dSmrg#include <stdio.h> 38266e564dSmrg 39266e564dSmrg#include <errno.h> 40266e564dSmrg 41266e564dSmrg 42266e564dSmrgvoid 43266e564dSmrg_IceErrorBadMinor (iceConn, majorOpcode, offendingMinor, severity) 44266e564dSmrg 45266e564dSmrgIceConn iceConn; 46266e564dSmrgint majorOpcode; 47266e564dSmrgint offendingMinor; 48266e564dSmrgint severity; 49266e564dSmrg 50266e564dSmrg{ 51266e564dSmrg IceErrorHeader (iceConn, 52266e564dSmrg majorOpcode, offendingMinor, 53266e564dSmrg iceConn->receive_sequence, 54266e564dSmrg severity, 55266e564dSmrg IceBadMinor, 56266e564dSmrg 0); 57266e564dSmrg 58266e564dSmrg IceFlush (iceConn); 59266e564dSmrg} 60266e564dSmrg 61266e564dSmrg 62266e564dSmrgvoid 63266e564dSmrg_IceErrorBadState (iceConn, majorOpcode, offendingMinor, severity) 64266e564dSmrg 65266e564dSmrgIceConn iceConn; 66266e564dSmrgint majorOpcode; 67266e564dSmrgint offendingMinor; 68266e564dSmrgint severity; 69266e564dSmrg 70266e564dSmrg{ 71266e564dSmrg IceErrorHeader (iceConn, 72266e564dSmrg majorOpcode, offendingMinor, 73266e564dSmrg iceConn->receive_sequence, 74266e564dSmrg severity, 75266e564dSmrg IceBadState, 76266e564dSmrg 0); 77266e564dSmrg 78266e564dSmrg IceFlush (iceConn); 79266e564dSmrg} 80266e564dSmrg 81266e564dSmrg 82266e564dSmrgvoid 83266e564dSmrg_IceErrorBadLength (iceConn, majorOpcode, offendingMinor, severity) 84266e564dSmrg 85266e564dSmrgIceConn iceConn; 86266e564dSmrgint majorOpcode; 87266e564dSmrgint offendingMinor; 88266e564dSmrgint severity; 89266e564dSmrg 90266e564dSmrg{ 91266e564dSmrg IceErrorHeader (iceConn, 92266e564dSmrg majorOpcode, offendingMinor, 93266e564dSmrg iceConn->receive_sequence, 94266e564dSmrg severity, 95266e564dSmrg IceBadLength, 96266e564dSmrg 0); 97266e564dSmrg 98266e564dSmrg IceFlush (iceConn); 99266e564dSmrg} 100266e564dSmrg 101266e564dSmrg 102266e564dSmrgvoid 103266e564dSmrg_IceErrorBadValue (iceConn, majorOpcode, offendingMinor, offset, length, value) 104266e564dSmrg 105266e564dSmrgIceConn iceConn; 106266e564dSmrgint majorOpcode; 107266e564dSmrgint offendingMinor; 108266e564dSmrgint offset; 109266e564dSmrgint length; /* in bytes */ 110266e564dSmrgIcePointer value; 111266e564dSmrg 112266e564dSmrg{ 113266e564dSmrg IceErrorHeader (iceConn, 114266e564dSmrg majorOpcode, offendingMinor, 115266e564dSmrg iceConn->receive_sequence, 116266e564dSmrg IceCanContinue, 117266e564dSmrg IceBadValue, 118266e564dSmrg WORD64COUNT (8 + length)); 119266e564dSmrg 120266e564dSmrg IceWriteData32 (iceConn, 4, &offset); 121266e564dSmrg IceWriteData32 (iceConn, 4, &length); 122266e564dSmrg IceWriteData (iceConn, length, (char *) value); 123266e564dSmrg 124266e564dSmrg if (PAD64 (length)) 125266e564dSmrg IceWritePad (iceConn, PAD64 (length)); 126266e564dSmrg 127266e564dSmrg IceFlush (iceConn); 128266e564dSmrg} 129266e564dSmrg 130266e564dSmrg 131266e564dSmrgvoid 132266e564dSmrg_IceErrorNoAuthentication (iceConn, offendingMinor) 133266e564dSmrg 134266e564dSmrgIceConn iceConn; 135266e564dSmrgint offendingMinor; 136266e564dSmrg 137266e564dSmrg{ 138266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 139266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 140266e564dSmrg 141266e564dSmrg IceErrorHeader (iceConn, 142266e564dSmrg 0, offendingMinor, 143266e564dSmrg iceConn->receive_sequence, 144266e564dSmrg severity, 145266e564dSmrg IceNoAuth, 146266e564dSmrg 0); 147266e564dSmrg 148266e564dSmrg IceFlush (iceConn); 149266e564dSmrg} 150266e564dSmrg 151266e564dSmrg 152266e564dSmrgvoid 153266e564dSmrg_IceErrorNoVersion (iceConn, offendingMinor) 154266e564dSmrg 155266e564dSmrgIceConn iceConn; 156266e564dSmrgint offendingMinor; 157266e564dSmrg 158266e564dSmrg{ 159266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 160266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 161266e564dSmrg 162266e564dSmrg IceErrorHeader (iceConn, 163266e564dSmrg 0, offendingMinor, 164266e564dSmrg iceConn->receive_sequence, 165266e564dSmrg severity, 166266e564dSmrg IceNoVersion, 167266e564dSmrg 0); 168266e564dSmrg 169266e564dSmrg IceFlush (iceConn); 170266e564dSmrg} 171266e564dSmrg 172266e564dSmrg 173266e564dSmrgvoid 174266e564dSmrg_IceErrorSetupFailed (iceConn, offendingMinor, reason) 175266e564dSmrg 176266e564dSmrgIceConn iceConn; 177266e564dSmrgint offendingMinor; 178266e564dSmrgchar *reason; 179266e564dSmrg 180266e564dSmrg{ 181266e564dSmrg char *pBuf, *pStart; 182266e564dSmrg int bytes; 183266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 184266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 185266e564dSmrg 186266e564dSmrg if (!reason) 187266e564dSmrg reason = ""; 188266e564dSmrg bytes = STRING_BYTES (reason); 189266e564dSmrg 190266e564dSmrg IceErrorHeader (iceConn, 191266e564dSmrg 0, offendingMinor, 192266e564dSmrg iceConn->receive_sequence, 193266e564dSmrg severity, 194266e564dSmrg IceSetupFailed, 195266e564dSmrg WORD64COUNT (bytes)); 196266e564dSmrg 197266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 198266e564dSmrg STORE_STRING (pBuf, reason); 199266e564dSmrg 200266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 201266e564dSmrg IceFlush (iceConn); 202266e564dSmrg} 203266e564dSmrg 204266e564dSmrg 205266e564dSmrgvoid 206266e564dSmrg_IceErrorAuthenticationRejected (iceConn, offendingMinor, reason) 207266e564dSmrg 208266e564dSmrgIceConn iceConn; 209266e564dSmrgint offendingMinor; 210266e564dSmrgchar *reason; 211266e564dSmrg 212266e564dSmrg{ 213266e564dSmrg char *pBuf, *pStart; 214266e564dSmrg int bytes; 215266e564dSmrg 216266e564dSmrg if (!reason) 217266e564dSmrg reason = ""; 218266e564dSmrg bytes = STRING_BYTES (reason); 219266e564dSmrg 220266e564dSmrg IceErrorHeader (iceConn, 221266e564dSmrg 0, offendingMinor, 222266e564dSmrg iceConn->receive_sequence, 223266e564dSmrg IceFatalToProtocol, 224266e564dSmrg IceAuthRejected, 225266e564dSmrg WORD64COUNT (bytes)); 226266e564dSmrg 227266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 228266e564dSmrg STORE_STRING (pBuf, reason); 229266e564dSmrg 230266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 231266e564dSmrg IceFlush (iceConn); 232266e564dSmrg} 233266e564dSmrg 234266e564dSmrg 235266e564dSmrgvoid 236266e564dSmrg_IceErrorAuthenticationFailed (iceConn, offendingMinor, reason) 237266e564dSmrg 238266e564dSmrgIceConn iceConn; 239266e564dSmrgint offendingMinor; 240266e564dSmrgchar *reason; 241266e564dSmrg 242266e564dSmrg{ 243266e564dSmrg char *pBuf, *pStart; 244266e564dSmrg int bytes; 245266e564dSmrg 246266e564dSmrg if (!reason) 247266e564dSmrg reason = ""; 248266e564dSmrg bytes = STRING_BYTES (reason); 249266e564dSmrg 250266e564dSmrg IceErrorHeader (iceConn, 251266e564dSmrg 0, offendingMinor, 252266e564dSmrg iceConn->receive_sequence, 253266e564dSmrg IceFatalToProtocol, 254266e564dSmrg IceAuthFailed, 255266e564dSmrg WORD64COUNT (bytes)); 256266e564dSmrg 257266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 258266e564dSmrg STORE_STRING (pBuf, reason); 259266e564dSmrg 260266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 261266e564dSmrg IceFlush (iceConn); 262266e564dSmrg} 263266e564dSmrg 264266e564dSmrg 265266e564dSmrgvoid 266266e564dSmrg_IceErrorProtocolDuplicate (iceConn, protocolName) 267266e564dSmrg 268266e564dSmrgIceConn iceConn; 269266e564dSmrgchar *protocolName; 270266e564dSmrg 271266e564dSmrg{ 272266e564dSmrg char *pBuf, *pStart; 273266e564dSmrg int bytes; 274266e564dSmrg 275266e564dSmrg if (!protocolName) 276266e564dSmrg protocolName = ""; 277266e564dSmrg bytes = STRING_BYTES (protocolName); 278266e564dSmrg 279266e564dSmrg IceErrorHeader (iceConn, 280266e564dSmrg 0, ICE_ProtocolSetup, 281266e564dSmrg iceConn->receive_sequence, 282266e564dSmrg IceFatalToProtocol, 283266e564dSmrg IceProtocolDuplicate, 284266e564dSmrg WORD64COUNT (bytes)); 285266e564dSmrg 286266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 287266e564dSmrg STORE_STRING (pBuf, protocolName); 288266e564dSmrg 289266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 290266e564dSmrg IceFlush (iceConn); 291266e564dSmrg} 292266e564dSmrg 293266e564dSmrg 294266e564dSmrgvoid 295266e564dSmrg_IceErrorMajorOpcodeDuplicate (iceConn, majorOpcode) 296266e564dSmrg 297266e564dSmrgIceConn iceConn; 298266e564dSmrgint majorOpcode; 299266e564dSmrg 300266e564dSmrg{ 301266e564dSmrg char mOp = (char) majorOpcode; 302266e564dSmrg 303266e564dSmrg IceErrorHeader (iceConn, 304266e564dSmrg 0, ICE_ProtocolSetup, 305266e564dSmrg iceConn->receive_sequence, 306266e564dSmrg IceFatalToProtocol, 307266e564dSmrg IceMajorOpcodeDuplicate, 308266e564dSmrg 1 /* length */); 309266e564dSmrg 310266e564dSmrg IceWriteData (iceConn, 8, &mOp); 311266e564dSmrg IceFlush (iceConn); 312266e564dSmrg} 313266e564dSmrg 314266e564dSmrg 315266e564dSmrgvoid 316266e564dSmrg_IceErrorUnknownProtocol (iceConn, protocolName) 317266e564dSmrg 318266e564dSmrgIceConn iceConn; 319266e564dSmrgchar *protocolName; 320266e564dSmrg 321266e564dSmrg{ 322266e564dSmrg char *pBuf, *pStart; 323266e564dSmrg int bytes; 324266e564dSmrg 325266e564dSmrg if (!protocolName) 326266e564dSmrg protocolName = ""; 327266e564dSmrg bytes = STRING_BYTES (protocolName); 328266e564dSmrg 329266e564dSmrg IceErrorHeader (iceConn, 330266e564dSmrg 0, ICE_ProtocolSetup, 331266e564dSmrg iceConn->receive_sequence, 332266e564dSmrg IceFatalToProtocol, 333266e564dSmrg IceUnknownProtocol, 334266e564dSmrg WORD64COUNT (bytes)); 335266e564dSmrg 336266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 337266e564dSmrg STORE_STRING (pBuf, protocolName); 338266e564dSmrg 339266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 340266e564dSmrg IceFlush (iceConn); 341266e564dSmrg} 342266e564dSmrg 343266e564dSmrg 344266e564dSmrgvoid 345266e564dSmrg_IceErrorBadMajor (iceConn, offendingMajor, offendingMinor, severity) 346266e564dSmrg 347266e564dSmrgIceConn iceConn; 348266e564dSmrgint offendingMajor; 349266e564dSmrgint offendingMinor; 350266e564dSmrgint severity; 351266e564dSmrg 352266e564dSmrg{ 353266e564dSmrg char maj = (char) offendingMajor; 354266e564dSmrg 355266e564dSmrg IceErrorHeader (iceConn, 356266e564dSmrg 0, offendingMinor, 357266e564dSmrg iceConn->receive_sequence, 358266e564dSmrg severity, 359266e564dSmrg IceBadMajor, 360266e564dSmrg 1 /* length */); 361266e564dSmrg 362266e564dSmrg IceWriteData (iceConn, 8, &maj); 363266e564dSmrg IceFlush (iceConn); 364266e564dSmrg} 365266e564dSmrg 366266e564dSmrg 367266e564dSmrg 368266e564dSmrg/* 369266e564dSmrg * Default error handler. 370266e564dSmrg */ 371266e564dSmrg 372266e564dSmrgvoid 373266e564dSmrg_IceDefaultErrorHandler (iceConn, swap, 374266e564dSmrg offendingMinorOpcode, offendingSequence, errorClass, severity, values) 375266e564dSmrg 376266e564dSmrgIceConn iceConn; 377266e564dSmrgBool swap; 378266e564dSmrgint offendingMinorOpcode; 379266e564dSmrgunsigned long offendingSequence; 380266e564dSmrgint errorClass; 381266e564dSmrgint severity; 382266e564dSmrgIcePointer values; 383266e564dSmrg 384266e564dSmrg{ 385266e564dSmrg char *str; 386266e564dSmrg char *pData = (char *) values; 387266e564dSmrg 388266e564dSmrg switch (offendingMinorOpcode) 389266e564dSmrg { 390266e564dSmrg case ICE_ConnectionSetup: 391266e564dSmrg str = "ConnectionSetup"; 392266e564dSmrg break; 393266e564dSmrg case ICE_AuthRequired: 394266e564dSmrg str = "AuthRequired"; 395266e564dSmrg break; 396266e564dSmrg case ICE_AuthReply: 397266e564dSmrg str = "AuthReply"; 398266e564dSmrg break; 399266e564dSmrg case ICE_AuthNextPhase: 400266e564dSmrg str = "AuthNextPhase"; 401266e564dSmrg break; 402266e564dSmrg case ICE_ConnectionReply: 403266e564dSmrg str = "ConnectionReply"; 404266e564dSmrg break; 405266e564dSmrg case ICE_ProtocolSetup: 406266e564dSmrg str = "ProtocolSetup"; 407266e564dSmrg break; 408266e564dSmrg case ICE_ProtocolReply: 409266e564dSmrg str = "ProtocolReply"; 410266e564dSmrg break; 411266e564dSmrg case ICE_Ping: 412266e564dSmrg str = "Ping"; 413266e564dSmrg break; 414266e564dSmrg case ICE_PingReply: 415266e564dSmrg str = "PingReply"; 416266e564dSmrg break; 417266e564dSmrg case ICE_WantToClose: 418266e564dSmrg str = "WantToClose"; 419266e564dSmrg break; 420266e564dSmrg case ICE_NoClose: 421266e564dSmrg str = "NoClose"; 422266e564dSmrg break; 423266e564dSmrg default: 424266e564dSmrg str = ""; 425266e564dSmrg } 426266e564dSmrg 427266e564dSmrg fprintf (stderr, "\n"); 428266e564dSmrg 429266e564dSmrg fprintf (stderr, "ICE error: Offending minor opcode = %d (%s)\n", 430266e564dSmrg offendingMinorOpcode, str); 431266e564dSmrg 432266e564dSmrg fprintf (stderr, " Offending sequence number = %lu\n", 433266e564dSmrg offendingSequence); 434266e564dSmrg 435266e564dSmrg switch (errorClass) 436266e564dSmrg { 437266e564dSmrg case IceBadMinor: 438266e564dSmrg str = "BadMinor"; 439266e564dSmrg break; 440266e564dSmrg case IceBadState: 441266e564dSmrg str = "BadState"; 442266e564dSmrg break; 443266e564dSmrg case IceBadLength: 444266e564dSmrg str = "BadLength"; 445266e564dSmrg break; 446266e564dSmrg case IceBadValue: 447266e564dSmrg str = "BadValue"; 448266e564dSmrg break; 449266e564dSmrg case IceBadMajor: 450266e564dSmrg str = "BadMajor"; 451266e564dSmrg break; 452266e564dSmrg case IceNoAuth: 453266e564dSmrg str = "NoAuthentication"; 454266e564dSmrg break; 455266e564dSmrg case IceNoVersion: 456266e564dSmrg str = "NoVersion"; 457266e564dSmrg break; 458266e564dSmrg case IceSetupFailed: 459266e564dSmrg str = "SetupFailed"; 460266e564dSmrg break; 461266e564dSmrg case IceAuthRejected: 462266e564dSmrg str = "AuthenticationRejected"; 463266e564dSmrg break; 464266e564dSmrg case IceAuthFailed: 465266e564dSmrg str = "AuthenticationFailed"; 466266e564dSmrg break; 467266e564dSmrg case IceProtocolDuplicate: 468266e564dSmrg str = "ProtocolDuplicate"; 469266e564dSmrg break; 470266e564dSmrg case IceMajorOpcodeDuplicate: 471266e564dSmrg str = "MajorOpcodeDuplicate"; 472266e564dSmrg break; 473266e564dSmrg case IceUnknownProtocol: 474266e564dSmrg str = "UnknownProtocol"; 475266e564dSmrg break; 476266e564dSmrg default: 477266e564dSmrg str = "???"; 478266e564dSmrg } 479266e564dSmrg 480266e564dSmrg fprintf (stderr, " Error class = %s\n", str); 481266e564dSmrg 482266e564dSmrg if (severity == IceCanContinue) 483266e564dSmrg str = "CanContinue"; 484266e564dSmrg else if (severity == IceFatalToProtocol) 485266e564dSmrg str = "FatalToProtocol"; 486266e564dSmrg else if (severity == IceFatalToConnection) 487266e564dSmrg str = "FatalToConnection"; 488266e564dSmrg else 489266e564dSmrg str = "???"; 490266e564dSmrg 491266e564dSmrg fprintf (stderr, " Severity = %s\n", str); 492266e564dSmrg 493266e564dSmrg switch (errorClass) 494266e564dSmrg { 495266e564dSmrg case IceBadValue: 496266e564dSmrg { 497266e564dSmrg int offset, length, val; 498266e564dSmrg 499266e564dSmrg EXTRACT_CARD32 (pData, swap, offset); 500266e564dSmrg EXTRACT_CARD32 (pData, swap, length); 501266e564dSmrg 502266e564dSmrg fprintf (stderr, 503266e564dSmrg " BadValue Offset = %d\n", offset); 504266e564dSmrg fprintf (stderr, 505266e564dSmrg " BadValue Length = %d\n", length); 506266e564dSmrg 507266e564dSmrg if (length <= 4) 508266e564dSmrg { 509266e564dSmrg if (length == 1) 510266e564dSmrg val = (int) *pData; 511266e564dSmrg else if (length == 2) 512266e564dSmrg { 513266e564dSmrg EXTRACT_CARD16 (pData, swap, val); 514266e564dSmrg } 515266e564dSmrg else 516266e564dSmrg { 517266e564dSmrg EXTRACT_CARD32 (pData, swap, val); 518266e564dSmrg } 519266e564dSmrg 520266e564dSmrg fprintf (stderr, 521266e564dSmrg " BadValue = %d\n", val); 522266e564dSmrg } 523266e564dSmrg break; 524266e564dSmrg } 525266e564dSmrg 526266e564dSmrg case IceBadMajor: 527266e564dSmrg 528266e564dSmrg fprintf (stderr, "Major opcode : %d\n", (int) *pData); 529266e564dSmrg break; 530266e564dSmrg 531266e564dSmrg case IceSetupFailed: 532266e564dSmrg 533266e564dSmrg EXTRACT_STRING (pData, swap, str); 534266e564dSmrg fprintf (stderr, "Reason : %s\n", str); 535266e564dSmrg free(str); 536266e564dSmrg break; 537266e564dSmrg 538266e564dSmrg case IceAuthRejected: 539266e564dSmrg 540266e564dSmrg EXTRACT_STRING (pData, swap, str); 541266e564dSmrg fprintf (stderr, "Reason : %s\n", str); 542266e564dSmrg free(str); 543266e564dSmrg break; 544266e564dSmrg 545266e564dSmrg case IceAuthFailed: 546266e564dSmrg 547266e564dSmrg EXTRACT_STRING (pData, swap, str); 548266e564dSmrg fprintf (stderr, "Reason : %s\n", str); 549266e564dSmrg free(str); 550266e564dSmrg break; 551266e564dSmrg 552266e564dSmrg case IceProtocolDuplicate: 553266e564dSmrg 554266e564dSmrg EXTRACT_STRING (pData, swap, str); 555266e564dSmrg fprintf (stderr, "Protocol name : %s\n", str); 556266e564dSmrg free(str); 557266e564dSmrg break; 558266e564dSmrg 559266e564dSmrg case IceMajorOpcodeDuplicate: 560266e564dSmrg 561266e564dSmrg fprintf (stderr, "Major opcode : %d\n", (int) *pData); 562266e564dSmrg break; 563266e564dSmrg 564266e564dSmrg case IceUnknownProtocol: 565266e564dSmrg 566266e564dSmrg EXTRACT_STRING (pData, swap, str); 567266e564dSmrg fprintf (stderr, "Protocol name : %s\n", str); 568266e564dSmrg free(str); 569266e564dSmrg break; 570266e564dSmrg 571266e564dSmrg default: 572266e564dSmrg break; 573266e564dSmrg } 574266e564dSmrg 575266e564dSmrg fprintf (stderr, "\n"); 576266e564dSmrg 577266e564dSmrg if (severity != IceCanContinue) 578266e564dSmrg exit (1); 579266e564dSmrg} 580266e564dSmrg 581266e564dSmrg 582266e564dSmrg 583266e564dSmrg/* 584266e564dSmrg * This procedure sets the ICE error handler to be the specified 585266e564dSmrg * routine. If NULL is passed in the default error handler is restored. 586266e564dSmrg * The function's return value is the previous error handler. 587266e564dSmrg */ 588266e564dSmrg 589266e564dSmrgIceErrorHandler 590266e564dSmrgIceSetErrorHandler (handler) 591266e564dSmrg 592266e564dSmrgIceErrorHandler handler; 593266e564dSmrg 594266e564dSmrg{ 595266e564dSmrg IceErrorHandler oldHandler = _IceErrorHandler; 596266e564dSmrg 597266e564dSmrg if (handler != NULL) 598266e564dSmrg _IceErrorHandler = handler; 599266e564dSmrg else 600266e564dSmrg _IceErrorHandler = _IceDefaultErrorHandler; 601266e564dSmrg 602266e564dSmrg return (oldHandler); 603266e564dSmrg} 604266e564dSmrg 605266e564dSmrg 606266e564dSmrg 607266e564dSmrg/* 608266e564dSmrg * Default IO error handler. 609266e564dSmrg */ 610266e564dSmrg 611266e564dSmrgvoid 612266e564dSmrg_IceDefaultIOErrorHandler (iceConn) 613266e564dSmrg 614266e564dSmrgIceConn iceConn; 615266e564dSmrg 616266e564dSmrg{ 617266e564dSmrg fprintf (stderr, 618266e564dSmrg "ICE default IO error handler doing an exit(), pid = %ld, errno = %d\n", 619266e564dSmrg (long)getpid(), errno); 620266e564dSmrg 621266e564dSmrg exit (1); 622266e564dSmrg} 623266e564dSmrg 624266e564dSmrg 625266e564dSmrg 626266e564dSmrg/* 627266e564dSmrg * This procedure sets the ICE fatal I/O error handler to be the 628266e564dSmrg * specified routine. If NULL is passed in the default error 629266e564dSmrg * handler is restored. The function's return value is the 630266e564dSmrg * previous error handler. 631266e564dSmrg */ 632266e564dSmrg 633266e564dSmrgIceIOErrorHandler 634266e564dSmrgIceSetIOErrorHandler (handler) 635266e564dSmrg 636266e564dSmrgIceIOErrorHandler handler; 637266e564dSmrg 638266e564dSmrg{ 639266e564dSmrg IceIOErrorHandler oldHandler = _IceIOErrorHandler; 640266e564dSmrg 641266e564dSmrg if (handler != NULL) 642266e564dSmrg _IceIOErrorHandler = handler; 643266e564dSmrg else 644266e564dSmrg _IceIOErrorHandler = _IceDefaultIOErrorHandler; 645266e564dSmrg 646266e564dSmrg return (oldHandler); 647266e564dSmrg} 648