Blame src/error.c

Packit 16808d
Packit 16808d
/*
Packit 16808d
  Meanwhile - Unofficial Lotus Sametime Community Client Library
Packit 16808d
  Copyright (C) 2004  Christopher (siege) O'Brien
Packit 16808d
  
Packit 16808d
  This library is free software; you can redistribute it and/or
Packit 16808d
  modify it under the terms of the GNU Library General Public
Packit 16808d
  License as published by the Free Software Foundation; either
Packit 16808d
  version 2 of the License, or (at your option) any later version.
Packit 16808d
  
Packit 16808d
  This library is distributed in the hope that it will be useful,
Packit 16808d
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 16808d
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 16808d
  Library General Public License for more details.
Packit 16808d
  
Packit 16808d
  You should have received a copy of the GNU Library General Public
Packit 16808d
  License along with this library; if not, write to the Free
Packit 16808d
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit 16808d
*/
Packit 16808d
Packit 16808d
#include <stdio.h>
Packit 16808d
#include <string.h>
Packit 16808d
Packit 16808d
#include "mw_error.h"
Packit 16808d
Packit 16808d
Packit 16808d
static char *err_to_str(guint32 code) {
Packit 16808d
  static char b[11]; /* 0x12345678 + NULL terminator */
Packit 16808d
  sprintf((char *) b, "0x%08x", code);
Packit 16808d
  b[10] = '\0';
Packit 16808d
  return b;
Packit 16808d
}
Packit 16808d
Packit 16808d
Packit 16808d
#define CASE(val, str) \
Packit 16808d
case val: \
Packit 16808d
  m = str; \
Packit 16808d
  break;
Packit 16808d
Packit 16808d
Packit 16808d
char* mwError(guint32 code) {
Packit 16808d
  const char *m;
Packit 16808d
Packit 16808d
  switch(code) {
Packit 16808d
Packit 16808d
    /* 8.3.1.1 General error/success codes */
Packit 16808d
    CASE(ERR_SUCCESS, "Success");
Packit 16808d
    CASE(ERR_FAILURE, "General failure");
Packit 16808d
    CASE(ERR_REQUEST_DELAY, "Request delayed");
Packit 16808d
    CASE(ERR_REQUEST_INVALID, "Request is invalid");
Packit 16808d
    CASE(ERR_NOT_AUTHORIZED, "Not authorized");
Packit 16808d
    CASE(ERR_NO_USER, "User is not online");
Packit 16808d
    CASE(ERR_CHANNEL_NO_SUPPORT, "Requested channel is not supported");
Packit 16808d
    CASE(ERR_CHANNEL_EXISTS, "Requested channel already exists");
Packit 16808d
    CASE(ERR_SERVICE_NO_SUPPORT, "Requested service is not supported");
Packit 16808d
    CASE(ERR_PROTOCOL_NO_SUPPORT, "Requested protocol is not supported");
Packit 16808d
    CASE(ERR_VERSION_NO_SUPPORT, "Version is not supported");
Packit 16808d
    CASE(ERR_USER_SKETCHY, "User is invalid or not trusted");
Packit 16808d
    CASE(ERR_ALREADY_INITIALIZED, "Already initialized");
Packit 16808d
    CASE(ERR_ENCRYPT_NO_SUPPORT, "Encryption method not supported");
Packit 16808d
    CASE(ERR_NO_COMMON_ENCRYPT, "No common encryption method");
Packit 16808d
    
Packit 16808d
    /* 8.3.1.2 Connection/disconnection errors */
Packit 16808d
    CASE(VERSION_MISMATCH, "Version mismatch");
Packit 16808d
    CASE(FAT_MESSAGE, "Message is too large");
Packit 16808d
    CASE(CONNECTION_BROKEN, "Connection broken");
Packit 16808d
    CASE(CONNECTION_ABORTED, "Connection aborted");
Packit 16808d
    CASE(CONNECTION_REFUSED, "Connection refused");
Packit 16808d
    CASE(CONNECTION_RESET, "Connection reset");
Packit 16808d
    CASE(CONNECTION_TIMED, "Connection timed out");
Packit 16808d
    CASE(CONNECTION_CLOSED, "Connection closed");
Packit 16808d
    CASE(INCORRECT_LOGIN, "Incorrect Username/Password");
Packit 16808d
    CASE(VERIFICATION_DOWN, "Login verification down or unavailable");
Packit 16808d
    CASE(GUEST_IN_USE, "The guest name is currently being used");
Packit 16808d
    CASE(MULTI_SERVER_LOGIN, "Login to two different servers concurrently");
Packit 16808d
    CASE(MULTI_SERVER_LOGIN2, "Login to two different servers concurrently");
Packit 16808d
    CASE(SERVER_BROKEN, "Server misconfiguration");
Packit 16808d
Packit 16808d
    /* 8.3.1.3 Client error codes */
Packit 16808d
    CASE(ERR_CLIENT_USER_GONE, "User is not online");
Packit 16808d
    CASE(ERR_CLIENT_USER_DND, "User is in Do Not Disturb mode");
Packit 16808d
    CASE(ERR_CLIENT_USER_ELSEWHERE, "Already logged in elsewhere");
Packit 16808d
Packit 16808d
    /* 8.3.1.4 IM error codes */
Packit 16808d
    CASE(ERR_IM_COULDNT_REGISTER, "Cannot register a reserved type");
Packit 16808d
    CASE(ERR_IM_ALREADY_REGISTERED, "Requested type is already registered");
Packit 16808d
    CASE(ERR_IM_NOT_REGISTERED, "Requested type is not registered");
Packit 16808d
Packit 16808d
  default:
Packit 16808d
    m = err_to_str(code);
Packit 16808d
  }
Packit 16808d
Packit 16808d
  return g_strdup(m);
Packit 16808d
}
Packit 16808d
Packit 16808d
Packit 16808d
#undef CASE