OSDN Git Service

I was library can be compiled 20140223
[zither/ds-zither.git] / libms / socket_reada.c
1 // socket_reada.c
2 // masashi shimakura 20140223
3
4 #include<stdio.h>
5 #include<fcntl.h>
6 #include <errno.h>
7 #include <unistd.h>
8 #include <string.h>
9
10 #include "libms.h"
11
12 int socket_reada(int sk, char * readdata, int max){
13 int ret, stat, count;
14 char cha[64];
15
16 memset(cha, 0x00, 64);
17
18 ret = 0;
19 stat = 0;
20 count = 0;
21
22 while(1){
23
24    stat = read(sk, cha, 63);
25
26    if(stat <= 0){
27       if(readdata[ret-1] == '\r' || readdata[ret-1] == '\n'){
28          break;
29          }
30       else{
31          if(count > 2){
32             break;
33             }
34          count++;
35          }
36       }
37    else{
38       count = 0;
39       strncat(readdata, cha, stat);
40
41       memset(cha, 0x00, 64);
42       ret = ret + stat;
43       if(ret > max - 63){
44          fprintf(stderr, "socket_reada(): read size err. max=%d\n", max);
45          break;
46          }
47       }
48    }
49
50 return(ret);
51 }
52
53
54