Add GEBS_SHIFT() macro, pass commandline arguments to self after rebuild, add build dep on gebs.h
This commit is contained in:
17
gebs.h
17
gebs.h
@ -25,6 +25,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#if GEBS_PLATFORM == GEBS_PLATFORM_POSIX
|
#if GEBS_PLATFORM == GEBS_PLATFORM_POSIX
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
@ -37,6 +38,16 @@
|
|||||||
|
|
||||||
#define discard __attribute__((unused))
|
#define discard __attribute__((unused))
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Parsing commandline arguments
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define GEBS_SHIFT_CHECK(argc) \
|
||||||
|
(*(argc) <= 0 ? (GEBS_LOGE("Expected more arguments\n"), exit(EXIT_FAILURE)) : (0))
|
||||||
|
|
||||||
|
#define GEBS_SHIFT(argc, argv) \
|
||||||
|
(GEBS_SHIFT_CHECK((argc)), --(*(argc)), *(*(argv))++)
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Defer macro
|
// Defer macro
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -553,7 +564,7 @@ void gebs_rebuild_self1_alloc(Gebs_Allocator *alloc, int argc, char ** argv,
|
|||||||
int cmd_argc, char **cmd_argv, char *source)
|
int cmd_argc, char **cmd_argv, char *source)
|
||||||
{
|
{
|
||||||
const char *binary_path = argv[0];
|
const char *binary_path = argv[0];
|
||||||
if (!gebs_needs_rebuild(binary_path, source)) {
|
if (!gebs_needs_rebuild_many(binary_path, source, __FILE__)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -576,6 +587,10 @@ void gebs_rebuild_self1_alloc(Gebs_Allocator *alloc, int argc, char ** argv,
|
|||||||
|
|
||||||
cmd.count = 0;
|
cmd.count = 0;
|
||||||
gebs_cmd_append_alloc(alloc, &cmd, (char *)binary_path);
|
gebs_cmd_append_alloc(alloc, &cmd, (char *)binary_path);
|
||||||
|
for (size_t i = 1; i < argc; i++) {
|
||||||
|
gebs_cmd_append_alloc(alloc, &cmd, argv[i]);
|
||||||
|
}
|
||||||
|
|
||||||
code = gebs_cmd_run_alloc(alloc, &cmd);
|
code = gebs_cmd_run_alloc(alloc, &cmd);
|
||||||
if (code != EXIT_SUCCESS) {
|
if (code != EXIT_SUCCESS) {
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
Reference in New Issue
Block a user