-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelper.c
More file actions
53 lines (40 loc) · 965 Bytes
/
helper.c
File metadata and controls
53 lines (40 loc) · 965 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "helper.h"
#include <stdio.h>
/* Read a line from a socket */
ssize_t Readline(int sockd, void *vptr, size_t maxlen) {
// printf("Enter readline.\n");
ssize_t n, rc;
char c, *buffer;
buffer = vptr;
for ( n = 0; n < maxlen; n++ ) {
// printf("%lu. Entered for loop of readline.\n", n);
// printf("Max len = %lu\n", maxlen);
if ( (rc = read(sockd, &c, 1)) == 1 ) {
*buffer++ = c;
}
else {
--n;
}
}
*buffer = 0;
return n;
}
/* Write a line to a socket */
ssize_t Writeline(int sockd, const void *vptr, size_t n) {
size_t nleft;
ssize_t nwritten;
const char *buffer;
buffer = vptr;
nleft = n;
while ( nleft > 0 ) {
if ( (nwritten = write(sockd, buffer, nleft)) <= 0 ) {
if ( errno == EINTR )
nwritten = 0;
else
return -1;
}
nleft -= nwritten;
buffer += nwritten;
}
return n;
}