src/protocols/oscar/util.c

Fri, 07 Apr 2006 05:10:56 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Fri, 07 Apr 2006 05:10:56 +0000
changeset 13593
3450a7cede99
parent 13240
db5187cc40d1
child 13607
3f75dc90654e
permissions
-rw-r--r--

[gaim-migrate @ 15978]
Holy cow this is crazy.
34 files changed, 5760 insertions(+), 8517 deletions(-)
* Non-blocking I/O for all of oscar. That includes normal FLAP
connections as well as file transfers and direct IM.
* Kick-ass file transfer and direct IM. Either party can request
the connection. Gaim will try both the "public" IP and the
"client" IP. It'll fall back to transferring through a proxy
if that fails. Should be relatively few memleaks (I didn't
have a lot of confidence in the non-memleakiness of the old
code). And the code is reasonably generic, so it shouldn't
be too much work to add voice chat. This might still be a
LITTLE buggy, but it shouldn't be too bad. If anything, file
transfer will be more buggy than direct IM. And sending a
file will be more buggy than receiving a file. Bug reports
with a series of steps to reproduce are welcome.
* I merged OscarData and aim_session_t
* Somewhere between 50 and 100 hours of work.

13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
1 /*
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
2 * Gaim's oscar protocol plugin
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
3 * This file is the legal property of its developers.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
4 * Please see the AUTHORS file distributed alongside this file.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
5 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
6 * This library is free software; you can redistribute it and/or
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
8 * License as published by the Free Software Foundation; either
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
9 * version 2 of the License, or (at your option) any later version.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
10 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
11 * This library is distributed in the hope that it will be useful,
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
14 * Lesser General Public License for more details.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
15 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
17 * License along with this library; if not, write to the Free Software
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
19 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
20
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 /*
4246
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
22 * A little bit of this
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
23 * A little bit of that
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
24 * It started with a kiss
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
25 * Now we're up to bat
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
28 #include "oscar.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
29 #include <ctype.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30
4246
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
31 #ifdef _WIN32
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
32 #include "win32dep.h"
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
33 #endif
36828a69456f [gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents: 3952
diff changeset
34
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 /*
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 * Tokenizing functions. Used to portably replace strtok/sep.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 * -- DMP.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
40 int aimutil_tokslen(char *toSearch, int theindex, char dl)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
42 int curCount = 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
43 char *next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
44 char *last;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
45 int toReturn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
46
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
47 last = toSearch;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
48 next = strchr(toSearch, dl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
50 while(curCount < theindex && next != NULL) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
51 curCount++;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
52 last = next + 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
53 next = strchr(last, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
54 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
56 if ((curCount < theindex) || (next == NULL))
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
57 toReturn = strlen(toSearch) - (curCount - 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
58 else
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
59 toReturn = next - toSearch - (curCount - 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
60
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
61 return toReturn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
64 int aimutil_itemcnt(char *toSearch, char dl)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
66 int curCount;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
67 char *next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
68
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
69 curCount = 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
70
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
71 next = strchr(toSearch, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
72
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
73 while(next != NULL) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
74 curCount++;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
75 next = strchr(next + 1, dl);
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
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
78 return curCount;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
81 char *aimutil_itemindex(char *toSearch, int theindex, char dl)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
83 int curCount;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
84 char *next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
85 char *last;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
86 char *toReturn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
87
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
88 curCount = 0;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
89
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
90 last = toSearch;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
91 next = strchr(toSearch, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
92
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
93 while (curCount < theindex && next != NULL) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
94 curCount++;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
95 last = next + 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
96 next = strchr(last, dl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
98
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
99 if (curCount < theindex) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
100 toReturn = malloc(sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
101 *toReturn = '\0';
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
103 next = strchr(last, dl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
104
6323
70c997ce574d [gaim-migrate @ 6822]
Zach Rusin
parents: 6322
diff changeset
105 if (curCount < theindex) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
106 toReturn = malloc(sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
107 *toReturn = '\0';
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
108 } else {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
109 if (next == NULL) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
110 toReturn = malloc((strlen(last) + 1) * sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
111 strcpy(toReturn, last);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
112 } else {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
113 toReturn = malloc((next - last + 1) * sizeof(char));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
114 memcpy(toReturn, last, (next - last));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
115 toReturn[next - last] = '\0';
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
116 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
117 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
118 return toReturn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
121 /**
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
122 * Calculate the checksum of a given icon.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
123 *
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
124 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
125 guint16 aimutil_iconsum(const guint8 *buf, int buflen)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
126 {
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 13169
diff changeset
127 guint32 sum;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
128 int i;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
129
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
130 for (i=0, sum=0; i+1<buflen; i+=2)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
131 sum += (buf[i+1] << 8) + buf[i];
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
132 if (i < buflen)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
133 sum += buf[i];
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
134 sum = ((sum & 0xffff0000) >> 16) + (sum & 0x0000ffff);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
135
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
136 return sum;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
137 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4246
diff changeset
138
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
139 /**
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
140 * 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
141 * Example: BobDole
9681
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
142 * Example: Henry_Ford@mac.com
8972
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 if the screen name is valid, 0 if not.
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 static int aim_snvalid_aim(const char *sn)
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 int i;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
149
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
150 for (i = 0; sn[i] != '\0'; i++) {
9681
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
151 if (!isalnum(sn[i]) && (sn[i] != ' ') &&
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
152 (sn[i] != '@') && (sn[i] != '.') &&
9df6d086ce97 [gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 8982
diff changeset
153 (sn[i] != '_') && (sn[i] != '-'))
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
154 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
155 }
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 return 1;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
158 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
159
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 * 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
162 * Example: 1234567
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 * @return 1 if the screen name is valid, 0 if not.
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 static int aim_snvalid_icq(const char *sn)
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
167 {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
168 int i;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
169
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
170 for (i = 0; sn[i] != '\0'; i++) {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
171 if (!isdigit(sn[i]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
172 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
173 }
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 return 1;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
176 }
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 /**
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
179 * 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
180 * Example: +19195551234
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 * @return 1 if the screen name is valid, 0 if not.
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
183 */
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
184 static int aim_snvalid_sms(const char *sn)
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 int i;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
187
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
188 if (sn[0] != '+')
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
189 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
190
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
191 for (i = 1; sn[i] != '\0'; i++) {
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
192 if (!isdigit(sn[i]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
193 return 0;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
194 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
195
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
196 return 1;
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
197 }
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
198
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
199 /**
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
200 * 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
201 *
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
202 * @return 1 if the screen name is valid, 0 if not.
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
203 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
204 int aim_snvalid(const char *sn)
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
205 {
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
206 if ((sn == NULL) || (*sn == '\0'))
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
207 return 0;
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
208
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
209 if (isalpha(sn[0]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
210 return aim_snvalid_aim(sn);
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
211 else if (isdigit(sn[0]))
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
212 return aim_snvalid_icq(sn);
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
213 else if (sn[0] == '+')
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
214 return aim_snvalid_sms(sn);
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
215
8972
9fbb6e964df8 [gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents: 8885
diff changeset
216 return 0;
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
217 }
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6323
diff changeset
218
9975
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 * Determine if a given screen name is an ICQ screen name
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
221 * (i.e. it begins with a number).
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
222 *
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
223 * @sn A valid AIM or ICQ screen name.
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
224 * @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
225 * is returned.
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
226 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
227 int aim_sn_is_icq(const char *sn)
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
228 {
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
229 if (isalpha(sn[0]))
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
230 return 0;
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
231 return 1;
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
232 }
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9681
diff changeset
233
13169
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
234 /**
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
235 * Determine if a given screen name is an SMS number
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
236 * (i.e. it begins with a +).
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
237 *
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
238 * @sn A valid AIM or ICQ screen name.
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
239 * @return 1 if the screen name is an SMS number. Otherwise 0
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
240 * is returned.
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
241 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
242 int aim_sn_is_sms(const char *sn)
13169
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
243 {
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
244 if (sn[0] != '+')
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
245 return 0;
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
246 return 1;
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
247 }
c09d2d5dba91 [gaim-migrate @ 15531]
Evan Schoenberg <evands@pidgin.im>
parents: 11253
diff changeset
248
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
249 /*
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
250 * int snlen(const char *)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
251 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
252 * This takes a screen name and returns its length without
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
253 * spaces. If there are no spaces in the SN, then the
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
254 * return is equal to that of strlen().
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
255 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
256 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
257 int aim_snlen(const char *sn)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
258 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
259 int i = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
260
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
261 if (!sn)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
262 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
263
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
264 while (*sn != '\0') {
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
265 if (*sn != ' ')
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
266 i++;
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
267 sn++;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
268 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
269
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
270 return i;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
271 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
273 /*
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
274 * int sncmp(const char *, const char *)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
275 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
276 * This takes two screen names and compares them using the rules
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
277 * 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
278 * insensitivity (all case differences and spacing differences are
5628
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5556
diff changeset
279 * ignored, with the exception that screen names can not start with
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5556
diff changeset
280 * a space).
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
281 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
282 * Return: 0 if equal
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
283 * non-0 if different
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
284 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
285 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
286 int aim_sncmp(const char *sn1, const char *sn2)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
287 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
288
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9975
diff changeset
289 if ((sn1 == NULL) || (sn2 == NULL))
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9975
diff changeset
290 return -1;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9975
diff changeset
291
5928
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
292 do {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
293 while (*sn2 == ' ')
5724
43232f2d4694 [gaim-migrate @ 6146]
Mark Doliner <markdoliner@pidgin.im>
parents: 5628
diff changeset
294 sn2++;
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5414
diff changeset
295 while (*sn1 == ' ')
5724
43232f2d4694 [gaim-migrate @ 6146]
Mark Doliner <markdoliner@pidgin.im>
parents: 5628
diff changeset
296 sn1++;
5928
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
297 if (toupper(*sn1) != toupper(*sn2))
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
298 return 1;
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
299 } while ((*sn1 != '\0') && sn1++ && sn2++);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
300
5928
9d5ace6e5354 [gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents: 5927
diff changeset
301 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
302 }

mercurial