From 89f55d36f31ae51e365fc0e4020be0728091bd53 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 14 Aug 2003 01:31:31 +0000 Subject: added the ancient SMBcreate operation to the testsuite and client lib (This used to be commit 3eef35e581b5e1802711b9b5297f61800a7e242e) --- source4/torture/raw/open.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'source4/torture/raw/open.c') diff --git a/source4/torture/raw/open.c b/source4/torture/raw/open.c index 9f77eb3f8e..3e28322f37 100644 --- a/source4/torture/raw/open.c +++ b/source4/torture/raw/open.c @@ -795,6 +795,61 @@ done: } +/* + test RAW_OPEN_CREATE +*/ +static BOOL test_create(struct cli_state *cli, TALLOC_CTX *mem_ctx) +{ + union smb_open io; + const char *fname = BASEDIR "\\torture_create.txt"; + NTSTATUS status; + int fnum; + BOOL ret = True; + time_t basetime = (time(NULL) + 3600*24*3) & ~1; + union smb_fileinfo finfo; + + printf("Checking RAW_OPEN_CREATE\n"); + + io.create.level = RAW_OPEN_CREATE; + io.create.in.attrib = 0; + io.create.in.write_time = 0; + io.create.in.fname = fname; + status = smb_raw_open(cli->tree, mem_ctx, &io); + CHECK_STATUS(status, NT_STATUS_OK); + fnum = io.create.out.fnum; + + status = smb_raw_open(cli->tree, mem_ctx, &io); + CHECK_STATUS(status, NT_STATUS_OK); + + cli_close(cli, io.create.out.fnum); + cli_close(cli, fnum); + cli_unlink(cli, fname); + + /* make sure write_time works */ + io.create.in.write_time = basetime; + status = smb_raw_open(cli->tree, mem_ctx, &io); + CHECK_STATUS(status, NT_STATUS_OK); + fnum = io.create.out.fnum; + CHECK_TIME(basetime, write_time); + + cli_close(cli, fnum); + cli_unlink(cli, fname); + + /* make sure file_attrs works */ + io.create.in.attrib = FILE_ATTRIBUTE_HIDDEN; + status = smb_raw_open(cli->tree, mem_ctx, &io); + CHECK_STATUS(status, NT_STATUS_OK); + fnum = io.create.out.fnum; + CHECK_ALL_INFO(FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_ARCHIVE, attrib); + +done: + cli_close(cli, fnum); + cli_unlink(cli, fname); + + return ret; +} + + /* test RAW_OPEN_CTEMP */ @@ -882,6 +937,10 @@ BOOL torture_raw_open(int dummy) ret = False; } + if (!test_create(cli, mem_ctx)) { + ret = False; + } + if (!test_ctemp(cli, mem_ctx)) { ret = False; } -- cgit