1 /* $OpenBSD: sftp-client.h,v 1.11 2002/09/11 22:41:50 djm Exp $ */ 2 3 #ifndef _SFTP_CLIENT_H 4 #define _SFTP_CLIENT_H 5 6 #pragma ident "%Z%%M% %I% %E% SMI" 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 13 /* 14 * Copyright (c) 2001,2002 Damien Miller. All rights reserved. 15 * 16 * Redistribution and use in source and binary forms, with or without 17 * modification, are permitted provided that the following conditions 18 * are met: 19 * 1. Redistributions of source code must retain the above copyright 20 * notice, this list of conditions and the following disclaimer. 21 * 2. Redistributions in binary form must reproduce the above copyright 22 * notice, this list of conditions and the following disclaimer in the 23 * documentation and/or other materials provided with the distribution. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 26 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 27 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 28 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 30 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 31 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 34 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37 /* Client side of SSH2 filexfer protocol */ 38 39 typedef struct SFTP_DIRENT SFTP_DIRENT; 40 41 struct SFTP_DIRENT { 42 char *filename; 43 char *longname; 44 Attrib a; 45 }; 46 47 /* 48 * Initialiase a SSH filexfer connection. Returns -1 on error or 49 * protocol version on success. 50 */ 51 struct sftp_conn *do_init(int, int, u_int, u_int); 52 53 u_int sftp_proto_version(struct sftp_conn *); 54 55 /* Close file referred to by 'handle' */ 56 int do_close(struct sftp_conn *, char *, u_int); 57 58 /* Read contents of 'path' to NULL-terminated array 'dir' */ 59 int do_readdir(struct sftp_conn *, char *, SFTP_DIRENT ***); 60 61 /* Frees a NULL-terminated array of SFTP_DIRENTs (eg. from do_readdir) */ 62 void free_sftp_dirents(SFTP_DIRENT **); 63 64 /* Delete file 'path' */ 65 int do_rm(struct sftp_conn *, char *); 66 67 /* Create directory 'path' */ 68 int do_mkdir(struct sftp_conn *, char *, Attrib *); 69 70 /* Remove directory 'path' */ 71 int do_rmdir(struct sftp_conn *, char *); 72 73 /* Get file attributes of 'path' (follows symlinks) */ 74 Attrib *do_stat(struct sftp_conn *, char *, int); 75 76 /* Get file attributes of 'path' (does not follow symlinks) */ 77 Attrib *do_lstat(struct sftp_conn *, char *, int); 78 79 /* Get file attributes of open file 'handle' */ 80 Attrib *do_fstat(struct sftp_conn *, char *, u_int, int); 81 82 /* Set file attributes of 'path' */ 83 int do_setstat(struct sftp_conn *, char *, Attrib *); 84 85 /* Set file attributes of open file 'handle' */ 86 int do_fsetstat(struct sftp_conn *, char *, u_int, Attrib *); 87 88 /* Canonicalise 'path' - caller must free result */ 89 char *do_realpath(struct sftp_conn *, char *); 90 91 /* Rename 'oldpath' to 'newpath' */ 92 int do_rename(struct sftp_conn *, char *, char *); 93 94 /* Rename 'oldpath' to 'newpath' */ 95 int do_symlink(struct sftp_conn *, char *, char *); 96 97 /* Return target of symlink 'path' - caller must free result */ 98 char *do_readlink(struct sftp_conn *, char *); 99 100 /* XXX: add callbacks to do_download/do_upload so we can do progress meter */ 101 102 /* 103 * Download 'remote_path' to 'local_path'. Preserve permissions and times 104 * if 'pflag' is set 105 */ 106 int do_download(struct sftp_conn *, char *, char *, int); 107 108 /* 109 * Upload 'local_path' to 'remote_path'. Preserve permissions and times 110 * if 'pflag' is set 111 */ 112 int do_upload(struct sftp_conn *, char *, char *, int); 113 114 #ifdef __cplusplus 115 } 116 #endif 117 118 #endif /* _SFTP_CLIENT_H */ 119