You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by dl...@apache.org on 2007/08/12 22:15:32 UTC

svn commit: r565131 - /harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/jvmargv.c

Author: dlydick
Date: Sun Aug 12 13:15:32 2007
New Revision: 565131

URL: http://svn.apache.org/viewvc?view=rev&rev=565131
Log:
Renamed 'argv.c' to 'jvmargv.c'

Added (boolean *) paramter to jvmargv_init() to declare that the
JVM is completely initialized.

Broke out argv_licensemsg(), argv_versionmsg() and argv_copyrightmsg()
into jvmutil_xxx() equivalents for anticipating construction of
utilities.

Simplify default CLASSPATH and BOOTCLASSPATH calculations.

Added:
    harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/jvmargv.c
      - copied, changed from r490327, harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/argv.c

Copied: harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/jvmargv.c (from r490327, harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/argv.c)
URL: http://svn.apache.org/viewvc/harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/jvmargv.c?view=diff&rev=565131&p1=harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/argv.c&r1=490327&p2=harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/jvmargv.c&r2=565131
==============================================================================
--- harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/argv.c (original)
+++ harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/jvmargv.c Sun Aug 12 13:15:32 2007
@@ -1,5 +1,5 @@
 /*!
- * @file argv.c
+ * @file jvmargv.c
  *
  * @brief Process command line arguments passed in to JVM program.
  *
@@ -22,7 +22,12 @@
  * to always be unchanged.
  *
  * The tmparea_init() function must have been called before these
- * functions so the internal @b CLASSPATH can be set up properly.
+ * functions so the internal @b CLASSPATH can be set up properly, but
+ * beforehand, but only if the @link #JVMCFG_TMPAREA_IN_USE@endlink
+ * will be used.  (Notice that one of the parameters to this function
+ * is the heap allocation and free method to be used.  This way it may
+ * be called from both the JVM and utility functions unchanged, even
+ * when the utilities do not use the same heap mechanism as the JVM.)
  *
  *
  * @section Control
@@ -61,7 +66,7 @@
  */
 
 #include "arch.h"
-ARCH_SOURCE_COPYRIGHT_APACHE(argv, c,
+ARCH_SOURCE_COPYRIGHT_APACHE(jvmargv, c,
 "$URL$",
 "$Id$");
 
@@ -117,19 +122,27 @@
  * the starting class name are passed to the JVM as '(String) args[]'.
  *
  *
- * @param argc    Number of arguments on command line
+ * @param[in]  argc            Number of arguments on command line
  *
- * @param argv    Argument vector from the command line
+ * @param[in]  argv            Argument vector from the command line
  *
- * @param envp    Environment pointer from command line environ
+ * @param[in]  envp            Environment pointer from command line
+ *
+ * @param[out] argv_init_flag  Pointer to rboolean, changed to
+ *                             @link #rtrue rtrue@endlink
+ *                             to indicate argument vector
+ *                             area now available.
  *
  *
  * @returns @link #rvoid rvoid@endlink
  *
  */
-rvoid argv_init(int argc, char **argv, char **envp)
+rvoid jvmargv_init(int        argc,
+                   char     **argv,
+                   char     **envp,
+                   rboolean  *argv_init_flag)
 {
-    ARCH_FUNCTION_NAME(argv_init);
+    ARCH_FUNCTION_NAME(jvmargv_init);
 
     rint     argclocal = (rint)     argc;
     rchar ** argvlocal = (rchar **) argv;
@@ -193,7 +206,7 @@
         if (0 == portable_strcmp(JVMCFG_COMMAND_LINE_HELP_PARM,
                                  argvlocal[i]))
         {
-            argv_helpmsg();
+            jvmargv_helpmsg();
             exit_jvm(EXIT_ARGV_HELP);
 /*NOTREACHED*/
         }
@@ -201,7 +214,7 @@
         if (0 == portable_strcmp(JVMCFG_COMMAND_LINE_LICENSE_PARM,
                                  argvlocal[i]))
         {
-            argv_licensemsg();
+            jvmutil_licensemsg();
             exit_jvm(EXIT_ARGV_LICENSE);
 /*NOTREACHED*/
         }
@@ -209,7 +222,7 @@
         if (0 == portable_strcmp(JVMCFG_COMMAND_LINE_VERSION_PARM,
                                  argvlocal[i]))
         {
-            argv_versionmsg();
+            jvmutil_versionmsg();
             exit_jvm(EXIT_ARGV_VERSION);
 /*NOTREACHED*/
         }
@@ -217,7 +230,7 @@
         if (0 == portable_strcmp(JVMCFG_COMMAND_LINE_COPYRIGHT_PARM,
                                  argvlocal[i]))
         {
-            argv_copyrightmsg();
+            jvmutil_copyrightmsg();
             exit_jvm(EXIT_ARGV_COPYRIGHT);
 /*NOTREACHED*/
         }
@@ -305,6 +318,11 @@
 
                 i++;
             }
+            else
+            {
+                sysErrMsg(arch_function_name,
+                      "missing debug message level.  Request ignored.");
+            }
         }
         else
         /*
@@ -388,132 +406,64 @@
                         sizeof(rchar) + portable_strlen(chkjh));
     }
 
-    /* Try to get a valid @b CLASSPATH even if not found elsewhere */
-    chkcp = (rchar *) ((rnull == chkcp)
-                         ? JVMCFG_CLASSPATH_DEFAULT
-                         : (const rchar *) chkcp);
-
-    pjvm->classpath = (rchar *) rnull;
-    if (rnull != chkcp)
+    /* Get a valid default @b CLASSPATH even if not found elsewhere */
+    if (rnull == chkcp)
     {
-        /* Copy '\0' byte also */
-        pjvm->classpath =
-            HEAP_GET_DATA(sizeof(rchar) + portable_strlen(chkcp),
-                          rfalse);
-
-        portable_memcpy(pjvm->classpath,
-                        chkcp, 
-                        sizeof(rchar) + portable_strlen(chkcp));
+        chkcp = (rchar *) JVMCFG_CLASSPATH_DEFAULT;
     }
