Mercurial > pidgin
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 |