src/protocols/oscar/util.c

Sat, 13 Aug 2005 06:43:45 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sat, 13 Aug 2005 06:43:45 +0000
changeset 11253
81cbd43ef85e
parent 10116
054b064145a1
child 13169
c09d2d5dba91
permissions
-rw-r--r--

[gaim-migrate @ 13422]
Get rid of faimdprintf and use gaim_debug functions instead

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
4246
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
2 * A little bit of this
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
3 * A little bit of that
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
4 * It started with a kiss
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
5 * Now we're up to bat
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2246
diff changeset
8 #define FAIM_INTERNAL
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 #include <aim.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 #include <ctype.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11
4246
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
12 #ifdef _WIN32
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
13 #include "win32dep.h"
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
14 #endif
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
15
5927
f83c9f4afb60 [gaim-migrate @ 6367]
Ryan McCabe
parents: 5800
diff changeset
16 faim_export int aimutil_putstr(char *dest, const char *src, int len)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
18 memcpy(dest, src, len);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
19 return len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 /*
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 * Tokenizing functions. Used to portably replace strtok/sep.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 * -- DMP.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 */
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
27 faim_export int aimutil_tokslen(char *toSearch, int theindex, char dl)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
29 int curCount = 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
30 char *next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
31 char *last;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
32 int toReturn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
33
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
34 last = toSearch;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
35 next = strchr(toSearch, dl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
37 while(curCount < theindex && next != NULL) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
38 curCount++;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
39 last = next + 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
40 next = strchr(last, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
41 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
43 if ((curCount < theindex) || (next == NULL))
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
44 toReturn = strlen(toSearch) - (curCount - 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
45 else
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
46 toReturn = next - toSearch - (curCount - 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
47
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
48 return toReturn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 faim_export int aimutil_itemcnt(char *toSearch, char dl)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
53 int curCount;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
54 char *next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
55
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
56 curCount = 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
57
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
58 next = strchr(toSearch, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
59
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
60 while(next != NULL) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
61 curCount++;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
62 next = strchr(next + 1, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
63 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
64
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
65 return curCount;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
68 faim_export char *aimutil_itemindex(char *toSearch, int theindex, char dl)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
70 int curCount;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
71 char *next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
72 char *last;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
73 char *toReturn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
74
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
75 curCount = 0;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
76
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
77 last = toSearch;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
78 next = strchr(toSearch, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
79
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
80 while (curCount < theindex && next != NULL) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
81 curCount++;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
82 last = next + 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
83 next = strchr(last, dl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
85
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
86 if (curCount < theindex) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
87 toReturn = malloc(sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
88 *toReturn = '\0';
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
90 next = strchr(last, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
91
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
92 if (curCount < theindex) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
93 toReturn = malloc(sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
94 *toReturn = '\0';
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
95 } else {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
96 if (next == NULL) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
97 toReturn = malloc((strlen(last) + 1) * sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
98 strcpy(toReturn, last);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
99 } else {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
100 toReturn = malloc((next - last + 1) * sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
101 memcpy(toReturn, last, (next - last));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
102 toReturn[next - last] = '\0';
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
103 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
104 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
105 return toReturn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
108 /**
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
109 * Calculate the checksum of a given icon.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
110 *
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
111 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
112 faim_export fu16_t aimutil_iconsum(const fu8_t *buf, int buflen)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
113 {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
114 fu32_t sum;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
115 int i;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
116
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
117 for (i=0, sum=0; i+1<buflen; i+=2)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
118 sum += (buf[i+1] << 8) + buf[i];
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
119 if (i < buflen)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
120 sum += buf[i];
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
121 sum = ((sum & 0xffff0000) >> 16) + (sum & 0x0000ffff);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
122
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
123 return sum;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
124 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
125
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
126 /**
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
127 * Check if the given screen name is a valid AIM screen name.
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
128 * Example: BobDole
9681
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
129 * Example: Henry_Ford@mac.com
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
130 *
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
131 * @return 1 if the screen name is valid, 0 if not.
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
132 */
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
133 static int aim_snvalid_aim(const char *sn)
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
134 {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
135 int i;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
136
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
137 for (i = 0; sn[i] != '\0'; i++) {
9681
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
138 if (!isalnum(sn[i]) && (sn[i] != ' ') &&
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
139 (sn[i] != '@') && (sn[i] != '.') &&
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
140 (sn[i] != '_') && (sn[i] != '-'))
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
141 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
142 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
143
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
144 return 1;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
145 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
146
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
147 /**
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
148 * Check if the given screen name is a valid ICQ screen name.
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
149 * Example: 1234567
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
150 *
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
151 * @return 1 if the screen name is valid, 0 if not.
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
152 */
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
153 static int aim_snvalid_icq(const char *sn)
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
154 {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
155 int i;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
156
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
157 for (i = 0; sn[i] != '\0'; i++) {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
158 if (!isdigit(sn[i]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
159 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
160 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
161
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
162 return 1;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
163 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
164
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
165 /**
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
166 * Check if the given screen name is a valid SMS screen name.
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
167 * Example: +19195551234
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
168 *
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
169 * @return 1 if the screen name is valid, 0 if not.
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
170 */
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
171 static int aim_snvalid_sms(const char *sn)
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
172 {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
173 int i;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
174
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
175 if (sn[0] != '+')
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
176 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
177
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
178 for (i = 1; sn[i] != '\0'; i++) {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
179 if (!isdigit(sn[i]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
180 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
181 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
182
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
183 return 1;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
184 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
185
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
186 /**
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
187 * Check if the given screen name is a valid oscar screen name.
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
188 *
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
189 * @return 1 if the screen name is valid, 0 if not.
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
190 */
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
191 faim_export int aim_snvalid(const char *sn)
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
192 {
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
193 if ((sn == NULL) || (*sn == '\0'))
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
194 return 0;
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
195
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
196 if (isalpha(sn[0]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
197 return aim_snvalid_aim(sn);
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
198 else if (isdigit(sn[0]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
199 return aim_snvalid_icq(sn);
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
200 else if (sn[0] == '+')
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
201 return aim_snvalid_sms(sn);
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
202
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
203 return 0;
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
204 }
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
205
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
206 /**
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
207 * Determine if a given screen name is an ICQ screen name
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
208 * (i.e. it begins with a number).
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
209 *
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
210 * @sn A valid AIM or ICQ screen name.
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
211 * @return 1 if the screen name is an ICQ screen name. Otherwise 0
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
212 * is returned.
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
213 */
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
214 faim_export int aim_sn_is_icq(const char *sn)
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
215 {
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
216 if (isalpha(sn[0]))
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
217 return 0;
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
218 return 1;
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
219 }
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
220
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
221 /*
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
222 * int snlen(const char *)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
223 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
224 * This takes a screen name and returns its length without
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
225 * spaces. If there are no spaces in the SN, then the
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
226 * return is equal to that of strlen().
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
227 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
228 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
229 faim_export int aim_snlen(const char *sn)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
230 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
231 int i = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
232
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
233 if (!sn)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
234 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
235
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
236 while (*sn != '\0') {
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
237 if (*sn != ' ')
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
238 i++;
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
239 sn++;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
240 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
241
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
242 return i;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
243 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
244
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
245 /*
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
246 * int sncmp(const char *, const char *)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
247 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
248 * This takes two screen names and compares them using the rules
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
249 * on screen names for AIM/AOL. Mainly, this means case and space
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
250 * insensitivity (all case differences and spacing differences are
5628
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5556
diff changeset
251 * ignored, with the exception that screen names can not start with
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5556
diff changeset
252 * a space).
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
253 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
254 * Return: 0 if equal
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
255 * non-0 if different
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
256 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
257 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
258 faim_export int aim_sncmp(const char *sn1, const char *sn2)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
259 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
260
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9975
diff changeset
261 if ((sn1 == NULL) || (sn2 == NULL))
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9975
diff changeset
262 return -1;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9975
diff changeset
263
5928
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
264 do {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
265 while (*sn2 == ' ')
5724
43232f2d4694 [gaim-migrate @ 6146]
Mark Doliner <markdoliner@pidgin.im>
parents: 5628
diff changeset
266 sn2++;
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
267 while (*sn1 == ' ')
5724
43232f2d4694 [gaim-migrate @ 6146]
Mark Doliner <markdoliner@pidgin.im>
parents: 5628
diff changeset
268 sn1++;
5928
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
269 if (toupper(*sn1) != toupper(*sn2))
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
270 return 1;
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
271 } while ((*sn1 != '\0') && sn1++ && sn2++);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272
5928
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
273 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274 }

mercurial