| 182 | } |
| 183 | |
| 184 | sf::Sftp::Result makeSftpError(LIBSSH2_SFTP* sftp) |
| 185 | { |
| 186 | using Value = sf::Sftp::Result::Value; |
| 187 | |
| 188 | if (!sftp) |
| 189 | return sf::Sftp::Result(Value::Error, "General error"); |
| 190 | |
| 191 | switch (libssh2_sftp_last_error(sftp)) |
| 192 | { |
| 193 | case LIBSSH2_FX_EOF: |
| 194 | return sf::Sftp::Result(Value::EndOfFile, "End of file"); |
| 195 | case LIBSSH2_FX_NO_SUCH_FILE: |
| 196 | return sf::Sftp::Result(Value::NoSuchFile, "No such file"); |
| 197 | case LIBSSH2_FX_PERMISSION_DENIED: |
| 198 | return sf::Sftp::Result(Value::PermissionDenied, "Permission denied"); |
| 199 | case LIBSSH2_FX_FAILURE: |
| 200 | return sf::Sftp::Result(Value::Failure, "Failure"); |
| 201 | case LIBSSH2_FX_BAD_MESSAGE: |
| 202 | return sf::Sftp::Result(Value::BadMessage, "Bad message"); |
| 203 | case LIBSSH2_FX_NO_CONNECTION: |
| 204 | return sf::Sftp::Result(Value::NoConnection, "No connection"); |
| 205 | case LIBSSH2_FX_CONNECTION_LOST: |
| 206 | return sf::Sftp::Result(Value::ConnectionLost, "Connection lost"); |
| 207 | case LIBSSH2_FX_OP_UNSUPPORTED: |
| 208 | return sf::Sftp::Result(Value::OperationUnsupported, "Operation unsupported"); |
| 209 | case LIBSSH2_FX_INVALID_HANDLE: |
| 210 | return sf::Sftp::Result(Value::InvalidHandle, "Invalid handle"); |
| 211 | case LIBSSH2_FX_NO_SUCH_PATH: |
| 212 | return sf::Sftp::Result(Value::NoSuchPath, "No such path"); |
| 213 | case LIBSSH2_FX_FILE_ALREADY_EXISTS: |
| 214 | return sf::Sftp::Result(Value::FileAlreadyExists, "File already exists"); |
| 215 | case LIBSSH2_FX_WRITE_PROTECT: |
| 216 | return sf::Sftp::Result(Value::WriteProtect, "Write protect"); |
| 217 | case LIBSSH2_FX_NO_MEDIA: |
| 218 | return sf::Sftp::Result(Value::NoMedia, "No media"); |
| 219 | case LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM: |
| 220 | return sf::Sftp::Result(Value::NoSpaceOnFileSystem, "No space on filesystem"); |
| 221 | case LIBSSH2_FX_QUOTA_EXCEEDED: |
| 222 | return sf::Sftp::Result(Value::QuotaExceeded, "Quota exceeded"); |
| 223 | case LIBSSH2_FX_UNKNOWN_PRINCIPAL: |
| 224 | return sf::Sftp::Result(Value::UnknownPrincipal, "Unknown principal"); |
| 225 | case LIBSSH2_FX_LOCK_CONFLICT: |
| 226 | return sf::Sftp::Result(Value::LockConflict, "Lock conflict"); |
| 227 | case LIBSSH2_FX_DIR_NOT_EMPTY: |
| 228 | return sf::Sftp::Result(Value::DirectoryNotEmpty, "Directory not empty"); |
| 229 | case LIBSSH2_FX_NOT_A_DIRECTORY: |
| 230 | return sf::Sftp::Result(Value::NotADirectory, "Not a directory"); |
| 231 | case LIBSSH2_FX_INVALID_FILENAME: |
| 232 | return sf::Sftp::Result(Value::InvalidFilename, "Invalid filename"); |
| 233 | case LIBSSH2_FX_LINK_LOOP: |
| 234 | return sf::Sftp::Result(Value::LinkLoop, "Link loop"); |
| 235 | default: |
| 236 | return sf::Sftp::Result(Value::SftpError, "General error"); |
| 237 | } |
| 238 | } |
| 239 | |
| 240 | sf::Sftp::Result makeError(LIBSSH2_SESSION* session, LIBSSH2_SFTP* sftp = nullptr) |
| 241 | { |