s3:smbd: change blocking.c to use fsp_fnum_dbg() for fsp->fnum logging.
[Samba/gebeck_regimport.git] / source3 / torture / test_case_insensitive.c
blob04e2dce2a791e651192d756c9e4dc52983cd5f1d
1 /*
2 Unix SMB/CIFS implementation.
3 reproducer for bug 8042
4 Copyright (C) Volker Lendecke 2011
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include "includes.h"
21 #include "torture/proto.h"
22 #include "system/filesys.h"
23 #include "libsmb/libsmb.h"
26 * Regression test file creates on case insensitive file systems (e.g. OS/X)
27 * https://bugzilla.samba.org/show_bug.cgi?id=8042
30 bool run_case_insensitive_create(int dummy)
32 struct cli_state *cli;
33 uint16_t fnum;
34 NTSTATUS status;
36 printf("Starting case_insensitive_create\n");
38 if (!torture_open_connection(&cli, 0)) {
39 return false;
42 status = cli_mkdir(cli, "x");
43 if (!NT_STATUS_IS_OK(status)) {
44 printf("cli_mkdir failed: %s\n", nt_errstr(status));
45 goto done;
47 status = cli_chkpath(cli, "X");
48 if (!NT_STATUS_IS_OK(status)) {
49 printf("cli_chkpath failed: %s\n", nt_errstr(status));
50 goto rmdir;
52 status = cli_openx(cli, "x\\y", O_RDWR|O_CREAT, 0, &fnum);
53 if (!NT_STATUS_IS_OK(status)) {
54 printf("cli_openx failed: %s\n", nt_errstr(status));
56 if (NT_STATUS_EQUAL(status, NT_STATUS_FILE_IS_A_DIRECTORY)) {
57 printf("Bug 8042 reappeared!!\n");
59 goto unlink;
61 status = cli_close(cli, fnum);
62 if (!NT_STATUS_IS_OK(status)) {
63 printf("cli_close failed: %s\n", nt_errstr(status));
64 goto done;
66 unlink:
67 status = cli_unlink(cli, "x\\y", 0);
68 if (!NT_STATUS_IS_OK(status)) {
69 printf("cli_unlink failed: %s\n", nt_errstr(status));
70 goto done;
72 rmdir:
73 status = cli_rmdir(cli, "x");
74 if (!NT_STATUS_IS_OK(status)) {
75 printf("cli_close failed: %s\n", nt_errstr(status));
77 done:
78 torture_close_connection(cli);
79 return NT_STATUS_IS_OK(status);