From: Pekka Riikonen Date: Wed, 3 Jan 2007 19:19:20 +0000 (+0000) Subject: Code and comment cleanup. X-Git-Tag: silc.client.1.1.beta1~68 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=f298c9cdab1c81f65efdf4794f8fd7a3edb7efa9 Code and comment cleanup. --- diff --git a/lib/silcsftp/sftp_client.c b/lib/silcsftp/sftp_client.c index 7227d33c..3fb2ee02 100644 --- a/lib/silcsftp/sftp_client.c +++ b/lib/silcsftp/sftp_client.c @@ -40,6 +40,7 @@ typedef struct SilcSFTPRequestStruct { /* SFTP client context */ typedef struct { SilcStream stream; + SilcSchedule schedule; SilcSFTPVersionCallback version; SilcSFTPErrorCallback error; void *context; @@ -121,10 +122,19 @@ static void silc_sftp_send_packet(SilcSFTPClient sftp, silc_buffer_len(sftp->packet)); if (ret == -2) { SILC_LOG_ERROR(("Error sending SFTP packet type %d", type)); - break; + sftp->error((SilcSFTP)sftp, SILC_SFTP_STATUS_NO_CONNECTION, + sftp->context); + silc_buffer_reset(sftp->packet); + return; + } + if (ret == 0) { + sftp->error((SilcSFTP)sftp, SILC_SFTP_STATUS_EOF, sftp->context); + silc_buffer_reset(sftp->packet); + return; } - if (ret <= 0) - break; + if (ret == -1) + return; + silc_buffer_pull(sftp->packet, ret); } @@ -400,6 +410,7 @@ SilcSFTP silc_sftp_client_start(SilcStream stream, sftp->version = version_cb; sftp->error = error_cb; sftp->context = context; + sftp->schedule = schedule; silc_list_init(sftp->requests, struct SilcSFTPRequestStruct, next); /* We handle the stream now */ @@ -421,7 +432,7 @@ void silc_sftp_client_shutdown(SilcSFTP context) { SilcSFTPClient sftp = (SilcSFTPClient)context; - silc_stream_set_notifier(sftp->stream, NULL, NULL, NULL); + silc_stream_set_notifier(sftp->stream, sftp->schedule, NULL, NULL); if (sftp->packet) silc_buffer_free(sftp->packet); silc_free(sftp); @@ -434,7 +445,7 @@ void silc_sftp_client_receive_process(SilcSFTP context, SilcBuffer buffer) SilcSFTPClient sftp = (SilcSFTPClient)context; SilcSFTPRequest req; SilcSFTPPacket type; - const unsigned char *payload = NULL; + unsigned char *payload = NULL; SilcUInt32 payload_len; int ret; SilcBufferStruct buf; @@ -443,12 +454,11 @@ void silc_sftp_client_receive_process(SilcSFTP context, SilcBuffer buffer) SILC_LOG_DEBUG(("Process SFTP packet")); /* Parse the packet */ - type = silc_sftp_packet_decode(buffer, (unsigned char **)&payload, - &payload_len); + type = silc_sftp_packet_decode(buffer, &payload, &payload_len); if (!type) return; - silc_buffer_set(&buf, (unsigned char *)payload, payload_len); + silc_buffer_set(&buf, payload, payload_len); switch (type) { case SILC_SFTP_DATA: @@ -607,8 +617,7 @@ void silc_sftp_client_receive_process(SilcSFTP context, SilcBuffer buffer) ret = silc_buffer_unformat(&buf, SILC_STR_UI_INT(&id), - SILC_STR_UI_XNSTRING(&data, - silc_buffer_len(&buf) - 4), + SILC_STR_DATA(&data, silc_buffer_len(&buf) - 4), SILC_STR_END); if (ret < 0) break; @@ -636,7 +645,8 @@ void silc_sftp_client_receive_process(SilcSFTP context, SilcBuffer buffer) ret = silc_buffer_unformat(&buf, SILC_STR_UI_INT(&id), - SILC_STR_UI_XNSTRING(&data, silc_buffer_len(&buf) - 4), + SILC_STR_DATA(&data, + silc_buffer_len(&buf) - 4), SILC_STR_END); if (ret < 0) break; diff --git a/lib/silcsftp/sftp_fs_memory.c b/lib/silcsftp/sftp_fs_memory.c index d23b7d2a..e502931a 100644 --- a/lib/silcsftp/sftp_fs_memory.c +++ b/lib/silcsftp/sftp_fs_memory.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 2001 - 2004 Pekka Riikonen + Copyright (C) 2001 - 2007 Pekka Riikonen 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 @@ -70,8 +70,8 @@ static char *mem_expand_path(MemFSEntry root, const char *path) /* Add `entry' to directory `dir'. */ -static bool mem_add_entry(MemFSEntry dir, MemFSEntry entry, - bool check_perm) +static SilcBool mem_add_entry(MemFSEntry dir, MemFSEntry entry, + SilcBool check_perm) { int i; @@ -115,7 +115,7 @@ static bool mem_add_entry(MemFSEntry dir, MemFSEntry entry, /* Removes entry `entry' and all entries under it recursively. */ -static bool mem_del_entry(MemFSEntry entry, bool check_perm) +static SilcBool mem_del_entry(MemFSEntry entry, SilcBool check_perm) { int i; @@ -207,8 +207,8 @@ static MemFSEntry mem_find_entry_path(MemFSEntry dir, const char *p) /* Deletes entry by the name `name' from the directory `dir'. This does not check subdirectories recursively. */ -static bool mem_del_entry_name(MemFSEntry dir, const char *name, - SilcUInt32 name_len, bool check_perm) +static SilcBool mem_del_entry_name(MemFSEntry dir, const char *name, + SilcUInt32 name_len, SilcBool check_perm) { MemFSEntry entry; @@ -275,7 +275,7 @@ static MemFSFileHandle mem_create_handle(MemFS fs, int fd, MemFSEntry entry) /* Deletes the handle and remove it from the open handle list. */ -static bool mem_del_handle(MemFS fs, MemFSFileHandle handle) +static SilcBool mem_del_handle(MemFS fs, MemFSFileHandle handle) { if (handle->handle > fs->handles_count) return FALSE; @@ -335,9 +335,14 @@ SilcSFTPFilesystem silc_sftp_fs_memory_alloc(SilcSFTPFSMemoryPerm perm) fs->root_perm = perm; fs->root->directory = TRUE; fs->root->name = strdup(DIR_SEPARATOR); + if (!fs->root->name) { + silc_free(fs->root); + silc_free(fs); + } filesystem = silc_calloc(1, sizeof(*filesystem)); if (!filesystem) { + silc_free(fs->root->name); silc_free(fs->root); silc_free(fs); return NULL; @@ -380,12 +385,19 @@ void *silc_sftp_fs_memory_add_dir(SilcSFTPFilesystem fs, void *dir, return NULL; entry->perm = perm; - entry->name = strdup(name); entry->directory = TRUE; entry->parent = dir ? dir : memfs->root; + entry->name = strdup(name); + if (!entry->name) { + silc_free(entry); + return NULL; + } - if (!mem_add_entry(dir ? dir : memfs->root, entry, FALSE)) + if (!mem_add_entry(dir ? dir : memfs->root, entry, FALSE)) { + silc_free(entry->name); + silc_free(entry); return NULL; + } return entry; } @@ -397,10 +409,10 @@ void *silc_sftp_fs_memory_add_dir(SilcSFTPFilesystem fs, void *dir, in memory file system. The filesystem does not allow removing directories with remote access using the filesystem access function sftp_rmdir. */ -bool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir) +SilcBool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir) { MemFS memfs = (MemFS)fs->fs_context; - bool ret; + SilcBool ret; if (dir) return mem_del_entry(dir, FALSE); @@ -415,6 +427,11 @@ bool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir) memfs->root->perm = memfs->root_perm; memfs->root->directory = TRUE; memfs->root->name = strdup(DIR_SEPARATOR); + if (!memfs->root->name) { + silc_free(memfs->root); + memfs->root = NULL; + return FALSE; + } return ret; } @@ -427,10 +444,10 @@ bool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir) file and they work in POSIX style. Returns TRUE if the file was added to the directory. */ -bool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, - SilcSFTPFSMemoryPerm perm, - const char *filename, - const char *realpath) +SilcBool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, + SilcSFTPFSMemoryPerm perm, + const char *filename, + const char *realpath) { MemFS memfs = (MemFS)fs->fs_context; MemFSEntry entry; @@ -440,9 +457,15 @@ bool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, return FALSE; entry->perm = perm; + entry->directory = FALSE; entry->name = strdup(filename); entry->data = strdup(realpath); - entry->directory = FALSE; + if (!entry->name || !entry->data) { + silc_free(entry->name); + silc_free(entry->data); + silc_free(entry); + return FALSE; + } return mem_add_entry(dir ? dir : memfs->root, entry, FALSE); } @@ -450,8 +473,8 @@ bool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, /* Removes a file indicated by the `filename' from the directory indicated by the `dir'. Returns TRUE if the removing was success. */ -bool silc_sftp_fs_memory_del_file(SilcSFTPFilesystem fs, void *dir, - const char *filename) +SilcBool silc_sftp_fs_memory_del_file(SilcSFTPFilesystem fs, void *dir, + const char *filename) { MemFS memfs = (MemFS)fs->fs_context; diff --git a/lib/silcsftp/sftp_server.c b/lib/silcsftp/sftp_server.c index 41e049ee..c78575aa 100644 --- a/lib/silcsftp/sftp_server.c +++ b/lib/silcsftp/sftp_server.c @@ -26,6 +26,7 @@ /* SFTP Server context */ typedef struct { SilcStream stream; + SilcSchedule schedule; SilcSFTPMonitors monitors; SilcSFTPMonitor monitor; void *monitor_context; @@ -63,10 +64,19 @@ static void silc_sftp_send_packet(SilcSFTPServer sftp, silc_buffer_len(sftp->packet)); if (ret == -2) { SILC_LOG_ERROR(("Error sending SFTP packet type %d", type)); - break; + sftp->error((SilcSFTP)sftp, SILC_SFTP_STATUS_NO_CONNECTION, + sftp->context); + silc_buffer_reset(sftp->packet); + return; + } + if (ret == 0) { + sftp->error((SilcSFTP)sftp, SILC_SFTP_STATUS_EOF, sftp->context); + silc_buffer_reset(sftp->packet); + return; } - if (ret <= 0) - break; + if (ret == -1) + return; + silc_buffer_pull(sftp->packet, ret); } @@ -355,6 +365,7 @@ SilcSFTP silc_sftp_server_start(SilcStream stream, if (!server) return NULL; server->stream = stream; + server->schedule = schedule; server->error = error_cb; server->context = context; server->fs = fs; @@ -377,6 +388,7 @@ void silc_sftp_server_shutdown(SilcSFTP sftp) SILC_LOG_DEBUG(("Stopping SFTP server %p", server)); + silc_stream_set_notifier(server->stream, server->schedule, NULL, NULL); if (server->packet) silc_buffer_free(server->packet); silc_free(server); @@ -396,15 +408,13 @@ void silc_sftp_server_set_monitor(SilcSFTP sftp, } /* Function that is called to process the incmoing SFTP packet. */ -/* XXX Some day this will go away and we have automatic receive callbacks - for SilcSocketConnection API or SilcPacketContext API. */ static void silc_sftp_server_receive_process(SilcSFTP sftp, SilcBuffer buffer) { SilcSFTPServer server = (SilcSFTPServer)sftp; SilcSFTPPacket type; char *filename = NULL, *path = NULL; - const unsigned char *payload = NULL; + unsigned char *payload = NULL; SilcUInt32 payload_len; int ret; SilcBufferStruct buf; @@ -416,16 +426,103 @@ static void silc_sftp_server_receive_process(SilcSFTP sftp, SilcBuffer buffer) SILC_LOG_DEBUG(("Start")); /* Parse the packet */ - type = silc_sftp_packet_decode(buffer, (unsigned char **)&payload, - &payload_len); + type = silc_sftp_packet_decode(buffer, &payload, &payload_len); if (!type) return; - silc_buffer_set(&buf, (unsigned char *)payload, payload_len); + silc_buffer_set(&buf, payload, payload_len); memset(&mdata, 0, sizeof(mdata)); switch (type) { + case SILC_SFTP_READ: + { + unsigned char *hdata; + SilcUInt32 hdata_len; + SilcUInt64 offset; + SilcUInt32 len; + + SILC_LOG_DEBUG(("Read request")); + + ret = silc_buffer_unformat(&buf, + SILC_STR_UI_INT(&id), + SILC_STR_UI32_NSTRING(&hdata, + &hdata_len), + SILC_STR_UI_INT64(&offset), + SILC_STR_UI_INT(&len), + SILC_STR_END); + if (ret < 0) + goto failure; + + /* Get the handle */ + handle = server->fs->fs->sftp_get_handle(server->fs->fs_context, sftp, + (const unsigned char *)hdata, + hdata_len); + if (!handle) { + silc_sftp_send_error(server, SILC_SFTP_STATUS_NO_SUCH_FILE, id); + break; + } + + /* Read operation */ + server->fs->fs->sftp_read(server->fs->fs_context, sftp, + handle, offset, len, + silc_sftp_server_data, SILC_32_TO_PTR(id)); + + /* Call monitor */ + if (server->monitors & SILC_SFTP_MONITOR_READ && server->monitor) { + mdata.offset = offset; + mdata.data_len = len; + (*server->monitor)(sftp, SILC_SFTP_MONITOR_READ, &mdata, + server->monitor_context); + } + } + break; + + case SILC_SFTP_WRITE: + { + unsigned char *hdata; + SilcUInt32 hdata_len; + SilcUInt64 offset; + unsigned char *data; + SilcUInt32 data_len; + + SILC_LOG_DEBUG(("Read request")); + + ret = silc_buffer_unformat(&buf, + SILC_STR_UI_INT(&id), + SILC_STR_UI32_NSTRING(&hdata, + &hdata_len), + SILC_STR_UI_INT64(&offset), + SILC_STR_UI32_NSTRING(&data, + &data_len), + SILC_STR_END); + if (ret < 0) + goto failure; + + /* Get the handle */ + handle = server->fs->fs->sftp_get_handle(server->fs->fs_context, sftp, + (const unsigned char *)hdata, + hdata_len); + if (!handle) { + silc_sftp_send_error(server, SILC_SFTP_STATUS_NO_SUCH_FILE, id); + break; + } + + /* Write operation */ + server->fs->fs->sftp_write(server->fs->fs_context, sftp, handle, offset, + (const unsigned char *)data, data_len, + silc_sftp_server_status, SILC_32_TO_PTR(id)); + + /* Call monitor */ + if (server->monitors & SILC_SFTP_MONITOR_WRITE && server->monitor) { + mdata.offset = offset; + mdata.data_len = data_len; + (*server->monitor)(sftp, SILC_SFTP_MONITOR_WRITE, &mdata, + server->monitor_context); + } + } + break; + case SILC_SFTP_INIT: { SilcSFTPVersion version; @@ -536,94 +633,6 @@ static void silc_sftp_server_receive_process(SilcSFTP sftp, SilcBuffer buffer) } break; - case SILC_SFTP_READ: - { - unsigned char *hdata; - SilcUInt32 hdata_len; - SilcUInt64 offset; - SilcUInt32 len; - - SILC_LOG_DEBUG(("Read request")); - - ret = silc_buffer_unformat(&buf, - SILC_STR_UI_INT(&id), - SILC_STR_UI32_NSTRING(&hdata, - &hdata_len), - SILC_STR_UI_INT64(&offset), - SILC_STR_UI_INT(&len), - SILC_STR_END); - if (ret < 0) - goto failure; - - /* Get the handle */ - handle = server->fs->fs->sftp_get_handle(server->fs->fs_context, sftp, - (const unsigned char *)hdata, - hdata_len); - if (!handle) { - silc_sftp_send_error(server, SILC_SFTP_STATUS_NO_SUCH_FILE, id); - break; - } - - /* Read operation */ - server->fs->fs->sftp_read(server->fs->fs_context, sftp, - handle, offset, len, - silc_sftp_server_data, SILC_32_TO_PTR(id)); - - /* Call monitor */ - if (server->monitors & SILC_SFTP_MONITOR_READ && server->monitor) { - mdata.offset = offset; - mdata.data_len = len; - (*server->monitor)(sftp, SILC_SFTP_MONITOR_READ, &mdata, - server->monitor_context); - } - } - break; - - case SILC_SFTP_WRITE: - { - unsigned char *hdata; - SilcUInt32 hdata_len; - SilcUInt64 offset; - unsigned char *data; - SilcUInt32 data_len; - - SILC_LOG_DEBUG(("Read request")); - - ret = silc_buffer_unformat(&buf, - SILC_STR_UI_INT(&id), - SILC_STR_UI32_NSTRING(&hdata, - &hdata_len), - SILC_STR_UI_INT64(&offset), - SILC_STR_UI32_NSTRING(&data, - &data_len), - SILC_STR_END); - if (ret < 0) - goto failure; - - /* Get the handle */ - handle = server->fs->fs->sftp_get_handle(server->fs->fs_context, sftp, - (const unsigned char *)hdata, - hdata_len); - if (!handle) { - silc_sftp_send_error(server, SILC_SFTP_STATUS_NO_SUCH_FILE, id); - break; - } - - /* Write operation */ - server->fs->fs->sftp_write(server->fs->fs_context, sftp, handle, offset, - (const unsigned char *)data, data_len, - silc_sftp_server_status, SILC_32_TO_PTR(id)); - - /* Call monitor */ - if (server->monitors & SILC_SFTP_MONITOR_WRITE && server->monitor) { - mdata.offset = offset; - mdata.data_len = data_len; - (*server->monitor)(sftp, SILC_SFTP_MONITOR_WRITE, &mdata, - server->monitor_context); - } - } - break; - case SILC_SFTP_REMOVE: { SILC_LOG_DEBUG(("Remove request")); @@ -939,7 +948,8 @@ static void silc_sftp_server_receive_process(SilcSFTP sftp, SilcBuffer buffer) /* Setstat operation */ server->fs->fs->sftp_setstat(server->fs->fs_context, sftp, path, attrs, - silc_sftp_server_status, SILC_32_TO_PTR(id)); + silc_sftp_server_status, + SILC_32_TO_PTR(id)); silc_sftp_attr_free(attrs); silc_free(path); @@ -1050,7 +1060,8 @@ static void silc_sftp_server_receive_process(SilcSFTP sftp, SilcBuffer buffer) /* Symlink operation */ server->fs->fs->sftp_symlink(server->fs->fs_context, sftp, path, target, - silc_sftp_server_status, SILC_32_TO_PTR(id)); + silc_sftp_server_status, + SILC_32_TO_PTR(id)); silc_free(path); silc_free(target); diff --git a/lib/silcsftp/silcsftp.h b/lib/silcsftp/silcsftp.h index 87ee7039..c1aa5624 100644 --- a/lib/silcsftp/silcsftp.h +++ b/lib/silcsftp/silcsftp.h @@ -68,10 +68,8 @@ typedef struct SilcSFTPStruct *SilcSFTP; * * SFTP Version type. * - * SOURCE - */ + ***/ typedef SilcUInt32 SilcSFTPVersion; -/***/ /* SFTP protocol version */ #define SILC_SFTP_PROTOCOL_VERSION 3 @@ -243,7 +241,9 @@ typedef void (*SilcSFTPVersionCallback)(SilcSFTP sftp, * * Error callback is called if a connection error occurs during SFTP * session. If the connection or stream is closed this callback is - * called. Other errors are delivered in other callbacks. + * called. Other errors are delivered in other callbacks. Only the + * SILC_SFTP_STATUS_EOF or SILC_SFTP_STATUS_NO_CONNECTION is delivered + * in this callback. * ***/ typedef void (*SilcSFTPErrorCallback)(SilcSFTP sftp, @@ -403,11 +403,12 @@ typedef void (*SilcSFTPExtendedCallback)(SilcSFTP sftp, * DESCRIPTION * * Starts SFTP client and returns context to it. The version callback - * indicated by the `callback' will be called after the SFTP session has + * indicated by the `version_cb' will be called after the SFTP session has * been started and server has returned the version of the protocol. The * SFTP client context is returned in the callback too. This returns the * allocated SFTP client context or NULL on error. The `stream' will be - * used to read and write the SFTP packets. + * used to read and write the SFTP packets. The `error_cb' will be called + * in case a stream error occurs, such as end of stream. * ***/ SilcSFTP silc_sftp_client_start(SilcStream stream, @@ -867,10 +868,11 @@ void silc_sftp_extended(SilcSFTP sftp, * DESCRIPTION * * Starts SFTP server and returns a context to it. This function returns - * the allocated SFTP server context or NULL on error. The `send_packet' - * is called by the library when it needs to send a packet. The `fs' is the - * filesystem context allocated by the application. Each socket connection - * should start its own server by calling this function. + * the allocated SFTP server context or NULL on error. The `stream' is + * the stream (connection) to the client. The `error_cb' will be called + * when the `stream' is ended (SILC_SFTP_STATUS_EOF). The caller is + * responsible of closing and destroying the `stream'. The `fs' is the + * filesystem context allocated by the application. * ***/ SilcSFTP silc_sftp_server_start(SilcStream stream, diff --git a/lib/silcsftp/silcsftp_fs.h b/lib/silcsftp/silcsftp_fs.h index 575eaf53..97b61d9a 100644 --- a/lib/silcsftp/silcsftp_fs.h +++ b/lib/silcsftp/silcsftp_fs.h @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 2001 - 2005 Pekka Riikonen + Copyright (C) 2001 - 2007 Pekka Riikonen 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 @@ -364,7 +364,7 @@ void *silc_sftp_fs_memory_add_dir(SilcSFTPFilesystem fs, void *dir, * * SYNOPSIS * - * bool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir); + * SilcBool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir); * * DESCRIPTION * @@ -377,16 +377,16 @@ void *silc_sftp_fs_memory_add_dir(SilcSFTPFilesystem fs, void *dir, * access function sftp_rmdir. * ***/ -bool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir); +SilcBool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir); /****f* silcsftp/SilcSFTPFSAPI/silc_sftp_fs_memory_add_file * * SYNOPSIS * - * bool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, - * SilcSFTPFSMemoryPerm perm, - * const char *filename, - * const char *realpath); + * SilcBool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, + * SilcSFTPFSMemoryPerm perm, + * const char *filename, + * const char *realpath); * * DESCRIPTION * @@ -401,17 +401,17 @@ bool silc_sftp_fs_memory_del_dir(SilcSFTPFilesystem fs, void *dir); * was added to the directory. * ***/ -bool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, - SilcSFTPFSMemoryPerm perm, - const char *filename, - const char *realpath); +SilcBool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, + SilcSFTPFSMemoryPerm perm, + const char *filename, + const char *realpath); /****f* silcsftp/SilcSFTPFSAPI/silc_sftp_fs_memory_del_file * * SYNOPSIS * - * bool silc_sftp_fs_memory_del_file(SilcSFTPFilesystem fs, void *dir, - * const char *filename); + * SilcBool silc_sftp_fs_memory_del_file(SilcSFTPFilesystem fs, void *dir, + * const char *filename); * * DESCRIPTION * @@ -422,7 +422,7 @@ bool silc_sftp_fs_memory_add_file(SilcSFTPFilesystem fs, void *dir, * access function sftp_remove. * ***/ -bool silc_sftp_fs_memory_del_file(SilcSFTPFilesystem fs, void *dir, - const char *filename); +SilcBool silc_sftp_fs_memory_del_file(SilcSFTPFilesystem fs, void *dir, + const char *filename); #endif /* SILCSFTP_FS_H */