⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utils.c

📁 AnyQ服务端源代码(2004/10/28)源码
💻 C
字号:
/* * Jabber AIM-Transport libfaim interface **/#include "aimtrans.h"#include <ctype.h>iconv_t fromutf8, toutf8;/* Thanks to the gaim dudes for this func */char *strip_html(char * text,pool p){	int i, j;	int visible = 1;	char *text2 = pmalloc(p, strlen(text) + 1);	    if(text == NULL)        return NULL;	strcpy(text2, text);	for (i = 0, j = 0;text2[i]; i++)	{		if(text2[i]=='<')		{				visible = 0;			continue;		}		else if(text2[i]=='>')		{			visible = 1;			continue;		}		if(visible)		{			text2[j++] = text2[i];		}	}	text2[j] = '\0';	return text2;}char *str_to_UTF8(pool p,unsigned char *in){    int n, i = 0;    char *result = NULL;	char *aux = NULL;	int q = 1;	size_t numconv;	size_t inbytesleft, outbytesleft;	char *inbuf, *outbuf;    	if(in==NULL) return NULL;	aux = (char*)pmalloc(p,strlen(in)+1);	for(n = 0; n < strlen(in); n++)	{		long c = (long)in[n];		/*strip out color codes*/		if(c == 27)		{			n += 2;			if(in[n] == 'x') n++;			if(in[n] == '3') n++;			n++;			continue;		}		if(c == '\r')			continue;		aux[i++] = (char)c;	}	aux[i] = '\0';		return it_convert_windows2utf8(p, aux);}unsigned char *UTF8_to_str(pool p,unsigned char *in){	return it_convert_utf82windows(p, in);}char *at_normalize(char *s){    char *new, *old;    if(s == NULL)        return;    new = old = s;    while(*old)    {        if(*old == ' ')        {            old++;            continue;        }        *new++ = tolower(*old++);    }    *new = '\0';    return s;}int at_xdb_set(ati ti, char *host, jid owner, xmlnode data, char *ns){    xmlnode x = xmlnode_wrap(data, "aimtrans");    int ret;    jid j;    char *res;    res = owner->resource;    jid_set(owner, NULL, JID_RESOURCE);    log_debug(ZONE,"[AT] Setting XDB for user %s", jid_full(owner));    j = jid_new(owner->p, spools(owner->p, owner->user, "%", owner->server,                "@", host, owner->p));    ret = xdb_set(ti->xc, j, ns, x);    jid_set(owner, res, JID_RESOURCE);    return ret;}xmlnode at_xdb_get(ati ti, jid owner, char *ns){    xmlnode x;    jid j;    char *res;    log_debug(ZONE, "[AT] Getting XDB for user %s",jid_full(owner));        res = owner->resource;    jid_set(owner, NULL, JID_RESOURCE);    j = jid_new(owner->p, spools(owner->p, owner->user, "%", owner->server,                "@", ti->i->id, owner->p));    x= xdb_get(ti->xc, j, ns);    jid_set(owner, res, JID_RESOURCE);    return xmlnode_get_firstchild(x);}/* convert pre-2003 XDB data to new format */void at_xdb_convert(ati ti, char *user, jid nid){    jid id, old, new;    xmlnode x;    pool p;    if(user == NULL) return;    p = pool_new();    id = jid_new(p, user);    old = jid_new(p, spools(p, shahash(jid_full(jid_user(id))),                  "@", ti->i->id, p));    new = jid_new(p, spools(p, nid->user, "%", nid->server,                  "@", ti->i->id, p));    x = xdb_get(ti->xc, old, AT_NS_AUTH);    if(x != NULL)      if(xdb_set(ti->xc, new, AT_NS_AUTH, x) == 0)      {        log_error(ZONE, "[AT] Converted XDB for user %s",jid_full(jid_user(id)));        xdb_set(ti->xc, old, AT_NS_AUTH, NULL);      }    x = xdb_get(ti->xc, old, AT_NS_ROSTER);    if(x != NULL)      if(xdb_set(ti->xc, new, AT_NS_ROSTER, x) == 0)        xdb_set(ti->xc, old, AT_NS_ROSTER, NULL);    pool_free(p);}void at_psend(pth_msgport_t mp, jpacket p){    static pth_msgport_t unknown_mp = NULL;    jpq q;    if(p == NULL || mp == NULL)        return;    log_debug(ZONE,"psending to %X packet %X",mp,p);    q = pmalloc(p->p, sizeof(_jpq));    q->p = p;    q->head.m_replyport = unknown_mp;    pth_msgport_put(mp, (pth_message_t *)q);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -