xref: /freebsd/crypto/openssh/sftp-client.h (revision ae1f160d)
1ae1f160dSDag-Erling Smørgrav /* $OpenBSD: sftp-client.h,v 1.9 2002/02/13 00:59:23 djm Exp $ */
21e8db6e2SBrian Feldman 
31e8db6e2SBrian Feldman /*
4ae1f160dSDag-Erling Smørgrav  * Copyright (c) 2001,2002 Damien Miller.  All rights reserved.
51e8db6e2SBrian Feldman  *
61e8db6e2SBrian Feldman  * Redistribution and use in source and binary forms, with or without
71e8db6e2SBrian Feldman  * modification, are permitted provided that the following conditions
81e8db6e2SBrian Feldman  * are met:
91e8db6e2SBrian Feldman  * 1. Redistributions of source code must retain the above copyright
101e8db6e2SBrian Feldman  *    notice, this list of conditions and the following disclaimer.
111e8db6e2SBrian Feldman  * 2. Redistributions in binary form must reproduce the above copyright
121e8db6e2SBrian Feldman  *    notice, this list of conditions and the following disclaimer in the
131e8db6e2SBrian Feldman  *    documentation and/or other materials provided with the distribution.
141e8db6e2SBrian Feldman  *
151e8db6e2SBrian Feldman  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
161e8db6e2SBrian Feldman  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
171e8db6e2SBrian Feldman  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
181e8db6e2SBrian Feldman  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
191e8db6e2SBrian Feldman  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
201e8db6e2SBrian Feldman  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
211e8db6e2SBrian Feldman  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
221e8db6e2SBrian Feldman  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
231e8db6e2SBrian Feldman  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
241e8db6e2SBrian Feldman  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
251e8db6e2SBrian Feldman  */
261e8db6e2SBrian Feldman 
271e8db6e2SBrian Feldman /* Client side of SSH2 filexfer protocol */
281e8db6e2SBrian Feldman 
29ae1f160dSDag-Erling Smørgrav #ifndef _SFTP_CLIENT_H
30ae1f160dSDag-Erling Smørgrav #define _SFTP_CLIENT_H
31ae1f160dSDag-Erling Smørgrav 
321e8db6e2SBrian Feldman typedef struct SFTP_DIRENT SFTP_DIRENT;
331e8db6e2SBrian Feldman 
341e8db6e2SBrian Feldman struct SFTP_DIRENT {
351e8db6e2SBrian Feldman 	char *filename;
361e8db6e2SBrian Feldman 	char *longname;
371e8db6e2SBrian Feldman 	Attrib a;
381e8db6e2SBrian Feldman };
391e8db6e2SBrian Feldman 
401e8db6e2SBrian Feldman /*
411e8db6e2SBrian Feldman  * Initialiase a SSH filexfer connection. Returns -1 on error or
421e8db6e2SBrian Feldman  * protocol version on success.
431e8db6e2SBrian Feldman  */
44ae1f160dSDag-Erling Smørgrav struct sftp_conn *
45ae1f160dSDag-Erling Smørgrav do_init(int, int, u_int, u_int);
46ae1f160dSDag-Erling Smørgrav 
47ae1f160dSDag-Erling Smørgrav u_int
48ae1f160dSDag-Erling Smørgrav sftp_proto_version(struct sftp_conn *);
491e8db6e2SBrian Feldman 
501e8db6e2SBrian Feldman /* Close file referred to by 'handle' */
51ae1f160dSDag-Erling Smørgrav int do_close(struct sftp_conn *, char *, u_int);
521e8db6e2SBrian Feldman 
531e8db6e2SBrian Feldman /* List contents of directory 'path' to stdout */
54ae1f160dSDag-Erling Smørgrav int do_ls(struct sftp_conn *, char *);
551e8db6e2SBrian Feldman 
561e8db6e2SBrian Feldman /* Read contents of 'path' to NULL-terminated array 'dir' */
57ae1f160dSDag-Erling Smørgrav int do_readdir(struct sftp_conn *, char *, SFTP_DIRENT ***);
581e8db6e2SBrian Feldman 
591e8db6e2SBrian Feldman /* Frees a NULL-terminated array of SFTP_DIRENTs (eg. from do_readdir) */
60ae1f160dSDag-Erling Smørgrav void free_sftp_dirents(SFTP_DIRENT **);
611e8db6e2SBrian Feldman 
621e8db6e2SBrian Feldman /* Delete file 'path' */
63ae1f160dSDag-Erling Smørgrav int do_rm(struct sftp_conn *, char *);
641e8db6e2SBrian Feldman 
651e8db6e2SBrian Feldman /* Create directory 'path' */
66ae1f160dSDag-Erling Smørgrav int do_mkdir(struct sftp_conn *, char *, Attrib *);
671e8db6e2SBrian Feldman 
681e8db6e2SBrian Feldman /* Remove directory 'path' */
69ae1f160dSDag-Erling Smørgrav int do_rmdir(struct sftp_conn *, char *);
701e8db6e2SBrian Feldman 
711e8db6e2SBrian Feldman /* Get file attributes of 'path' (follows symlinks) */
72ae1f160dSDag-Erling Smørgrav Attrib *do_stat(struct sftp_conn *, char *, int);
731e8db6e2SBrian Feldman 
741e8db6e2SBrian Feldman /* Get file attributes of 'path' (does not follow symlinks) */
75ae1f160dSDag-Erling Smørgrav Attrib *do_lstat(struct sftp_conn *, char *, int);
761e8db6e2SBrian Feldman 
771e8db6e2SBrian Feldman /* Get file attributes of open file 'handle' */
78ae1f160dSDag-Erling Smørgrav Attrib *do_fstat(struct sftp_conn *, char *, u_int, int);
791e8db6e2SBrian Feldman 
801e8db6e2SBrian Feldman /* Set file attributes of 'path' */
81ae1f160dSDag-Erling Smørgrav int do_setstat(struct sftp_conn *, char *, Attrib *);
821e8db6e2SBrian Feldman 
831e8db6e2SBrian Feldman /* Set file attributes of open file 'handle' */
84ae1f160dSDag-Erling Smørgrav int do_fsetstat(struct sftp_conn *, char *, u_int, Attrib *);
851e8db6e2SBrian Feldman 
861e8db6e2SBrian Feldman /* Canonicalise 'path' - caller must free result */
87ae1f160dSDag-Erling Smørgrav char *do_realpath(struct sftp_conn *, char *);
881e8db6e2SBrian Feldman 
891e8db6e2SBrian Feldman /* Rename 'oldpath' to 'newpath' */
90ae1f160dSDag-Erling Smørgrav int do_rename(struct sftp_conn *, char *, char *);
911e8db6e2SBrian Feldman 
921e8db6e2SBrian Feldman /* Rename 'oldpath' to 'newpath' */
93ae1f160dSDag-Erling Smørgrav int do_symlink(struct sftp_conn *, char *, char *);
941e8db6e2SBrian Feldman 
951e8db6e2SBrian Feldman /* Return target of symlink 'path' - caller must free result */
96ae1f160dSDag-Erling Smørgrav char *do_readlink(struct sftp_conn *, char *);
971e8db6e2SBrian Feldman 
981e8db6e2SBrian Feldman /* XXX: add callbacks to do_download/do_upload so we can do progress meter */
991e8db6e2SBrian Feldman 
1001e8db6e2SBrian Feldman /*
1011e8db6e2SBrian Feldman  * Download 'remote_path' to 'local_path'. Preserve permissions and times
1021e8db6e2SBrian Feldman  * if 'pflag' is set
1031e8db6e2SBrian Feldman  */
104ae1f160dSDag-Erling Smørgrav int do_download(struct sftp_conn *, char *, char *, int);
1051e8db6e2SBrian Feldman 
1061e8db6e2SBrian Feldman /*
1071e8db6e2SBrian Feldman  * Upload 'local_path' to 'remote_path'. Preserve permissions and times
1081e8db6e2SBrian Feldman  * if 'pflag' is set
1091e8db6e2SBrian Feldman  */
110ae1f160dSDag-Erling Smørgrav int do_upload(struct sftp_conn *, char *, char *, int);
111ae1f160dSDag-Erling Smørgrav 
112ae1f160dSDag-Erling Smørgrav #endif
113