X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sftp.h;h=c3167a57a0cf3d0619f9a4d7d35a365c37b56f9f;hb=5c00b581c8b83f6e7be9d53a77d9c61ef4d817a5;hp=031aea273b23f289b399f23ff4872355ff9f6b9d;hpb=f14953d9e94c176cfc928bb719d6f613da96717e;p=PuTTY.git diff --git a/sftp.h b/sftp.h index 031aea27..c3167a57 100644 --- a/sftp.h +++ b/sftp.h @@ -82,6 +82,19 @@ struct fxp_attrs { unsigned long mtime; }; +/* + * Copy between the possibly-unused permissions field in an fxp_attrs + * and a possibly-negative integer containing the same permissions. + */ +#define PUT_PERMISSIONS(attrs, perms) \ + ((perms) >= 0 ? \ + ((attrs).flags |= SSH_FILEXFER_ATTR_PERMISSIONS, \ + (attrs).permissions = (perms)) : \ + ((attrs).flags &= ~SSH_FILEXFER_ATTR_PERMISSIONS)) +#define GET_PERMISSIONS(attrs) \ + ((attrs).flags & SSH_FILEXFER_ATTR_PERMISSIONS ? \ + (attrs).permissions : -1) + struct fxp_handle { char *hstring; int hlen; @@ -116,9 +129,11 @@ struct sftp_request *fxp_realpath_send(char *path); char *fxp_realpath_recv(struct sftp_packet *pktin, struct sftp_request *req); /* - * Open a file. + * Open a file. 'attrs' contains attributes to be applied to the file + * if it's being created. */ -struct sftp_request *fxp_open_send(char *path, int type); +struct sftp_request *fxp_open_send(char *path, int type, + struct fxp_attrs *attrs); struct fxp_handle *fxp_open_recv(struct sftp_packet *pktin, struct sftp_request *req);