error.c revision 9ef0b394
1266e564dSmrg/****************************************************************************** 2266e564dSmrg 3266e564dSmrg 4266e564dSmrgCopyright 1993, 1998 The Open Group 5266e564dSmrg 6266e564dSmrgPermission to use, copy, modify, distribute, and sell this software and its 7266e564dSmrgdocumentation for any purpose is hereby granted without fee, provided that 8266e564dSmrgthe above copyright notice appear in all copies and that both that 9266e564dSmrgcopyright notice and this permission notice appear in supporting 10266e564dSmrgdocumentation. 11266e564dSmrg 12266e564dSmrgThe above copyright notice and this permission notice shall be included in 13266e564dSmrgall copies or substantial portions of the Software. 14266e564dSmrg 15266e564dSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16266e564dSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17266e564dSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18266e564dSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 19266e564dSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20266e564dSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21266e564dSmrg 22266e564dSmrgExcept as contained in this notice, the name of The Open Group shall not be 23266e564dSmrgused in advertising or otherwise to promote the sale, use or other dealings 24266e564dSmrgin this Software without prior written authorization from The Open Group. 25266e564dSmrg 26266e564dSmrgAuthor: Ralph Mor, X Consortium 27266e564dSmrg******************************************************************************/ 28266e564dSmrg 29266e564dSmrg#ifdef HAVE_CONFIG_H 30266e564dSmrg#include <config.h> 31266e564dSmrg#endif 32266e564dSmrg#include <X11/ICE/ICElib.h> 33266e564dSmrg#include "ICElibint.h" 34266e564dSmrg#include <stdio.h> 35266e564dSmrg 36266e564dSmrg#include <errno.h> 37266e564dSmrg 38266e564dSmrg 39266e564dSmrgvoid 40c5629e66Smrg_IceErrorBadMinor ( 41c5629e66Smrg IceConn iceConn, 42c5629e66Smrg int majorOpcode, 43c5629e66Smrg int offendingMinor, 44c5629e66Smrg int severity 45c5629e66Smrg) 46266e564dSmrg{ 47266e564dSmrg IceErrorHeader (iceConn, 48266e564dSmrg majorOpcode, offendingMinor, 49266e564dSmrg iceConn->receive_sequence, 50266e564dSmrg severity, 51266e564dSmrg IceBadMinor, 52266e564dSmrg 0); 53266e564dSmrg 54266e564dSmrg IceFlush (iceConn); 55266e564dSmrg} 56266e564dSmrg 57266e564dSmrg 58266e564dSmrgvoid 59c5629e66Smrg_IceErrorBadState ( 60c5629e66Smrg IceConn iceConn, 61c5629e66Smrg int majorOpcode, 62c5629e66Smrg int offendingMinor, 63c5629e66Smrg int severity 64c5629e66Smrg) 65266e564dSmrg{ 66266e564dSmrg IceErrorHeader (iceConn, 67266e564dSmrg majorOpcode, offendingMinor, 68266e564dSmrg iceConn->receive_sequence, 69266e564dSmrg severity, 70266e564dSmrg IceBadState, 71266e564dSmrg 0); 72266e564dSmrg 73266e564dSmrg IceFlush (iceConn); 74266e564dSmrg} 75266e564dSmrg 76266e564dSmrg 77266e564dSmrgvoid 78c5629e66Smrg_IceErrorBadLength ( 79c5629e66Smrg IceConn iceConn, 80c5629e66Smrg int majorOpcode, 81c5629e66Smrg int offendingMinor, 82c5629e66Smrg int severity 83c5629e66Smrg) 84266e564dSmrg{ 85266e564dSmrg IceErrorHeader (iceConn, 86266e564dSmrg majorOpcode, offendingMinor, 87266e564dSmrg iceConn->receive_sequence, 88266e564dSmrg severity, 89266e564dSmrg IceBadLength, 90266e564dSmrg 0); 91266e564dSmrg 92266e564dSmrg IceFlush (iceConn); 93266e564dSmrg} 94266e564dSmrg 95266e564dSmrg 96266e564dSmrgvoid 97c5629e66Smrg_IceErrorBadValue ( 98c5629e66Smrg IceConn iceConn, 99c5629e66Smrg int majorOpcode, 100c5629e66Smrg int offendingMinor, 101c5629e66Smrg int offset, 102c5629e66Smrg int length, /* in bytes */ 103c5629e66Smrg IcePointer value 104c5629e66Smrg) 105266e564dSmrg{ 106266e564dSmrg IceErrorHeader (iceConn, 107266e564dSmrg majorOpcode, offendingMinor, 108266e564dSmrg iceConn->receive_sequence, 109266e564dSmrg IceCanContinue, 110266e564dSmrg IceBadValue, 111266e564dSmrg WORD64COUNT (8 + length)); 112266e564dSmrg 113266e564dSmrg IceWriteData32 (iceConn, 4, &offset); 114266e564dSmrg IceWriteData32 (iceConn, 4, &length); 115266e564dSmrg IceWriteData (iceConn, length, (char *) value); 116266e564dSmrg 117266e564dSmrg if (PAD64 (length)) 118266e564dSmrg IceWritePad (iceConn, PAD64 (length)); 1199ef0b394Smrg 120266e564dSmrg IceFlush (iceConn); 121266e564dSmrg} 122266e564dSmrg 123266e564dSmrg 124266e564dSmrgvoid 125c5629e66Smrg_IceErrorNoAuthentication ( 126c5629e66Smrg IceConn iceConn, 127c5629e66Smrg int offendingMinor 128c5629e66Smrg) 129266e564dSmrg{ 130266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 131266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 132266e564dSmrg 133266e564dSmrg IceErrorHeader (iceConn, 134266e564dSmrg 0, offendingMinor, 135266e564dSmrg iceConn->receive_sequence, 136266e564dSmrg severity, 137266e564dSmrg IceNoAuth, 138266e564dSmrg 0); 139266e564dSmrg 140266e564dSmrg IceFlush (iceConn); 141266e564dSmrg} 142266e564dSmrg 143266e564dSmrg 144266e564dSmrgvoid 145c5629e66Smrg_IceErrorNoVersion ( 146c5629e66Smrg IceConn iceConn, 147c5629e66Smrg int offendingMinor 148c5629e66Smrg) 149266e564dSmrg{ 150266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 151266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 152266e564dSmrg 153266e564dSmrg IceErrorHeader (iceConn, 154266e564dSmrg 0, offendingMinor, 155266e564dSmrg iceConn->receive_sequence, 156266e564dSmrg severity, 157266e564dSmrg IceNoVersion, 158266e564dSmrg 0); 159266e564dSmrg 160266e564dSmrg IceFlush (iceConn); 161266e564dSmrg} 162266e564dSmrg 163266e564dSmrg 164266e564dSmrgvoid 165c5629e66Smrg_IceErrorSetupFailed ( 166c5629e66Smrg IceConn iceConn, 167c5629e66Smrg int offendingMinor, 1689ef0b394Smrg const char *reason 169c5629e66Smrg) 170266e564dSmrg{ 171266e564dSmrg char *pBuf, *pStart; 172266e564dSmrg int bytes; 173266e564dSmrg int severity = (offendingMinor == ICE_ConnectionSetup) ? 174266e564dSmrg IceFatalToConnection : IceFatalToProtocol; 175266e564dSmrg 176266e564dSmrg if (!reason) 177266e564dSmrg reason = ""; 178266e564dSmrg bytes = STRING_BYTES (reason); 179266e564dSmrg 180266e564dSmrg IceErrorHeader (iceConn, 181266e564dSmrg 0, offendingMinor, 182266e564dSmrg iceConn->receive_sequence, 183266e564dSmrg severity, 184266e564dSmrg IceSetupFailed, 185266e564dSmrg WORD64COUNT (bytes)); 186266e564dSmrg 187266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 188266e564dSmrg STORE_STRING (pBuf, reason); 189266e564dSmrg 190266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 191266e564dSmrg IceFlush (iceConn); 192266e564dSmrg} 193266e564dSmrg 194266e564dSmrg 195266e564dSmrgvoid 196c5629e66Smrg_IceErrorAuthenticationRejected ( 197c5629e66Smrg IceConn iceConn, 198c5629e66Smrg int offendingMinor, 1999ef0b394Smrg const char *reason 200c5629e66Smrg) 201266e564dSmrg{ 202266e564dSmrg char *pBuf, *pStart; 203266e564dSmrg int bytes; 204266e564dSmrg 205266e564dSmrg if (!reason) 206266e564dSmrg reason = ""; 207266e564dSmrg bytes = STRING_BYTES (reason); 208266e564dSmrg 209266e564dSmrg IceErrorHeader (iceConn, 210266e564dSmrg 0, offendingMinor, 211266e564dSmrg iceConn->receive_sequence, 212266e564dSmrg IceFatalToProtocol, 213266e564dSmrg IceAuthRejected, 214266e564dSmrg WORD64COUNT (bytes)); 215266e564dSmrg 216266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 217266e564dSmrg STORE_STRING (pBuf, reason); 218266e564dSmrg 219266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 220266e564dSmrg IceFlush (iceConn); 221266e564dSmrg} 222266e564dSmrg 223266e564dSmrg 224266e564dSmrgvoid 225c5629e66Smrg_IceErrorAuthenticationFailed ( 226c5629e66Smrg IceConn iceConn, 227c5629e66Smrg int offendingMinor, 2289ef0b394Smrg const char *reason 229c5629e66Smrg) 230266e564dSmrg{ 231266e564dSmrg char *pBuf, *pStart; 232266e564dSmrg int bytes; 233266e564dSmrg 234266e564dSmrg if (!reason) 235266e564dSmrg reason = ""; 236266e564dSmrg bytes = STRING_BYTES (reason); 237266e564dSmrg 238266e564dSmrg IceErrorHeader (iceConn, 239266e564dSmrg 0, offendingMinor, 240266e564dSmrg iceConn->receive_sequence, 241266e564dSmrg IceFatalToProtocol, 242266e564dSmrg IceAuthFailed, 243266e564dSmrg WORD64COUNT (bytes)); 244266e564dSmrg 245266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 246266e564dSmrg STORE_STRING (pBuf, reason); 247266e564dSmrg 248266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 249266e564dSmrg IceFlush (iceConn); 250266e564dSmrg} 251266e564dSmrg 252266e564dSmrg 253266e564dSmrgvoid 254c5629e66Smrg_IceErrorProtocolDuplicate ( 255c5629e66Smrg IceConn iceConn, 2569ef0b394Smrg const char *protocolName 257c5629e66Smrg) 258266e564dSmrg{ 259266e564dSmrg char *pBuf, *pStart; 260266e564dSmrg int bytes; 261266e564dSmrg 262266e564dSmrg if (!protocolName) 263266e564dSmrg protocolName = ""; 264266e564dSmrg bytes = STRING_BYTES (protocolName); 265266e564dSmrg 266266e564dSmrg IceErrorHeader (iceConn, 267266e564dSmrg 0, ICE_ProtocolSetup, 268266e564dSmrg iceConn->receive_sequence, 269266e564dSmrg IceFatalToProtocol, 270266e564dSmrg IceProtocolDuplicate, 271266e564dSmrg WORD64COUNT (bytes)); 272266e564dSmrg 273266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 274266e564dSmrg STORE_STRING (pBuf, protocolName); 275266e564dSmrg 276266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 277266e564dSmrg IceFlush (iceConn); 278266e564dSmrg} 279266e564dSmrg 280266e564dSmrg 281266e564dSmrgvoid 282c5629e66Smrg_IceErrorMajorOpcodeDuplicate ( 283c5629e66Smrg IceConn iceConn, 284c5629e66Smrg int majorOpcode 285c5629e66Smrg) 286266e564dSmrg{ 2879ef0b394Smrg char mOp[8] = { (char) majorOpcode }; 288266e564dSmrg 289266e564dSmrg IceErrorHeader (iceConn, 290266e564dSmrg 0, ICE_ProtocolSetup, 291266e564dSmrg iceConn->receive_sequence, 292266e564dSmrg IceFatalToProtocol, 293266e564dSmrg IceMajorOpcodeDuplicate, 294266e564dSmrg 1 /* length */); 295266e564dSmrg 2969ef0b394Smrg IceWriteData (iceConn, 8, mOp); 297266e564dSmrg IceFlush (iceConn); 298266e564dSmrg} 299266e564dSmrg 300266e564dSmrg 301266e564dSmrgvoid 302c5629e66Smrg_IceErrorUnknownProtocol ( 303c5629e66Smrg IceConn iceConn, 3049ef0b394Smrg const char *protocolName 305c5629e66Smrg) 306266e564dSmrg{ 307266e564dSmrg char *pBuf, *pStart; 308266e564dSmrg int bytes; 309266e564dSmrg 310266e564dSmrg if (!protocolName) 311266e564dSmrg protocolName = ""; 312266e564dSmrg bytes = STRING_BYTES (protocolName); 313266e564dSmrg 314266e564dSmrg IceErrorHeader (iceConn, 315266e564dSmrg 0, ICE_ProtocolSetup, 316266e564dSmrg iceConn->receive_sequence, 317266e564dSmrg IceFatalToProtocol, 318266e564dSmrg IceUnknownProtocol, 319266e564dSmrg WORD64COUNT (bytes)); 320266e564dSmrg 321266e564dSmrg pBuf = pStart = IceAllocScratch (iceConn, PADDED_BYTES64 (bytes)); 322266e564dSmrg STORE_STRING (pBuf, protocolName); 323266e564dSmrg 324266e564dSmrg IceWriteData (iceConn, PADDED_BYTES64 (bytes), pStart); 325266e564dSmrg IceFlush (iceConn); 326266e564dSmrg} 327266e564dSmrg 328266e564dSmrg 329266e564dSmrgvoid 330c5629e66Smrg_IceErrorBadMajor ( 331c5629e66Smrg IceConn iceConn, 332c5629e66Smrg int offendingMajor, 333c5629e66Smrg int offendingMinor, 334c5629e66Smrg int severity 335c5629e66Smrg) 336266e564dSmrg{ 3379ef0b394Smrg char maj[8] = { (char) offendingMajor }; 338266e564dSmrg 339266e564dSmrg IceErrorHeader (iceConn, 340266e564dSmrg 0, offendingMinor, 341266e564dSmrg iceConn->receive_sequence, 342266e564dSmrg severity, 343266e564dSmrg IceBadMajor, 344266e564dSmrg 1 /* length */); 345266e564dSmrg 3469ef0b394Smrg IceWriteData (iceConn, 8, maj); 347266e564dSmrg IceFlush (iceConn); 348266e564dSmrg} 349266e564dSmrg 350266e564dSmrg 351266e564dSmrg 352266e564dSmrg/* 353266e564dSmrg * Default error handler. 354266e564dSmrg */ 355266e564dSmrg 356c5629e66Smrgstatic void 357c5629e66Smrg_IceDefaultErrorHandler ( 358c5629e66Smrg IceConn iceConn, 359c5629e66Smrg Bool swap, 360c5629e66Smrg int offendingMinorOpcode, 361c5629e66Smrg unsigned long offendingSequence, 362c5629e66Smrg int errorClass, 363c5629e66Smrg int severity, 364c5629e66Smrg IcePointer values 365c5629e66Smrg) 366266e564dSmrg{ 3679ef0b394Smrg const char *str; 3689ef0b394Smrg char *estr; 369266e564dSmrg char *pData = (char *) values; 370266e564dSmrg 371266e564dSmrg switch (offendingMinorOpcode) 372266e564dSmrg { 373266e564dSmrg case ICE_ConnectionSetup: 374266e564dSmrg str = "ConnectionSetup"; 375266e564dSmrg break; 376266e564dSmrg case ICE_AuthRequired: 377266e564dSmrg str = "AuthRequired"; 378266e564dSmrg break; 379266e564dSmrg case ICE_AuthReply: 380266e564dSmrg str = "AuthReply"; 381266e564dSmrg break; 382266e564dSmrg case ICE_AuthNextPhase: 383266e564dSmrg str = "AuthNextPhase"; 384266e564dSmrg break; 385266e564dSmrg case ICE_ConnectionReply: 386266e564dSmrg str = "ConnectionReply"; 387266e564dSmrg break; 388266e564dSmrg case ICE_ProtocolSetup: 389266e564dSmrg str = "ProtocolSetup"; 390266e564dSmrg break; 391266e564dSmrg case ICE_ProtocolReply: 392266e564dSmrg str = "ProtocolReply"; 393266e564dSmrg break; 394266e564dSmrg case ICE_Ping: 395266e564dSmrg str = "Ping"; 396266e564dSmrg break; 397266e564dSmrg case ICE_PingReply: 398266e564dSmrg str = "PingReply"; 399266e564dSmrg break; 400266e564dSmrg case ICE_WantToClose: 401266e564dSmrg str = "WantToClose"; 402266e564dSmrg break; 403266e564dSmrg case ICE_NoClose: 404266e564dSmrg str = "NoClose"; 405266e564dSmrg break; 406266e564dSmrg default: 407266e564dSmrg str = ""; 408266e564dSmrg } 409266e564dSmrg 410266e564dSmrg fprintf (stderr, "\n"); 411266e564dSmrg 412266e564dSmrg fprintf (stderr, "ICE error: Offending minor opcode = %d (%s)\n", 413266e564dSmrg offendingMinorOpcode, str); 414266e564dSmrg 415266e564dSmrg fprintf (stderr, " Offending sequence number = %lu\n", 416266e564dSmrg offendingSequence); 417266e564dSmrg 418266e564dSmrg switch (errorClass) 419266e564dSmrg { 420266e564dSmrg case IceBadMinor: 421266e564dSmrg str = "BadMinor"; 422266e564dSmrg break; 423266e564dSmrg case IceBadState: 424266e564dSmrg str = "BadState"; 425266e564dSmrg break; 426266e564dSmrg case IceBadLength: 427266e564dSmrg str = "BadLength"; 428266e564dSmrg break; 429266e564dSmrg case IceBadValue: 430266e564dSmrg str = "BadValue"; 431266e564dSmrg break; 432266e564dSmrg case IceBadMajor: 433266e564dSmrg str = "BadMajor"; 434266e564dSmrg break; 435266e564dSmrg case IceNoAuth: 436266e564dSmrg str = "NoAuthentication"; 437266e564dSmrg break; 438266e564dSmrg case IceNoVersion: 439266e564dSmrg str = "NoVersion"; 440266e564dSmrg break; 441266e564dSmrg case IceSetupFailed: 442266e564dSmrg str = "SetupFailed"; 443266e564dSmrg break; 444266e564dSmrg case IceAuthRejected: 445266e564dSmrg str = "AuthenticationRejected"; 446266e564dSmrg break; 447266e564dSmrg case IceAuthFailed: 448266e564dSmrg str = "AuthenticationFailed"; 449266e564dSmrg break; 450266e564dSmrg case IceProtocolDuplicate: 451266e564dSmrg str = "ProtocolDuplicate"; 452266e564dSmrg break; 453266e564dSmrg case IceMajorOpcodeDuplicate: 454266e564dSmrg str = "MajorOpcodeDuplicate"; 455266e564dSmrg break; 456266e564dSmrg case IceUnknownProtocol: 457266e564dSmrg str = "UnknownProtocol"; 458266e564dSmrg break; 459266e564dSmrg default: 460266e564dSmrg str = "???"; 461266e564dSmrg } 462266e564dSmrg 463266e564dSmrg fprintf (stderr, " Error class = %s\n", str); 464266e564dSmrg 465266e564dSmrg if (severity == IceCanContinue) 466266e564dSmrg str = "CanContinue"; 467266e564dSmrg else if (severity == IceFatalToProtocol) 468266e564dSmrg str = "FatalToProtocol"; 469266e564dSmrg else if (severity == IceFatalToConnection) 470266e564dSmrg str = "FatalToConnection"; 471266e564dSmrg else 472266e564dSmrg str = "???"; 473266e564dSmrg 474266e564dSmrg fprintf (stderr, " Severity = %s\n", str); 475266e564dSmrg 476266e564dSmrg switch (errorClass) 477266e564dSmrg { 478266e564dSmrg case IceBadValue: 479266e564dSmrg { 480266e564dSmrg int offset, length, val; 481266e564dSmrg 482266e564dSmrg EXTRACT_CARD32 (pData, swap, offset); 483266e564dSmrg EXTRACT_CARD32 (pData, swap, length); 484266e564dSmrg 485266e564dSmrg fprintf (stderr, 486266e564dSmrg " BadValue Offset = %d\n", offset); 487266e564dSmrg fprintf (stderr, 488266e564dSmrg " BadValue Length = %d\n", length); 489266e564dSmrg 490266e564dSmrg if (length <= 4) 491266e564dSmrg { 492266e564dSmrg if (length == 1) 493266e564dSmrg val = (int) *pData; 494266e564dSmrg else if (length == 2) 495266e564dSmrg { 496266e564dSmrg EXTRACT_CARD16 (pData, swap, val); 497266e564dSmrg } 498266e564dSmrg else 499266e564dSmrg { 500266e564dSmrg EXTRACT_CARD32 (pData, swap, val); 501266e564dSmrg } 502266e564dSmrg 503266e564dSmrg fprintf (stderr, 504266e564dSmrg " BadValue = %d\n", val); 505266e564dSmrg } 506266e564dSmrg break; 507266e564dSmrg } 508266e564dSmrg 509266e564dSmrg case IceBadMajor: 510266e564dSmrg 511266e564dSmrg fprintf (stderr, "Major opcode : %d\n", (int) *pData); 512266e564dSmrg break; 513266e564dSmrg 514266e564dSmrg case IceSetupFailed: 515266e564dSmrg 5169ef0b394Smrg EXTRACT_STRING (pData, swap, estr); 5179ef0b394Smrg fprintf (stderr, "Reason : %s\n", estr); 5189ef0b394Smrg free(estr); 519266e564dSmrg break; 520266e564dSmrg 521266e564dSmrg case IceAuthRejected: 522266e564dSmrg 5239ef0b394Smrg EXTRACT_STRING (pData, swap, estr); 5249ef0b394Smrg fprintf (stderr, "Reason : %s\n", estr); 5259ef0b394Smrg free(estr); 526266e564dSmrg break; 527266e564dSmrg 528266e564dSmrg case IceAuthFailed: 529266e564dSmrg 5309ef0b394Smrg EXTRACT_STRING (pData, swap, estr); 5319ef0b394Smrg fprintf (stderr, "Reason : %s\n", estr); 5329ef0b394Smrg free(estr); 533266e564dSmrg break; 534266e564dSmrg 535266e564dSmrg case IceProtocolDuplicate: 536266e564dSmrg 5379ef0b394Smrg EXTRACT_STRING (pData, swap, estr); 5389ef0b394Smrg fprintf (stderr, "Protocol name : %s\n", estr); 5399ef0b394Smrg free(estr); 540266e564dSmrg break; 541266e564dSmrg 542266e564dSmrg case IceMajorOpcodeDuplicate: 543266e564dSmrg 5449ef0b394Smrg fprintf (stderr, "Major opcode : %d\n", (int) *pData); 545266e564dSmrg break; 546266e564dSmrg 547266e564dSmrg case IceUnknownProtocol: 548266e564dSmrg 5499ef0b394Smrg EXTRACT_STRING (pData, swap, estr); 5509ef0b394Smrg fprintf (stderr, "Protocol name : %s\n", estr); 5519ef0b394Smrg free(estr); 552266e564dSmrg break; 553266e564dSmrg 554266e564dSmrg default: 555266e564dSmrg break; 556266e564dSmrg } 557266e564dSmrg 558266e564dSmrg fprintf (stderr, "\n"); 559266e564dSmrg 560266e564dSmrg if (severity != IceCanContinue) 561266e564dSmrg exit (1); 562266e564dSmrg} 563266e564dSmrg 564c5629e66SmrgIceErrorHandler _IceErrorHandler = _IceDefaultErrorHandler; 565266e564dSmrg 566266e564dSmrg 5679ef0b394Smrg/* 568266e564dSmrg * This procedure sets the ICE error handler to be the specified 569266e564dSmrg * routine. If NULL is passed in the default error handler is restored. 570266e564dSmrg * The function's return value is the previous error handler. 571266e564dSmrg */ 5729ef0b394Smrg 573266e564dSmrgIceErrorHandler 574c5629e66SmrgIceSetErrorHandler ( 575c5629e66Smrg IceErrorHandler handler 576c5629e66Smrg) 577266e564dSmrg{ 578266e564dSmrg IceErrorHandler oldHandler = _IceErrorHandler; 579266e564dSmrg 580266e564dSmrg if (handler != NULL) 581266e564dSmrg _IceErrorHandler = handler; 582266e564dSmrg else 583266e564dSmrg _IceErrorHandler = _IceDefaultErrorHandler; 584266e564dSmrg 585266e564dSmrg return (oldHandler); 586266e564dSmrg} 587266e564dSmrg 588266e564dSmrg 589266e564dSmrg 590266e564dSmrg/* 591266e564dSmrg * Default IO error handler. 592266e564dSmrg */ 593266e564dSmrg 594c5629e66Smrgstatic void 595c5629e66Smrg_IceDefaultIOErrorHandler ( 596c5629e66Smrg IceConn iceConn 597c5629e66Smrg) 598266e564dSmrg{ 599266e564dSmrg fprintf (stderr, 600266e564dSmrg "ICE default IO error handler doing an exit(), pid = %ld, errno = %d\n", 601266e564dSmrg (long)getpid(), errno); 602266e564dSmrg 603266e564dSmrg exit (1); 604266e564dSmrg} 605266e564dSmrg 606c5629e66SmrgIceIOErrorHandler _IceIOErrorHandler = _IceDefaultIOErrorHandler; 607266e564dSmrg 608266e564dSmrg 6099ef0b394Smrg/* 610266e564dSmrg * This procedure sets the ICE fatal I/O error handler to be the 611266e564dSmrg * specified routine. If NULL is passed in the default error 612266e564dSmrg * handler is restored. The function's return value is the 613266e564dSmrg * previous error handler. 614266e564dSmrg */ 6159ef0b394Smrg 616266e564dSmrgIceIOErrorHandler 617c5629e66SmrgIceSetIOErrorHandler ( 618c5629e66Smrg IceIOErrorHandler handler 619c5629e66Smrg) 620266e564dSmrg{ 621266e564dSmrg IceIOErrorHandler oldHandler = _IceIOErrorHandler; 622266e564dSmrg 623266e564dSmrg if (handler != NULL) 624266e564dSmrg _IceIOErrorHandler = handler; 625266e564dSmrg else 626266e564dSmrg _IceIOErrorHandler = _IceDefaultIOErrorHandler; 627266e564dSmrg 628266e564dSmrg return (oldHandler); 629266e564dSmrg} 630