Mercurial > pidgin
view src/protocols/zephyr/ZMakeAscii.c @ 9427:66b3f54527e6
[gaim-migrate @ 10245]
" As discussed on #gaim
(15:02:02) Paco-Paco: the ugliness of this feature
trumps compatability, unless there is some pretty
important functionality to be lost
(15:04:02) aatharuv: Paco-Paco: Because zephyr is a
silly UDP based protocol, and sometimes subscriptions
(chats you've registered for) get lost, and you can
tell a user to a cli tool 'zctl' which will restore the
subs.
(15:04:32) aatharuv: Paco-Paco: Of course, I should
just add this as a protocol option, so users don't have
to do that.
(15:04:39) Paco-Paco: yes
(15:04:50) Paco-Paco: that would be the appropriate answer
(15:06:05) LSchiere: okay, so rather then messing with
anoncvs delays, i'm going to leave this in for now, and
aatharuv can just change to to a account option in place
Okay, here's a patch to reload subscriptions incase the
server loses track of them, as a protocol action. Since
my anoncvs hasn't even gotten the original zephyr patch
yet, you might as well reverse the original patch, and
apply this new one." --Arun A Tharuvai
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Tue, 29 Jun 2004 20:35:30 +0000 |
parents | 43d6c08d7e96 |
children | 64895571248f |
line wrap: on
line source
/* This file is part of the Project Athena Zephyr Notification System. * It contains source for the ZMakeAscii function. * * Created by: Robert French * * $Source$ * $Author: chipx86 $ * * Copyright (c) 1987 by the Massachusetts Institute of Technology. * For copying and distribution information, see the file * "mit-copyright.h". */ /* $Header$ */ #include "internal.h" #include <assert.h> #ifndef lint static const char rcsid_ZMakeAscii_c[] = "$Id: ZMakeAscii.c 9554 2004-04-24 09:02:28Z chipx86 $"; #endif static char *itox_chars = "0123456789ABCDEF"; Code_t ZMakeAscii(ptr, len, field, num) register char *ptr; int len; unsigned char *field; int num; { int i; for (i=0;i<num;i++) { /* we need to add "0x" if we are between 4 byte pieces */ if ((i & 3) == 0) { if (len < (i?4:3)) return ZERR_FIELDLEN; /* except at the beginning, put a space in before the "0x" */ if (i) { *ptr++ = ' '; len--; } *ptr++ = '0'; *ptr++ = 'x'; len -= 2; } if (len < 3) return ZERR_FIELDLEN; *ptr++ = itox_chars[(int) (field[i] >> 4)]; *ptr++ = itox_chars[(int) (field[i] & 0xf)]; len -= 2; } *ptr = '\0'; return ZERR_NONE; } Code_t ZMakeAscii32(ptr, len, value) register char *ptr; int len; unsigned long value; { if (len < 11) return ZERR_FIELDLEN; *ptr++ = '0'; *ptr++ = 'x'; *ptr++ = itox_chars[(value >> 28) & 0xf]; *ptr++ = itox_chars[(value >> 24) & 0xf]; *ptr++ = itox_chars[(value >> 20) & 0xf]; *ptr++ = itox_chars[(value >> 16) & 0xf]; *ptr++ = itox_chars[(value >> 12) & 0xf]; *ptr++ = itox_chars[(value >> 8) & 0xf]; *ptr++ = itox_chars[(value >> 4) & 0xf]; *ptr++ = itox_chars[(value >> 0) & 0xf]; *ptr = 0; return ZERR_NONE; } Code_t ZMakeAscii16(ptr, len, value) register char *ptr; int len; unsigned int value; { if (len < 7) return ZERR_FIELDLEN; *ptr++ = '0'; *ptr++ = 'x'; *ptr++ = itox_chars[(value >> 12) & 0xf]; *ptr++ = itox_chars[(value >> 8) & 0xf]; *ptr++ = itox_chars[(value >> 4) & 0xf]; *ptr++ = itox_chars[(value >> 0) & 0xf]; *ptr = 0; return ZERR_NONE; }