From a07e57e2ed6d402d1f3d4b8449ee4f4ab2108ce7 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 20 Aug 2008 18:37:33 +0200 Subject: [PATCH] Map permission field to type field. --- libssh/sftp.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) Index: libssh-0.2/libssh/sftp.c =================================================================== --- libssh-0.2.orig/libssh/sftp.c +++ libssh-0.2/libssh/sftp.c @@ -24,6 +24,8 @@ MA 02111-1307, USA. */ #include #include +#include +#include #include #include #include "libssh/priv.h" @@ -580,6 +582,27 @@ SFTP_ATTRIBUTES *sftp_parse_attr_3(SFTP_ if(buffer_get_u32(buf,&attr->permissions)!=sizeof(u32)) break; attr->permissions=ntohl(attr->permissions); + + switch (attr->permissions & S_IFMT) { + case S_IFSOCK: + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + attr->type = SSH_FILEXFER_TYPE_SPECIAL; + break; + case S_IFLNK: + attr->type = SSH_FILEXFER_TYPE_SYMLINK; + break; + case S_IFREG: + attr->type = SSH_FILEXFER_TYPE_REGULAR; + break; + case S_IFDIR: + attr->type = SSH_FILEXFER_TYPE_DIRECTORY; + break; + default: + attr->type = SSH_FILEXFER_TYPE_UNKNOWN; + break; + } } if(flags & SSH_FILEXFER_ATTR_ACMODTIME){ if(buffer_get_u32(buf,&attr->atime)!=sizeof(u32))