in wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommand.java [258:301]
protected void writeDir(String header, SshFile path) throws IOException {
if (LOG.isDebugEnabled()) {
LOG.debug("Writing dir {}", path);
}
if (!header.startsWith("D")) {
throw new IOException("Expected a D message but got '" + header + "'");
}
int length = Integer.parseInt(header.substring(6, header.indexOf(' ', 6)));
String name = header.substring(header.indexOf(' ', 6) + 1);
if (length != 0) {
throw new IOException("Expected 0 length for directory but got " + length);
}
SshFile file;
if (path.doesExist() && path.isDirectory()) {
file = root.getFile(path, name);
} else if (!path.doesExist()
&& path.getParentFile().doesExist()
&& path.getParentFile().isDirectory()) {
file = path;
} else {
throw new IOException("Can not write to " + path);
}
if (!(file.doesExist() && file.isDirectory()) && !file.mkdir()) {
throw new IOException("Could not create directory " + file);
}
ack();
for (; ; ) {
header = readLine();
if (header.startsWith("C")) {
writeFile(header, file);
} else if (header.startsWith("D")) {
writeDir(header, file);
} else if (header.equals("E")) {
ack();
break;
} else {
throw new IOException("Unexpected message: '" + header + "'");
}
}
}