int access_pos = 0;
int access_count = 0;
int minaccess = 0;
- char *str_a, *str_b = cbind->func->channel_access;
+ char *str_a, *str_b = cbind->func->channel_access, *str_c;
if(cbind->flags & CMDFLAG_OVERRIDE_CHANNEL_ACCESS)
str_b = cbind->channel_access;
if(str_b) {
- while((str_a = strstr(str_b, ","))) {
- *str_a = '\0';
- if(*str_b == '#') {
+ str_c = strdup(str_b);
+ str_b = str_c;
+ while((str_a = str_b)) {
+ str_b = strstr(str_a, ",");
+ if(str_b) {
+ *str_b = '\0';
str_b++;
- access_pos += sprintf(access_list+access_pos, ", `%s`", str_b);
+ }
+ if(*str_a == '#') {
+ str_a++;
+ access_pos += sprintf(access_list+access_pos, ", `%s`", str_a);
access_count++;
} else {
- if(atoi(str_b) > minaccess)
- minaccess = atoi(str_b);
+ if(atoi(str_a) > minaccess)
+ minaccess = atoi(str_a);
}
- *str_a = ',';
- str_b = str_a+1;
}
- if(*str_b == '#') {
- str_b++;
- access_pos += sprintf(access_list+access_pos, ", `%s`", str_b);
- access_count++;
- } else if(atoi(str_b) > minaccess)
- minaccess = atoi(str_b);
-
+ free(str_c);
} else
access_list[0] = '\0';
if(!(chan->flags & CHANFLAG_REQUESTED_CHANINFO) || (sent_chan && sent_chan == chan) || access_count || minaccess) {