]> andersk Git - moira.git/commitdiff
Parse argv[0] correctly under Win32, since our behavior depends on how
authorzacheiss <zacheiss>
Thu, 26 Apr 2001 21:36:44 +0000 (21:36 +0000)
committerzacheiss <zacheiss>
Thu, 26 Apr 2001 21:36:44 +0000 (21:36 +0000)
we're invoked.

clients/moira/main.c

index 78d08a4faf717c15cd46a3973beb54131e4ba246..5bceacbe2f56036b13c6a5d6e0adc74fdcfbf69f 100644 (file)
@@ -33,6 +33,7 @@ static void Usage(void);
 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 @@ int main(int argc, char **argv)
   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();
@@ -241,3 +238,28 @@ static void SetHandlers(void)
       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
This page took 0.50679 seconds and 5 git commands to generate.