}
char* merge_argv(char **argv, int start, int end) {
+ return merge_argv_char(argv, start, end, ' ');
+}
+
+char* merge_argv_char(char **argv, int start, int end, char seperator) {
int i;
char *p = NULL;
for(i = start; i < end; i++) {
p = argv[i];
while(*p) p++;
- *p = ' ';
+ *p = seperator;
}
if(p) *p = '\0';
return argv[start];
void free_parser();
void reply(struct ClientSocket *client, struct UserNode *user, const char *text, ...);
char* merge_argv(char **argv, int start, int end);
+char* merge_argv_char(char **argv, int start, int end, char seperator);
#endif
\ No newline at end of file
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) {