diff options
author | Andrew Bartlett <abartlet@samba.org> | 2003-04-23 08:12:34 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2003-04-23 08:12:34 +0000 |
commit | 2206df6b30c4992daa17257287390421cfc0662d (patch) | |
tree | e22b30e4aa5e028b6b1c7c5d5e7e53b77e3d25e3 | |
parent | a7d2c332fca9c85c21ff6dba424559c9323feacf (diff) | |
download | samba-2206df6b30c4992daa17257287390421cfc0662d.tar.gz samba-2206df6b30c4992daa17257287390421cfc0662d.tar.bz2 samba-2206df6b30c4992daa17257287390421cfc0662d.zip |
Merge torture tests from HEAD - it looks like we had rather an incomplete
merge last time. I hope this might fix a few failures on the build farm too.
Andrew Bartlett
(This used to be commit 0c837126923cc30fa60223a5a68d4f527971cc7b)
-rw-r--r-- | source3/libsmb/clifile.c | 32 | ||||
-rw-r--r-- | source3/torture/denytest.c | 54 | ||||
-rw-r--r-- | source3/torture/mangle_test.c | 32 | ||||
-rw-r--r-- | source3/torture/masktest.c | 11 | ||||
-rw-r--r-- | source3/torture/nbio.c | 14 | ||||
-rw-r--r-- | source3/torture/scanner.c | 28 | ||||
-rw-r--r-- | source3/torture/torture.c | 72 | ||||
-rw-r--r-- | source3/torture/utable.c | 49 |
8 files changed, 202 insertions, 90 deletions
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c index 1163b752b1..b771e135f4 100644 --- a/source3/libsmb/clifile.c +++ b/source3/libsmb/clifile.c @@ -945,7 +945,6 @@ BOOL cli_setatr(struct cli_state *cli, const char *fname, uint16 attr, time_t t) /**************************************************************************** Check for existance of a dir. ****************************************************************************/ - BOOL cli_chkpath(struct cli_state *cli, const char *path) { pstring path2; @@ -1052,3 +1051,34 @@ int cli_ctemp(struct cli_state *cli, const char *path, char **tmp_path) return SVAL(cli->inbuf,smb_vwv0); } + + +/* + send a raw ioctl - used by the torture code +*/ +NTSTATUS cli_raw_ioctl(struct cli_state *cli, int fnum, uint32 code, DATA_BLOB *blob) +{ + memset(cli->outbuf,'\0',smb_size); + memset(cli->inbuf,'\0',smb_size); + + set_message(cli->outbuf, 3, 0, True); + SCVAL(cli->outbuf,smb_com,SMBioctl); + cli_setup_packet(cli); + + SSVAL(cli->outbuf, smb_vwv0, fnum); + SSVAL(cli->outbuf, smb_vwv1, code>>16); + SSVAL(cli->outbuf, smb_vwv2, (code&0xFFFF)); + + cli_send_smb(cli); + if (!cli_receive_smb(cli)) { + return NT_STATUS_UNEXPECTED_NETWORK_ERROR; + } + + if (cli_is_error(cli)) { + return cli_nt_error(cli); + } + + *blob = data_blob(NULL, 0); + + return NT_STATUS_OK; +} diff --git a/source3/torture/denytest.c b/source3/torture/denytest.c index 017bb1c06d..3a7906fb33 100644 --- a/source3/torture/denytest.c +++ b/source3/torture/denytest.c @@ -1408,7 +1408,7 @@ static void progress_bar(unsigned i, unsigned total) */ BOOL torture_denytest1(int dummy) { - static struct cli_state cli1; + struct cli_state *cli1; int fnum1, fnum2; int i; BOOL correct = True; @@ -1421,10 +1421,10 @@ BOOL torture_denytest1(int dummy) printf("starting denytest1\n"); for (i=0;i<2;i++) { - cli_unlink(&cli1, fnames[i]); - fnum1 = cli_open(&cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE); - cli_write(&cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i])); - cli_close(&cli1, fnum1); + cli_unlink(cli1, fnames[i]); + fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE); + cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i])); + cli_close(cli1, fnum1); } printf("testing %d entries\n", ARRAY_SIZE(denytable1)); @@ -1435,10 +1435,10 @@ BOOL torture_denytest1(int dummy) progress_bar(i, ARRAY_SIZE(denytable1)); - fnum1 = cli_open(&cli1, fname, + fnum1 = cli_open(cli1, fname, denytable1[i].mode1, denytable1[i].deny1); - fnum2 = cli_open(&cli1, fname, + fnum2 = cli_open(cli1, fname, denytable1[i].mode2, denytable1[i].deny2); @@ -1449,10 +1449,10 @@ BOOL torture_denytest1(int dummy) } else { char x = 1; res = A_0; - if (cli_read(&cli1, fnum2, (void *)&x, 0, 1) == 1) { + if (cli_read(cli1, fnum2, (void *)&x, 0, 1) == 1) { res += A_R; } - if (cli_write(&cli1, fnum2, 0, (void *)&x, 0, 1) == 1) { + if (cli_write(cli1, fnum2, 0, (void *)&x, 0, 1) == 1) { res += A_W; } } @@ -1472,15 +1472,15 @@ BOOL torture_denytest1(int dummy) resultstr(denytable1[i].result)); } - cli_close(&cli1, fnum1); - cli_close(&cli1, fnum2); + cli_close(cli1, fnum1); + cli_close(cli1, fnum2); } for (i=0;i<2;i++) { - cli_unlink(&cli1, fnames[i]); + cli_unlink(cli1, fnames[i]); } - if (!torture_close_connection(&cli1)) { + if (!torture_close_connection(cli1)) { correct = False; } @@ -1494,7 +1494,7 @@ BOOL torture_denytest1(int dummy) */ BOOL torture_denytest2(int dummy) { - static struct cli_state cli1, cli2; + static struct cli_state *cli1, *cli2; int fnum1, fnum2; int i; BOOL correct = True; @@ -1507,10 +1507,10 @@ BOOL torture_denytest2(int dummy) printf("starting denytest2\n"); for (i=0;i<2;i++) { - cli_unlink(&cli1, fnames[i]); - fnum1 = cli_open(&cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE); - cli_write(&cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i])); - cli_close(&cli1, fnum1); + cli_unlink(cli1, fnames[i]); + fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE); + cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i])); + cli_close(cli1, fnum1); } for (i=0; i<ARRAY_SIZE(denytable2); i++) { @@ -1519,10 +1519,10 @@ BOOL torture_denytest2(int dummy) progress_bar(i, ARRAY_SIZE(denytable1)); - fnum1 = cli_open(&cli1, fname, + fnum1 = cli_open(cli1, fname, denytable2[i].mode1, denytable2[i].deny1); - fnum2 = cli_open(&cli2, fname, + fnum2 = cli_open(cli2, fname, denytable2[i].mode2, denytable2[i].deny2); @@ -1533,10 +1533,10 @@ BOOL torture_denytest2(int dummy) } else { char x = 1; res = A_0; - if (cli_read(&cli2, fnum2, (void *)&x, 0, 1) == 1) { + if (cli_read(cli2, fnum2, (void *)&x, 0, 1) == 1) { res += A_R; } - if (cli_write(&cli2, fnum2, 0, (void *)&x, 0, 1) == 1) { + if (cli_write(cli2, fnum2, 0, (void *)&x, 0, 1) == 1) { res += A_W; } } @@ -1556,18 +1556,18 @@ BOOL torture_denytest2(int dummy) resultstr(denytable2[i].result)); } - cli_close(&cli1, fnum1); - cli_close(&cli2, fnum2); + cli_close(cli1, fnum1); + cli_close(cli2, fnum2); } for (i=0;i<2;i++) { - cli_unlink(&cli1, fnames[i]); + cli_unlink(cli1, fnames[i]); } - if (!torture_close_connection(&cli1)) { + if (!torture_close_connection(cli1)) { correct = False; } - if (!torture_close_connection(&cli2)) { + if (!torture_close_connection(cli2)) { correct = False; } diff --git a/source3/torture/mangle_test.c b/source3/torture/mangle_test.c index 6d127a918e..e4ccfc1b83 100644 --- a/source3/torture/mangle_test.c +++ b/source3/torture/mangle_test.c @@ -107,7 +107,7 @@ static BOOL test_one(struct cli_state *cli, const char *name) static void gen_name(char *name) { - const char *chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._-$~..."; + const char *chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._-$~... "; unsigned max_idx = strlen(chars); unsigned len; int i; @@ -135,7 +135,12 @@ static void gen_name(char *name) /* and a medium probability of a common lead string */ if (random() % 10 == 0) { - strncpy(p, "ABCDE", 5); + if (strlen(p) <= 5) { + fstrcpy(p, "ABCDE"); + } else { + /* try not to kill off the null termination */ + memcpy(p, "ABCDE", 5); + } } /* and a high probability of a good extension length */ @@ -151,8 +156,9 @@ static void gen_name(char *name) BOOL torture_mangle(int dummy) { extern int torture_numops; - static struct cli_state cli; + static struct cli_state *cli; int i; + BOOL ret = True; printf("starting mangle test\n"); @@ -167,20 +173,22 @@ BOOL torture_mangle(int dummy) return False; } - cli_unlink(&cli, "\\mangle_test\\*"); - cli_rmdir(&cli, "\\mangle_test"); + cli_unlink(cli, "\\mangle_test\\*"); + cli_rmdir(cli, "\\mangle_test"); - if (!cli_mkdir(&cli, "\\mangle_test")) { + if (!cli_mkdir(cli, "\\mangle_test")) { printf("ERROR: Failed to make directory\n"); return False; } for (i=0;i<torture_numops;i++) { fstring name; + ZERO_STRUCT(name); gen_name(name); - - if (!test_one(&cli, name)) { + + if (!test_one(cli, name)) { + ret = False; break; } if (total && total % 100 == 0) { @@ -189,8 +197,8 @@ BOOL torture_mangle(int dummy) } } - cli_unlink(&cli, "\\mangle_test\\*"); - if (!cli_rmdir(&cli, "\\mangle_test")) { + cli_unlink(cli, "\\mangle_test\\*"); + if (!cli_rmdir(cli, "\\mangle_test")) { printf("ERROR: Failed to remove directory\n"); return False; } @@ -198,8 +206,8 @@ BOOL torture_mangle(int dummy) printf("\nTotal collisions %u/%u - %.2f%% (%u failures)\n", collisions, total, (100.0*collisions) / total, failures); - torture_close_connection(&cli); + torture_close_connection(cli); printf("mangle test finished\n"); - return (failures == 0); + return (ret && (failures == 0)); } diff --git a/source3/torture/masktest.c b/source3/torture/masktest.c index 7d751fb789..06dead3f16 100644 --- a/source3/torture/masktest.c +++ b/source3/torture/masktest.c @@ -33,6 +33,7 @@ static const char *filechars = "abcdefghijklm."; static int verbose; static int die_on_error; static int NumLoops = 0; +static int ignore_dot_errors = 0; /* a test fn for LANMAN mask support */ int ms_fnmatch_lanman_core(const char *pattern, const char *string) @@ -324,7 +325,9 @@ static void testpair(struct cli_state *cli, char *mask, char *file) res2 = reg_test(cli, mask, long_name, short_name); - if (showall || strcmp(res1, res2)) { + if (showall || + ((strcmp(res1, res2) && !ignore_dot_errors) || + (strcmp(res1+2, res2+2) && ignore_dot_errors))) { DEBUG(0,("%s %s %d mask=[%s] file=[%s] rfile=[%s/%s]\n", res1, res2, count, mask, file, long_name, short_name)); if (die_on_error) exit(1); @@ -409,6 +412,7 @@ static void usage(void) -v verbose mode\n\ -E die on error\n\ -a show all tests\n\ + -i ignore . and .. errors\n\ \n\ This program tests wildcard matching between two servers. It generates\n\ random pairs of filenames/masks and tests that they match in the same\n\ @@ -461,7 +465,7 @@ static void usage(void) seed = time(NULL); - while ((opt = getopt(argc, argv, "n:d:U:s:hm:f:aoW:M:vE")) != EOF) { + while ((opt = getopt(argc, argv, "n:d:U:s:hm:f:aoW:M:vEi")) != EOF) { switch (opt) { case 'n': NumLoops = atoi(optarg); @@ -472,6 +476,9 @@ static void usage(void) case 'E': die_on_error = 1; break; + case 'i': + ignore_dot_errors = 1; + break; case 'v': verbose++; break; diff --git a/source3/torture/nbio.c b/source3/torture/nbio.c index d8d3ca0c09..6c51db3cf3 100644 --- a/source3/torture/nbio.c +++ b/source3/torture/nbio.c @@ -125,7 +125,7 @@ void nb_setup(struct cli_state *cli) } -void nb_unlink(char *fname) +void nb_unlink(const char *fname) { if (!cli_unlink(c, fname)) { #if NBDEBUG @@ -136,7 +136,7 @@ void nb_unlink(char *fname) } -void nb_createx(char *fname, +void nb_createx(const char *fname, unsigned create_options, unsigned create_disposition, int handle) { int fd, i; @@ -217,7 +217,7 @@ void nb_close(int handle) ftable[i].handle = 0; } -void nb_rmdir(char *fname) +void nb_rmdir(const char *fname) { if (!cli_rmdir(c, fname)) { printf("ERROR: rmdir %s failed (%s)\n", @@ -226,7 +226,7 @@ void nb_rmdir(char *fname) } } -void nb_rename(char *old, char *new) +void nb_rename(const char *old, const char *new) { if (!cli_rename(c, old, new)) { printf("ERROR: rename %s %s failed (%s)\n", @@ -236,7 +236,7 @@ void nb_rename(char *old, char *new) } -void nb_qpathinfo(char *fname) +void nb_qpathinfo(const char *fname) { cli_qpathinfo(c, fname, NULL, NULL, NULL, NULL, NULL); } @@ -260,7 +260,7 @@ static void find_fn(file_info *finfo, const char *name, void *state) /* noop */ } -void nb_findfirst(char *mask) +void nb_findfirst(const char *mask) { cli_list(c, mask, 0, find_fn, NULL); } @@ -295,7 +295,7 @@ static void delete_fn(file_info *finfo, const char *name, void *state) free(n); } -void nb_deltree(char *dname) +void nb_deltree(const char *dname) { char *mask; asprintf(&mask, "%s\\*", dname); diff --git a/source3/torture/scanner.c b/source3/torture/scanner.c index 7db3dde9c0..93f89c105c 100644 --- a/source3/torture/scanner.c +++ b/source3/torture/scanner.c @@ -191,7 +191,7 @@ static BOOL scan_trans2(struct cli_state *cli, int op, int level, BOOL torture_trans2_scan(int dummy) { - static struct cli_state cli; + static struct cli_state *cli; int op, level; const char *fname = "\\scanner.dat"; int fnum, dnum; @@ -202,26 +202,26 @@ BOOL torture_trans2_scan(int dummy) return False; } - fnum = cli_open(&cli, fname, O_RDWR | O_CREAT | O_TRUNC, + fnum = cli_open(cli, fname, O_RDWR | O_CREAT | O_TRUNC, DENY_NONE); - dnum = cli_open(&cli, "\\", O_RDONLY, DENY_NONE); + dnum = cli_open(cli, "\\", O_RDONLY, DENY_NONE); for (op=OP_MIN; op<=OP_MAX; op++) { printf("Scanning op=%d\n", op); for (level = 0; level <= 50; level++) { - scan_trans2(&cli, op, level, fnum, dnum, fname); + scan_trans2(cli, op, level, fnum, dnum, fname); } for (level = 0x100; level <= 0x130; level++) { - scan_trans2(&cli, op, level, fnum, dnum, fname); + scan_trans2(cli, op, level, fnum, dnum, fname); } for (level = 1000; level < 1050; level++) { - scan_trans2(&cli, op, level, fnum, dnum, fname); + scan_trans2(cli, op, level, fnum, dnum, fname); } } - torture_close_connection(&cli); + torture_close_connection(cli); printf("trans2 scan finished\n"); return True; @@ -393,7 +393,7 @@ static BOOL scan_nttrans(struct cli_state *cli, int op, int level, BOOL torture_nttrans_scan(int dummy) { - static struct cli_state cli; + static struct cli_state *cli; int op, level; const char *fname = "\\scanner.dat"; int fnum, dnum; @@ -404,26 +404,26 @@ BOOL torture_nttrans_scan(int dummy) return False; } - fnum = cli_open(&cli, fname, O_RDWR | O_CREAT | O_TRUNC, + fnum = cli_open(cli, fname, O_RDWR | O_CREAT | O_TRUNC, DENY_NONE); - dnum = cli_open(&cli, "\\", O_RDONLY, DENY_NONE); + dnum = cli_open(cli, "\\", O_RDONLY, DENY_NONE); for (op=OP_MIN; op<=OP_MAX; op++) { printf("Scanning op=%d\n", op); for (level = 0; level <= 50; level++) { - scan_nttrans(&cli, op, level, fnum, dnum, fname); + scan_nttrans(cli, op, level, fnum, dnum, fname); } for (level = 0x100; level <= 0x130; level++) { - scan_nttrans(&cli, op, level, fnum, dnum, fname); + scan_nttrans(cli, op, level, fnum, dnum, fname); } for (level = 1000; level < 1050; level++) { - scan_nttrans(&cli, op, level, fnum, dnum, fname); + scan_nttrans(cli, op, level, fnum, dnum, fname); } } - torture_close_connection(&cli); + torture_close_connection(cli); printf("nttrans scan finished\n"); return True; diff --git a/source3/torture/torture.c b/source3/torture/torture.c index dfeb5a875d..740fae4425 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -499,18 +499,21 @@ static BOOL rw_torture2(struct cli_state *c1, struct cli_state *c2) if (cli_write(c1, fnum1, 0, buf, 0, buf_size) != buf_size) { printf("write failed (%s)\n", cli_errstr(c1)); correct = False; + break; } if ((bytes_read = cli_read(c2, fnum2, buf_rd, 0, buf_size)) != buf_size) { printf("read failed (%s)\n", cli_errstr(c2)); printf("read %d, expected %d\n", bytes_read, buf_size); correct = False; + break; } if (memcmp(buf_rd, buf, buf_size) != 0) { printf("read/write compare failed\n"); correct = False; + break; } } @@ -547,8 +550,10 @@ static BOOL run_readwritetest(int dummy) test1 = rw_torture2(cli1, cli2); printf("Passed readwritetest v1: %s\n", BOOLSTR(test1)); - test2 = rw_torture2(cli1, cli1); - printf("Passed readwritetest v2: %s\n", BOOLSTR(test2)); + if (test1) { + test2 = rw_torture2(cli1, cli1); + printf("Passed readwritetest v2: %s\n", BOOLSTR(test2)); + } if (!torture_close_connection(cli1)) { test1 = False; @@ -568,12 +573,12 @@ static BOOL run_readwritemulti(int dummy) cli = current_cli; - cli_sockopt(&cli, sockops); + cli_sockopt(cli, sockops); printf("run_readwritemulti: fname %s\n", randomfname); - test = rw_torture3(&cli, randomfname); + test = rw_torture3(cli, randomfname); - if (!torture_close_connection(&cli)) { + if (!torture_close_connection(cli)) { test = False; } @@ -692,7 +697,7 @@ static BOOL run_netbench(int client) pstring line; char cname[20]; FILE *f; - char *params[20]; + const char *params[20]; BOOL correct = True; cli = current_cli; @@ -4076,6 +4081,60 @@ static void del_fn(file_info *finfo, const char *mask, void *state) /* + sees what IOCTLs are supported + */ +BOOL torture_ioctl_test(int dummy) +{ + static struct cli_state *cli; + uint16 device, function; + int fnum; + const char *fname = "\\ioctl.dat"; + DATA_BLOB blob; + NTSTATUS status; + + if (!torture_open_connection(&cli)) { + return False; + } + + printf("starting ioctl test\n"); + + cli_unlink(cli, fname); + + fnum = cli_open(cli, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE); + if (fnum == -1) { + printf("open of %s failed (%s)\n", fname, cli_errstr(cli)); + return False; + } + + status = cli_raw_ioctl(cli, fnum, 0x2d0000 | (0x0420<<2), &blob); + printf("ioctl device info: %s\n", cli_errstr(cli)); + + status = cli_raw_ioctl(cli, fnum, IOCTL_QUERY_JOB_INFO, &blob); + printf("ioctl job info: %s\n", cli_errstr(cli)); + + for (device=0;device<0x100;device++) { + printf("testing device=0x%x\n", device); + for (function=0;function<0x100;function++) { + uint32 code = (device<<16) | function; + + status = cli_raw_ioctl(cli, fnum, code, &blob); + + if (NT_STATUS_IS_OK(status)) { + printf("ioctl 0x%x OK : %d bytes\n", code, blob.length); + data_blob_free(&blob); + } + } + } + + if (!torture_close_connection(cli)) { + return False; + } + + return True; +} + + +/* tries varients of chkpath */ BOOL torture_chkpath_test(int dummy) @@ -4494,6 +4553,7 @@ static struct { {"ERRMAPEXTRACT", run_error_map_extract, 0}, {"PIPE_NUMBER", run_pipe_number, 0}, {"TCON2", run_tcon2_test, 0}, + {"IOCTL", torture_ioctl_test, 0}, {"CHKPATH", torture_chkpath_test, 0}, {"FDSESS", run_fdsesstest, 0}, {NULL, NULL, 0}}; diff --git a/source3/torture/utable.c b/source3/torture/utable.c index 720614cea3..3ec5932b79 100644 --- a/source3/torture/utable.c +++ b/source3/torture/utable.c @@ -24,7 +24,7 @@ BOOL torture_utable(int dummy) { - static struct cli_state cli; + struct cli_state *cli; fstring fname, alt_name; int fnum; smb_ucs2_t c2; @@ -40,8 +40,8 @@ BOOL torture_utable(int dummy) memset(valid, 0, sizeof(valid)); - cli_mkdir(&cli, "\\utable"); - cli_unlink(&cli, "\\utable\\*"); + cli_mkdir(cli, "\\utable"); + cli_unlink(cli, "\\utable\\*"); for (c=1; c < 0x10000; c++) { char *p; @@ -55,13 +55,13 @@ BOOL torture_utable(int dummy) p[len] = 0; fstrcat(fname,"_a_long_extension"); - fnum = cli_open(&cli, fname, O_RDWR | O_CREAT | O_TRUNC, + fnum = cli_open(cli, fname, O_RDWR | O_CREAT | O_TRUNC, DENY_NONE); if (fnum == -1) continue; chars_allowed++; - cli_qpathinfo_alt_name(&cli, fname, alt_name); + cli_qpathinfo_alt_name(cli, fname, alt_name); if (strncmp(alt_name, "X_A_L", 5) != 0) { alt_allowed++; @@ -69,8 +69,8 @@ BOOL torture_utable(int dummy) d_printf("fname=[%s] alt_name=[%s]\n", fname, alt_name); } - cli_close(&cli, fnum); - cli_unlink(&cli, fname); + cli_close(cli, fnum); + cli_unlink(cli, fname); if (c % 100 == 0) { printf("%d (%d/%d)\r", c, chars_allowed, alt_allowed); @@ -78,7 +78,7 @@ BOOL torture_utable(int dummy) } printf("%d (%d/%d)\n", c, chars_allowed, alt_allowed); - cli_rmdir(&cli, "\\utable"); + cli_rmdir(cli, "\\utable"); d_printf("%d chars allowed %d alt chars allowed\n", chars_allowed, alt_allowed); @@ -115,7 +115,7 @@ static char *form_name(int c) BOOL torture_casetable(int dummy) { - static struct cli_state cli; + static struct cli_state *cli; char *fname; int fnum; int c, i; @@ -129,28 +129,35 @@ BOOL torture_casetable(int dummy) memset(equiv, 0, sizeof(equiv)); - cli_mkdir(&cli, "\\utable"); - cli_unlink(&cli, "\\utable\\*"); + cli_unlink(cli, "\\utable\\*"); + cli_rmdir(cli, "\\utable"); + if (!cli_mkdir(cli, "\\utable")) { + printf("Failed to create utable directory!\n"); + return False; + } for (c=1; c < 0x10000; c++) { size_t size; if (c == '.' || c == '\\') continue; - printf("%04x\n", c); + printf("%04x (%c)\n", c, isprint(c)?c:'.'); fname = form_name(c); - fnum = cli_nt_create_full(&cli, fname, 0, + fnum = cli_nt_create_full(cli, fname, 0, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_NONE, FILE_OPEN_IF, 0, 0); - if (fnum == -1) continue; + if (fnum == -1) { + printf("Failed to create file with char %04x\n", c); + continue; + } size = 0; - if (!cli_qfileinfo(&cli, fnum, NULL, &size, + if (!cli_qfileinfo(cli, fnum, NULL, &size, NULL, NULL, NULL, NULL, NULL)) continue; if (size > 0) { @@ -160,11 +167,11 @@ BOOL torture_casetable(int dummy) if (size/sizeof(int) >= MAX_EQUIVALENCE) { printf("too many chars match?? size=%d c=0x%04x\n", size, c); - cli_close(&cli, fnum); + cli_close(cli, fnum); return False; } - cli_read(&cli, fnum, (char *)c2, 0, size); + cli_read(cli, fnum, (char *)c2, 0, size); printf("%04x: ", c); equiv[c][0] = c; for (i=0; i<size/sizeof(int); i++) { @@ -175,12 +182,12 @@ BOOL torture_casetable(int dummy) fflush(stdout); } - cli_write(&cli, fnum, 0, (char *)&c, size, sizeof(c)); - cli_close(&cli, fnum); + cli_write(cli, fnum, 0, (char *)&c, size, sizeof(c)); + cli_close(cli, fnum); } - cli_unlink(&cli, "\\utable\\*"); - cli_rmdir(&cli, "\\utable"); + cli_unlink(cli, "\\utable\\*"); + cli_rmdir(cli, "\\utable"); return True; } |