author | Madhusudan.C.S <madhusudancs@gmail.com> |
Mon, 18 Jan 2010 17:21:39 +0530 | |
changeset 1 | 47438813ede2 |
parent 0 | 30d751ac6d49 |
permissions | -rw-r--r-- |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
1 |
#include <rpc/rpc.h> |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
2 |
#include <stdio.h> |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
3 |
#include "ftp.h" |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
4 |
|
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
5 |
extern __thread int errno; |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
6 |
|
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
7 |
readfile_res* retrieve_file_1_svc(request *req, struct svc_req *rqstp) |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
8 |
{ |
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
9 |
FILE *file; |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
10 |
filechunk data; |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
11 |
static readfile_res res; |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
12 |
|
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
13 |
file = fopen(req->name, "rb"); |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
14 |
if (file == NULL) { |
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
15 |
res.errno = errno; |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
16 |
return (&res); |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
17 |
} |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
18 |
|
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
19 |
xdr_free((xdrproc_t)xdr_readfile_res, (char *)&res); |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
20 |
|
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
21 |
fseek (file, req->start, SEEK_SET); |
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
22 |
res.readfile_res_u.chunk.items = fread(res.readfile_res_u.chunk.data, sizeof(int), MAXLEN, file); |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
23 |
|
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
24 |
/* |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
25 |
* Return the result |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
26 |
*/ |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
27 |
res.errno = 0; |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
28 |
fclose(file); |
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
29 |
return (&res); |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
30 |
} |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
31 |
|
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
32 |
int* send_file_1_svc(chunksend *rec, struct svc_req *rqstp) |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
33 |
{ |
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
34 |
FILE *file; |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
35 |
int write_items; |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
36 |
static int result; |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
37 |
|
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
38 |
file = fopen(rec->name, "ab"); |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
39 |
if (file == NULL) { |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
40 |
result = errno; |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
41 |
return &result; |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
42 |
} |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
43 |
|
1
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
44 |
write_items = fwrite(rec->data, sizeof(int), rec->items, file); |
47438813ede2
Added support for handling binary files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
0
diff
changeset
|
45 |
fclose(file); |
0
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
46 |
|
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
47 |
result = 0; |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
48 |
return &result; |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
49 |
} |
30d751ac6d49
Solution to first assignment.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
50 |