Tue, 14 Jun 2005 00:24:27 +0000
[gaim-migrate @ 12864]
Small changes to the oscar PRPL. Someone in #gaim was attempting to
debug a problem he's seen with permit/deny settings not sticking,
and noticed that there were multiple copies of people in his permit
or deny list. He didn't think the copies were still being added.
In any case, now Gaim will remove duplicate copies of people in your
permit and deny list, and multiple copies of a single buddy in the
same group.
| 2086 | 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 | 6 | */ |
| 7 | ||
| 2672 | 8 | #define FAIM_INTERNAL |
| 2086 | 9 | #include <aim.h> |
| 10 | #include <ctype.h> | |
| 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 | |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
16 | faim_internal void faimdprintf(aim_session_t *sess, int dlevel, const char *format, ...) |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
17 | { |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
18 | if (!sess) { |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
19 | fprintf(stderr, "faimdprintf: no session! boo! (%d, %s)\n", dlevel, format); |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
20 | return; |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
21 | } |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
22 | if ((dlevel <= sess->debug) && sess->debugcb) { |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
23 | va_list ap; |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
24 | va_start(ap, format); |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
25 | sess->debugcb(sess, dlevel, format, ap); |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
26 | va_end(ap); |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
27 | } |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
28 | |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
29 | return; |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
30 | } |
|
36828a69456f
[gaim-migrate @ 4496]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
31 | |
| 5927 | 32 | faim_export int aimutil_putstr(char *dest, const char *src, int len) |
| 2086 | 33 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
34 | memcpy(dest, src, len); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
35 | return len; |
| 2086 | 36 | } |
| 37 | ||
| 38 | /* | |
| 39 | * Tokenizing functions. Used to portably replace strtok/sep. | |
| 40 | * -- DMP. | |
| 41 | * | |
| 42 | */ | |
| 6323 | 43 | faim_export int aimutil_tokslen(char *toSearch, int theindex, char dl) |
| 2086 | 44 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
45 | int curCount = 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
46 | char *next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
47 | char *last; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
48 | int toReturn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
49 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
50 | last = toSearch; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
51 | next = strchr(toSearch, dl); |
| 2086 | 52 | |
| 6323 | 53 | while(curCount < theindex && next != NULL) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
54 | curCount++; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
55 | last = next + 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
56 | next = strchr(last, dl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
57 | } |
| 2086 | 58 | |
| 6323 | 59 | if ((curCount < theindex) || (next == NULL)) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
60 | toReturn = strlen(toSearch) - (curCount - 1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
61 | else |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
62 | toReturn = next - toSearch - (curCount - 1); |
|
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 | return toReturn; |
| 2086 | 65 | } |
| 66 | ||
| 67 | faim_export int aimutil_itemcnt(char *toSearch, char dl) | |
| 68 | { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
69 | int curCount; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
70 | char *next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
71 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
72 | curCount = 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
73 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
74 | next = strchr(toSearch, dl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
75 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
76 | while(next != NULL) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
77 | curCount++; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
78 | next = strchr(next + 1, dl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
79 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
80 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
81 | return curCount; |
| 2086 | 82 | } |
| 83 | ||
| 6323 | 84 | faim_export char *aimutil_itemindex(char *toSearch, int theindex, char dl) |
| 2086 | 85 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
86 | int curCount; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
87 | char *next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
88 | char *last; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
89 | char *toReturn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
90 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
91 | curCount = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
92 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
93 | last = toSearch; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
94 | next = strchr(toSearch, dl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
95 | |
| 6323 | 96 | while (curCount < theindex && next != NULL) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
97 | curCount++; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
98 | last = next + 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
99 | next = strchr(last, dl); |
| 2086 | 100 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
101 | |
| 6323 | 102 | if (curCount < theindex) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
103 | toReturn = malloc(sizeof(char)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
104 | *toReturn = '\0'; |
| 2086 | 105 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
106 | next = strchr(last, dl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
107 | |
| 6323 | 108 | if (curCount < theindex) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
109 | toReturn = malloc(sizeof(char)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
110 | *toReturn = '\0'; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
111 | } else { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
112 | if (next == NULL) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
113 | toReturn = malloc((strlen(last) + 1) * sizeof(char)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
114 | strcpy(toReturn, last); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
115 | } else { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
116 | toReturn = malloc((next - last + 1) * sizeof(char)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
117 | memcpy(toReturn, last, (next - last)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
118 | toReturn[next - last] = '\0'; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
119 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
120 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
121 | return toReturn; |
| 2086 | 122 | } |
| 123 | ||
|
4617
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 | * Calculate the checksum of a given icon. |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
126 | * |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
127 | */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
128 | 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
|
129 | { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
130 | fu32_t sum; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
131 | int i; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
132 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
133 | for (i=0, sum=0; i+1<buflen; i+=2) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
134 | sum += (buf[i+1] << 8) + buf[i]; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
135 | if (i < buflen) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
136 | sum += buf[i]; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
137 | sum = ((sum & 0xffff0000) >> 16) + (sum & 0x0000ffff); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
138 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
139 | return sum; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
140 | } |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4246
diff
changeset
|
141 | |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
142 | /** |
|
8972
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
143 | * 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
|
144 | * Example: BobDole |
|
9681
9df6d086ce97
[gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
8982
diff
changeset
|
145 | * Example: Henry_Ford@mac.com |
|
8972
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 | * @return 1 if the screen name is valid, 0 if not. |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
148 | */ |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
149 | static int aim_snvalid_aim(const char *sn) |
|
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 | int i; |
|
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 | for (i = 0; sn[i] != '\0'; i++) { |
|
9681
9df6d086ce97
[gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
8982
diff
changeset
|
154 | if (!isalnum(sn[i]) && (sn[i] != ' ') && |
|
9df6d086ce97
[gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
8982
diff
changeset
|
155 | (sn[i] != '@') && (sn[i] != '.') && |
|
9df6d086ce97
[gaim-migrate @ 10533]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
8982
diff
changeset
|
156 | (sn[i] != '_') && (sn[i] != '-')) |
|
8972
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
157 | return 0; |
|
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 | return 1; |
|
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 | |
|
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 | * 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
|
165 | * Example: 1234567 |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
166 | * |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
167 | * @return 1 if the screen name is valid, 0 if not. |
|
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 | static int aim_snvalid_icq(const char *sn) |
|
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 | int i; |
|
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 | for (i = 0; sn[i] != '\0'; i++) { |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
174 | if (!isdigit(sn[i])) |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
175 | return 0; |
|
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 | return 1; |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
179 | } |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
180 | |
|
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 | * 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
|
183 | * Example: +19195551234 |
|
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 | * @return 1 if the screen name is valid, 0 if not. |
|
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 | static int aim_snvalid_sms(const char *sn) |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
188 | { |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
189 | int i; |
|
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 | if (sn[0] != '+') |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
192 | return 0; |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
193 | |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
194 | for (i = 1; sn[i] != '\0'; i++) { |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
195 | if (!isdigit(sn[i])) |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
196 | return 0; |
|
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 | return 1; |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
200 | } |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
201 | |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
202 | /** |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
203 | * 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
|
204 | * |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
205 | * @return 1 if the screen name is valid, 0 if not. |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
206 | */ |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
207 | faim_export int aim_snvalid(const char *sn) |
|
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 ((sn == NULL) || (*sn == '\0')) |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
210 | return 0; |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
211 | |
|
8972
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
212 | if (isalpha(sn[0])) |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
213 | return aim_snvalid_aim(sn); |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
214 | else if (isdigit(sn[0])) |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
215 | return aim_snvalid_icq(sn); |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
216 | else if (sn[0] == '+') |
|
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
217 | return aim_snvalid_sms(sn); |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
218 | |
|
8972
9fbb6e964df8
[gaim-migrate @ 9746]
Mark Doliner <markdoliner@pidgin.im>
parents:
8885
diff
changeset
|
219 | return 0; |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
220 | } |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6323
diff
changeset
|
221 | |
|
9975
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 | * Determine if a given screen name is an ICQ screen name |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
224 | * (i.e. it begins with a number). |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
225 | * |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
226 | * @sn A valid AIM or ICQ screen name. |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
227 | * @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
|
228 | * is returned. |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
229 | */ |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
230 | faim_export int aim_sn_is_icq(const char *sn) |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
231 | { |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
232 | if (isalpha(sn[0])) |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
233 | return 0; |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
234 | return 1; |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
235 | } |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9681
diff
changeset
|
236 | |
| 2086 | 237 | /* |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
238 | * int snlen(const char *) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
239 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
240 | * This takes a screen name and returns its length without |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
241 | * spaces. If there are no spaces in the SN, then the |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
242 | * return is equal to that of strlen(). |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
243 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
244 | */ |
| 2086 | 245 | faim_export int aim_snlen(const char *sn) |
| 246 | { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
247 | int i = 0; |
| 2086 | 248 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
249 | if (!sn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
250 | return 0; |
| 2086 | 251 | |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5414
diff
changeset
|
252 | while (*sn != '\0') { |
|
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5414
diff
changeset
|
253 | if (*sn != ' ') |
|
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5414
diff
changeset
|
254 | i++; |
|
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5414
diff
changeset
|
255 | sn++; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
256 | } |
| 2086 | 257 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
258 | return i; |
| 2086 | 259 | } |
| 260 | ||
| 261 | /* | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
262 | * int sncmp(const char *, const char *) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
263 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
264 | * This takes two screen names and compares them using the rules |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
265 | * 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
|
266 | * insensitivity (all case differences and spacing differences are |
| 5628 | 267 | * ignored, with the exception that screen names can not start with |
| 268 | * a space). | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
269 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
270 | * Return: 0 if equal |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
271 | * non-0 if different |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
272 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
273 | */ |
| 2086 | 274 | faim_export int aim_sncmp(const char *sn1, const char *sn2) |
| 275 | { | |
| 276 | ||
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9975
diff
changeset
|
277 | if ((sn1 == NULL) || (sn2 == NULL)) |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9975
diff
changeset
|
278 | return -1; |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9975
diff
changeset
|
279 | |
|
5928
9d5ace6e5354
[gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
280 | do { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5414
diff
changeset
|
281 | while (*sn2 == ' ') |
|
5724
43232f2d4694
[gaim-migrate @ 6146]
Mark Doliner <markdoliner@pidgin.im>
parents:
5628
diff
changeset
|
282 | sn2++; |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5414
diff
changeset
|
283 | while (*sn1 == ' ') |
|
5724
43232f2d4694
[gaim-migrate @ 6146]
Mark Doliner <markdoliner@pidgin.im>
parents:
5628
diff
changeset
|
284 | sn1++; |
|
5928
9d5ace6e5354
[gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
285 | if (toupper(*sn1) != toupper(*sn2)) |
|
9d5ace6e5354
[gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
286 | return 1; |
|
9d5ace6e5354
[gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
287 | } while ((*sn1 != '\0') && sn1++ && sn2++); |
| 2086 | 288 | |
|
5928
9d5ace6e5354
[gaim-migrate @ 6368]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
289 | return 0; |
| 2086 | 290 | } |