error.c revision c5629e66
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 43c5629e66Smrg_IceErrorBadMinor ( 44c5629e66Smrg IceConn iceConn, 45c5629e66Smrg int majorOpcode, 46c5629e66Smrg int offendingMinor, 47c5629e66Smrg int severity 48c5629e66Smrg) 49266e564dSmrg{ 50266e564dSmrg IceErrorHeader (iceConn, 51266e564dSmrg majorOpcode, offendingMinor, 52266e564dSmrg iceConn->receive_sequence, 53266e564dSmrg severity, 54266e564dSmrg IceBadMinor, 55266e564dSmrg 0); 56266e564dSmrg 57266e564dSmrg IceFlush (iceConn); 58266e564dSmrg} 59266e564dSmrg 60266e564dSmrg 61266e564dSmrgvoid 62c5629e66Smrg_IceErrorBadState ( 63c5629e66Smrg IceConn iceConn, 64c5629e66Smrg int majorOpcode, 65c5629e66Smrg int offendingMinor, 66c5629e66Smrg int severity 67c5629e66Smrg) 68266e564dSmrg{ 69266e564dSmrg IceErrorHeader (iceConn, 70266e564dSmrg majorOpcode, offendingMinor, 71266e564dSmrg iceConn->receive_sequence, 72266e564dSmrg severity, 73266e564dSmrg IceBadState, 74266e564dSmrg 0); 75266e564dSmrg 76266e564dSmrg IceFlush (iceConn); 77266e564dSmrg} 78266e564dSmrg 79266e564dSmrg 80266e564dSmrgvoid 81c5629e66Smrg_IceErrorBadLength ( 82c5629e66Smrg IceConn iceConn, 83c5629e66Smrg int majorOpcode, 84c5629e66Smrg int offendingMinor, 85c5629e66Smrg int severity 86c5629e66Smrg) 87266e564dSmrg{ 88266e564dSmrg IceErrorHeader (iceConn, 89266e564dSmrg majorOpcode, offendingMinor, 90266e564dSmrg iceConn->receive_sequence, 91266e564dSmrg severity, 92266e564dSmrg IceBadLength, 93266e564dSmrg 0); 94266e564dSmrg 95266e564dSmrg IceFlush (iceConn); 96266e564dSmrg} 97266e564dSmrg 98266e564dSmrg 99266e564dSmrgvoid 100c5629e66Smrg_IceErrorBadValue ( 101c5629e66Smrg IceConn iceConn, 102c5629e66Smrg int majorOpcode, 103c5629e66Smrg int offendingMinor, 104c5629e66Smrg int offset, 105c5629e66Smrg int length, /* in bytes */ 106c5629e66Smrg IcePointer value 107c5629e66Smrg) 108266e564dSmrg{ 109266e564dSmrg IceErrorHeader (iceConn, 110266e564dSmrg majorOpcode, offendingMinor, 111266e564dSmrg iceConn->receive_sequence, 112266e564dSmrg IceCanContinue, 113266e564dSmrg IceBadValue, 114266e564dSmrg WORD64COUNT (8 + length)); 115266e564dSmrg 116266e564dSmrg IceWriteData32 (iceConn, 4, &offset); 117266e564dSmrg IceWriteData32 (iceConn, 4, &length); 118266e564dSmrg IceWriteData (iceConn, length, (char *) value); 119266e564dSmrg 120266e564dSmrg if (PAD64 (length)) 121266e564dSmrg IceWritePad (iceConn, PAD64 (length)); 122266e564dSmrg 123266e564dSmrg IceFlush (iceConn); 124266e564dSmrg} 125266e564dSmrg 126266e564dSmrg 127266e564dSmrgvoid 128c5629e66Smrg_IceErrorNoAuthentication ( 129c5629e66Smrg IceConn iceConn, 130c5629e66Smrg int offendingMinor 131c5629e66Smrg) 132266e564dSmrg{ 133266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 134266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 135266e564dSmrg 136266e564dSmrg IceErrorHeader (iceConn, 137266e564dSmrg 0, offendingMinor, 138266e564dSmrg iceConn->receive_sequence, 139266e564dSmrg severity, 140266e564dSmrg IceNoAuth, 141266e564dSmrg 0); 142266e564dSmrg 143266e564dSmrg IceFlush (iceConn); 144266e564dSmrg} 145266e564dSmrg 146266e564dSmrg 147266e564dSmrgvoid 148c5629e66Smrg_IceErrorNoVersion ( 149c5629e66Smrg IceConn iceConn, 150c5629e66Smrg int offendingMinor 151c5629e66Smrg) 152266e564dSmrg{ 153266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 154266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 155266e564dSmrg 156266e564dSmrg IceErrorHeader (iceConn, 157266e564dSmrg 0, offendingMinor, 158266e564dSmrg iceConn->receive_sequence, 159266e564dSmrg severity, 160266e564dSmrg IceNoVersion, 161266e564dSmrg 0); 162266e564dSmrg 163266e564dSmrg IceFlush (iceConn); 164266e564dSmrg} 165266e564dSmrg 166266e564dSmrg 167266e564dSmrgvoid 168c5629e66Smrg_IceErrorSetupFailed ( 169c5629e66Smrg IceConn iceConn, 170c5629e66Smrg int offendingMinor, 171c5629e66Smrg char *reason 172c5629e66Smrg) 173266e564dSmrg{ 174266e564dSmrg char *pBuf, *pStart; 175266e564dSmrg int bytes; 176266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 177266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 178266e564dSmrg 179266e564dSmrg if (!reason) 180266e564dSmrg reason = ""; 181266e564dSmrg bytes = STRING_BYTES (reason); 182266e564dSmrg 183266e564dSmrg IceErrorHeader (iceConn, 184266e564dSmrg 0, offendingMinor, 185266e564dSmrg iceConn->receive_sequence, 186266e564dSmrg severity, 187266e564dSmrg IceSetupFailed, 188266e564dSmrg WORD64COUNT (bytes)); 189266e564dSmrg 190266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 191266e564dSmrg STORE_STRING (pBuf, reason); 192266e564dSmrg 193266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 194266e564dSmrg IceFlush (iceConn); 195266e564dSmrg} 196266e564dSmrg 197266e564dSmrg 198266e564dSmrgvoid 199c5629e66Smrg_IceErrorAuthenticationRejected ( 200c5629e66Smrg IceConn iceConn, 201c5629e66Smrg int offendingMinor, 202c5629e66Smrg char *reason 203c5629e66Smrg) 204266e564dSmrg{ 205266e564dSmrg char *pBuf, *pStart; 206266e564dSmrg int bytes; 207266e564dSmrg 208266e564dSmrg if (!reason) 209266e564dSmrg reason = ""; 210266e564dSmrg bytes = STRING_BYTES (reason); 211266e564dSmrg 212266e564dSmrg IceErrorHeader (iceConn, 213266e564dSmrg 0, offendingMinor, 214266e564dSmrg iceConn->receive_sequence, 215266e564dSmrg IceFatalToProtocol, 216266e564dSmrg IceAuthRejected, 217266e564dSmrg WORD64COUNT (bytes)); 218266e564dSmrg 219266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 220266e564dSmrg STORE_STRING (pBuf, reason); 221266e564dSmrg 222266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 223266e564dSmrg IceFlush (iceConn); 224266e564dSmrg} 225266e564dSmrg 226266e564dSmrg 227266e564dSmrgvoid 228c5629e66Smrg_IceErrorAuthenticationFailed ( 229c5629e66Smrg IceConn iceConn, 230c5629e66Smrg int offendingMinor, 231c5629e66Smrg char *reason 232c5629e66Smrg) 233266e564dSmrg{ 234266e564dSmrg char *pBuf, *pStart; 235266e564dSmrg int bytes; 236266e564dSmrg 237266e564dSmrg if (!reason) 238266e564dSmrg reason = ""; 239266e564dSmrg bytes = STRING_BYTES (reason); 240266e564dSmrg 241266e564dSmrg IceErrorHeader (iceConn, 242266e564dSmrg 0, offendingMinor, 243266e564dSmrg iceConn->receive_sequence, 244266e564dSmrg IceFatalToProtocol, 245266e564dSmrg IceAuthFailed, 246266e564dSmrg WORD64COUNT (bytes)); 247266e564dSmrg 248266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 249266e564dSmrg STORE_STRING (pBuf, reason); 250266e564dSmrg 251266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 252266e564dSmrg IceFlush (iceConn); 253266e564dSmrg} 254266e564dSmrg 255266e564dSmrg 256266e564dSmrgvoid 257c5629e66Smrg_IceErrorProtocolDuplicate ( 258c5629e66Smrg IceConn iceConn, 259c5629e66Smrg char *protocolName 260c5629e66Smrg) 261266e564dSmrg{ 262266e564dSmrg char *pBuf, *pStart; 263266e564dSmrg int bytes; 264266e564dSmrg 265266e564dSmrg if (!protocolName) 266266e564dSmrg protocolName = ""; 267266e564dSmrg bytes = STRING_BYTES (protocolName); 268266e564dSmrg 269266e564dSmrg IceErrorHeader (iceConn, 270266e564dSmrg 0, ICE_ProtocolSetup, 271266e564dSmrg iceConn->receive_sequence, 272266e564dSmrg IceFatalToProtocol, 273266e564dSmrg IceProtocolDuplicate, 274266e564dSmrg WORD64COUNT (bytes)); 275266e564dSmrg 276266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 277266e564dSmrg STORE_STRING (pBuf, protocolName); 278266e564dSmrg 279266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 280266e564dSmrg IceFlush (iceConn); 281266e564dSmrg} 282266e564dSmrg 283266e564dSmrg 284266e564dSmrgvoid 285c5629e66Smrg_IceErrorMajorOpcodeDuplicate ( 286c5629e66Smrg IceConn iceConn, 287c5629e66Smrg int majorOpcode 288c5629e66Smrg) 289266e564dSmrg{ 290266e564dSmrg char mOp = (char) majorOpcode; 291266e564dSmrg 292266e564dSmrg IceErrorHeader (iceConn, 293266e564dSmrg 0, ICE_ProtocolSetup, 294266e564dSmrg iceConn->receive_sequence, 295266e564dSmrg IceFatalToProtocol, 296266e564dSmrg IceMajorOpcodeDuplicate, 297266e564dSmrg 1 /* length */); 298266e564dSmrg 299266e564dSmrg IceWriteData (iceConn, 8, &mOp); 300266e564dSmrg IceFlush (iceConn); 301266e564dSmrg} 302266e564dSmrg 303266e564dSmrg 304266e564dSmrgvoid 305c5629e66Smrg_IceErrorUnknownProtocol ( 306c5629e66Smrg IceConn iceConn, 307c5629e66Smrg char *protocolName 308c5629e66Smrg) 309266e564dSmrg{ 310266e564dSmrg char *pBuf, *pStart; 311266e564dSmrg int bytes; 312266e564dSmrg 313266e564dSmrg if (!protocolName) 314266e564dSmrg protocolName = ""; 315266e564dSmrg bytes = STRING_BYTES (protocolName); 316266e564dSmrg 317266e564dSmrg IceErrorHeader (iceConn, 318266e564dSmrg 0, ICE_ProtocolSetup, 319266e564dSmrg iceConn->receive_sequence, 320266e564dSmrg IceFatalToProtocol, 321266e564dSmrg IceUnknownProtocol, 322266e564dSmrg WORD64COUNT (bytes)); 323266e564dSmrg 324266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 325266e564dSmrg STORE_STRING (pBuf, protocolName); 326266e564dSmrg 327266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 328266e564dSmrg IceFlush (iceConn); 329266e564dSmrg} 330266e564dSmrg 331266e564dSmrg 332266e564dSmrgvoid 333c5629e66Smrg_IceErrorBadMajor ( 334c5629e66Smrg IceConn iceConn, 335c5629e66Smrg int offendingMajor, 336c5629e66Smrg int offendingMinor, 337c5629e66Smrg int severity 338c5629e66Smrg) 339266e564dSmrg{ 340266e564dSmrg char maj = (char) offendingMajor; 341266e564dSmrg 342266e564dSmrg IceErrorHeader (iceConn, 343266e564dSmrg 0, offendingMinor, 344266e564dSmrg iceConn->receive_sequence, 345266e564dSmrg severity, 346266e564dSmrg IceBadMajor, 347266e564dSmrg 1 /* length */); 348266e564dSmrg 349266e564dSmrg IceWriteData (iceConn, 8, &maj); 350266e564dSmrg IceFlush (iceConn); 351266e564dSmrg} 352266e564dSmrg 353266e564dSmrg 354266e564dSmrg 355266e564dSmrg/* 356266e564dSmrg * Default error handler. 357266e564dSmrg */ 358266e564dSmrg 359c5629e66Smrgstatic void 360c5629e66Smrg_IceDefaultErrorHandler ( 361c5629e66Smrg IceConn iceConn, 362c5629e66Smrg Bool swap, 363c5629e66Smrg int offendingMinorOpcode, 364c5629e66Smrg unsigned long offendingSequence, 365c5629e66Smrg int errorClass, 366c5629e66Smrg int severity, 367c5629e66Smrg IcePointer values 368c5629e66Smrg) 369266e564dSmrg{ 370266e564dSmrg char *str; 371266e564dSmrg char *pData = (char *) values; 372266e564dSmrg 373266e564dSmrg switch (offendingMinorOpcode) 374266e564dSmrg { 375266e564dSmrg case ICE_ConnectionSetup: 376266e564dSmrg str = "ConnectionSetup"; 377266e564dSmrg break; 378266e564dSmrg case ICE_AuthRequired: 379266e564dSmrg str = "AuthRequired"; 380266e564dSmrg break; 381266e564dSmrg case ICE_AuthReply: 382266e564dSmrg str = "AuthReply"; 383266e564dSmrg break; 384266e564dSmrg case ICE_AuthNextPhase: 385266e564dSmrg str = "AuthNextPhase"; 386266e564dSmrg break; 387266e564dSmrg case ICE_ConnectionReply: 388266e564dSmrg str = "ConnectionReply"; 389266e564dSmrg break; 390266e564dSmrg case ICE_ProtocolSetup: 391266e564dSmrg str = "ProtocolSetup"; 392266e564dSmrg break; 393266e564dSmrg case ICE_ProtocolReply: 394266e564dSmrg str = "ProtocolReply"; 395266e564dSmrg break; 396266e564dSmrg case ICE_Ping: 397266e564dSmrg str = "Ping"; 398266e564dSmrg break; 399266e564dSmrg case ICE_PingReply: 400266e564dSmrg str = "PingReply"; 401266e564dSmrg break; 402266e564dSmrg case ICE_WantToClose: 403266e564dSmrg str = "WantToClose"; 404266e564dSmrg break; 405266e564dSmrg case ICE_NoClose: 406266e564dSmrg str = "NoClose"; 407266e564dSmrg break; 408266e564dSmrg default: 409266e564dSmrg str = ""; 410266e564dSmrg } 411266e564dSmrg 412266e564dSmrg fprintf (stderr, "\n"); 413266e564dSmrg 414266e564dSmrg fprintf (stderr, "ICE error: Offending minor opcode = %d (%s)\n", 415266e564dSmrg offendingMinorOpcode, str); 416266e564dSmrg 417266e564dSmrg fprintf (stderr, " Offending sequence number = %lu\n", 418266e564dSmrg offendingSequence); 419266e564dSmrg 420266e564dSmrg switch (errorClass) 421266e564dSmrg { 422266e564dSmrg case IceBadMinor: 423266e564dSmrg str = "BadMinor"; 424266e564dSmrg break; 425266e564dSmrg case IceBadState: 426266e564dSmrg str = "BadState"; 427266e564dSmrg break; 428266e564dSmrg case IceBadLength: 429266e564dSmrg str = "BadLength"; 430266e564dSmrg break; 431266e564dSmrg case IceBadValue: 432266e564dSmrg str = "BadValue"; 433266e564dSmrg break; 434266e564dSmrg case IceBadMajor: 435266e564dSmrg str = "BadMajor"; 436266e564dSmrg break; 437266e564dSmrg case IceNoAuth: 438266e564dSmrg str = "NoAuthentication"; 439266e564dSmrg break; 440266e564dSmrg case IceNoVersion: 441266e564dSmrg str = "NoVersion"; 442266e564dSmrg break; 443266e564dSmrg case IceSetupFailed: 444266e564dSmrg str = "SetupFailed"; 445266e564dSmrg break; 446266e564dSmrg case IceAuthRejected: 447266e564dSmrg str = "AuthenticationRejected"; 448266e564dSmrg break; 449266e564dSmrg case IceAuthFailed: 450266e564dSmrg str = "AuthenticationFailed"; 451266e564dSmrg break; 452266e564dSmrg case IceProtocolDuplicate: 453266e564dSmrg str = "ProtocolDuplicate"; 454266e564dSmrg break; 455266e564dSmrg case IceMajorOpcodeDuplicate: 456266e564dSmrg str = "MajorOpcodeDuplicate"; 457266e564dSmrg break; 458266e564dSmrg case IceUnknownProtocol: 459266e564dSmrg str = "UnknownProtocol"; 460266e564dSmrg break; 461266e564dSmrg default: 462266e564dSmrg str = "???"; 463266e564dSmrg } 464266e564dSmrg 465266e564dSmrg fprintf (stderr, " Error class = %s\n", str); 466266e564dSmrg 467266e564dSmrg if (severity == IceCanContinue) 468266e564dSmrg str = "CanContinue"; 469266e564dSmrg else if (severity == IceFatalToProtocol) 470266e564dSmrg str = "FatalToProtocol"; 471266e564dSmrg else if (severity == IceFatalToConnection) 472266e564dSmrg str = "FatalToConnection"; 473266e564dSmrg else 474266e564dSmrg str = "???"; 475266e564dSmrg 476266e564dSmrg fprintf (stderr, " Severity = %s\n", str); 477266e564dSmrg 478266e564dSmrg switch (errorClass) 479266e564dSmrg { 480266e564dSmrg case IceBadValue: 481266e564dSmrg { 482266e564dSmrg int offset, length, val; 483266e564dSmrg 484266e564dSmrg EXTRACT_CARD32 (pData, swap, offset); 485266e564dSmrg EXTRACT_CARD32 (pData, swap, length); 486266e564dSmrg 487266e564dSmrg fprintf (stderr, 488266e564dSmrg " BadValue Offset = %d\n", offset); 489266e564dSmrg fprintf (stderr, 490266e564dSmrg " BadValue Length = %d\n", length); 491266e564dSmrg 492266e564dSmrg if (length <= 4) 493266e564dSmrg { 494266e564dSmrg if (length == 1) 495266e564dSmrg val = (int) *pData; 496266e564dSmrg else if (length == 2) 497266e564dSmrg { 498266e564dSmrg EXTRACT_CARD16 (pData, swap, val); 499266e564dSmrg } 500266e564dSmrg else 501266e564dSmrg { 502266e564dSmrg EXTRACT_CARD32 (pData, swap, val); 503266e564dSmrg } 504266e564dSmrg 505266e564dSmrg fprintf (stderr, 506266e564dSmrg " BadValue = %d\n", val); 507266e564dSmrg } 508266e564dSmrg break; 509266e564dSmrg } 510266e564dSmrg 511266e564dSmrg case IceBadMajor: 512266e564dSmrg 513266e564dSmrg fprintf (stderr, "Major opcode : %d\n", (int) *pData); 514266e564dSmrg break; 515266e564dSmrg 516266e564dSmrg case IceSetupFailed: 517266e564dSmrg 518266e564dSmrg EXTRACT_STRING (pData, swap, str); 519266e564dSmrg fprintf (stderr, "Reason : %s\n", str); 520266e564dSmrg free(str); 521266e564dSmrg break; 522266e564dSmrg 523266e564dSmrg case IceAuthRejected: 524266e564dSmrg 525266e564dSmrg EXTRACT_STRING (pData, swap, str); 526266e564dSmrg fprintf (stderr, "Reason : %s\n", str); 527266e564dSmrg free(str); 528266e564dSmrg break; 529266e564dSmrg 530266e564dSmrg case IceAuthFailed: 531266e564dSmrg 532266e564dSmrg EXTRACT_STRING (pData, swap, str); 533266e564dSmrg fprintf (stderr, "Reason : %s\n", str); 534266e564dSmrg free(str); 535266e564dSmrg break; 536266e564dSmrg 537266e564dSmrg case IceProtocolDuplicate: 538266e564dSmrg 539266e564dSmrg EXTRACT_STRING (pData, swap, str); 540266e564dSmrg fprintf (stderr, "Protocol name : %s\n", str); 541266e564dSmrg free(str); 542266e564dSmrg break; 543266e564dSmrg 544266e564dSmrg case IceMajorOpcodeDuplicate: 545266e564dSmrg 546266e564dSmrg fprintf (stderr, "Major opcode : %d\n", (int) *pData); 547266e564dSmrg break; 548266e564dSmrg 549266e564dSmrg case IceUnknownProtocol: 550266e564dSmrg 551266e564dSmrg EXTRACT_STRING (pData, swap, str); 552266e564dSmrg fprintf (stderr, "Protocol name : %s\n", str); 553266e564dSmrg free(str); 554266e564dSmrg break; 555266e564dSmrg 556266e564dSmrg default: 557266e564dSmrg break; 558266e564dSmrg } 559266e564dSmrg 560266e564dSmrg fprintf (stderr, "\n"); 561266e564dSmrg 562266e564dSmrg if (severity != IceCanContinue) 563266e564dSmrg exit (1); 564266e564dSmrg} 565266e564dSmrg 566c5629e66SmrgIceErrorHandler _IceErrorHandler = _IceDefaultErrorHandler; 567266e564dSmrg 568266e564dSmrg 569266e564dSmrg/* 570266e564dSmrg * This procedure sets the ICE error handler to be the specified 571266e564dSmrg * routine. If NULL is passed in the default error handler is restored. 572266e564dSmrg * The function's return value is the previous error handler. 573266e564dSmrg */ 574266e564dSmrg 575266e564dSmrgIceErrorHandler 576c5629e66SmrgIceSetErrorHandler ( 577c5629e66Smrg IceErrorHandler handler 578c5629e66Smrg) 579266e564dSmrg{ 580266e564dSmrg IceErrorHandler oldHandler = _IceErrorHandler; 581266e564dSmrg 582266e564dSmrg if (handler != NULL) 583266e564dSmrg _IceErrorHandler = handler; 584266e564dSmrg else 585266e564dSmrg _IceErrorHandler = _IceDefaultErrorHandler; 586266e564dSmrg 587266e564dSmrg return (oldHandler); 588266e564dSmrg} 589266e564dSmrg 590266e564dSmrg 591266e564dSmrg 592266e564dSmrg/* 593266e564dSmrg * Default IO error handler. 594266e564dSmrg */ 595266e564dSmrg 596c5629e66Smrgstatic void 597c5629e66Smrg_IceDefaultIOErrorHandler ( 598c5629e66Smrg IceConn iceConn 599c5629e66Smrg) 600266e564dSmrg{ 601266e564dSmrg fprintf (stderr, 602266e564dSmrg "ICE default IO error handler doing an exit(), pid = %ld, errno = %d\n", 603266e564dSmrg (long)getpid(), errno); 604266e564dSmrg 605266e564dSmrg exit (1); 606266e564dSmrg} 607266e564dSmrg 608c5629e66SmrgIceIOErrorHandler _IceIOErrorHandler = _IceDefaultIOErrorHandler; 609266e564dSmrg 610266e564dSmrg 611266e564dSmrg/* 612266e564dSmrg * This procedure sets the ICE fatal I/O error handler to be the 613266e564dSmrg * specified routine. If NULL is passed in the default error 614266e564dSmrg * handler is restored. The function's return value is the 615266e564dSmrg * previous error handler. 616266e564dSmrg */ 617266e564dSmrg 618266e564dSmrgIceIOErrorHandler 619c5629e66SmrgIceSetIOErrorHandler ( 620c5629e66Smrg IceIOErrorHandler handler 621c5629e66Smrg) 622266e564dSmrg{ 623266e564dSmrg IceIOErrorHandler oldHandler = _IceIOErrorHandler; 624266e564dSmrg 625266e564dSmrg if (handler != NULL) 626266e564dSmrg _IceIOErrorHandler = handler; 627266e564dSmrg else 628266e564dSmrg _IceIOErrorHandler = _IceDefaultIOErrorHandler; 629266e564dSmrg 630266e564dSmrg return (oldHandler); 631266e564dSmrg} 632