From c877d7bea5eb8a78f68e078bdce97a8751d621bf Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Thu, 14 Mar 2024 14:00:40 -0400 Subject: [PATCH] native debug in stderr --- .../macosx/native/libosxkrb5/nativeccache.c | 22 ++--- .../jgss/wrapper/SunNativeProvider.java | 4 +- .../share/native/libj2gss/GSSLibStub.c | 4 +- .../share/native/libj2gss/NativeUtil.c | 80 +++++++++---------- .../share/native/libj2gss/NativeUtil.h | 10 +-- 5 files changed, 60 insertions(+), 60 deletions(-) diff --git a/src/java.security.jgss/macosx/native/libosxkrb5/nativeccache.c b/src/java.security.jgss/macosx/native/libosxkrb5/nativeccache.c index 9b3fda861564c..36e7a942ded61 100644 --- a/src/java.security.jgss/macosx/native/libosxkrb5/nativeccache.c +++ b/src/java.security.jgss/macosx/native/libosxkrb5/nativeccache.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -81,7 +81,7 @@ static jclass FindClass(JNIEnv *env, char *className) jclass cls = (*env)->FindClass(env, className); if (cls == NULL) { - printf("Couldn't find %s\n", className); + fprintf(stderr, "Couldn't find %s\n", className); return NULL; } @@ -129,49 +129,49 @@ JNIEXPORT jint JNICALL DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) ticketConstructor = (*env)->GetMethodID(env, ticketClass, "", "([B)V"); if (ticketConstructor == 0) { - printf("Couldn't find Ticket constructor\n"); + fprintf(stderr, "Couldn't find Ticket constructor\n"); return JNI_ERR; } principalNameConstructor = (*env)->GetMethodID(env, principalNameClass, "", "(Ljava/lang/String;I)V"); if (principalNameConstructor == 0) { - printf("Couldn't find PrincipalName constructor\n"); + fprintf(stderr, "Couldn't find PrincipalName constructor\n"); return JNI_ERR; } encryptionKeyConstructor = (*env)->GetMethodID(env, encryptionKeyClass, "", "(I[B)V"); if (encryptionKeyConstructor == 0) { - printf("Couldn't find EncryptionKey constructor\n"); + fprintf(stderr, "Couldn't find EncryptionKey constructor\n"); return JNI_ERR; } ticketFlagsConstructor = (*env)->GetMethodID(env, ticketFlagsClass, "", "(I[B)V"); if (ticketFlagsConstructor == 0) { - printf("Couldn't find TicketFlags constructor\n"); + fprintf(stderr, "Couldn't find TicketFlags constructor\n"); return JNI_ERR; } kerberosTimeConstructor = (*env)->GetMethodID(env, kerberosTimeClass, "", "(J)V"); if (kerberosTimeConstructor == 0) { - printf("Couldn't find KerberosTime constructor\n"); + fprintf(stderr, "Couldn't find KerberosTime constructor\n"); return JNI_ERR; } integerConstructor = (*env)->GetMethodID(env, javaLangIntegerClass, "", "(I)V"); if (integerConstructor == 0) { - printf("Couldn't find Integer constructor\n"); + fprintf(stderr, "Couldn't find Integer constructor\n"); return JNI_ERR; } hostAddressConstructor = (*env)->GetMethodID(env, hostAddressClass, "", "(I[B)V"); if (hostAddressConstructor == 0) { - printf("Couldn't find HostAddress constructor\n"); + fprintf(stderr, "Couldn't find HostAddress constructor\n"); return JNI_ERR; } hostAddressesConstructor = (*env)->GetMethodID(env, hostAddressesClass, "", "([Lsun/security/krb5/internal/HostAddress;)V"); if (hostAddressesConstructor == 0) { - printf("Couldn't find HostAddresses constructor\n"); + fprintf(stderr, "Couldn't find HostAddresses constructor\n"); return JNI_ERR; } @@ -376,7 +376,7 @@ JNIEXPORT jobject JNICALL Java_sun_security_krb5_Credentials_acquireDefaultNativ krbcredsConstructor = (*env)->GetMethodID(env, krbcredsClass, "", "(Lsun/security/krb5/internal/Ticket;Lsun/security/krb5/PrincipalName;Lsun/security/krb5/PrincipalName;Lsun/security/krb5/PrincipalName;Lsun/security/krb5/PrincipalName;Lsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/TicketFlags;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/HostAddresses;)V"); if (krbcredsConstructor == 0) { - printf("Couldn't find sun.security.krb5.internal.Ticket constructor\n"); + fprintf(stderr, "Couldn't find sun.security.krb5.internal.Ticket constructor\n"); break; } } diff --git a/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java b/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java index 6eb61cd8b9e03..2099eaf779e0b 100644 --- a/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java +++ b/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -65,7 +65,7 @@ static void debug(String message) { if (message == null) { throw new NullPointerException(); } - System.out.println(NAME + ": " + message); + System.err.println(NAME + ": " + message); } @SuppressWarnings("removal") diff --git a/src/java.security.jgss/share/native/libj2gss/GSSLibStub.c b/src/java.security.jgss/share/native/libj2gss/GSSLibStub.c index 90f5016e647d0..45f4513416c2d 100644 --- a/src/java.security.jgss/share/native/libj2gss/GSSLibStub.c +++ b/src/java.security.jgss/share/native/libj2gss/GSSLibStub.c @@ -99,9 +99,9 @@ Java_sun_security_jgss_wrapper_GSSLibStub_init(JNIEnv *env, MAX_MSG_SIZE, NULL); if (0 == dwRes) { - printf("GSS-API: Unknown failure %d\n", dwError); + TRACE1("GSS-API: Unknown failure %d", dwError); } else { - printf("GSS-API: %s\n",szMsgBuf); + TRACE1("GSS-API: %s",szMsgBuf); } #else char* error = dlerror(); diff --git a/src/java.security.jgss/share/native/libj2gss/NativeUtil.c b/src/java.security.jgss/share/native/libj2gss/NativeUtil.c index a1801347898fc..c607653870d9c 100644 --- a/src/java.security.jgss/share/native/libj2gss/NativeUtil.c +++ b/src/java.security.jgss/share/native/libj2gss/NativeUtil.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -106,7 +106,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { /* Retrieve and store the classes in global ref */ cls = (*env)->FindClass(env, "java/lang/Object"); if (cls == NULL) { - printf("Couldn't find Object class\n"); + fprintf(stderr, "Couldn't find Object class\n"); return JNI_ERR; } CLS_Object = (*env)->NewGlobalRef(env, cls); @@ -115,7 +115,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { } cls = (*env)->FindClass(env, "java/lang/String"); if (cls == NULL) { - printf("Couldn't find String class\n"); + fprintf(stderr, "Couldn't find String class\n"); return JNI_ERR; } CLS_String = (*env)->NewGlobalRef(env, cls); @@ -124,7 +124,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { } cls = (*env)->FindClass(env, "org/ietf/jgss/Oid"); if (cls == NULL) { - printf("Couldn't find org.ietf.jgss.Oid class\n"); + fprintf(stderr, "Couldn't find org.ietf.jgss.Oid class\n"); return JNI_ERR; } CLS_Oid = (*env)->NewGlobalRef(env, cls); @@ -133,7 +133,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { } cls = (*env)->FindClass(env, "org/ietf/jgss/GSSException"); if (cls == NULL) { - printf("Couldn't find org.ietf.jgss.GSSException class\n"); + fprintf(stderr, "Couldn't find org.ietf.jgss.GSSException class\n"); return JNI_ERR; } CLS_GSSException = (*env)->NewGlobalRef(env, cls); @@ -142,7 +142,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { } cls = (*env)->FindClass(env, "sun/security/jgss/wrapper/GSSNameElement"); if (cls == NULL) { - printf("Couldn't find sun.security.jgss.wrapper.GSSNameElement class\n"); + fprintf(stderr, "Couldn't find sun.security.jgss.wrapper.GSSNameElement class\n"); return JNI_ERR; } CLS_GSSNameElement = (*env)->NewGlobalRef(env, cls); @@ -151,7 +151,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { } cls = (*env)->FindClass(env, "sun/security/jgss/wrapper/GSSCredElement"); if (cls == NULL) { - printf("Couldn't find sun.security.jgss.wrapper.GSSCredElement class\n"); + fprintf(stderr, "Couldn't find sun.security.jgss.wrapper.GSSCredElement class\n"); return JNI_ERR; } CLS_GSSCredElement = (*env)->NewGlobalRef(env, cls); @@ -160,7 +160,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { } cls = (*env)->FindClass(env, "sun/security/jgss/wrapper/NativeGSSContext"); if (cls == NULL) { - printf("Couldn't find sun.security.jgss.wrapper.NativeGSSContext class\n"); + fprintf(stderr, "Couldn't find sun.security.jgss.wrapper.NativeGSSContext class\n"); return JNI_ERR; } CLS_NativeGSSContext = (*env)->NewGlobalRef(env, cls); @@ -169,7 +169,7 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { } cls = (*env)->FindClass(env, "sun/security/jgss/wrapper/SunNativeProvider"); if (cls == NULL) { - printf("Couldn't find sun.security.jgss.wrapper.SunNativeProvider class\n"); + fprintf(stderr, "Couldn't find sun.security.jgss.wrapper.SunNativeProvider class\n"); return JNI_ERR; } CLS_SunNativeProvider = (*env)->NewGlobalRef(env, cls); @@ -180,115 +180,115 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { MID_String_ctor = (*env)->GetMethodID(env, CLS_String, "", "([B)V"); if (MID_String_ctor == NULL) { - printf("Couldn't find String(byte[]) constructor\n"); + fprintf(stderr, "Couldn't find String(byte[]) constructor\n"); return JNI_ERR; } MID_Oid_ctor1 = (*env)->GetMethodID(env, CLS_Oid, "", "([B)V"); if (MID_Oid_ctor1 == NULL) { - printf("Couldn't find Oid(byte[]) constructor\n"); + fprintf(stderr, "Couldn't find Oid(byte[]) constructor\n"); return JNI_ERR; } MID_Oid_getDER = (*env)->GetMethodID(env, CLS_Oid, "getDER", "()[B"); if (MID_Oid_getDER == NULL) { - printf("Couldn't find Oid.getDER() method\n"); + fprintf(stderr, "Couldn't find Oid.getDER() method\n"); return JNI_ERR; } cls = (*env)->FindClass(env, "org/ietf/jgss/MessageProp"); if (cls == NULL) { - printf("Couldn't find org.ietf.jgss.MessageProp class\n"); + fprintf(stderr, "Couldn't find org.ietf.jgss.MessageProp class\n"); return JNI_ERR; } MID_MessageProp_getPrivacy = (*env)->GetMethodID(env, cls, "getPrivacy", "()Z"); if (MID_MessageProp_getPrivacy == NULL) { - printf("Couldn't find MessageProp.getPrivacy() method\n"); + fprintf(stderr, "Couldn't find MessageProp.getPrivacy() method\n"); return JNI_ERR; } MID_MessageProp_getQOP = (*env)->GetMethodID(env, cls, "getQOP", "()I"); if (MID_MessageProp_getQOP == NULL) { - printf("Couldn't find MessageProp.getQOP() method\n"); + fprintf(stderr, "Couldn't find MessageProp.getQOP() method\n"); return JNI_ERR; } MID_MessageProp_setPrivacy = (*env)->GetMethodID(env, cls, "setPrivacy", "(Z)V"); if (MID_MessageProp_setPrivacy == NULL) { - printf("Couldn't find MessageProp.setPrivacy(boolean) method\n"); + fprintf(stderr, "Couldn't find MessageProp.setPrivacy(boolean) method\n"); return JNI_ERR; } MID_MessageProp_setQOP = (*env)->GetMethodID(env, cls, "setQOP", "(I)V"); if (MID_MessageProp_setQOP == NULL) { - printf("Couldn't find MessageProp.setQOP(int) method\n"); + fprintf(stderr, "Couldn't find MessageProp.setQOP(int) method\n"); return JNI_ERR; } MID_MessageProp_setSupplementaryStates = (*env)->GetMethodID(env, cls, "setSupplementaryStates", "(ZZZZILjava/lang/String;)V"); if (MID_MessageProp_setSupplementaryStates == NULL) { - printf("Couldn't find MessageProp.setSupplementaryStates(...) method\n"); + fprintf(stderr, "Couldn't find MessageProp.setSupplementaryStates(...) method\n"); return JNI_ERR; } MID_GSSException_ctor3 = (*env)->GetMethodID (env, CLS_GSSException, "", "(IILjava/lang/String;)V"); if (MID_GSSException_ctor3 == NULL) { - printf("Couldn't find GSSException(int, int, String) constructor\n"); + fprintf(stderr, "Couldn't find GSSException(int, int, String) constructor\n"); return JNI_ERR; } cls = (*env)->FindClass(env, "org/ietf/jgss/ChannelBinding"); if (cls == NULL) { - printf("Couldn't find org.ietf.jgss.ChannelBinding class\n"); + fprintf(stderr, "Couldn't find org.ietf.jgss.ChannelBinding class\n"); return JNI_ERR; } MID_ChannelBinding_getInitiatorAddr = (*env)->GetMethodID(env, cls, "getInitiatorAddress", "()Ljava/net/InetAddress;"); if (MID_ChannelBinding_getInitiatorAddr == NULL) { - printf("Couldn't find ChannelBinding.getInitiatorAddress() method\n"); + fprintf(stderr, "Couldn't find ChannelBinding.getInitiatorAddress() method\n"); return JNI_ERR; } MID_ChannelBinding_getAcceptorAddr = (*env)->GetMethodID(env, cls, "getAcceptorAddress", "()Ljava/net/InetAddress;"); if (MID_ChannelBinding_getAcceptorAddr == NULL) { - printf("Couldn't find ChannelBinding.getAcceptorAddress() method\n"); + fprintf(stderr, "Couldn't find ChannelBinding.getAcceptorAddress() method\n"); return JNI_ERR; } MID_ChannelBinding_getAppData = (*env)->GetMethodID(env, cls, "getApplicationData", "()[B"); if (MID_ChannelBinding_getAppData == NULL) { - printf("Couldn't find ChannelBinding.getApplicationData() method\n"); + fprintf(stderr, "Couldn't find ChannelBinding.getApplicationData() method\n"); return JNI_ERR; } cls = (*env)->FindClass(env, "java/net/InetAddress"); if (cls == NULL) { - printf("Couldn't find java.net.InetAddress class\n"); + fprintf(stderr, "Couldn't find java.net.InetAddress class\n"); return JNI_ERR; } MID_InetAddress_getAddr = (*env)->GetMethodID(env, cls, "getAddress", "()[B"); if (MID_InetAddress_getAddr == NULL) { - printf("Couldn't find InetAddress.getAddress() method\n"); + fprintf(stderr, "Couldn't find InetAddress.getAddress() method\n"); return JNI_ERR; } MID_GSSNameElement_ctor = (*env)->GetMethodID(env, CLS_GSSNameElement, "", "(JLsun/security/jgss/wrapper/GSSLibStub;)V"); if (MID_GSSNameElement_ctor == NULL) { - printf("Couldn't find GSSNameElement(long, GSSLibStub) constructor\n"); + fprintf(stderr, "Couldn't find GSSNameElement(long, GSSLibStub) constructor\n"); return JNI_ERR; } MID_GSSCredElement_ctor = (*env)->GetMethodID(env, CLS_GSSCredElement, "", "(JLsun/security/jgss/wrapper/GSSNameElement;Lorg/ietf/jgss/Oid;)V"); if (MID_GSSCredElement_ctor == NULL) { - printf("Couldn't find GSSCredElement(long, GSSLibStub) constructor\n"); + fprintf(stderr, "Couldn't find GSSCredElement(long, GSSLibStub) constructor\n"); return JNI_ERR; } MID_NativeGSSContext_ctor = (*env)->GetMethodID(env, CLS_NativeGSSContext, "", "(JLsun/security/jgss/wrapper/GSSLibStub;)V"); if (MID_NativeGSSContext_ctor == NULL) { - printf("Couldn't find NativeGSSContext(long, GSSLibStub) constructor\n"); + fprintf(stderr, "Couldn't find NativeGSSContext(long, GSSLibStub) constructor\n"); return JNI_ERR; } @@ -296,78 +296,78 @@ DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) { (*env)->GetMethodID(env, CLS_NativeGSSContext, "setContext", "(J)V"); if (MID_NativeGSSContext_setContext == NULL) { - printf("Couldn't find NativeGSSContext.setContext(long) method\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.setContext(long) method\n"); return JNI_ERR; } /* Compute and cache the field ID */ cls = (*env)->FindClass(env, "sun/security/jgss/wrapper/GSSLibStub"); if (cls == NULL) { - printf("Couldn't find sun.security.jgss.wrapper.GSSLibStub class\n"); + fprintf(stderr, "Couldn't find sun.security.jgss.wrapper.GSSLibStub class\n"); return JNI_ERR; } FID_GSSLibStub_pMech = (*env)->GetFieldID(env, cls, "pMech", "J"); if (FID_GSSLibStub_pMech == NULL) { - printf("Couldn't find GSSLibStub.pMech field\n"); + fprintf(stderr, "Couldn't find GSSLibStub.pMech field\n"); return JNI_ERR; } FID_NativeGSSContext_pContext = (*env)->GetFieldID(env, CLS_NativeGSSContext, "pContext", "J"); if (FID_NativeGSSContext_pContext == NULL) { - printf("Couldn't find NativeGSSContext.pContext field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.pContext field\n"); return JNI_ERR; } FID_NativeGSSContext_srcName = (*env)->GetFieldID(env, CLS_NativeGSSContext, "srcName", "Lsun/security/jgss/wrapper/GSSNameElement;"); if (FID_NativeGSSContext_srcName == NULL) { - printf("Couldn't find NativeGSSContext.srcName field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.srcName field\n"); return JNI_ERR; } FID_NativeGSSContext_targetName = (*env)->GetFieldID(env, CLS_NativeGSSContext, "targetName", "Lsun/security/jgss/wrapper/GSSNameElement;"); if (FID_NativeGSSContext_targetName == NULL) { - printf("Couldn't find NativeGSSContext.targetName field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.targetName field\n"); return JNI_ERR; } FID_NativeGSSContext_isInitiator = (*env)->GetFieldID(env, CLS_NativeGSSContext, "isInitiator", "Z"); if (FID_NativeGSSContext_isInitiator == NULL) { - printf("Couldn't find NativeGSSContext.isInitiator field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.isInitiator field\n"); return JNI_ERR; } FID_NativeGSSContext_isEstablished = (*env)->GetFieldID(env, CLS_NativeGSSContext, "isEstablished", "Z"); if (FID_NativeGSSContext_isEstablished == NULL) { - printf("Couldn't find NativeGSSContext.isEstablished field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.isEstablished field\n"); return JNI_ERR; } FID_NativeGSSContext_delegatedCred = (*env)->GetFieldID(env, CLS_NativeGSSContext, "delegatedCred", "Lsun/security/jgss/wrapper/GSSCredElement;"); if (FID_NativeGSSContext_delegatedCred == NULL) { - printf("Couldn't find NativeGSSContext.delegatedCred field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.delegatedCred field\n"); return JNI_ERR; } FID_NativeGSSContext_flags = (*env)->GetFieldID(env, CLS_NativeGSSContext, "flags", "I"); if (FID_NativeGSSContext_flags == NULL) { - printf("Couldn't find NativeGSSContext.flags field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.flags field\n"); return JNI_ERR; } FID_NativeGSSContext_lifetime = (*env)->GetFieldID(env, CLS_NativeGSSContext, "lifetime", "I"); if (FID_NativeGSSContext_lifetime == NULL) { - printf("Couldn't find NativeGSSContext.lifetime field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.lifetime field\n"); return JNI_ERR; } FID_NativeGSSContext_actualMech = (*env)->GetFieldID(env, CLS_NativeGSSContext, "actualMech", "Lorg/ietf/jgss/Oid;"); if (FID_NativeGSSContext_actualMech == NULL) { - printf("Couldn't find NativeGSSContext.actualMech field\n"); + fprintf(stderr, "Couldn't find NativeGSSContext.actualMech field\n"); return JNI_ERR; } return JNI_VERSION_1_2; diff --git a/src/java.security.jgss/share/native/libj2gss/NativeUtil.h b/src/java.security.jgss/share/native/libj2gss/NativeUtil.h index 81873252900f3..b238e6a9acd32 100644 --- a/src/java.security.jgss/share/native/libj2gss/NativeUtil.h +++ b/src/java.security.jgss/share/native/libj2gss/NativeUtil.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -84,10 +84,10 @@ extern "C" { extern jfieldID FID_NativeGSSContext_flags; extern jfieldID FID_NativeGSSContext_lifetime; extern jfieldID FID_NativeGSSContext_actualMech; - #define TRACE0(s) { if (JGSS_DEBUG) { printf("[GSSLibStub:%d] %s\n", __LINE__, s); fflush(stdout); }} - #define TRACE1(s, p1) { if (JGSS_DEBUG) { printf("[GSSLibStub:%d] "s"\n", __LINE__, p1); fflush(stdout); }} - #define TRACE2(s, p1, p2) { if (JGSS_DEBUG) { printf("[GSSLibStub:%d] "s"\n", __LINE__, p1, p2); fflush(stdout); }} - #define TRACE3(s, p1, p2, p3) { if (JGSS_DEBUG) { printf("[GSSLibStub:%d] "s"\n", __LINE__, p1, p2, p3); fflush(stdout); }} + #define TRACE0(s) { if (JGSS_DEBUG) { fprintf(stderr, "[GSSLibStub:%d] %s\n", __LINE__, s); fflush(stderr); }} + #define TRACE1(s, p1) { if (JGSS_DEBUG) { fprintf(stderr, "[GSSLibStub:%d] "s"\n", __LINE__, p1); fflush(stderr); }} + #define TRACE2(s, p1, p2) { if (JGSS_DEBUG) { fprintf(stderr, "[GSSLibStub:%d] "s"\n", __LINE__, p1, p2); fflush(stderr); }} + #define TRACE3(s, p1, p2, p3) { if (JGSS_DEBUG) { fprintf(stderr, "[GSSLibStub:%d] "s"\n", __LINE__, p1, p2, p3); fflush(stderr); }} #ifdef __cplusplus