| 423 |
|
if (IsDead(client_p)) |
| 424 |
|
return; |
| 425 |
|
|
| 426 |
< |
if (source_p->id[0] == '\0' && me.id[0]) |
| 426 |
> |
if (me.id[0]) |
| 427 |
|
{ |
| 428 |
< |
char *id = (char *)execute_callback(uid_get_cb, source_p); |
| 428 |
> |
const char *id = execute_callback(uid_get_cb, source_p); |
| 429 |
> |
|
| 430 |
|
while (hash_find_id(id) != NULL) |
| 431 |
|
id = uid_get(NULL); |
| 432 |
|
|
| 1114 |
|
send_umode_out(struct Client *client_p, struct Client *source_p, |
| 1115 |
|
unsigned int old) |
| 1116 |
|
{ |
| 1117 |
< |
char buf[IRCD_BUFSIZE]; |
| 1117 |
> |
char buf[IRCD_BUFSIZE] = { '\0' }; |
| 1118 |
|
dlink_node *ptr = NULL; |
| 1119 |
|
|
| 1120 |
|
send_umode(NULL, source_p, old, IsOperHiddenAdmin(source_p) ? |
| 1121 |
|
SEND_UMODES & ~UMODE_ADMIN : SEND_UMODES, buf); |
| 1122 |
|
|
| 1123 |
< |
if (*buf) |
| 1123 |
> |
if (buf[0]) |
| 1124 |
|
{ |
| 1125 |
|
DLINK_FOREACH(ptr, serv_list.head) |
| 1126 |
|
{ |
| 1326 |
|
send_message_file(source_p, &ConfigFileEntry.opermotd); |
| 1327 |
|
} |
| 1328 |
|
|
| 1329 |
< |
/* |
| 1329 |
< |
* Quick and dirty UID code for new proposed SID on EFnet |
| 1330 |
< |
* |
| 1331 |
< |
*/ |
| 1329 |
> |
static char new_uid[TOTALSIDUID + 1]; /* allow for \0 */ |
| 1330 |
|
|
| 1331 |
< |
static char new_uid[TOTALSIDUID+1]; /* allow for \0 */ |
| 1332 |
< |
static void add_one_to_uid(int i); |
| 1331 |
> |
int |
| 1332 |
> |
valid_sid(const char *sid) |
| 1333 |
> |
{ |
| 1334 |
> |
|
| 1335 |
> |
if (strlen(sid) == IRC_MAXSID) |
| 1336 |
> |
if (IsDigit(*sid)) |
| 1337 |
> |
if (IsUpper(*(sid + 1)) && IsUpper(*(sid + 2))) |
| 1338 |
> |
return 1; |
| 1339 |
> |
|
| 1340 |
> |
return 0; |
| 1341 |
> |
} |
| 1342 |
|
|
| 1343 |
|
/* |
| 1344 |
|
* init_uid() |
| 1358 |
|
|
| 1359 |
|
if (ServerInfo.sid != NULL) |
| 1360 |
|
{ |
| 1361 |
< |
memcpy(new_uid, ServerInfo.sid, IRCD_MIN(strlen(ServerInfo.sid), |
| 1362 |
< |
IRC_MAXSID)); |
| 1363 |
< |
memcpy(&me.id, ServerInfo.sid, IRCD_MIN(strlen(ServerInfo.sid), |
| 1357 |
< |
IRC_MAXSID)); |
| 1361 |
> |
strlcpy(new_uid, ServerInfo.sid, sizeof(new_uid)); |
| 1362 |
> |
strlcpy(me.id, ServerInfo.sid, sizeof(me.id)); |
| 1363 |
> |
|
| 1364 |
|
hash_add_id(&me); |
| 1365 |
|
} |
| 1366 |
|
|
| 1368 |
|
if (new_uid[i] == '\0') |
| 1369 |
|
new_uid[i] = 'A'; |
| 1370 |
|
|
| 1371 |
< |
/* XXX if IRC_MAXUID != 6, this will have to be rewritten */ |
| 1371 |
> |
/* NOTE: if IRC_MAXUID != 6, this will have to be rewritten */ |
| 1372 |
|
/* Yes nenolod, I have known it was off by one ever since I wrote it |
| 1373 |
|
* But *JUST* for you, though, it really doesn't look as *pretty* |
| 1374 |
|
* -Dianora |
| 1375 |
|
*/ |
| 1376 |
< |
memcpy(new_uid+IRC_MAXSID, "AAAAA@", IRC_MAXUID); |
| 1376 |
> |
memcpy(new_uid + IRC_MAXSID, "AAAAA@", IRC_MAXUID); |
| 1377 |
|
|
| 1378 |
|
entering_umode_cb = register_callback("entering_umode", NULL); |
| 1379 |
|
umode_cb = register_callback("changing_umode", change_simple_umode); |
| 1381 |
|
} |
| 1382 |
|
|
| 1383 |
|
/* |
| 1378 |
– |
* uid_get |
| 1379 |
– |
* |
| 1380 |
– |
* inputs - struct Client * |
| 1381 |
– |
* output - new UID is returned to caller |
| 1382 |
– |
* side effects - new_uid is incremented by one. |
| 1383 |
– |
*/ |
| 1384 |
– |
static void * |
| 1385 |
– |
uid_get(va_list args) |
| 1386 |
– |
{ |
| 1387 |
– |
add_one_to_uid(TOTALSIDUID-1); /* index from 0 */ |
| 1388 |
– |
return ((void *) new_uid); |
| 1389 |
– |
} |
| 1390 |
– |
|
| 1391 |
– |
/* |
| 1384 |
|
* add_one_to_uid |
| 1385 |
|
* |
| 1386 |
|
* inputs - index number into new_uid |
| 1400 |
|
new_uid[i] = 'A'; |
| 1401 |
|
add_one_to_uid(i-1); |
| 1402 |
|
} |
| 1403 |
< |
else new_uid[i] = new_uid[i] + 1; |
| 1403 |
> |
else |
| 1404 |
> |
++new_uid[i]; |
| 1405 |
|
} |
| 1406 |
|
else |
| 1407 |
|
{ |
| 1408 |
< |
/* XXX if IRC_MAXUID != 6, this will have to be rewritten */ |
| 1408 |
> |
/* NOTE: if IRC_MAXUID != 6, this will have to be rewritten */ |
| 1409 |
|
if (new_uid[i] == 'Z') |
| 1410 |
< |
memcpy(new_uid+IRC_MAXSID, "AAAAAA", IRC_MAXUID); |
| 1410 |
> |
memcpy(new_uid + IRC_MAXSID, "AAAAAA", IRC_MAXUID); |
| 1411 |
|
else |
| 1412 |
< |
new_uid[i] = new_uid[i] + 1; |
| 1412 |
> |
++new_uid[i]; |
| 1413 |
|
} |
| 1414 |
|
} |
| 1415 |
|
|
| 1416 |
|
/* |
| 1417 |
+ |
* uid_get |
| 1418 |
+ |
* |
| 1419 |
+ |
* inputs - struct Client * |
| 1420 |
+ |
* output - new UID is returned to caller |
| 1421 |
+ |
* side effects - new_uid is incremented by one. |
| 1422 |
+ |
*/ |
| 1423 |
+ |
static void * |
| 1424 |
+ |
uid_get(va_list args) |
| 1425 |
+ |
{ |
| 1426 |
+ |
add_one_to_uid(TOTALSIDUID - 1); /* index from 0 */ |
| 1427 |
+ |
return new_uid; |
| 1428 |
+ |
} |
| 1429 |
+ |
|
| 1430 |
+ |
/* |
| 1431 |
|
* init_isupport() |
| 1432 |
|
* |
| 1433 |
|
* input - NONE |