}
}
+static int ne_find_handle(int handle)
+{
+ int i;
+ children[nbio_id].line = line_count;
+ for (i=0;i<MAX_FILES;i++) {
+ if (ftable[i].handle == handle) return i;
+ }
+ return -1;
+}
+
static int find_handle(int handle)
{
int i;
void nb_createx(char *fname,
- unsigned create_options, unsigned create_disposition, int handle)
+ unsigned create_options, unsigned create_disposition, int handle, int no_err)
{
int fd, i;
uint32 desired_access;
if (fd == -1 && handle != -1) {
printf("ERROR: cli_nt_create_full failed for %s - %s\n",
fname, cli_errstr(c));
- exit(1);
+ if (!no_err) exit(1);
}
if (fd != -1 && handle == -1) {
printf("ERROR: cli_nt_create_full succeeded for %s\n", fname);
children[nbio_id].bytes_in += ret_size;
}
-void nb_close(int handle)
+void nb_close(int handle, int no_err)
{
int i;
- i = find_handle(handle);
+ if (no_err) {
+ i = ne_find_handle(handle);
+ if (i < 0) return;
+ }
+ else
+ i = find_handle(handle);
if (!cli_close(c, ftable[i].fd)) {
printf("(%d) close failed on handle %d\n", line_count, handle);
exit(1);
if (!strcmp(params[0],"NTCreateX")) {
nb_createx(params[1], ival(params[2]), ival(params[3]),
- ival(params[4]));
+ ival(params[4]),ival(params[5]));
} else if (!strcmp(params[0],"Close")) {
- nb_close(ival(params[1]));
+ nb_close(ival(params[1]),ival(params[2]));
} else if (!strcmp(params[0],"Rename")) {
nb_rename(params[1], params[2]);
} else if (!strcmp(params[0],"Unlink")) {