Mercurial > pidgin.yaz
diff src/protocols/zephyr/ZReadAscii.c @ 2086:424a40f12a6c
[gaim-migrate @ 2096]
moving protocols from plugins/ to src/protocols. making it so that you can select which protocols are compiled statically.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 31 Jul 2001 01:00:39 +0000 |
parents | |
children | 43d6c08d7e96 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/protocols/zephyr/ZReadAscii.c Tue Jul 31 01:00:39 2001 +0000 @@ -0,0 +1,108 @@ +/* This file is part of the Project Athena Zephyr Notification System. + * It contains source for the ZReadAscii function. + * + * Created by: Robert French + * + * $Source$ + * $Author: warmenhoven $ + * + * Copyright (c) 1987, 1990 by the Massachusetts Institute of Technology. + * For copying and distribution information, see the file + * "mit-copyright.h". + */ +/* $Header$ */ + +#ifndef lint +static char rcsid_ZReadAscii_c[] = "$Header$"; +#endif /* lint */ + +#include <internal.h> +#include <assert.h> + +#if 0 +static __inline__ +int +Z_cnvt_xtoi (char c) +{ + c -= '0'; + if (c < 10) + return c; + c -= 'A'-'9'-1; + if (c < 16) + return c; + return -1; +} +#endif + +#define Z_cnvt_xtoi(c) ((temp=(c)-'0'),(temp<10)?temp:((temp-='A'-'9'-1),(temp<16)?temp:-1)) + +Code_t ZReadAscii(ptr, len, field, num) + char *ptr; + int len; + unsigned char *field; + int num; +{ + int i; + unsigned int hexbyte; + register int c1, c2; + register unsigned int temp; + + for (i=0;i<num;i++) { + if (*ptr == ' ') { + ptr++; + if (--len < 0) + return ZERR_BADFIELD; + } + if (ptr[0] == '0' && ptr[1] == 'x') { + ptr += 2; + len -= 2; + if (len < 0) + return ZERR_BADFIELD; + } + c1 = Z_cnvt_xtoi(ptr[0]); + if (c1 < 0) + return ZERR_BADFIELD; + c2 = Z_cnvt_xtoi(ptr[1]); + if (c2 < 0) + return ZERR_BADFIELD; + hexbyte = (c1 << 4) | c2; + field[i] = hexbyte; + ptr += 2; + len -= 2; + if (len < 0) + return ZERR_BADFIELD; + } + + return *ptr ? ZERR_BADFIELD : ZERR_NONE; +} + +Code_t ZReadAscii32(ptr, len, value_ptr) + char *ptr; + int len; + unsigned long *value_ptr; +{ + unsigned char buf[4]; + Code_t retval; + + retval = ZReadAscii(ptr, len, buf, 4); + if (retval != ZERR_NONE) + return retval; + *value_ptr = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + return ZERR_NONE; +} + +Code_t ZReadAscii16(ptr, len, value_ptr) + char *ptr; + int len; + unsigned short *value_ptr; +{ + unsigned char buf[2]; + Code_t retval; + + retval = ZReadAscii(ptr, len, buf, 2); + if (retval != ZERR_NONE) + return retval; + *value_ptr = (buf[0] << 8) | buf[1]; + return ZERR_NONE; +} +