view src/protocols/zephyr/error_message.c @ 10810:9a1ced2bc585

[gaim-migrate @ 12463] This makes conversations contact aware, or is a start to it anyway. All messages from the same contact will appear in the same IM tab. Whoever messaged you last is who your messages go to. Don't forget to run make install in the top level src directory, or some plugin will likely crash gaim, as I changed a struct they use. Known bugs include a crash if you close the convo window (clicking the X on the tab doesn't crash however [actually it used to, but i fixed that one already]), and the history plugin inserting history when it shouldn't. There's probably many more tiny bugs. If you're wondering "how does it handle X?" the answer is probably it doesn't. However, I think this is all stuff our CPWs can handle, if I don't have time to fix it first (and I probably won't til friday). committer: Tailor Script <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Mon, 11 Apr 2005 02:20:34 +0000
parents 347e456550e6
children 64895571248f
line wrap: on
line source

/*
 * $Header$
 * $Source$
 * $Locker$
 *
 * Copyright 1987 by the Student Information Processing Board
 * of the Massachusetts Institute of Technology
 *
 * For copyright info, see "mit-sipb-copyright.h".
 */

#include "error_table.h"
#include "mit-sipb-copyright.h"
#include "com_err.h"
#include <sysdep.h>

static const char rcsid[] =
    "$Header$";
static const char copyright[] =
    "Copyright 1986, 1987, 1988 by the Student Information Processing Board\nand the department of Information Systems\nof the Massachusetts Institute of Technology";

char *error_table_name_r __P((int, char *));

struct et_list * _et_list = (struct et_list *) NULL;

const char * error_message (code)
long	code;
{
    static char buf[COM_ERR_BUF_LEN];

    return(error_message_r(code, buf));
}

const char * error_message_r (code, buf)
long	code;
char	*buf;
{
    int offset;
    struct et_list *et;
    int table_num;
    int started = 0;
    char *cp, namebuf[6];

    offset = code & ((1<<ERRCODE_RANGE)-1);
    table_num = code - offset;
    if (!table_num)
	return strerror(offset);
    for (et = _et_list; et; et = et->next) {
	if (et->table->base == table_num) {
	    /* This is the right table */
	    if (et->table->n_msgs <= offset)
		break;
	    return(et->table->msgs[offset]);
	}
    }

    strcpy (buf, "Unknown code ");
    if (table_num) {
	strcat (buf, error_table_name_r (table_num, namebuf));
	strcat (buf, " ");
    }
    for (cp = buf; *cp; cp++)
	;
    if (offset >= 100) {
	*cp++ = '0' + offset / 100;
	offset %= 100;
	started++;
    }
    if (started || offset >= 10) {
	*cp++ = '0' + offset / 10;
	offset %= 10;
    }
    *cp++ = '0' + offset;
    *cp = '\0';
    return(buf);
}