From 997985d79e5813e8a33e82fb0cc0c0f08cf2c55d Mon Sep 17 00:00:00 2001 From: Erwan Velu Date: Tue, 15 Mar 2011 21:51:46 +0100 Subject: libupload: New library to manage uploads This commit creates a library to upload content via 3 backends (srec/ymodem/tftp). Code came from sysdump and got librarized for being used more easily by more other com32 modules. --- com32/libupload/upload_backend.h | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 com32/libupload/upload_backend.h (limited to 'com32/libupload/upload_backend.h') diff --git a/com32/libupload/upload_backend.h b/com32/libupload/upload_backend.h new file mode 100644 index 00000000..968e2c62 --- /dev/null +++ b/com32/libupload/upload_backend.h @@ -0,0 +1,55 @@ +#ifndef BACKEND_H +#define BACKEND_H + +#include +#include +#include +#include +#include "serial.h" + +/* Backend flags */ +#define BE_NEEDLEN 0x01 + +struct upload_backend { + const char *name; + const char *helpmsg; + int minargs; + + size_t dbytes; + size_t zbytes; + const char **argv; + + uint32_t now; + + int (*write)(struct upload_backend *); + + z_stream zstream; + char *outbuf; + size_t alloc; +}; + +/* zout.c */ +int init_data(struct upload_backend *be, const char *argv[]); +int write_data(struct upload_backend *be, const void *buf, size_t len); +int flush_data(struct upload_backend *be); + +/* cpio.c */ +#define cpio_init init_data +int cpio_hdr(struct upload_backend *be, uint32_t mode, size_t datalen, + const char *filename); +int cpio_mkdir(struct upload_backend *be, const char *filename); +int cpio_writefile(struct upload_backend *be, const char *filename, + const void *data, size_t len); +int cpio_close(struct upload_backend *be); +#define MODE_FILE 0100644 +#define MODE_DIR 0040755 + +/* backends.c */ +struct upload_backend *get_upload_backend(const char *name); + +/* backends */ +extern struct upload_backend upload_tftp; +extern struct upload_backend upload_ymodem; +extern struct upload_backend upload_srec; + +#endif /* BACKEND_H */ -- cgit v1.2.1 From 1b2b5c5e3a34bde8c3860dde5e4d1b6ea984540d Mon Sep 17 00:00:00 2001 From: Erwan Velu Date: Mon, 18 Apr 2011 23:07:39 +0200 Subject: libupload: Implementing error code on tftp When using the tftp backend, let's return the errors we got on the server. --- com32/libupload/upload_backend.h | 1 + 1 file changed, 1 insertion(+) (limited to 'com32/libupload/upload_backend.h') diff --git a/com32/libupload/upload_backend.h b/com32/libupload/upload_backend.h index 968e2c62..7ea03e46 100644 --- a/com32/libupload/upload_backend.h +++ b/com32/libupload/upload_backend.h @@ -6,6 +6,7 @@ #include #include #include "serial.h" +#include "tftp.h" /* Backend flags */ #define BE_NEEDLEN 0x01 -- cgit v1.2.1