#include <winsock.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <misclib.h>

#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;
}