148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/* 248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Copyright (c) 2006-2011 Christian Plattner. All rights reserved. 348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Please refer to the LICENSE.txt for licensing details. 448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpackage ch.ethz.ssh2.sftp; 648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/** 848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * 948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * SFTP Error Codes 1048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * 1148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner 1248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10 1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * 1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic class ErrorCodes 1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{ 1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_OK = 0; 1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_EOF = 1; 1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_NO_SUCH_FILE = 2; 2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_PERMISSION_DENIED = 3; 2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_FAILURE = 4; 2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_BAD_MESSAGE = 5; 2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_NO_CONNECTION = 6; 2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_CONNECTION_LOST = 7; 2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_OP_UNSUPPORTED = 8; 2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_INVALID_HANDLE = 9; 2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_NO_SUCH_PATH = 10; 2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_FILE_ALREADY_EXISTS = 11; 2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_WRITE_PROTECT = 12; 3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_NO_MEDIA = 13; 3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_NO_SPACE_ON_FILESYSTEM = 14; 3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_QUOTA_EXCEEDED = 15; 3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_UNKNOWN_PRINCIPAL = 16; 3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_LOCK_CONFLICT = 17; 3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_DIR_NOT_EMPTY = 18; 3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_NOT_A_DIRECTORY = 19; 3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_INVALID_FILENAME = 20; 3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_LINK_LOOP = 21; 3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_CANNOT_DELETE = 22; 4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_INVALID_PARAMETER = 23; 4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_FILE_IS_A_DIRECTORY = 24; 4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_BYTE_RANGE_LOCK_CONFLICT = 25; 4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_BYTE_RANGE_LOCK_REFUSED = 26; 4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_DELETE_PENDING = 27; 4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_FILE_CORRUPT = 28; 4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_OWNER_INVALID = 29; 4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_GROUP_INVALID = 30; 4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final int SSH_FX_NO_MATCHING_BYTE_RANGE_LOCK = 31; 4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood private static final String[][] messages = { 5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_OK", "Indicates successful completion of the operation." }, 5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_EOF", 5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "An attempt to read past the end-of-file was made; or, there are no more directory entries to return." }, 5548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_NO_SUCH_FILE", "A reference was made to a file which does not exist." }, 5648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_PERMISSION_DENIED", "The user does not have sufficient permissions to perform the operation." }, 5748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_FAILURE", "An error occurred, but no specific error code exists to describe the failure." }, 5848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_BAD_MESSAGE", "A badly formatted packet or other SFTP protocol incompatibility was detected." }, 5948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_NO_CONNECTION", "There is no connection to the server." }, 6048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_CONNECTION_LOST", "The connection to the server was lost." }, 6148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_OP_UNSUPPORTED", 6248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "An attempted operation could not be completed by the server because the server does not support the operation." }, 6348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_INVALID_HANDLE", "The handle value was invalid." }, 6448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_NO_SUCH_PATH", "The file path does not exist or is invalid." }, 6548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_FILE_ALREADY_EXISTS", "The file already exists." }, 6648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_WRITE_PROTECT", "The file is on read-only media, or the media is write protected." }, 6748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_NO_MEDIA", 6848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "The requested operation cannot be completed because there is no media available in the drive." }, 6948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_NO_SPACE_ON_FILESYSTEM", 7048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "The requested operation cannot be completed because there is insufficient free space on the filesystem." }, 7148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_QUOTA_EXCEEDED", 7248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "The operation cannot be completed because it would exceed the user's storage quota." }, 7348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 7448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "SSH_FX_UNKNOWN_PRINCIPAL", 7548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "A principal referenced by the request (either the 'owner', 'group', or 'who' field of an ACL), was unknown. The error specific data contains the problematic names." }, 7648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_LOCK_CONFLICT", "The file could not be opened because it is locked by another process." }, 7748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_DIR_NOT_EMPTY", "The directory is not empty." }, 7848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_NOT_A_DIRECTORY", "The specified file is not a directory." }, 7948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_INVALID_FILENAME", "The filename is not valid." }, 8048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_LINK_LOOP", 8148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "Too many symbolic links encountered or, an SSH_FXF_NOFOLLOW open encountered a symbolic link as the final component." }, 8248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_CANNOT_DELETE", 8348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "The file cannot be deleted. One possible reason is that the advisory READONLY attribute-bit is set." }, 8448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_INVALID_PARAMETER", 8548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "One of the parameters was out of range, or the parameters specified cannot be used together." }, 8648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_FILE_IS_A_DIRECTORY", 8748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "The specified file was a directory in a context where a directory cannot be used." }, 8848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_BYTE_RANGE_LOCK_CONFLICT", 8948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood " A read or write operation failed because another process's mandatory byte-range lock overlaps with the request." }, 9048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_BYTE_RANGE_LOCK_REFUSED", "A request for a byte range lock was refused." }, 9148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_DELETE_PENDING", "An operation was attempted on a file for which a delete operation is pending." }, 9248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_FILE_CORRUPT", "The file is corrupt; an filesystem integrity check should be run." }, 9348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_OWNER_INVALID", "The principal specified can not be assigned as an owner of a file." }, 9448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_GROUP_INVALID", "The principal specified can not be assigned as the primary group of a file." }, 9548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { "SSH_FX_NO_MATCHING_BYTE_RANGE_LOCK", 9648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood "The requested operation could not be completed because the specifed byte range lock has not been granted." }, 9748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 9848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood }; 9948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 10048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static final String[] getDescription(int errorCode) 10148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 10248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if ((errorCode < 0) || (errorCode >= messages.length)) 10348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood return null; 10448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 10548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood return messages[errorCode]; 10648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 10748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood} 108