[1777] in Moira
Patch for moira client to parse argv[0] properly under Win32
daemon@ATHENA.MIT.EDU (Danilo Almeida)
Thu Apr 26 17:17:10 2001
From: "Danilo Almeida" <dalmeida@MIT.EDU>
To: <moiradev@mit.edu>
Date: Thu, 26 Apr 2001 17:17:15 -0400
Message-ID: <DIEILAKKMPNAOBPOMHLBOENJCCAA.dalmeida@mit.edu>
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
In-Reply-To: <DIEILAKKMPNAOBPOMHLBIENJCCAA.dalmeida@mit.edu>
This patch to the moira client fixes an issue with Win32 when you invoke
listmaint with backslahes or .exe or not all lowercase.
diff -u -w -r1.40 main.c
--- main.c 2000/06/09 19:35:57 1.40
+++ main.c 2001/04/26 21:11:27
@@ -33,6 +33,7 @@
static void Signal_Handler(int sig);
static void CatchInterrupt(int sig);
static void SetHandlers(void);
+static char* get_program_name(char *arg);
char *whoami; /* used by menu.c ugh!!! */
char *moira_server;
@@ -56,11 +57,7 @@
Menu *menu;
char **arg;
- if (!(program_name = strrchr(argv[0], '/')))
- program_name = argv[0];
- else
- program_name++;
- program_name = strdup(program_name);
+ program_name = get_program_name(argv[0]);
whoami = strdup(program_name); /* used by menu.c, ugh !!! */
user = mrcl_krb_user();
@@ -239,5 +236,30 @@
else
#endif
signal(SIGINT, CatchInterrupt);
+}
+#endif
+
+#ifdef _WIN32
+static char* get_program_name(char *arg)
+{
+ char* prog;
+ char* ext;
+ prog = max(max(strrchr(arg, '/'), strrchr(arg, '\\')) + 1, arg);
+ prog = _strlwr(prog);
+ prog = strdup(prog);
+ ext = strrchr(prog, '.');
+ if (ext && !strcmp(ext, ".exe"))
+ *ext = 0;
+ return prog;
+}
+#else
+static char* get_program_name(char *arg)
+{
+ char* prog;
+ if (!(prog = strrchr(arg, '/')))
+ prog = arg;
+ else
+ prog++;
+ return strdup(prog);
}
#endif