From 4bb95cb0d95138ac768c80b30728bef8f691f1e8 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 22 Nov 2024 15:46:56 -0500 Subject: Add basic unindent function --- src/lib/core/str.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/lib/core') diff --git a/src/lib/core/str.c b/src/lib/core/str.c index a7dbab1..45fb60a 100644 --- a/src/lib/core/str.c +++ b/src/lib/core/str.c @@ -649,3 +649,28 @@ char *to_short_version(const char *s) { strchrdel(result, "."); return result; } + +void unindent(char *s) { + char *pos = NULL; + size_t leading_spaces; + + // Set position to beginning of string + pos = s; + + while (pos != NULL) { + const size_t len = strlen(s); + for (leading_spaces = 0; isspace(pos[leading_spaces]); leading_spaces++) {} + + // For each new line strip an indent + if (leading_spaces >= 4 && len >= 4) { + leading_spaces = 4; // remove first level of indentation + memmove(pos, pos + leading_spaces, len - leading_spaces); + pos[len - leading_spaces] = '\0'; + } + + pos = strchr(pos, '\n'); + if (pos && strlen(pos)) { + pos++; + } + } +} \ No newline at end of file -- cgit From 8e277c4c1199b9170eca014e62970a7f2be17e8a Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 22 Nov 2024 16:23:45 -0500 Subject: Unindent script --- src/lib/core/delivery_test.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/lib/core') diff --git a/src/lib/core/delivery_test.c b/src/lib/core/delivery_test.c index 0bcf04d..8dbcd78 100644 --- a/src/lib/core/delivery_test.c +++ b/src/lib/core/delivery_test.c @@ -118,6 +118,9 @@ void delivery_tests_run(struct Delivery *ctx) { SYSERROR("An error occurred while rendering the following:\n%s", cmd); exit(1); } + // Move indents + // HEREDOCs will not work otherwise + unindent(cmd); if (test->disable) { msg(STASIS_MSG_L2, "Script execution disabled by configuration\n", test->name); -- cgit From daa02148a63ee9e5c43373ce697dbada454440f6 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 22 Nov 2024 16:26:40 -0500 Subject: Unindent script_setup --- src/lib/core/delivery_test.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/lib/core') diff --git a/src/lib/core/delivery_test.c b/src/lib/core/delivery_test.c index 8dbcd78..e80e0ec 100644 --- a/src/lib/core/delivery_test.c +++ b/src/lib/core/delivery_test.c @@ -192,6 +192,7 @@ void delivery_tests_run(struct Delivery *ctx) { SYSERROR("An error occurred while rendering the following:\n%s", cmd); exit(1); } + unindent(cmd); struct MultiProcessingTask *task = NULL; char *runner_cmd = NULL; -- cgit