#define is_chanvoice(chan, client) (trie_get(&(chan)->v, (client)->key))
extern struct trie_node *client_map;
extern struct trie_node *channel_map;
+extern struct trie_node *autojoin;
extern struct client_data *clients;
extern fd_set readfds;
extern struct sockaddr_in serverAddrV4;
struct trie_node *client_map = NULL;
struct trie_node *channel_map = NULL;
+struct trie_node *autojoin = NULL;
const char *hostname = "irc.patchysicp.xyz";
#define is_registered(cl) ((cl)->regstate == REG_REGISTERED)
sendLUSERS(client);
rpl_umodeis(client), sendbuf(client);
sendMOTD(client);
+ struct trie_find *f = NULL;
+ if (trie_findfirst(&f, &autojoin) == 1)
+ do {
+ channel_join(client, f->key, NULL);
+ } while (trie_findnext(&f) == 1);
}
void sendLUSERS(struct client_data *client)
{
listeners[listener_count].ctx = is_tls ? tls_ctx : NULL;
listeners[listener_count++].sock = create_listen_sock(argv[i+1], argv[i+2]);
i += 2;
+ } else if(!strcmp(argv[i], "--autojoin")) {
+ if (i + 1 >= argc)
+ return fprintf(stderr, "not enough parameters\n"), 1;
+ trie_set(&autojoin, argv[i+1], (void*)1, NULL);
+ i += 1;
} else {
return fprintf(stderr, "unknown flag '%s'\n", argv[i]), 1;
}
tls_free(tls_ctx);
#endif
free(databuf.buf);
+ trie_free(&autojoin);
return 0;
}