/* * Do a specific command for a specific host */ static void docmdhost(struct cmd *cmd, char **filev) { checkcmd(cmd); /* * If we're multi-threaded and we're the parent, spawn a * new child process. */ if (do_fork && !amchild) { pid_t pid; /* * If we're at maxchildren, wait for number of active * children to fall below max number of children. */ while (activechildren >= maxchildren) waitup(); pid = spawn(cmd, cmds); if (pid == 0) /* Child */ amchild = 1; else /* Parent */ return; } /* * Disable NFS checks */ if (cmd->c_flags & CMD_NOCHKNFS) FLAG_OFF(options, DO_CHKNFS); if (!nflag) { currenthost = (cmd->c_name) ? cmd->c_name : "<unknown>"; #if defined(SETARGS) || defined(HAVE_SETPROCTITLE) setproctitle("update %s", currenthost); #endif /* SETARGS || HAVE_SETPROCTITLE */ } switch (cmd->c_type) { case ARROW: doarrow(cmd, filev); break; case DCOLON: dodcolon(cmd, filev); break; default: fatalerr("illegal command type %d", cmd->c_type); } }
/* * Parse a dist option string. Set option flags to optptr. * If doerrs is true, print out own error message. Returns * 0 on success. */ int parsedistopts(char *str, opt_t *optptr, int doerrs) { char *string, *optstr; DISTOPTINFO *distopt; int len; /* strtok() is destructive */ string = xstrdup(str); for (optstr = strtok(string, ","); optstr; optstr = strtok(NULL, ",")) { /* Try Yes */ if ((distopt = getdistopt(optstr, &len)) != NULL) { FLAG_ON(*optptr, distopt->do_value); if (distopt->do_arg && optstr[len] == '=') (void) strlcpy(distopt->do_arg, &optstr[len + 1], distopt->arg_size); continue; } /* Try No */ if ((distopt = getdistopt(optstr+2, &len)) != NULL) { FLAG_OFF(*optptr, distopt->do_value); continue; } if (doerrs) error("Dist option \"%s\" is not valid.", optstr); } if (string) (void) free(string); return(nerrs); }
VOID AppendPackage() { PLDR_MODULE Self; UNICODE_STRING SelfPath; static WCHAR PythonZip[] = L"python.zip"; ml::MlInitialize(); //Py_IgnoreEnvironmentFlag = TRUE; //Py_NoSiteFlag = TRUE; Py_DontWriteBytecodeFlag = TRUE; //Py_NoUserSiteDirectory = TRUE; Self = FindLdrModuleByHandle(nullptr); SelfPath = Self->FullDllName; SelfPath.Length -= Self->BaseDllName.Length; Py_SetPath(ml::String::Format( L"%wZ;%wZ%s;%wZ%s\\site-packages;%wZlib;%wZDLLs;%wZUserSite", &SelfPath, // exe path &SelfPath, PythonZip, // ./python.zip &SelfPath, PythonZip, // ./python.zip/site-packages &SelfPath, // ./lib &SelfPath, // ./DLLs &SelfPath // ./UserSite )); ml::String PathEnv, UserSite; PWSTR EnvBuffer; ULONG Length; UNICODE_STRING Path; RtlInitEmptyString(&Path); RtlExpandEnvironmentStrings_U(nullptr, &USTR(L"%Path%"), &Path, &Length); EnvBuffer = (PWSTR)AllocStack(Length); RtlInitEmptyString(&Path, EnvBuffer, Length); RtlExpandEnvironmentStrings_U(nullptr, &USTR(L"%Path%"), &Path, nullptr); UserSite = SelfPath; UserSite += L"UserSite"; PathEnv = SelfPath; PathEnv += L"DLLs;"; EnumDirectoryFiles( nullptr, L"*.*", 0, UserSite, nullptr, [] (PVOID Buffer, PWIN32_FIND_DATAW FindData, ULONG_PTR Context) -> LONG { ml::String *PathEnv = (ml::String *)Context; if (FLAG_OFF(FindData->dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY)) return 0; (*PathEnv) += FindData->cFileName; (*PathEnv) += ';'; return 0; }, (ULONG_PTR)&PathEnv, EDF_PROCDIR | EDF_BEFORE ); PathEnv += Path; PathEnv += ';'; RtlSetEnvironmentVariable(nullptr, &USTR(L"Path"), PathEnv); }
bool MineFieldFilterUnflagged::filter_cb(CoordinateSet coords, Game *field) { Tile *tile = field->getTile(coords); if (tile == NULL) return false; return FLAG_OFF(tile->getFlag()); }