File 0001-Map-permission-field-to-type-field.patch of Package libssh
From a07e57e2ed6d402d1f3d4b8449ee4f4ab2108ce7 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <mail@cynapses.org>
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 <stdlib.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
#include <fcntl.h>
#include <netdb.h>
#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))