Advertisement
swarley

Parser -- Alpha

Mar 2nd, 2012
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.17 KB | None | 0 0
  1. #include <string.h>
  2.  
  3. typedef struct event {
  4.     char *command;
  5.     //CLIENT *client;
  6.     char *raw;
  7.     char *args[];
  8.     int state;
  9. } event;
  10.  
  11. event parse(char *text)
  12. {
  13.   char *raw;
  14.   char *command;
  15.   char tmp = text;
  16.   for(int i = 0; *text != ' '; i++) *command++ = *text++;
  17.   *command ='\0';
  18.   for(; *text == ' '; *text++);
  19.   int arg_count = args_of(command);
  20.   if(arg_count == -1)
  21.   {
  22.       event *ret;
  23.       ret->command = command;
  24.       ret->raw     = tmp;
  25.       ret->args    = {'\0'};
  26.       ret->state   = -1;
  27.       return ret;
  28.   }
  29.   char *args[arg_count];
  30.   for(int i = 0; *text != ':'; *text++)
  31.   {
  32.       if(*text == ' ')
  33.       {
  34.           *args[i] = '\0';
  35.           i++;
  36.       }
  37.       else
  38.       {
  39.           *args[i]++ = *text;
  40.       }
  41.   }
  42.   *text++;
  43.   if(strlen(args[i]) < 1)
  44.   {
  45.       for(; *text != '\0';) *args[i]++ = *text++;
  46.   }
  47.   else
  48.   {
  49.       *args[i] = '\0';
  50.       i++;
  51.       for(; *text != '\0';) *args[i]++ = *text++;
  52.   }
  53.   event ret;
  54.   ret->command = command;
  55.   ret->raw     = tmp;
  56.   ret->args    = args;
  57.   if(i > arg_count)
  58.   {
  59.       ret->state = -1;
  60.   }
  61.   else
  62.   {
  63.       ret->state = 1;
  64.   }
  65.   return ret;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement