/[LeafOK_CVS]/lbbs/src/netio.c
ViewVC logotype

Contents of /lbbs/src/netio.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations)
Sun Mar 20 17:37:14 2005 UTC (21 years ago) by sysadm
Branch: MAIN
Changes since 1.3: +33 -33 lines
Content type: text/x-csrc
*** empty log message ***

1 /***************************************************************************
2 netio.c - description
3 -------------------
4 begin : Mon Oct 18 2004
5 copyright : (C) 2004 by Leaflet
6 email : leaflet@leafok.com
7 ***************************************************************************/
8
9 /***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18 #include "common.h"
19 #include <string.h>
20 #include <sys/socket.h>
21
22 char
23 s_getc (int socket)
24 {
25 char c;
26 if (recv (socket, &c, 1, 0) > 0)
27 return c;
28 else
29 return '\0';
30 }
31
32 int
33 s_putc (int socket, char c)
34 {
35 int ret;
36
37 ret = send (socket, &c, 1, 0);
38
39 return ret;
40 }
41
42 int
43 s_receive (int socket, char *buffer, int buffer_length, char end_str[])
44 {
45 char buf_str[2048];
46 int buf_read, total_read;
47 int buf_len = 2047;
48
49 if (buf_len + 1 > buffer_length)
50 buf_len = buffer_length - 1;
51
52 total_read = 0;
53 strcpy (buffer, "");
54 while ((buf_read = recv (socket, buf_str, buf_len, 0)) > 0)
55 {
56 buf_str[buf_read] = '\0';
57 total_read += buf_read;
58 strcat (buffer, buf_str);
59
60 buf_len = buffer_length - total_read - 1;
61 if (buf_len + 1 > buffer_length)
62 buf_len = buffer_length - 1;
63
64 if (strcmp ((buffer + total_read - strlen (end_str)), end_str) == 0)
65 break;
66 //different line-end symbol in different OS
67 if (strcmp (end_str, "\r") == 0)
68 {
69 if (strcmp ((buffer + total_read - 2), "\r\n") == 0)
70 break;
71 }
72 }
73
74 return total_read;
75 }
76
77 int
78 s_send (int socket, const char *in_str)
79 {
80 int ret;
81
82 if (in_str != NULL && strlen (in_str) > 0)
83 {
84 ret = send (socket, in_str, strlen (in_str), 0);
85 }
86
87 return ret;
88 }

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1