diff options
Diffstat (limited to 'dev-java/j2ssh/files/0.2.9-extras.patch')
-rw-r--r-- | dev-java/j2ssh/files/0.2.9-extras.patch | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/dev-java/j2ssh/files/0.2.9-extras.patch b/dev-java/j2ssh/files/0.2.9-extras.patch new file mode 100644 index 000000000000..d958cba19b97 --- /dev/null +++ b/dev-java/j2ssh/files/0.2.9-extras.patch @@ -0,0 +1,201 @@ +diff -ur j2ssh-0.2.9/src/com/sshtools/j2ssh/io/ByteArrayReader.java j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/io/ByteArrayReader.java +--- j2ssh-0.2.9/src/com/sshtools/j2ssh/io/ByteArrayReader.java 2007-04-28 21:02:54.000000000 +0200 ++++ j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/io/ByteArrayReader.java 2008-01-18 19:27:38.000000000 +0100 +@@ -118,7 +118,13 @@ + byte[] chars = new byte[(int) len]; + System.arraycopy(data, start + 4, chars, 0, len); + +- return new String(chars); ++ try { ++ return new String(chars, "UTF-8"); ++ } ++ catch(java.io.UnsupportedEncodingException e) { ++ // This should never happen, UTF-8 is necessarily supported. ++ return new String(chars); ++ } + } + + /** +@@ -163,6 +169,12 @@ + byte[] raw = new byte[(int) len]; + read(raw); + +- return new String(raw); ++ try { ++ return new String(raw, "UTF-8"); ++ } ++ catch(java.io.UnsupportedEncodingException e) { ++ // This should never happen, UTF-8 is necessarily supported. ++ return new String(raw); ++ } + } + } +diff -ur j2ssh-0.2.9/src/com/sshtools/j2ssh/io/ByteArrayWriter.java j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/io/ByteArrayWriter.java +--- j2ssh-0.2.9/src/com/sshtools/j2ssh/io/ByteArrayWriter.java 2007-04-29 10:54:48.000000000 +0200 ++++ j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/io/ByteArrayWriter.java 2008-01-18 19:30:36.000000000 +0100 +@@ -190,15 +190,15 @@ + if (str == null) { + writeInt(0); + } else { +- /* +- writeInt(str.length()); +- // don't use US-ASCII by default! +- write(str.getBytes()); +- */ +- // patch as of version 0.2.9 +- // for UTF-8 length of string is not necessarily +- // equal to number of bytes +- byte[] strBytes = str.getBytes(); ++ byte[] strBytes; ++ try { ++ strBytes = str.getBytes("UTF-8"); ++ } ++ catch(java.io.UnsupportedEncodingException e) { ++ // This should never happen, UTF-8 is necessarily supported. ++ strBytes = str.getBytes(); ++ } ++ + writeInt(strBytes.length); + write(strBytes); + } +diff -ur j2ssh-0.2.9/src/com/sshtools/j2ssh/sftp/SftpFileInputStream.java j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/sftp/SftpFileInputStream.java +--- j2ssh-0.2.9/src/com/sshtools/j2ssh/sftp/SftpFileInputStream.java 2007-04-28 21:02:54.000000000 +0200 ++++ j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/sftp/SftpFileInputStream.java 2008-01-18 19:26:58.000000000 +0100 +@@ -38,7 +38,7 @@ + */ + public class SftpFileInputStream extends InputStream { + SftpFile file; +- UnsignedInteger64 position = new UnsignedInteger64("0"); ++ UnsignedInteger64 position; + + /** + * Creates a new SftpFileInputStream object. +@@ -48,16 +48,47 @@ + * @throws IOException + */ + public SftpFileInputStream(SftpFile file) throws IOException { ++ this(file, 0); ++ } ++ ++ /** ++ * Creates a new SftpFileInputStream object and sets the file offset to the specified position. ++ * ++ * @param file ++ * @param position the initial file offset, must be >=0 ++ * ++ * @throws IOException ++ */ ++ public SftpFileInputStream(SftpFile file, long position) throws IOException { + if (file.getHandle() == null) { + throw new IOException("The file does not have a valid handle!"); + } +- ++ + if (file.getSFTPSubsystem() == null) { +- throw new IOException( +- "The file is not attached to an SFTP subsystem!"); ++ throw new IOException("The file is not attached to an SFTP subsystem!"); + } +- ++ + this.file = file; ++ this.position = new UnsignedInteger64(""+position); ++ } ++ ++ /** ++ * Returns the current offset within the file. ++ * ++ * @return the current offset within the file ++ */ ++ public long getPosition() { ++ return position.longValue(); ++ } ++ ++ /** ++ * Sets the current file offset to the given position. ++ * Subsequent calls to read methods will start reading data at this position. ++ * ++ * @param position the new offset, must be >=0 ++ */ ++ public void setPosition(long position) { ++ this.position = new UnsignedInteger64(""+position); + } + + /** +diff -ur j2ssh-0.2.9/src/com/sshtools/j2ssh/sftp/SftpFileOutputStream.java j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/sftp/SftpFileOutputStream.java +--- j2ssh-0.2.9/src/com/sshtools/j2ssh/sftp/SftpFileOutputStream.java 2007-04-28 21:02:54.000000000 +0200 ++++ j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/sftp/SftpFileOutputStream.java 2008-01-18 19:08:55.000000000 +0100 +@@ -38,7 +38,7 @@ + */ + public class SftpFileOutputStream extends OutputStream { + SftpFile file; +- UnsignedInteger64 position = new UnsignedInteger64("0"); ++ UnsignedInteger64 position; + + /** + * Creates a new SftpFileOutputStream object. +@@ -48,6 +48,18 @@ + * @throws IOException + */ + public SftpFileOutputStream(SftpFile file) throws IOException { ++ this(file, 0); ++ } ++ ++ /** ++ * Creates a new SftpFileOutputStream object and sets the file offset to the specified position. ++ * ++ * @param file ++ * @param position the initial file offset, must be >=0 ++ * ++ * @throws IOException ++ */ ++ public SftpFileOutputStream(SftpFile file, long position) throws IOException { + if (file.getHandle() == null) { + throw new IOException("The file does not have a valid handle!"); + } +@@ -58,6 +70,7 @@ + } + + this.file = file; ++ this.position = new UnsignedInteger64(""+position); + } + + /** +diff -ur j2ssh-0.2.9/src/com/sshtools/j2ssh/sftp/SftpSubsystemClient.java j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/sftp/SftpSubsystemClient.java +--- j2ssh-0.2.9/src/com/sshtools/j2ssh/sftp/SftpSubsystemClient.java 2007-04-28 21:02:54.000000000 +0200 ++++ j2ssh-0.2.9_patched/src/com/sshtools/j2ssh/sftp/SftpSubsystemClient.java 2008-01-21 17:48:06.000000000 +0100 +@@ -231,16 +231,28 @@ + } + + /** ++ * Creates the directory with the specified path. The default permissions for the directory are 0755 ("rwxr-xr-x"). + * ++ * @param path the path to the directory to create ++ * @throws IOException if an error occurs ++ */ ++ public synchronized void makeDirectory(String path) throws IOException { ++ makeDirectory(path, 0755); // default to 755 octal (493 decimal): "rwxr-xr-x" ++ } ++ ++ /** ++ * Creates the directory with the specified path and file permissions. + * +- * @param path +- * +- * @throws IOException ++ * @param path the path to the directory to create ++ * @param permissions the file permissions of the new directory ++ * @throws IOException if an error occurs + */ +- public synchronized void makeDirectory(String path) +- throws IOException { ++ public synchronized void makeDirectory(String path, int permissions) throws IOException { + UnsignedInteger32 requestId = nextRequestId(); +- SshFxpMkdir msg = new SshFxpMkdir(requestId, path, new FileAttributes()); ++ FileAttributes attrs = new FileAttributes(); ++ attrs.setPermissions(new UnsignedInteger32(permissions)); ++ ++ SshFxpMkdir msg = new SshFxpMkdir(requestId, path, attrs); + sendMessage(msg); + getOKRequestStatus(requestId); + } |