Mercurial > hg > nnchat
comparison nnchat.c @ 15:50d8396e7417
Move things around a bit.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 24 Mar 2008 09:35:02 +0000 |
parents | 86fe5f0d1a85 |
children | e80072e26178 |
comparison
equal
deleted
inserted
replaced
14:6badfa3eb10e | 15:50d8396e7417 |
---|---|
122 | 122 |
123 return TRUE; | 123 return TRUE; |
124 } | 124 } |
125 | 125 |
126 | 126 |
127 int openConnection(struct in_addr *addr, int port) | |
128 { | |
129 struct sockaddr_in tmpAddr; | |
130 int sock = -1; | |
131 | |
132 tmpAddr.sin_family = AF_INET; | |
133 tmpAddr.sin_port = htons(port); | |
134 tmpAddr.sin_addr = *addr; | |
135 | |
136 THMSG(1, "Connecting to %s:%d ...\n", | |
137 inet_ntoa(tmpAddr.sin_addr), port); | |
138 | |
139 if ((sock = socket(PF_INET, SOCK_STREAM, 0)) == -1) { | |
140 THERR("Could not open socket: %s\n", strerror(errno)); | |
141 return -2; | |
142 } | |
143 | |
144 THMSG(2, "Using socket %d.\n", sock); | |
145 | |
146 if (connect(sock, (struct sockaddr *) &tmpAddr, sizeof(tmpAddr)) == -1) { | |
147 THERR("Could not connect: %s\n", strerror(errno)); | |
148 return -5; | |
149 } | |
150 | |
151 return sock; | |
152 } | |
153 | |
154 | |
155 void closeConnection(int sock) | |
156 { | |
157 if (sock >= 0) { | |
158 #ifdef __WIN32 | |
159 closesocket(sock); | |
160 #else | |
161 close(sock); | |
162 #endif | |
163 } | |
164 } | |
165 | |
166 | |
127 BOOL sendToSocket(int sock, char *buf, const size_t bufLen) | 167 BOOL sendToSocket(int sock, char *buf, const size_t bufLen) |
128 { | 168 { |
129 size_t bufLeft = bufLen; | 169 size_t bufLeft = bufLen; |
130 char *bufPtr = buf; | 170 char *bufPtr = buf; |
131 | 171 |
234 PUSHCHAR(0); | 274 PUSHCHAR(0); |
235 | 275 |
236 return result; | 276 return result; |
237 } | 277 } |
238 | 278 |
279 | |
239 int getxdigit(int c, int shift) | 280 int getxdigit(int c, int shift) |
240 { | 281 { |
241 int i; | 282 int i; |
242 | 283 |
243 if (c >= 'A' && c <= 'F') | 284 if (c >= 'A' && c <= 'F') |
249 else | 290 else |
250 return -1; | 291 return -1; |
251 | 292 |
252 return i << shift; | 293 return i << shift; |
253 } | 294 } |
295 | |
254 | 296 |
255 char *decodeStr1(char *str) | 297 char *decodeStr1(char *str) |
256 { | 298 { |
257 char *result, *s = str; | 299 char *result, *s = str; |
258 size_t resSize, resPos = 0; | 300 size_t resSize, resPos = 0; |
332 | 374 |
333 | 375 |
334 html_entity_t HTMLEntities[] = { | 376 html_entity_t HTMLEntities[] = { |
335 { '<', "<" }, | 377 { '<', "<" }, |
336 { '>', ">" }, | 378 { '>', ">" }, |
337 /* | |
338 { '&', "&" }, | |
339 { 'ä', "ä" }, | |
340 { 'ö', "ö" }, | |
341 { 'Ä', "Ä" }, | |
342 { 'Ö', "Ö" }, | |
343 */ | |
344 }; | 379 }; |
345 | 380 |
346 const int numHTMLEntities = (sizeof(HTMLEntities) / sizeof(html_entity_t)); | 381 const int numHTMLEntities = (sizeof(HTMLEntities) / sizeof(html_entity_t)); |
347 | 382 |
348 | 383 |
562 | 597 |
563 return 1; | 598 return 1; |
564 } | 599 } |
565 | 600 |
566 | 601 |
567 int handleInput(int sock, char *buf, size_t bufLen) | 602 int handleUserInput(int sock, char *buf, size_t bufLen) |
568 { | 603 { |
569 char *tmpStr, *tmpStr2; | 604 char *tmpStr, *tmpStr2; |
570 BOOL result; | 605 BOOL result; |
571 | 606 |
572 /* Trim right */ | 607 /* Trim right */ |
612 th_free(tmpStr2); | 647 th_free(tmpStr2); |
613 if (result) | 648 if (result) |
614 return 0; | 649 return 0; |
615 else | 650 else |
616 return -1; | 651 return -1; |
617 } | |
618 } | |
619 | |
620 | |
621 int openConnection(struct in_addr *addr, int port) | |
622 { | |
623 struct sockaddr_in tmpAddr; | |
624 int sock = -1; | |
625 | |
626 tmpAddr.sin_family = AF_INET; | |
627 tmpAddr.sin_port = htons(port); | |
628 tmpAddr.sin_addr = *addr; | |
629 | |
630 THMSG(1, "Connecting to %s:%d ...\n", | |
631 inet_ntoa(tmpAddr.sin_addr), port); | |
632 | |
633 if ((sock = socket(PF_INET, SOCK_STREAM, 0)) == -1) { | |
634 THERR("Could not open socket: %s\n", strerror(errno)); | |
635 return -2; | |
636 } | |
637 | |
638 THMSG(2, "Using socket %d.\n", sock); | |
639 | |
640 if (connect(sock, (struct sockaddr *) &tmpAddr, sizeof(tmpAddr)) == -1) { | |
641 THERR("Could not connect: %s\n", strerror(errno)); | |
642 return -5; | |
643 } | |
644 | |
645 return sock; | |
646 } | |
647 | |
648 | |
649 void closeConnection(int sock) | |
650 { | |
651 if (sock >= 0) { | |
652 #ifdef __WIN32 | |
653 closesocket(sock); | |
654 #else | |
655 close(sock); | |
656 #endif | |
657 } | 652 } |
658 } | 653 } |
659 | 654 |
660 | 655 |
661 int main(int argc, char *argv[]) | 656 int main(int argc, char *argv[]) |
800 if (gotBuf < 0) { | 795 if (gotBuf < 0) { |
801 printMsg("Error in reading stdio.\n"); | 796 printMsg("Error in reading stdio.\n"); |
802 exitProg = TRUE; | 797 exitProg = TRUE; |
803 } else { | 798 } else { |
804 /* Call the user input handler */ | 799 /* Call the user input handler */ |
805 result = handleInput(tmpSocket, tmpBuf, gotBuf); | 800 result = handleUserInput(tmpSocket, tmpBuf, gotBuf); |
806 if (result < 0) { | 801 if (result < 0) { |
807 printMsg("Fatal error handling user input: %s\n", | 802 printMsg("Fatal error handling user input: %s\n", |
808 tmpBuf); | 803 tmpBuf); |
809 exitProg = TRUE; | 804 exitProg = TRUE; |
810 } | 805 } |