+ params++;
+ i--;
+ }
+
+ if (strncmp(params[i-1], "NT_STATUS_", 10) != 0 &&
+ strncmp(params[i-1], "0x", 2) != 0) {
+ printf("Badly formed status at line %d\n", child->line);
+ continue;
+ }
+
+ if (fname) {
+ free(fname);
+ fname = NULL;
+ }
+ if (fname2) {
+ free(fname2);
+ fname2 = NULL;
+ }
+
+ if (i>1 && params[1][0] == '/') {
+ asprintf(&fname, "%s%s", child->directory, params[1]);
+ }
+ if (i>2 && params[2][0] == '/') {
+ asprintf(&fname2, "%s%s", child->directory, params[2]);
+ }
+
+ status = params[i-1];
+
+ if (!strcmp(params[0],"NTCreateX")) {
+ nb_createx(child, fname, ival(params[2]), ival(params[3]),
+ ival(params[4]), status);
+ } else if (!strcmp(params[0],"Close")) {
+ nb_close(child, ival(params[1]), status);
+ } else if (!strcmp(params[0],"Rename")) {
+ nb_rename(child, fname, fname2, status);
+ } else if (!strcmp(params[0],"Unlink")) {
+ nb_unlink(child, fname, ival(params[2]), status);
+ } else if (!strcmp(params[0],"Deltree")) {
+ nb_deltree(child, fname);
+ } else if (!strcmp(params[0],"Rmdir")) {
+ nb_rmdir(child, fname, status);
+ } else if (!strcmp(params[0],"Mkdir")) {
+ nb_mkdir(child, fname, status);
+ } else if (!strcmp(params[0],"QUERY_PATH_INFORMATION")) {
+ nb_qpathinfo(child, fname, ival(params[2]), status);
+ } else if (!strcmp(params[0],"QUERY_FILE_INFORMATION")) {
+ nb_qfileinfo(child, ival(params[1]), ival(params[2]), status);
+ } else if (!strcmp(params[0],"QUERY_FS_INFORMATION")) {
+ nb_qfsinfo(child, ival(params[1]), status);
+ } else if (!strcmp(params[0],"SET_FILE_INFORMATION")) {
+ nb_sfileinfo(child, ival(params[1]), ival(params[2]), status);
+ } else if (!strcmp(params[0],"FIND_FIRST")) {
+ nb_findfirst(child, fname, ival(params[2]),
+ ival(params[3]), ival(params[4]), status);
+ } else if (!strcmp(params[0],"WriteX")) {
+ nb_writex(child, ival(params[1]),
+ ival(params[2]), ival(params[3]), ival(params[4]),
+ status);
+ } else if (!strcmp(params[0],"LockX")) {
+ nb_lockx(child, ival(params[1]),
+ ival(params[2]), ival(params[3]), status);
+ } else if (!strcmp(params[0],"UnlockX")) {
+ nb_unlockx(child, ival(params[1]),
+ ival(params[2]), ival(params[3]), status);
+ } else if (!strcmp(params[0],"ReadX")) {
+ nb_readx(child, ival(params[1]),
+ ival(params[2]), ival(params[3]), ival(params[4]),
+ status);
+ } else if (!strcmp(params[0],"Flush")) {
+ nb_flush(child, ival(params[1]), status);
+ } else if (!strcmp(params[0],"Sleep")) {
+ nb_sleep(child, ival(params[1]), status);