#ifndef TOOLS_H
#define TOOLS_H



#define FTP_TRANSFER_SEND 0
#define FTP_TRANSFER_RECV 1

int ftp_transfer(char *server, char *user, char *pwd, char *local_file, char *remote_file, int direction);
int ftp_mtransfer(char *server, char *user, char *pwd, char *local_file, char *remote_file, int direction);
int ftp_dir(char *server, char *user, char *pwd, char *remote_dir, char *local_file,int direction);
int ftp_dir_internal(char *server, char *user, char *pwd, char *remote_dir, char *local_file,int direction);
int ftp_miupd(char *server, char *user, char *pwd, char *local_file, char *remote_file,char *wildcard1, char *wildcard2);
int ftp_iexe(char *server, char *user, char *pwd, char *cmd);
int ftp_delete(char *server, char *user, char *pwd, char *cmd);
char *_send_ftp_raw_cmd(char *server, char *cmd, char *file, int line);
char *_send_ftp_raw_cmd_l(char *server, char *user, char *pwd, char *cmd, char *file, int line);
char *_send_ftp_raw_cmd2_l(char *server, char *user, char *pwd, char *cmd, char *cmd2, char *file, int line);

#define ftp_mput(serv,lfile,rfile) ftp_mtransfer((serv),"root","AudiA4quattro",(lfile),(rfile), FTP_TRANSFER_SEND)
#define ftp_mget(serv,lfile,rfile) ftp_mtransfer((serv),"root","AudiA4quattro",(lfile),(rfile), FTP_TRANSFER_RECV)
#define ftp_put(serv,lfile,rfile) ftp_transfer((serv),"root","AudiA4quattro",(lfile),(rfile), FTP_TRANSFER_SEND)
#define ftp_put_l(serv,user,pwd,lfile,rfile) ftp_transfer((serv),(user),(pwd),(lfile),(rfile), FTP_TRANSFER_SEND)
#define ftp_get(serv,lfile,rfile) ftp_transfer((serv),"root","AudiA4quattro",(lfile),(rfile), FTP_TRANSFER_RECV)
#define ftp_mkdir(serv,rdir) ftp_dir((serv),"root","AudiA4quattro",(rdir),NULL,FTP_TRANSFER_SEND)
#define ftp_list(serv,rdir,lfile) ftp_dir((serv),"root","AudiA4quattro",(rdir),(lfile),FTP_TRANSFER_RECV)
#define ftp_iupd(serv,lfile,rfile,wildcard1,wildcard2) ftp_miupd((serv),"root","AudiA4quattro", (lfile),(rfile),(wildcard1),(wildcard2))
#define ftp_exec(serv,cmd) ftp_iexe((serv),"root","AudiA4quattro", (cmd))
#define ftp_del(serv,cmd) ftp_delete((serv),"root","AudiA4quattro", (cmd))
#define ftp_send_raw_cmd(serv,cmd) _send_ftp_raw_cmd((serv),(cmd),__FILE__,__LINE__)
#define ftp_send_raw_cmd_l(serv,user,pwd,cmd) _send_ftp_raw_cmd_l((serv),(user),(pwd),(cmd),__FILE__,__LINE__)
#define ftp_send_raw_cmd2_l(serv,user,pwd,cmd,cmd2) _send_ftp_raw_cmd2_l((serv),(user),(pwd),(cmd),(cmd2),__FILE__,__LINE__)

int get_sockaddr(int preferred_family, int sock_type, char *hostname, unsigned short port, struct sockaddr **sock_addr, int *sock_family, int *sock_addr_len, char *printable,int printable_len);

char *make_print(unsigned char *in,int len);
char *make_json_print(unsigned char *in,int len);

#endif
