Blame src/error.c

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