+
+    /* Copy '\0' byte also */
+    pjvm->classpath =
+        HEAP_GET_DATA(sizeof(rchar) + portable_strlen(chkcp), rfalse);
+
+    portable_memcpy(pjvm->classpath,
+                    chkcp, 
+                    sizeof(rchar) + portable_strlen(chkcp));
+
 #ifdef JVMCFG_HARDCODED_TEST_CLASSPATH
+    /* Only use for initial development-- a heap leakage bug otherwise*/
     pjvm->classpath = JVMCFG_HARDCODED_TEST_CLASSPATH;
 #endif
 
-    /* Try to get a valid @b BOOTCLASSPATH even if not found elsewhere*/
-    chkbcp = (rchar *) ((rnull == chkbcp)
-                          ?
+    /* Get valid default @b BOOTCLASSPATH even if not found elsewhere*/
+    if (rnull == chkbcp)
+    {
 #ifdef CONFIG_HACKED_BOOTCLASSPATH
-                            JVMCFG_CLASSPATH_DEFAULT
+        chkbcp = (rchar *) JVMCFG_CLASSPATH_DEFAULT;
 #else
-                            JVMCFG_BOOTCLASSPATH_DEFAULT
+        chkbcp = (rchar *) JVMCFG_BOOTCLASSPATH_DEFAULT;
 #endif
-                          : (const rchar *) chkbcp);
+    }
 
     pjvm->bootclasspath = (rchar *) rnull;
-    if (rnull != chkbcp)
-    {
-        /* Copy '\0' byte also */
-        pjvm->bootclasspath =
-          HEAP_GET_DATA(sizeof(rchar) + portable_strlen(chkbcp),rfalse);
 
-        portable_memcpy(pjvm->bootclasspath,
-                        chkbcp,
-                        sizeof(rchar) + portable_strlen(chkbcp));
-    }
+    /* Copy '\0' byte also */
+    pjvm->bootclasspath =
+      HEAP_GET_DATA(sizeof(rchar) + portable_strlen(chkbcp),rfalse);
+
+    portable_memcpy(pjvm->bootclasspath,
+                    chkbcp,
+                    sizeof(rchar) + portable_strlen(chkbcp));
+
+    /* Declare this module initialized */
+    *argv_init_flag = rtrue;
 
-    /* Show summary of what command line resoved into */
+    /* Show summary of what command line resolved into */
     if (rtrue == show_flag)
     {
-        argv_showmsg();
+        jvmargv_showmsg();
+        jvmargv_shutdown(argv_init_flag);
+        exit_jvm(EXIT_ARGV_SHOW);
     }
 
     /* Display copyright msg and finish */
-    argv_copyrightmsg();
-
-    /* Declare this module initialized */
-    jvm_argv_initialized = rtrue;
-
-    return;
-
-} /* END of argv_init() */
-
-
-/*!
- * @brief Show program version message to standard output.
- *
- *
- * @b Parameters: @link #rvoid rvoid@endlink
- *
- *
- * @returns @link #rvoid rvoid@endlink
- *
- */
-rvoid argv_versionmsg(rvoid)
-{
-    ARCH_FUNCTION_NAME(argv_versionmsg);
-
-    fprintfLocalStdout("%s\n", CONFIG_RELEASE_LEVEL);
-
-    return;
-
-} /* END of argv_versionmsg() */
-
-
-/*!
- * @brief Show program copyright message to standard output.
- *
- *
- * @b Parameters: @link #rvoid rvoid@endlink
- *
- *
- * @returns @link #rvoid rvoid@endlink
- *
- */
-rvoid argv_copyrightmsg(rvoid)
-{
-    ARCH_FUNCTION_NAME(argv_copyrightmsg);
-
-    fprintfLocalStdout("\n%s:  %s, version %s\n%s\n\n",
-                       CONFIG_PROGRAM_NAME,
-                       CONFIG_PROGRAM_DESCRIPTION,
-                       CONFIG_RELEASE_LEVEL,
-                       ARCH_COPYRIGHT_TEXT_APACHE);
-
-    return;
-
-} /* END of argv_copyrightmsg() */
-
-
-/*!
- * @brief Show program software license message to standard output.
- *
- *
- * @b Parameters: @link #rvoid rvoid@endlink
- *
- *
- * @returns @link #rvoid rvoid@endlink
- *
- */
-rvoid argv_licensemsg(rvoid)
-{
-    ARCH_FUNCTION_NAME(argv_licensemsg);
-
-    argv_copyrightmsg();
-    fprintfLocalStdout("%s\n\n", ARCH_LICENSE_TEXT_APACHE);
+#if 0
+    jvmutil_copyrightmsg();
+#endif
 
     return;
 
-} /* END of argv_licensemsg() */
+} /* END of jvmargv_init() */
 
 
 #define LEADING_SPACES "                  "
