void showDependents( STRINGLIST *q, // list of dependents STRINGLIST *macros // macros in the dependents ) { char *u, *v; char *w; size_t i; struct _finddata_t finddata; NMHANDLE searchHandle; makeMessage(DEPENDENTS_MESSAGE); for (i = 0; q; q = q->next) { char *szFilename; if (_tcschr(q->text, '$')) { u = expandMacros(q->text, ¯os); for (v = _tcstok(u, " \t"); v; v = _tcstok(NULL, " \t")) { if (_tcspbrk(v, "*?")) { if ((szFilename = findFirst(v, &finddata, &searchHandle))) { do { w = prependPath(v, szFilename); printf("%s ", w); i = checkLineLength(i, w); FREE(w); } while ((szFilename = findNext(&finddata, searchHandle))); } } else { printf("%s ", v); i = checkLineLength(i, v); } } FREE(u); } else if (_tcspbrk(q->text, "*?")) { if ((szFilename = findFirst(q->text, &finddata, &searchHandle))) { do { v = prependPath(q->text, szFilename); printf("%s ", v); i = checkLineLength(i, v); FREE(v); } while ((szFilename = findNext(&finddata, searchHandle))); } } else { printf("%s ", q->text); i = checkLineLength(i, q->text); } } }
void AddThr::setDataForSync(const QString &pth, QTreeWidgetItem *par, bool notDir) { if (notDir) setData({pth}, {}, par, false, FILE_SYNC); //File synchronization needs only one file! else { QStringList dirEntries = getDirEntries(pth); prependPath(dirEntries, pth); setData(dirEntries, {}, par, false, DIR_SYNC); } }
static bool runWithQtInEnvironment(const QString &cmd) { enum { timeOutMs = 30000 }; static const bool pathSet = prependPath(); if (!pathSet) return false; STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); STARTUPINFO myInfo; GetStartupInfo(&myInfo); si.hStdInput = myInfo.hStdInput; si.hStdOutput = myInfo.hStdOutput; si.hStdError = myInfo.hStdError; PROCESS_INFORMATION pi; ZeroMemory(&pi, sizeof(PROCESS_INFORMATION)); QScopedArrayPointer<wchar_t> commandLineW(new wchar_t[cmd.size() + 1]); cmd.toWCharArray(commandLineW.data()); commandLineW[cmd.size()] = 0; if (!CreateProcessW(0, commandLineW.data(), 0, 0, /* InheritHandles */ TRUE, 0, 0, 0, &si, &pi)) { fprintf(stderr, "Unable to execute \"%s\": %s\n", qPrintable(cmd), qPrintable(errorString(GetLastError()))); return false; } DWORD exitCode = 1; switch (WaitForSingleObject(pi.hProcess, timeOutMs)) { case WAIT_OBJECT_0: GetExitCodeProcess(pi.hProcess, &exitCode); break; case WAIT_TIMEOUT: fprintf(stderr, "Timed out after %d ms out waiting for \"%s\".\n", int(timeOutMs), qPrintable(cmd)); TerminateProcess(pi.hProcess, 1); break; default: fprintf(stderr, "Error waiting for \"%s\": %s\n", qPrintable(cmd), qPrintable(errorString(GetLastError()))); TerminateProcess(pi.hProcess, 1); break; } CloseHandle(pi.hThread); CloseHandle(pi.hProcess); return exitCode == 0; }