ftp/ftps.c
changeset 0 30d751ac6d49
child 1 47438813ede2
equal deleted inserted replaced
-1:000000000000 0:30d751ac6d49
       
     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