Fixed non-compilation caused by using C++ constructs in C

This commit is contained in:
2025-03-06 18:18:24 +11:00
parent 500fe17076
commit 5c5abfd36c
3 changed files with 29 additions and 28 deletions

View File

@@ -6,6 +6,8 @@
uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, const char** argv)
{
uniproc_process p;
// Create pipes
HANDLE child_in;
HANDLE in;
@@ -22,14 +24,14 @@ uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, c
// Actually create the pipes
if (!CreatePipe(&out, &child_out, &pipe_attribs, 0))
{
uniproc_nullify_processes(p, 1);
uniproc_nullify_processes(&p, 1);
return p;
}
if (!CreatePipe(&err, &child_err, &pipe_attribs, 0))
{
CloseHandle(child_out);
CloseHandle(out);
uniproc_nullify_processes(p, 1);
uniproc_nullify_processes(&p, 1);
return p;
}
if (!CreatePipe(&child_in, &in, &pipe_attribs, 0))
@@ -38,7 +40,7 @@ uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, c
CloseHandle(out);
CloseHandle(child_err);
CloseHandle(err);
uniproc_nullify_processes(p, 1);
uniproc_nullify_processes(&p, 1);
return p;
}
@@ -51,7 +53,7 @@ uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, c
CloseHandle(out);
CloseHandle(child_err);
CloseHandle(err);
uniproc_nullify_processes(p, 1);
uniproc_nullify_processes(&p, 1);
return p;
}
if (!SetHandleInformation(err, HANDLE_FLAG_INHERIT, 0))
@@ -62,7 +64,7 @@ uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, c
CloseHandle(out);
CloseHandle(child_err);
CloseHandle(err);
uniproc_nullify_processes(p, 1);
uniproc_nullify_processes(&p, 1);
return p;
}
if (!SetHandleInformation(in, HANDLE_FLAG_INHERIT, 0))
@@ -73,12 +75,10 @@ uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, c
CloseHandle(out);
CloseHandle(child_err);
CloseHandle(err);
uniproc_nullify_processes(p, 1);
uniproc_nullify_processes(&p, 1);
return p;
}
// Create child process
uniproc_process p;
// Create p_cmd by appending all argv's to cmd
size_t x = strlen(cmd);
@@ -131,7 +131,7 @@ uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, c
CloseHandle(out);
CloseHandle(child_err);
CloseHandle(err);
uniproc_nullify_processes(p, 1);
uniproc_nullify_processes(&p, 1);
return p;
}
@@ -148,7 +148,7 @@ uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, c
return p;
}
void uniproc_await_processes(uniproc_process* p, int* return_codes, size_t num_processes)
void uniproc_await_processes(const uniproc_process* p, int* return_codes, const size_t num_processes)
{
size_t num_valid_handles = 0;
HANDLE* h = (HANDLE*)malloc(num_processes*sizeof(HANDLE));
@@ -181,7 +181,7 @@ void uniproc_close_process(uniproc_process* p)
uniproc_nullify_processes(p, 1);
}
bool uniproc_are_processes_finished(const uniproc_process* p, const size_t num_processes)
int uniproc_are_processes_finished(const uniproc_process* p, const size_t num_processes)
{
HANDLE* h = (HANDLE*)malloc(num_processes*sizeof(HANDLE));
size_t num_valid_handles = 0;
@@ -191,7 +191,7 @@ bool uniproc_are_processes_finished(const uniproc_process* p, const size_t num_p
h[i] = (HANDLE)p[i]._proc_hdl;
num_valid_handles++;
}
DWORD ret = WaitForMultipleObjects(num_valid_handles, h, true, 0);
DWORD ret = WaitForMultipleObjects(num_valid_handles, h, 1, 0);
free(h);
return ret >= WAIT_OBJECT_0 && ret < WAIT_OBJECT_0 + num_valid_handles;
}
@@ -199,7 +199,7 @@ bool uniproc_are_processes_finished(const uniproc_process* p, const size_t num_p
void uniproc_nullify_processes(uniproc_process* p, const size_t num_processes)
{ memset(p, 0, num_processes * sizeof(uniproc_process)); }
void uniproc_is_process_null(const uniproc_process* p)
int uniproc_is_process_null(const uniproc_process* p)
{ return p->_proc_hdl == NULL; }
void uniproc_await_any_processes(const uniproc_process* p, const size_t num_processes)
@@ -212,7 +212,7 @@ void uniproc_await_any_processes(const uniproc_process* p, const size_t num_proc
h[i] = (HANDLE)p[i]._proc_hdl;
num_valid_handles++;
}
WaitForMultipleObjects(num_valid_handles, h, false, INFINITE);
WaitForMultipleObjects(num_valid_handles, h, 0, INFINITE);
free(h);
}