#define NBDEBUG 0 /* Unix SMB/CIFS implementation. SMB torture tester Copyright (C) Andrew Tridgell 1997-1998 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "includes.h" #include "torture/proto.h" #include "../libcli/security/security.h" #include "libsmb/libsmb.h" #include "libsmb/clirap.h" #define MAX_FILES 1000 static char buf[70000]; extern int line_count; extern int nbio_id; static int nprocs; static struct timeval nb_start; static struct { int fd; int handle; } ftable[MAX_FILES]; static struct children { double bytes_in, bytes_out; int line; int done; } *children; double nbio_total(void) { int i; double total = 0; for (i=0;iname[0] == '.') { return NT_STATUS_OK; } n = SMB_STRDUP(name); n[strlen(n)-1] = 0; if (asprintf(&s, "%s%s", n, finfo->name) == -1) { free(n); printf("asprintf failed\n"); return NT_STATUS_NO_MEMORY; } if (finfo->mode & FILE_ATTRIBUTE_DIRECTORY) { char *s2; if (asprintf(&s2, "%s\\*", s) == -1) { printf("asprintf failed\n"); free(s); free(n); return NT_STATUS_NO_MEMORY; } status = cli_list(c, s2, FILE_ATTRIBUTE_DIRECTORY, delete_fn, NULL); free(s2); if (!NT_STATUS_IS_OK(status)) { free(s); free(n); return status; } nb_rmdir(s); } else { total_deleted++; nb_unlink(s); } free(s); free(n); return NT_STATUS_OK; } void nb_deltree(const char *dname) { char *mask; if (asprintf(&mask, "%s\\*", dname) == -1) { printf("asprintf failed\n"); return; } total_deleted = 0; cli_list(c, mask, FILE_ATTRIBUTE_DIRECTORY, delete_fn, NULL); free(mask); cli_rmdir(c, dname); if (total_deleted) printf("WARNING: Cleaned up %d files\n", total_deleted); } void nb_cleanup(void) { cli_rmdir(c, "clients"); children[nbio_id].done = 1; }