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 |