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);
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 */
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;
while(node != NULL)
{
next = node->next;
- delete node->body;
+ delete[] node->body;
delete node;
node = next;
};
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;
};
};