735 #include #include #include #include #include #include #include "io.h" #include "chat.h" #include "connap.h" #include "util.h" PRIV* find_priv_by_nick(char *nick) { PRIV *p; for (p = privs; p; p = p->next) { if (! strcmp(p->nick, nick)) break; } return p; } CHAN* find_chan_by_name(char *channel) { CHAN *c; for (c = channels; c; c = c->next) { if (! strcmp(c->name, channel)) break; } return c; } int cmd_match(char *s, char *cmd, int len) { if ((int)strlen(s) < len) return 0; return !strncmp(s, cmd, strlen(s)); } int split_server(char *s, char **name, char **port, char **meta) { char *p = s; while (isspace(*p)) p++; if (! *p) return 0; *name = p; if (! (p = strchr(*name, ':'))) return 0; *p++ = 0; *port = p; if (! (p = strchr(*port, ':'))) return 0; *p++ = 0; *meta = p; return 1; } char * get_file_tail(char *filename) { char *p, *p2, *tail, *tail2; if ((p = strrchr(filename, '\\'))) { tail = p; *p = '\0'; if ((p2 = strrchr(filename, '\\'))) tail = p2; *p = '\\'; } else if ((p = strrchr(filename, '/'))) { tail = p; *p = '\0'; if ((p2 = strrchr(filename, '/'))) tail = p2; *p = '/'; } else tail = filename; if (tail != filename) tail++; tail2 = new_string(tail); return tail2; } char *get_dir(char *filename) { char *tail, *dir; int dir_len; tail = strrchr(filename, '/'); dir_len = tail - filename; if (dir_len) { dir = (char*)calloc(dir_len + 1, 1); strncpy(dir, filename, dir_len); } else dir = new_string("/"); return dir; } . 0