Skip to content

Commit 8fecb2f

Browse files
committed
make Tornado to work with MacOS
1 parent 5914ace commit 8fecb2f

File tree

2 files changed

+1
-296
lines changed

2 files changed

+1
-296
lines changed

_lzbench/lzbench.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ int main( int argc, char** argv)
550550
fprintf(stderr,"\nExample usage:\n");
551551
fprintf(stderr," " PROGNAME " -ebrotli filename - selects all levels of brotli\n");
552552
fprintf(stderr," " PROGNAME " -ebrotli,2,5/zstd filename - selects levels 2 & 5 of brotli and zstd\n");
553-
exit(1);
553+
exit(0);
554554
}
555555

556556
bool first_time = true;

tornado/Common.cpp

-295
Original file line numberDiff line numberDiff line change
@@ -462,301 +462,6 @@ CFILENAME GetTempDir (void)
462462
}
463463

464464

465-
#ifdef FREEARC_WIN
466-
#include <sys/utime.h>
467-
468-
#if !defined(_WIN64) && defined(__GNUC__)
469-
470-
typedef struct _MY_MEMORYSTATUSEX {
471-
DWORD dwLength;
472-
DWORD dwMemoryLoad;
473-
DWORDLONG ullTotalPhys;
474-
DWORDLONG ullAvailPhys;
475-
DWORDLONG ullTotalPageFile;
476-
DWORDLONG ullAvailPageFile;
477-
DWORDLONG ullTotalVirtual;
478-
DWORDLONG ullAvailVirtual;
479-
DWORDLONG ullAvailExtendedVirtual;
480-
} MY_MEMORYSTATUSEX, *MY_LPMEMORYSTATUSEX;
481-
482-
#else
483-
484-
#define MY_MEMORYSTATUSEX MEMORYSTATUSEX
485-
#define MY_LPMEMORYSTATUSEX LPMEMORYSTATUSEX
486-
487-
#endif
488-
489-
typedef BOOL (WINAPI *GlobalMemoryStatusExP)(MY_LPMEMORYSTATUSEX lpBuffer);
490-
491-
uint64 GetPhysicalMemory (void)
492-
{
493-
MY_MEMORYSTATUSEX statx;
494-
statx.dwLength = sizeof(statx);
495-
GlobalMemoryStatusExP globalMemoryStatusEx = (GlobalMemoryStatusExP) GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GlobalMemoryStatusEx");
496-
if (globalMemoryStatusEx != 0 && globalMemoryStatusEx(&statx))
497-
return statx.ullTotalPhys;
498-
499-
MEMORYSTATUS stat;
500-
stat.dwLength = sizeof(stat);
501-
GlobalMemoryStatus(&stat);
502-
return stat.dwTotalPhys;
503-
}
504-
505-
uint64 GetAvailablePhysicalMemory (void)
506-
{
507-
MY_MEMORYSTATUSEX statx;
508-
statx.dwLength = sizeof(statx);
509-
GlobalMemoryStatusExP globalMemoryStatusEx = (GlobalMemoryStatusExP) GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GlobalMemoryStatusEx");
510-
if (globalMemoryStatusEx != 0 && globalMemoryStatusEx(&statx))
511-
return statx.ullAvailPhys;
512-
513-
MEMORYSTATUS stat;
514-
stat.dwLength = sizeof(stat);
515-
GlobalMemoryStatus(&stat);
516-
return stat.dwAvailPhys;
517-
}
518-
519-
int GetProcessorsCount (void)
520-
{
521-
SYSTEM_INFO si;
522-
GetSystemInfo (&si);
523-
return si.dwNumberOfProcessors;
524-
}
525-
526-
void SetFileDateTime (CFILENAME Filename, time_t t)
527-
{
528-
if (t<0) t=INT_MAX; // Èíà÷å ïîëó÷àåì âûëåò :(
529-
struct tm* t2 = gmtime(&t);
530-
531-
SYSTEMTIME t3;
532-
t3.wYear = t2->tm_year+1900;
533-
t3.wMonth = t2->tm_mon+1;
534-
t3.wDay = t2->tm_mday;
535-
t3.wHour = t2->tm_hour;
536-
t3.wMinute = t2->tm_min;
537-
t3.wSecond = t2->tm_sec;
538-
t3.wMilliseconds = 0;
539-
540-
FILETIME ft;
541-
SystemTimeToFileTime(&t3, &ft);
542-
543-
HANDLE hndl = CreateFileW(Filename, FILE_WRITE_ATTRIBUTES,
544-
FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
545-
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
546-
SetFileTime(hndl,NULL,NULL,&ft); //creation, last access, modification times
547-
CloseHandle(hndl);
548-
//SetFileAttributes (Filename, attrib);
549-
}
550-
551-
// Execute program `filename` in the directory `curdir` optionally waiting until it finished
552-
void RunProgram (CFILENAME filename, CFILENAME curdir, int wait_finish)
553-
{
554-
STARTUPINFO si;
555-
PROCESS_INFORMATION pi;
556-
ZeroMemory (&si, sizeof(si));
557-
si.cb = sizeof(si);
558-
ZeroMemory (&pi, sizeof(pi));
559-
BOOL process_created = CreateProcessW (filename, NULL, NULL, NULL, FALSE, 0, NULL, curdir, &si, &pi);
560-
561-
if (process_created)
562-
{
563-
if (wait_finish)
564-
WaitForSingleObject (pi.hProcess, INFINITE);
565-
CloseHandle (pi.hProcess);
566-
CloseHandle (pi.hThread);
567-
}
568-
}
569-
570-
// Execute `command` in the directory `curdir` optionally waiting until it finished
571-
int RunCommand (CFILENAME command, CFILENAME curdir, int wait_finish, SIMPLE_CALLBACK *callback, void *auxdata)
572-
{
573-
STARTUPINFO si;
574-
ZeroMemory (&si, sizeof(si));
575-
si.cb = sizeof(si);
576-
si.dwFlags = (callback? STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES : 0); // `callback` used here as a flag distinguishing calls from C_External.cpp
577-
si.wShowWindow = SW_HIDE; // For GUI executables - hide console window of called external decompressor; for console executables this flag is ignored anyway
578-
si.hStdInput = (HANDLE) _get_osfhandle(0);
579-
si.hStdOutput = (HANDLE) _get_osfhandle(1);
580-
si.hStdError = (HANDLE) _get_osfhandle(2);
581-
PROCESS_INFORMATION pi;
582-
ZeroMemory (&pi, sizeof(pi));
583-
DWORD ExitCode = 0; // êîä âîçâðàòà âûçûâàåìîé ïðîãðàììû
584-
585-
BOOL process_created = CreateProcessW (NULL, command, NULL, NULL, TRUE, 0, NULL, curdir, &si, &pi);
586-
if (callback)
587-
callback(auxdata); // Action that should be executed BEFORE waiting for process finish
588-
if (process_created)
589-
{
590-
if (wait_finish)
591-
WaitForSingleObject (pi.hProcess, INFINITE),
592-
GetExitCodeProcess (pi.hProcess, &ExitCode);
593-
CloseHandle (pi.hProcess);
594-
CloseHandle (pi.hThread);
595-
}
596-
return ExitCode;
597-
}
598-
599-
// Execute file `filename` in the directory `curdir` optionally waiting until it finished
600-
void RunFile (CFILENAME filename, CFILENAME curdir, int wait_finish)
601-
{
602-
SHELLEXECUTEINFO sei;
603-
ZeroMemory(&sei, sizeof(SHELLEXECUTEINFO));
604-
sei.cbSize = sizeof(SHELLEXECUTEINFO);
605-
sei.fMask = (wait_finish? SEE_MASK_NOCLOSEPROCESS : 0);
606-
sei.hwnd = GetActiveWindow();
607-
sei.lpFile = filename;
608-
sei.lpDirectory = curdir;
609-
sei.nShow = SW_SHOW;
610-
611-
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
612-
DWORD rc = ShellExecuteEx(&sei);
613-
if (rc && wait_finish)
614-
WaitForSingleObject(sei.hProcess, INFINITE),
615-
CloseHandle (sei.hProcess);
616-
}
617-
618-
// Âåðñèÿ Windows
619-
#define CheckWinVersion(ver) (GetWinVersion() >= ver)
620-
621-
#define WIN_VERSION_VISTA 0x600
622-
int GetWinVersion()
623-
{
624-
static int result = -1;
625-
if (result < 0)
626-
{
627-
OSVERSIONINFOEX osvi;
628-
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
629-
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
630-
if( !GetVersionEx ((OSVERSIONINFO *) &osvi) )
631-
result = 0;
632-
else result = (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId? osvi.dwMajorVersion*0x100+osvi.dwMinorVersion : 0);
633-
}
634-
return result;
635-
}
636-
637-
638-
#ifndef THREAD_MODE_BACKGROUND_BEGIN
639-
#define THREAD_MODE_BACKGROUND_BEGIN 0x00010000
640-
#define THREAD_MODE_BACKGROUND_END 0x00020000
641-
#endif
642-
643-
// Óñòàíîâèòü ïðèîðèòåò òðåäà êàêîé ïîëàãàåòñÿ äëÿ òðåäîâ ñæàòèÿ (ðàñïàêîâêè, øèôðîâàíèÿ...).
644-
// Èñïîëüçóåòñÿ äëÿ òðåäîâ, êîòîðûå âûïîëíÿþò òîëüêî ñæàòèå
645-
void SetCompressionThreadPriority (void)
646-
{
647-
SetThreadPriority (GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
648-
}
649-
650-
// Âðåìåííî óñòàíîâèòü ïðèîðèòåò òðåäà êàêîé ïîëàãàåòñÿ äëÿ òðåäîâ ñæàòèÿ (ðàñïàêîâêè, øèôðîâàíèÿ...)
651-
// è âîçâðàòèòü ñòàðîå çíà÷åíèå óðîâíÿ ïðèîðèòåòà. Èñïîëüçóåòñÿ äëÿ òðåäîâ, âðåìåííî âûïîëíÿþùèõ çàäà÷è ñæàòèÿ
652-
int BeginCompressionThreadPriority (void)
653-
{
654-
DWORD dwThreadPriority = GetThreadPriority(GetCurrentThread());
655-
SetCompressionThreadPriority();
656-
return dwThreadPriority;
657-
}
658-
659-
// Âîññòàíîâèòü ïðèîðèòåò òðåäà òàêèì, êàê ìû åãî çàïîìíèëè
660-
void EndCompressionThreadPriority (int old_priority)
661-
{
662-
SetThreadPriority (GetCurrentThread(), old_priority);
663-
}
664-
665-
666-
#else // For Unix: ========================================================================================================================
667-
668-
#include <unistd.h>
669-
#include <sys/resource.h>
670-
#include <sys/sysctl.h>
671-
672-
uint64 GetPhysicalMemory (void)
673-
{
674-
return uint64(sysconf(_SC_PHYS_PAGES)) * sysconf(_SC_PAGE_SIZE);
675-
}
676-
677-
uint64 GetAvailablePhysicalMemory (void)
678-
{
679-
#if defined(_SC_AVPHYS_PAGES)
680-
return uint64(sysconf(_SC_AVPHYS_PAGES)) * sysconf(_SC_PAGE_SIZE);
681-
#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__minix)
682-
unsigned long page_count = 0;
683-
size_t page_count_size = sizeof(page_count);
684-
sysctlbyname("hw.availpages", &page_count, &page_count, NULL, 0);
685-
return page_count * sysconf(_SC_PAGE_SIZE);
686-
#else
687-
# error "There's no support for memory stats on your system."
688-
#endif
689-
}
690-
691-
int GetProcessorsCount (void)
692-
{
693-
return sysconf(_SC_NPROCESSORS_ONLN);
694-
}
695-
696-
void SetFileDateTime(CFILENAME Filename, time_t t)
697-
{
698-
if (t<0) t=INT_MAX; // Èíà÷å ïîëó÷àåì âûëåò :(
699-
struct stat st;
700-
stat (Filename, &st);
701-
struct utimbuf times;
702-
times.actime = st.st_atime;
703-
times.modtime = t;
704-
utime (Filename, &times);
705-
}
706-
707-
// Execute `command` in the directory `curdir` optionally waiting until it finished
708-
int RunCommand (CFILENAME command, CFILENAME curdir, int wait_finish, SIMPLE_CALLBACK *callback, void *auxdata)
709-
{
710-
char *olddir = (char*) malloc_msg (),
711-
*cmd = (char*) malloc_msg (strlen(command)+10);
712-
getcwd(olddir, MY_FILENAME_MAX);
713-
714-
chdir(curdir);
715-
const char *prefix = (memcmp(command,"/" ,1) == 0)? "" :
716-
(memcmp(command,"\"/",2) == 0)? "" :
717-
(memcmp(command,"\"" ,1) == 0)? (command++, "\"./") :
718-
"./";
719-
sprintf(cmd, "%s%s%s", prefix, command, wait_finish? "" : " &");
720-
int ExitCode = system(cmd);
721-
722-
if (callback)
723-
callback(auxdata); // Action that should be executed BEFORE waiting for process finish
724-
725-
chdir(olddir);
726-
free(cmd);
727-
free(olddir);
728-
return ExitCode;
729-
}
730-
731-
// Execute file `filename` in the directory `curdir` optionally waiting until it finished
732-
void RunFile (CFILENAME filename, CFILENAME curdir, int wait_finish)
733-
{
734-
RunCommand (filename, curdir, wait_finish, NULL, NULL);
735-
}
736-
737-
// Óñòàíîâèòü ïðèîðèòåò òðåäà êàêîé ïîëàãàåòñÿ äëÿ òðåäîâ ñæàòèÿ (ðàñïàêîâêè, øèôðîâàíèÿ...).
738-
// Èñïîëüçóåòñÿ äëÿ òðåäîâ, êîòîðûå âûïîëíÿþò òîëüêî ñæàòèå
739-
void SetCompressionThreadPriority (void)
740-
{
741-
int old = getpriority(PRIO_PROCESS, 0);
742-
setpriority(PRIO_PROCESS, 0, old+1);
743-
}
744-
745-
// Âðåìåííî óñòàíîâèòü ïðèîðèòåò òðåäà êàêîé ïîëàãàåòñÿ äëÿ òðåäîâ ñæàòèÿ (ðàñïàêîâêè, øèôðîâàíèÿ...)
746-
int BeginCompressionThreadPriority (void)
747-
{
748-
int old = getpriority(PRIO_PROCESS, 0);
749-
//setpriority(PRIO_PROCESS, 0, old+1); çàêîììåíòèðîâàíî èç-çà ïðîáëåì ñ âîññòàíîâëåíèåì ñòàðîãî ïðèîðèòåòà :(
750-
return old;
751-
}
752-
753-
// Âîññòàíîâèòü ïðèîðèòåò òðåäà òàêèì, êàê ìû åãî çàïîìíèëè
754-
void EndCompressionThreadPriority (int old_priority)
755-
{
756-
//setpriority(PRIO_PROCESS, 0, old_priority);
757-
}
758-
759-
#endif // Windows/Unix
760465

761466

762467
// Ñîçäàòü êàòàëîãè íà ïóòè ê name

0 commit comments

Comments
 (0)