54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#pragma ident "%Z%%M% %I% %E% SMI"
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf/*
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * lib/krb5/krb/kerrs.c
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf *
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * Copyright 2006 Massachusetts Institute of Technology.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * All Rights Reserved.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf *
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * Export of this software from the United States of America may
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * require a specific license from the United States Government.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * It is the responsibility of any person or organization contemplating
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * export to obtain such a license before exporting.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf *
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * distribute this software and its documentation for any purpose and
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * without fee is hereby granted, provided that the above copyright
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * notice appear in all copies and that both that copyright notice and
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * this permission notice appear in supporting documentation, and that
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * the name of M.I.T. not be used in advertising or publicity pertaining
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * to distribution of the software without specific, written prior
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * permission. Furthermore if you modify this software you must label
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * your software as modified software and not distribute it in such a
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * fashion that it might be confused with the original M.I.T. software.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * M.I.T. makes no representations about the suitability of
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * this software for any purpose. It is provided "as is" without express
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * or implied warranty.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf *
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf * error-message functions
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf */
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#include <stdarg.h>
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#include "k5-int.h"
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfstatic int error_message_debug = 0;
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifndef ERROR_MESSAGE_DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#define ERROR_MESSAGE_DEBUG() (error_message_debug != 0)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfvoid KRB5_CALLCONV_C
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfkrb5_set_error_message (krb5_context ctx, krb5_error_code code,
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf const char *fmt, ...)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf{
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf va_list args;
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ctx == NULL)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf return;
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf va_start (args, fmt);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ERROR_MESSAGE_DEBUG())
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf fprintf(stderr,
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf "krb5_set_error_message(ctx=%p/err=%p, code=%ld, ...)\n",
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf ctx, &ctx->err, (long) code);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf krb5int_vset_error (&ctx->err, code, fmt, args);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ERROR_MESSAGE_DEBUG())
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf fprintf(stderr, "->%s\n", ctx->err.msg);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf va_end (args);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf}
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfvoid KRB5_CALLCONV
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfkrb5_vset_error_message (krb5_context ctx, krb5_error_code code,
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf const char *fmt, va_list args)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf{
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ERROR_MESSAGE_DEBUG())
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf fprintf(stderr, "krb5_vset_error_message(ctx=%p, code=%ld, ...)\n",
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf ctx, (long) code);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ctx == NULL)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf return;
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf krb5int_vset_error (&ctx->err, code, fmt, args);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ERROR_MESSAGE_DEBUG())
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf fprintf(stderr, "->%s\n", ctx->err.msg);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf}
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfconst char * KRB5_CALLCONV
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfkrb5_get_error_message (krb5_context ctx, krb5_error_code code)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf{
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ERROR_MESSAGE_DEBUG())
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf fprintf(stderr, "krb5_get_error_message(%p, %ld)\n", ctx, (long) code);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ctx == NULL)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf return error_message(code);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf return krb5int_get_error (&ctx->err, code);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf}
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfvoid KRB5_CALLCONV
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfkrb5_free_error_message (krb5_context ctx, const char *msg)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf{
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ERROR_MESSAGE_DEBUG())
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf fprintf(stderr, "krb5_free_error_message(%p, %p)\n", ctx, msg);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ctx == NULL)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf return;
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf krb5int_free_error (&ctx->err, msg);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf}
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfvoid KRB5_CALLCONV
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfkrb5_clear_error_message (krb5_context ctx)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf{
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#ifdef DEBUG
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ERROR_MESSAGE_DEBUG())
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf fprintf(stderr, "krb5_clear_error_message(%p)\n", ctx);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#endif
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf if (ctx == NULL)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf return;
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf krb5int_clear_error (&ctx->err);
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf}