comparison libpurple/protocols/zephyr/ZReadAscii.c @ 15373:5fe8042783c1

Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author Sean Egan <seanegan@gmail.com>
date Sat, 20 Jan 2007 02:32:10 +0000
parents
children a8cc50c2279f
comparison
equal deleted inserted replaced
15372:f79e0f4df793 15373:5fe8042783c1
1 /* This file is part of the Project Athena Zephyr Notification System.
2 * It contains source for the ZReadAscii function.
3 *
4 * Created by: Robert French
5 *
6 * Copyright (c) 1987, 1990 by the Massachusetts Institute of Technology.
7 * For copying and distribution information, see the file
8 * "mit-copyright.h".
9 */
10
11 #include "internal.h"
12
13 #define Z_cnvt_xtoi(c) ((temp=(c)-'0'),(temp<10)?temp:((temp-='A'-'9'-1),(temp<16)?temp:-1))
14
15 Code_t ZReadAscii(ptr, len, field, num)
16 char *ptr;
17 int len;
18 unsigned char *field;
19 int num;
20 {
21 int i;
22 unsigned int hexbyte;
23 register int c1, c2;
24 register unsigned int temp;
25
26 for (i=0;i<num;i++) {
27 if (*ptr == ' ') {
28 ptr++;
29 if (--len < 0)
30 return ZERR_BADFIELD;
31 }
32 if (ptr[0] == '0' && ptr[1] == 'x') {
33 ptr += 2;
34 len -= 2;
35 if (len < 0)
36 return ZERR_BADFIELD;
37 }
38 c1 = Z_cnvt_xtoi(ptr[0]);
39 if (c1 < 0)
40 return ZERR_BADFIELD;
41 c2 = Z_cnvt_xtoi(ptr[1]);
42 if (c2 < 0)
43 return ZERR_BADFIELD;
44 hexbyte = (c1 << 4) | c2;
45 field[i] = hexbyte;
46 ptr += 2;
47 len -= 2;
48 if (len < 0)
49 return ZERR_BADFIELD;
50 }
51
52 return *ptr ? ZERR_BADFIELD : ZERR_NONE;
53 }
54
55 Code_t ZReadAscii32(ptr, len, value_ptr)
56 char *ptr;
57 int len;
58 unsigned long *value_ptr;
59 {
60 unsigned char buf[4];
61 Code_t retval;
62
63 retval = ZReadAscii(ptr, len, buf, 4);
64 if (retval != ZERR_NONE)
65 return retval;
66 *value_ptr = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
67 return ZERR_NONE;
68 }
69
70 Code_t ZReadAscii16(ptr, len, value_ptr)
71 char *ptr;
72 int len;
73 unsigned short *value_ptr;
74 {
75 unsigned char buf[2];
76 Code_t retval;
77
78 retval = ZReadAscii(ptr, len, buf, 2);
79 if (retval != ZERR_NONE)
80 return retval;
81 *value_ptr = (buf[0] << 8) | buf[1];
82 return ZERR_NONE;
83 }
84