@@ -528,11 +478,11 @@
  * @returns @link #rvoid rvoid@endlink
  *
  */
-rvoid argv_helpmsg(rvoid)
+rvoid jvmargv_helpmsg(rvoid)
 {
-    ARCH_FUNCTION_NAME(argv_helpmsg);
+    ARCH_FUNCTION_NAME(jvmargv_helpmsg);
 
-    argv_copyrightmsg();
+    jvmutil_copyrightmsg();
 
     fprintfLocalStdout(
 "%s:  version %s\n\n",
@@ -568,26 +518,6 @@
 "%snot supported for locating this class name.\n\n",
                        LEADING_SPACES);
 
-    fprintfLocalStdout("    %s         %s",
-                       JVMCFG_COMMAND_LINE_SHOW_PARM,
-   "Show how command line and environment resolves after parsing.\n");
-    fprintfLocalStdout("    %s      %s",
-                       JVMCFG_COMMAND_LINE_VERSION_PARM,
-   "Display the program release level.\n");
-
-    fprintfLocalStdout("    %s    %s",
-                       JVMCFG_COMMAND_LINE_COPYRIGHT_PARM,
-   "Display the program copyright.\n");
-
-    fprintfLocalStdout("    %s      %s",
-                       JVMCFG_COMMAND_LINE_LICENSE_PARM,
-   "Display the program software license.\n");
-
-    fprintfLocalStdout("    %s         %s",
-                       JVMCFG_COMMAND_LINE_HELP_PARM,
-   "Display this help message.\n\n");
-
-
     fprintfLocalStdout("    %s pathname\n", JVMCFG_JAVA_HOME_FULL_PARM);
     fprintfLocalStdout("    %s  pathname\n", JVMCFG_JAVA_HOME_MID_PARM);
     fprintfLocalStdout(
@@ -652,9 +582,15 @@
 "    args          Optional arguments to pass to JVM, if any.\n\n");
 
 
+    argvutil_common_msghdr();
+
+    argvutil_jvm_showmsg();
+
+    argvutil_common_msgs();
+
     return;
 
-} /* END of argv_helpmsg() */
+} /* END of jvmargv_helpmsg() */
 
 
 /*!
@@ -667,9 +603,9 @@
  * @returns @link #rvoid rvoid@endlink
  *
  */
-rvoid argv_showmsg(rvoid)
+rvoid jvmargv_showmsg(rvoid)
 {
-    ARCH_FUNCTION_NAME(argv_showmsg);
+    ARCH_FUNCTION_NAME(jvmargv_showmsg);
 
     fprintfLocalStdout("JAVA_HOME=%s\n", pjvm->java_home);
 
@@ -697,9 +633,7 @@
         ; /* Simply count number of args, terminated by rnull slot */
     }
 
-    fprintfLocalStdout("argc=%d\n", argc);
-
-    fprintfLocalStdout("args=");
+    fprintfLocalStdout("\n%d args: ", argc);
 
     rint i;
     for (i = 0; i < argc; i++)
@@ -713,22 +647,25 @@
 
     return;
 
-} /* END of argv_showmsg() */
+} /* END of jvmargv_showmsg() */
 
 
 /*!
  * @brief Clean up from argv[] setup after JVM execution.
  *
  *
- * @b Parameters: @link #rvoid rvoid@endlink
+ * @param[out]   argv_init_flag   Pointer to rboolean, changed to
+ *                                @link #rtrue rtrue@endlink
+ *                                to indicate argument vector
+ *                                no longer available.
  *
  *
  * @returns @link #rvoid rvoid@endlink
  *
  */
-rvoid argv_shutdown(rvoid)
+rvoid jvmargv_shutdown(rboolean *argv_init_flag)
 {
-    ARCH_FUNCTION_NAME(argv_shutdown);
+    ARCH_FUNCTION_NAME(jvmargv_shutdown);
 
     HEAP_FREE_DATA(pjvm->bootclasspath);
     pjvm->bootclasspath = (rchar *) rnull;
@@ -748,11 +685,11 @@
     pjvm->argvj = (rchar **) rnull;
 
     /* Declare this module uninitialized */
-    jvm_argv_initialized = rfalse;
+    *argv_init_flag = rfalse;
 
     return;
 
-} /* END of argv_shutdown() */
+} /* END of jvmargv_shutdown() */
 
 
 /* EOF */