import java.io.*;
import jcifs.smb.*;
import jcifs.util.*;
public class TestUnicode {
static SmbFile dir;
public static void mkobj( String name ) throws Exception {
int r = (int)(Math.random() * 100.0);
if( r < 50 ) {
SmbFile d = new SmbFile( dir.getParent(), dir.getName() + "/" + name );
d.mkdir();
if( r < 15 ) {
dir = d;
}
} else {
SmbFileOutputStream out = new SmbFileOutputStream( dir.getParent() + "/" + dir.getName() + "/" + name );
out.close();
}
}
public static void main( String argv[] ) throws Exception {
if( argv.length < 1 ) {
throw new IllegalArgumentException( "Must provide path to directory in which to run test" );
}
FileInputStream in = new FileInputStream( "data" );
byte[] b = new byte[4096];
int n = in.read( b );
String data = new String( b, 0, n, "UTF-8" );
char[] d = data.toCharArray();
dir = new SmbFile( argv[0] + "/TestUnicode" );
try {
dir.delete();
} catch( SmbException se ) {
se.printStackTrace();
}
dir.mkdir();
int i, s, max = 8;
for( i = s = 0; i < d.length; i++ ) {
switch (d[i]) {
case '"': case '/': case '\\': case '[': case ']':
case ':': case '|': case '<': case '>': case '=':
case ';': case ',': case '*': case '?': case '\n':
d[i] = '_';
}
if(Character.isWhitespace( d[i] )) {
if( i == s ) {
s++;
}
if( i > (s + max)) {
String name = new String( d, s, i - s );
mkobj( name );
s = i + 1;
}
}
}
}
}