[1777] in Moira

home help back first fref pref prev next nref lref last post

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


home help back first fref pref prev next nref lref last post