/*
Basic Communication and other commands
*/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdarg.h>
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
#include <ctype.h>
#include <signal.h>

#include "mud.h"

char *one_argument( char *argument, char *arg_first )
{
    char cEnd;

    while ( isspace(*argument) )
        argument++;

    cEnd = ' ';
    if ( *argument == '\'' || *argument == '"' )
        cEnd = *argument++;

    while ( *argument != '\0' )
    {
        if ( *argument == cEnd )
        {
            argument++;
            break;
        }
        *arg_first = LOWER(*argument);
        arg_first++;
        argument++;
    }
    *arg_first = '\0';

    while ( isspace(*argument) )
        argument++;

    return argument;
}

void stcf(D_MOBILE *dMob,const char *fmt,...)
{
    char buf[MSL];
    va_list args;
    va_start(args, fmt);
    vsprintf(buf, fmt, args);
    va_end(args);
    text_to_mobile(dMob,buf);
}

void cmd_chat(D_MOBILE * dMob, char *argument)
{
  D_MOBILE *xMob;
  ITERATOR *pIter;
  char arg[MIL];
  char buf[MSL];

  one_argument(argument, arg);

  if (argument[0] == '\0') {
  stcf(dMob,"How about saying something, %s?\n\r",dMob->name);
  return;
  }

  stcf(dMob,"You chat '#C%s#n'\n\r",arg);
  xprintf(buf,"#W%s#n chats '#C%s#n'\n\r",dMob->name,arg);

  pIter = AllocIterator(dmobile_list);
  while ((xMob = (D_MOBILE *) NextInList(pIter)) != NULL)
   {
     if (xMob == dMob) continue;
     text_to_mobile(xMob, buf);
   }
      FreeIterator(pIter);
  append_dfile(dMob, LOG_DIR CHAT_LOG, argument);
  return;
}