Update to version 2.9.3a
[tropbot.git] / tblib.cc
index b396fe9..4347aa5 100644 (file)
--- a/tblib.cc
+++ b/tblib.cc
@@ -421,31 +421,6 @@ int call_socket(char *hostname, unsigned short portnum)
 
   sa.sin_port = (unsigned short) htons(portnum);
 
-
-
-/*
-  if(is_numeric(hostname))
-    {
-//      if ((hp = gethostbyaddr(hostname)) == NULL)
-      cerr<<"*** Can't use numeric IP ***\n";
-      return -1;
-    }
-  else
-    {
-      if ((hp = gethostbyname(hostname)) == NULL)
-       return -1;
-    };
-
-  cout<<"HP->H_ADDR >";
-  for(int k=0; k<hp->h_length; k++) cout<<"["<<hp->h_addr[k]<<"]";
-  cout<<"<\n";
-
-  memset(&sa,0,sizeof(sa));
-  memcpy((char *)&sa.sin_addr,hp->h_addr,hp->h_length);
-  sa.sin_family= hp->h_addrtype;
-  sa.sin_port= htons((u_short)portnum);
-*/
-
   if ((s= socket(AF_INET, SOCK_STREAM, 0)) < 0)   /* get socket */
     return(-1);
 
@@ -477,7 +452,7 @@ int establish(unsigned short portnum)
   if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) /* create socket */
     return(-1);
 
-  if (bind(s,(struct sockaddr *)&sa,sizeof(struct sockaddr_in)) < 0)
+  if (bind(s,(struct sockaddr *) &sa,sizeof(struct sockaddr_in)) < 0)
     {
       close(s);
       return(-1);                               /* bind address to socket */
@@ -511,92 +486,76 @@ int slice_buffer(char *&src, char *endsrc,
 
   char *s;
 
-  s = src;
-  while((*s != '\r') && (*s != '\n') && (s<endsrc)) s++;
+  s = src; while((*s != '\r') && (*s != '\n') && (s<endsrc)) s++;
   
-  if(s<endsrc)
-    {
-      end = 0;
+  if(s == endsrc) return 1;
+
+  end = 0;
 
-      n_cmd = 0;
-      n_ctcp = 0;
-      ctcp = 0;
-      queue = 0;
+  n_cmd = 0;
+  n_ctcp = 0;
+  ctcp = 0;
+  queue = 0;
       
-      if(*src == ':')
-       {
-         src++;
-         prefix = dest_ctcp;
-         while((src<endsrc) && (*src != ' '))
-           {
-             *dest_ctcp = *src;
-             dest_ctcp++;
-             src++;
-           };
-         *dest_ctcp = '\0';
-         dest_ctcp++;
-       }
-      else prefix = NULL;
+  if(*src == ':')
+    {
+      src++;
+      prefix = dest_ctcp;
+      while((src<endsrc) && (*src != ' ')) *dest_ctcp++ = *src++;
+      *dest_ctcp++ = '\0';
+    }
+  else prefix = NULL;
       
-      while((src < endsrc) && !end)
+  while((src < endsrc) && !end)
+    {
+      if((*src == ' ') || (*src == '\r') || (*src == '\n') || (*src == '\001'))
        {
-         if((*src == ' ') || (*src == '\r') || (*src == '\n')
-            || (*src == '\001'))
+         if(*src == '\001')
            {
-             if(*src == '\001')
-               {
-                 src++;
-                 slice_ctcp[n_ctcp++] = dest_ctcp;
-                 while((src<endsrc) && (*src != '\r') && (*src != '\001'))
-                   *dest_ctcp++ = *src++;
-                 *dest_ctcp = '\0';
-                 dest_ctcp++;
-                 if(src<endsrc)
-                   {
-                     end = (*src == '\r') || (*src == '\n');
-                     src++;
-                   }
-                 else end = 1;
-               }
-             else
+             src++;
+             slice_ctcp[n_ctcp++] = dest_ctcp;
+
+             while((src<endsrc) && (*src != '\r') &&
+                   (*src != '\n') && (*src != '\001')) *dest_ctcp++ = *src++;
+
+             *dest_ctcp++ = '\0';
+
+             if(src<endsrc)
                {
-                 *dest_cmd = '\0';
-                 dest_cmd++;
                  end = (*src == '\r') || (*src == '\n');
                  src++;
-               };
+               }
+             else end = 1;
            }
          else
            {
-             if(!ctcp) slice_cmd[n_cmd++] = dest_cmd;
-             if(*src == ':')
-               {
-                 queue = 1;
-                 src++;
-               };
-             ctcp = 0;
-             while((src<endsrc) &&
-               ((*src != ' ') || queue) && (*src != '\r') && (*src != '\n') 
-                   && (*src != '\001'))
-               *dest_cmd++ = *src++;
-             ctcp = (*src == '\001');
+             *dest_cmd++ = '\0';
+             end = (*src == '\r') || (*src == '\n');
+             src++;
            };
+       }
+      else
+       {
+         if(!ctcp) slice_cmd[n_cmd++] = dest_cmd;
+         if(*src == ':') { queue = 1; src++; };
+
+         ctcp = 0;
+         while((src<endsrc) &&
+               ((*src != ' ') || queue) && (*src != '\r') && (*src != '\n') 
+               && (*src != '\001'))
+           *dest_cmd++ = *src++;
+
+         ctcp = (*src == '\001');
        };
-      if(src < endsrc) if(*src == '\n') src++; // Loose the '\n'
-      return 0;
-    }
-  else return 1;
-};
+    };
 
-//-----------------------------------------------------------------------------
+  if(src < endsrc) if(*src == '\n') src++;
 
-void ListChar::Print()
-{
-  NodeList<char *> *node;
-  for(node = first; node != NULL; node = node->next)
-    cout<<node->body<<"\n";
+  return 0;
 };
 
+//-----------------------------------------------------------------------------
+
 void ListChar::Clear()
 {
   NodeList<char *> *node, *next;
@@ -604,7 +563,7 @@ void ListChar::Clear()
   while(node != NULL)
     {
       next = node->next;
-      delete node->body;
+      delete[] node->body;
       delete node;
       node = next;
     };
@@ -628,14 +587,17 @@ void ListChar::Remove(char *s)
   while(node != NULL)
     {
       next = node->next;
+
       if(strcmp(node->body, s) == 0)
        {
          if(pred == NULL) first = next;
          else pred->next = next;
-         delete node->body;
+
+         delete[] node->body;
          delete node;
        }
       else pred = node;
+
       node = next;
     };
 };