This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
SilcUInt32 entry_count; /* Number of files and sub-directories */
struct MemFSEntryStruct *parent; /* non-NULL if `directory' is TRUE,
includes parent directory. */
SilcUInt32 entry_count; /* Number of files and sub-directories */
struct MemFSEntryStruct *parent; /* non-NULL if `directory' is TRUE,
includes parent directory. */
char *name; /* Name of the entry */
char *data; /* Data of the entry */
unsigned int directory : 1; /* Set if this is directory */
char *name; /* Name of the entry */
char *data; /* Data of the entry */
unsigned int directory : 1; /* Set if this is directory */
This does not check subdirectories recursively. */
static MemFSEntry mem_find_entry(MemFSEntry dir, const char *name,
This does not check subdirectories recursively. */
static MemFSEntry mem_find_entry(MemFSEntry dir, const char *name,
const char *filename,
SilcSFTPFileOperation pflags,
SilcSFTPAttributes attrs,
const char *filename,
SilcSFTPFileOperation pflags,
SilcSFTPAttributes attrs,
if (entry->directory || !entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (entry->directory || !entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
- (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
/* File opened, return handle */
handle = mem_create_handle(fs, fd, entry);
if (handle)
/* File opened, return handle */
handle = mem_create_handle(fs, fd, entry);
if (handle)
- (*callback)(sftp, SILC_SFTP_STATUS_OK, (SilcSFTPHandle)handle,
+ (*callback)(sftp, SILC_SFTP_STATUS_OK, (SilcSFTPHandle)handle,
- (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
- (*callback)(sftp, silc_sftp_map_errno(errno), NULL, NULL,
+ (*callback)(sftp, silc_sftp_map_errno(errno), NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OK, (const unsigned char *)data,
+ (*callback)(sftp, SILC_SFTP_STATUS_OK, (const unsigned char *)data,
- (*callback)(sftp, silc_sftp_map_errno(errno), NULL, NULL,
+ (*callback)(sftp, silc_sftp_map_errno(errno), NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
if (!entry->directory) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (!entry->directory) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
- (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
/* Directory opened, return handle */
handle = mem_create_handle(fs, 0, entry);
if (handle)
/* Directory opened, return handle */
handle = mem_create_handle(fs, 0, entry);
if (handle)
- (*callback)(sftp, SILC_SFTP_STATUS_OK, (SilcSFTPHandle)handle,
+ (*callback)(sftp, SILC_SFTP_STATUS_OK, (SilcSFTPHandle)handle,
- (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_PERMISSION_DENIED, NULL,
filesize = sizeof(*entry);
memset(long_name, 0, sizeof(long_name));
filesize = sizeof(*entry);
memset(long_name, 0, sizeof(long_name));
((entry->perm & SILC_SFTP_FS_PERM_WRITE) ? 'w' : '-'),
((entry->perm & SILC_SFTP_FS_PERM_EXEC) ? 'x' : '-'),
(entry->directory ? (int)entry->entry_count : 1),
((entry->perm & SILC_SFTP_FS_PERM_WRITE) ? 'w' : '-'),
((entry->perm & SILC_SFTP_FS_PERM_EXEC) ? 'x' : '-'),
(entry->directory ? (int)entry->entry_count : 1),
- filesize, date, entry->name,
- (entry->directory ? "/" :
+#ifndef SILC_WIN32
+ (unsigned long long)filesize,
+#else
+ (unsigned long)filesize,
+#endif
+ date, entry->name,
+ (entry->directory ? "/" :
if (entry->directory || !entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (entry->directory || !entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (!attrs) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (!attrs) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
- (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPAttributes)attrs,
+ (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPAttributes)attrs,
if (entry->directory || !entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (entry->directory || !entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (!attrs) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (!attrs) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
- (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPAttributes)attrs,
+ (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPAttributes)attrs,
if (h->entry->directory || !h->entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (h->entry->directory || !h->entry->data) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (!attrs) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
if (!attrs) {
(*callback)(sftp, SILC_SFTP_STATUS_FAILURE, NULL, callback_context);
return;
- (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPAttributes)attrs,
+ (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPAttributes)attrs,
void mem_setstat(void *context, SilcSFTP sftp,
const char *path,
SilcSFTPAttributes attrs,
void mem_setstat(void *context, SilcSFTP sftp,
const char *path,
SilcSFTPAttributes attrs,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, NULL,
- (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPName)name,
+ (*callback)(sftp, SILC_SFTP_STATUS_OK, (const SilcSFTPName)name,
- (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, 0,
+ (*callback)(sftp, SILC_SFTP_STATUS_OP_UNSUPPORTED, NULL, 0,