#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "global.h"

#include "window.h"
#define CRAP 0
extern server_ptr gsrv;

/* ========================================================================= */

char *m_grab_word(char **str, char letter)
{
  char *walk, *track, *start;
  int size, loop;

  walk = *str;
  while (*walk==letter) walk++;
  track = walk;
  while (*walk && (*walk!=letter))
/*    if (*walk++ == '\\')*/ walk++;

  size = (walk - track);

  walk = start = (char *)malloc(size+1);
  for (loop=0;loop<size;loop++) *walk++ = *track++;
  *walk = 0;
  if (*track) track++;
  *str = track;
  return start;
}

int grab_word(char **str, char letter, char *word)
{
  char *walk, *track;
  char *copywalk;
  int count = 0;

  track = word;
  walk = *str;
  while (*walk==letter) walk++;
  while (*walk && (*walk != letter)) {
/*    if (*walk == '\\') walk++; */
    *track++ = *walk++;
    count++;
  }
  if (*walk==letter) walk++;
  else count = -count;
  *track = 0;
  *str = walk;
  return count;
}

/* ========================================================================= */
int clean_word(char **str, char *word)
{
  char *walk;
  int count = 0;

  walk = *str;
  while (*walk && (*walk != ' ')) {
    if (*walk == '\\') walk++;
    if (*walk) {
      *word++ = *walk++;
      count++;
    }
  }
  if (*walk == ' ') walk++;
  *word = 0;
  *str = walk;
  return count;
}

/* ========================================================================= */

int line_split(char *line, split *temp)
{
  char *walk;
  int args = 0;
  *temp->null = 0;
  (int)strcpy(temp->line, line);
  walk = temp->line;
  if (*walk == ':') {
    temp->userhost = temp->null;
    walk++;
    temp->from = walk;
    while (*walk!=' ')
      if (*walk=='!') {
        *walk = 0;
        temp->userhost = ++walk;
      } else walk++;
    *walk++ = 0;
    while (*walk==' ') walk++;
  } else {
    temp->from = temp->null;
    temp->userhost = temp->null;
  }
  temp->command = walk;
  while (*walk && (*walk!=' ')) walk++;
  *walk++ = 0;
  while (*walk==' ') walk++;
  temp->text = walk;
  while ((*walk!=':') && (args<MAX_ARGS) && *walk) {
    temp->p[args++] = walk;
    while (*walk && (*walk!=' ')) walk++;
    if (*walk) *walk++ = 0;
    while (*walk==' ') walk++;
  }
  if (*walk) temp->text = ++walk;
  else temp->text = walk;

  while (args<MAX_ARGS)
    temp->p[args++] = temp->null;
  temp->commandnum = atoi(temp->command);
/*
  say("ARGS [%s][%s][%s][%s][%s][%s][%s][%s][%s][%s]",
                temp->p[0], temp->p[1], temp->p[2], temp->p[3], temp->p[4], 
                temp->p[5], temp->p[6], temp->p[7], temp->p[8], temp->text);
*/
  return TRUE;
}

/* ========================================================================= */
