You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-java/j2ssh/files/0.2.9-extras.patch

202 lines
7.4 KiB

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);
}