equal
deleted
inserted
replaced
|
1 #include <rpc/rpc.h> |
|
2 #include <stdio.h> |
|
3 #include "ftp.h" |
|
4 |
|
5 extern __thread int errno; |
|
6 |
|
7 readfile_res* retrieve_file_1_svc(request *req, struct svc_req *rqstp) |
|
8 { |
|
9 FILE *file; |
|
10 char data[1024]; |
|
11 int bytes; |
|
12 static readfile_res res; |
|
13 |
|
14 file = fopen(req->name, "r"); |
|
15 if (file == NULL) { |
|
16 res.errno = errno; |
|
17 return (&res); |
|
18 } |
|
19 |
|
20 xdr_free((xdrproc_t)xdr_readfile_res, (char *)&res); |
|
21 |
|
22 fseek (file, req->start, SEEK_SET); |
|
23 bytes = fread(data, 1, MAXLEN, file); |
|
24 res.readfile_res_u.chunk.data = data; |
|
25 res.readfile_res_u.chunk.bytes = bytes; |
|
26 |
|
27 /* |
|
28 * Return the result |
|
29 */ |
|
30 res.errno = 0; |
|
31 fclose(file); |
|
32 return (&res); |
|
33 } |
|
34 |
|
35 int* send_file_1_svc(chunksend *rec, struct svc_req *rqstp) |
|
36 { |
|
37 FILE *file; |
|
38 int write_bytes; |
|
39 static int result; |
|
40 |
|
41 file = fopen(rec->name, "a"); |
|
42 if (file == NULL) { |
|
43 result = errno; |
|
44 return &result; |
|
45 } |
|
46 |
|
47 write_bytes = fwrite(rec->data, 1, rec->bytes, file); |
|
48 fclose(file); |
|
49 |
|
50 result = 0; |
|
51 return &result; |
|
52 } |
|
53 |