summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Fankhauser hiddenalpha.ch2024-01-17 11:39:23 +0100
committerAndreas Fankhauser hiddenalpha.ch2024-01-17 11:39:23 +0100
commita54b05e20f4cdd9515a4b34108fc39a8ca090767 (patch)
treef9330b0ad23ccf8c1fa9e43170f24eb1c07aa481 /src
parentb94f8a85487db2fbdc694fb38f8c025ba39e430c (diff)
downloadUnspecifiedGarbage-a54b05e20f4cdd9515a4b34108fc39a8ca090767.zip
UnspecifiedGarbage-a54b05e20f4cdd9515a4b34108fc39a8ca090767.tar.gz
mvn-launchr.c: Cleanup
Diffstat (limited to 'src')
-rw-r--r--src/main/c/postshit/launch/mvn/launchr.c5
-rw-r--r--src/main/c/postshit/launch/mvn/mvn-launch.c113
-rw-r--r--src/main/c/postshit/launch/mvn/windoof.h79
3 files changed, 46 insertions, 151 deletions
diff --git a/src/main/c/postshit/launch/mvn/launchr.c b/src/main/c/postshit/launch/mvn/launchr.c
deleted file mode 100644
index 0c7db07..0000000
--- a/src/main/c/postshit/launch/mvn/launchr.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-
- TODO move shared launcher stuff here.
-
-*/
diff --git a/src/main/c/postshit/launch/mvn/mvn-launch.c b/src/main/c/postshit/launch/mvn/mvn-launch.c
index 7c7796d..5187b10 100644
--- a/src/main/c/postshit/launch/mvn/mvn-launch.c
+++ b/src/main/c/postshit/launch/mvn/mvn-launch.c
@@ -13,7 +13,6 @@
*/
#include <windows.h>
-
#include <assert.h>
#include <stdio.h>
@@ -21,41 +20,40 @@
#define LOGDBG(...) fprintf(stderr, __VA_ARGS__)
-static int appendRaw( char*dst, int*dst_off, int dst_cap, const char*src, int src_len ){
- #define dst_off (*dst_off)
+static int appendRaw( char*dst, int*dst_len, int dst_cap, const char*src, int src_len ){
+ #define dst_len (*dst_len)
register int err;
- if( dst_cap < dst_off + src_len ){
- LOGDBG("ENOBUFS: %s Cannot add: %.*s\n", strrchr(__FILE__,'/')+1, src_len, src);
+ if( dst_cap < dst_len + src_len ){
+ LOGERR("ENOBUFS: %s Cannot add: %.*s\n", strrchr(__FILE__,'/')+1, src_len, src);
err = -ENOBUFS; goto endFn;
}
- memcpy(dst + dst_off, src, src_len);
- dst_off += src_len;
+ memcpy(dst + dst_len, src, src_len);
+ dst_len += src_len;
err = 0;
endFn:
return err;
- #undef dst_off
+ #undef dst_len
}
-static int appendQuotEscaped( char*dst, int*dst_off, int dst_cap, const char*src, int src_len ){
- #define dst_off (*dst_off)
+static int appendQuotEscaped( char*dst, int*dst_len, int dst_cap, const char*src, int src_len ){
+ #define dst_len (*dst_len)
register int err;
- if( dst_cap < dst_off + src_len ){
+ if( dst_cap < dst_len + src_len ){
LOGDBG("ENOBUFS: %s: cannot append \"%.*s\"\n", strrchr(__FILE__,'/')+1, src_len, src);
err = -ENOBUFS; goto endFn;
}
- for(; src[0] != '\0' ; ++src ){
- if( src[0] == '"' ){
- LOGDBG("ENOTSUP: %s not impl to handle quotes inside args (TODO_a9o8uz4rga98orui)\n",
- strrchr(__FILE__,'/'));
+ for( err = 0 ; err < src_len ; ++err ){
+ if( src[err] == '"' ){
+ LOGERR("ENOTSUP: Quotes in args not impl. %s:%d\n", __FILE__, __LINE__);
err = -ENOTSUP; goto endFn;
}
- dst[dst_off++] = src[0];
+ dst[dst_len++] = src[err];
}
err = 0;
endFn:
return err;
- #undef dst_off
+ #undef dst_len
}
@@ -63,18 +61,17 @@ static int appendArg( char*cmdline, int*cmdline_len, int cmdline_cap, const char
#define cmdline_len (*cmdline_len)
register int err;
if( cmdline_cap < cmdline_len + newArg_len + sizeof" \"\"" ){
- LOGDBG("ENOBUFS: %s cmdline too long\n", strrchr(__FILE__,'/')+1);
+ LOGERR("ENOBUFS: Cmdline too long. %s:%d\n", strrchr(__FILE__,'/')+1, __LINE__);
err = -ENOBUFS; goto endFn;
}
cmdline[cmdline_len++] = ' ';
cmdline[cmdline_len++] = '"';
- for(; newArg[0] != '\0' ; ++newArg ){
- if( newArg[0] == '"' ){
- LOGDBG("ENOTSUP: %s not impl to handle quotes inside args (TODO_H0cCAJtBAg)\n",
- strrchr(__FILE__,'/'));
+ for( err = 0 ; err < newArg_len ; ++err ){
+ if( newArg[err] == '"' ){
+ LOGERR("ENOTSUP: Quotes in args not impl. %s:%d\n", strrchr(__FILE__,'/')+1, __LINE__);
err = -ENOTSUP; goto endFn;
}
- cmdline[cmdline_len++] = newArg[0];
+ cmdline[cmdline_len++] = newArg[err];
}
cmdline[cmdline_len++] = '"';
err = 0;
@@ -84,28 +81,6 @@ endFn:
}
-static int appendFromEnvironEvenIfEmpty( char*cmdline, int*cmdline_len, int cmdline_cap, const char*envKey ){
- #define cmdline_len (*cmdline_len)
- assert(envKey != NULL);
- register int err;
- char envval[0x7FFF];
- const int envval_cap = sizeof envval;
- err = GetEnvironmentVariable(envKey, envval, envval_cap-1);
- if( err >= envval_cap-1 ){
- LOGDBG("ENOBUFS: %s: environ.%s too long\n", strrchr(__FILE__,'/'), envKey);
- err = -ENOBUFS; goto endFn;
- }
- err = appendArg(cmdline, &cmdline_len, cmdline_cap, envval, err);
- if( err < 0 ) goto endFn;
- cmdline_len += err;
- err = 0;
-endFn:
- return err;
- #undef cmdline_len
-
-}
-
-
static int appendFromEnvironIfNotEmpty( char*cmdline, int*cmdline_len, int cmdline_cap, const char*envKey ){
#define cmdline_len (*cmdline_len)
assert(envKey != NULL);
@@ -114,12 +89,12 @@ static int appendFromEnvironIfNotEmpty( char*cmdline, int*cmdline_len, int cmdli
const int envval_cap = sizeof envval;
err = GetEnvironmentVariable(envKey, envval, envval_cap-1);
if( err >= envval_cap-1 ){
- LOGDBG("ENOBUFS: %s: environ.%s too long\n", strrchr(__FILE__,'/'), envKey);
+ LOGERR("ENOBUFS: environ.%s too long. %s:%d\n", envKey, strrchr(__FILE__,'/')+1, __LINE__);
err = -ENOBUFS; goto endFn;
}
if( err > 0 ){
err = appendArg(cmdline, &cmdline_len, cmdline_cap, envval, err);
- if( err < 0 ) goto endFn;
+ if( err < 0 ){ LOGDBG("[TRACE] at %s:%d\n", __FILE__, __LINE__); goto endFn; }
cmdline_len += err;
}
err = 0;
@@ -131,14 +106,15 @@ endFn:
int main( int argc, char**argv ){
register int err;
- char envval[0x7FFF];
- const int envval_cap = sizeof envval;
char username[16];
const int username_cap = sizeof username;
err = GetEnvironmentVariable("USERNAME", username, username_cap);
- if( err == 0 ){ LOGERR("ERROR: GetEnvironmentVariable(USERNAME) -> 0x%lX\n", GetLastError()); err = -1; goto endFn; }
- if( err > username_cap ){ LOGERR("ENOBUFS: environ.USERNAME too long\n"); err = -1; goto endFn; }
+ if( err == 0 ){ LOGERR("ERROR: GetEnvironmentVariable(USERNAME) -> 0x%lX\n", GetLastError());
+ err = -1; goto endFn; }
+ if( err > username_cap ){
+ LOGERR("ENOBUFS: environ.USERNAME too long. %s:%d\n", strrchr(__FILE__,'/')+1, __LINE__);
+ err = -1; goto endFn; }
assert(err > 0);
const int username_len = err;
@@ -155,20 +131,26 @@ int main( int argc, char**argv ){
|| appendFromEnvironIfNotEmpty(cmdline, &cmdline_len, cmdline_cap, "MAVEN_OPTS") < 0
|| appendFromEnvironIfNotEmpty(cmdline, &cmdline_len, cmdline_cap, "MAVEN_DEBUG_OPTS") < 0
|| appendRaw(cmdline, &cmdline_len, cmdline_cap, " -classpath", 11) < 0
- || appendRaw(cmdline, &cmdline_len, cmdline_cap, " C:/Users/fankhauseand/.opt/maven/boot/plexus-classworlds-2.5.2.jar", 67) < 0
- || appendRaw(cmdline, &cmdline_len, cmdline_cap, " -Dclassworlds.conf=C:/Users/fankhauseand/.opt/maven/bin/m2.conf", 64) < 0
- || appendRaw(cmdline, &cmdline_len, cmdline_cap, " -Dmaven.home=C:/Users/fankhauseand/.opt/maven", 46) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, " C:/Users/", 9) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, username, username_len) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, "/.opt/maven/boot/plexus-classworlds-2.5.2.jar", 45) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, " -Dclassworlds.conf=C:/Users/", 29) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, username, username_len) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, "/.opt/maven/bin/m2.conf", 23) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, " -Dmaven.home=C:/Users/", 23) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, username, username_len) < 0
+ || appendRaw(cmdline, &cmdline_len, cmdline_cap, "/.opt/maven", 11) < 0
;
- if( err ){ LOGDBG("[TRACE] %s:%d\n", __FILE__, __LINE__); goto endFn; }
+ if( err ){ LOGDBG("[TRACE] at %s:%d\n", __FILE__, __LINE__); goto endFn; }
char tmpBuf[0x7FFF];
const int tmpBuf_cap = sizeof tmpBuf;
err = GetCurrentDirectory(tmpBuf_cap, tmpBuf);
if( err == 0 ){
- LOGDBG("%s: GetCurrentDirectory() -> 0x%lX\n", strrchr(__FILE__,'/')+1, GetLastError());
+ LOGERR("ERROR: GetCurrentDirectory() -> 0x%lX. %s:%d\n", GetLastError(), strrchr(__FILE__,'/')+1, __LINE__);
err = -1; goto endFn; }
if( err >= tmpBuf_cap ){
- LOGDBG("ENOBUFS: %s: working dir too long\n", strrchr(__FILE__,'/')+1);
+ LOGERR("ENOBUFS: Working dir too long. %s:%d\n", strrchr(__FILE__,'/')+1, __LINE__);
err = -ENOBUFS; goto endFn; }
assert(err > 0);
const int tmpBuf_len = err;
@@ -185,23 +167,20 @@ int main( int argc, char**argv ){
for( int iA=1 ; iA < argc ; ++iA ){
char *arg = argv[iA];
err = appendArg(cmdline, &cmdline_len, cmdline_cap, arg, strlen(arg));
- if( err < 0 ){ LOGDBG("[TRACE] %s:%d\n", __FILE__, __LINE__); goto endFn; }
+ if( err < 0 ){ LOGDBG("[TRACE] at %s:%d\n", __FILE__, __LINE__); goto endFn; }
}
- //LOGDBG("[DEBUG] cmdline is:\n%.*s\n", cmdline_len, cmdline);
-
- STARTUPINFOA lpsui = { .lpDesktop = NULL, .lpTitle = NULL, .dwFlags = 0, };
- lpsui.cb = sizeof(lpsui);
+ STARTUPINFOA startInfo = { .lpDesktop = NULL, .lpTitle = NULL, .dwFlags = 0, };
+ startInfo.cb = sizeof(startInfo);
PROCESS_INFORMATION proc;
- /*TODO try BELOW_NORMAL_PRIORITY_CLASS */
- err = CreateProcessA(NULL, cmdline, NULL, NULL, !0, 0, NULL, NULL, &lpsui, &proc);
+ err = CreateProcessA(NULL, cmdline, NULL, NULL, !0, 0, NULL, NULL, &startInfo, &proc);
if( err == 0 ){
- LOGDBG("[DEBUG] CMDLINE: %.*s\n", cmdline_len, cmdline);
- LOGERR("%s, CreateProcess(): 0x%0lX\n", strrchr(__FILE__,'/')+1, GetLastError());
+ LOGERR("[DEBUG] CMDLINE: %.*s\n", cmdline_len, cmdline);
+ LOGERR("ERROR: CreateProcess(): 0x%0lX. %s:%d\n", GetLastError(), strrchr(__FILE__,'/')+1, __LINE__);
err = -1; goto endFn;
}
err = WaitForSingleObject(proc.hProcess, INFINITE);
- if( err != WAIT_OBJECT_0 ){ LOGERR("ERROR: %s: WaitForSingleObject() -> %d %s:%d\n", strrchr(__FILE__,'/')+1, err, __FILE__, __LINE__);
+ if( err != WAIT_OBJECT_0 ){ LOGERR("ERROR: WaitForSingleObject() -> %d. %s:%d\n", err, strrchr(__FILE__,'/')+1, __LINE__);
err = -1; goto endFn; }
err = 0;
endFn:
diff --git a/src/main/c/postshit/launch/mvn/windoof.h b/src/main/c/postshit/launch/mvn/windoof.h
deleted file mode 100644
index b5b93fa..0000000
--- a/src/main/c/postshit/launch/mvn/windoof.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef INCGUARD_8WICAEpuAgDVeQIAui8CAEFpAgBSJQIA
-#define INCGUARD_8WICAEpuAgDVeQIAui8CAEFpAgBSJQIA
-
-
-#define assert(expr) do{if(!(expr)){fprintf(stderr,"assert(%s) %s:%d\n", #expr, __FILE__, __LINE__);}}while(0)
-
-#define NULL ((void*)0)
-
-#define INT_MAX ((int)0x7FFFFFFF)
-
-#define ENOBUFS 119
-#define ENOTSUP 129
-
-#define CREATE_NO_WINDOW 0x08000000
-
-#define BELOW_NORMAL_PRIORITY_CLASS 0x00004000
-
-
-typedef struct {
- int cb;
- char* lpReserved;
- char* lpDesktop;
- char* lpTitle;
- int dwX;
- int dwY;
- int dwXSize;
- int dwYSize;
- int dwXCountChars;
- int dwYCountChars;
- int dwFillAttribute;
- int dwFlags;
- short wShowWindow;
- short cbReserved2;
- void* lpReserved2;
- void* hStdInput;
- void* hStdOutput;
- void* hStdError;
-} STARTUPINFOA;
-
-
-typedef struct {
- void* hProcess;
- void* hThread;
- int dwProcessId;
- int dwThreadId;
-} PROCESS_INFORMATION;
-
-
-typedef struct {
- int nLength;
- void* lpSecurityDescriptor;
- int bInheritHandle;
-} SECURITY_ATTRIBUTES;
-
-
-long unsigned GetLastError(void);
-
-int fprintf(struct _iobuf*, const char *, ...);
-
-long long unsigned strlen(const char*);
-
-char *strrchr(const char *s, int c);
-
-int CreateProcessA(
- const char* lpApplicationName,
- char* lpCommandLine,
- SECURITY_ATTRIBUTES* lpProcessAttributes,
- SECURITY_ATTRIBUTES* lpThreadAttributes,
- int bInheritHandles,
- int dwCreationFlags,
- void* lpEnvironment,
- const char* lpCurrentDirectory,
- STARTUPINFOA* lpStartupInfo,
- PROCESS_INFORMATION* lpProcessInformation
-);
-
-
-
-#endif /* INCGUARD_8WICAEpuAgDVeQIAui8CAEFpAgBSJQIA */