Index: trunk/Ohana/src/opihi/lib.shell/startup.c
===================================================================
--- trunk/Ohana/src/opihi/lib.shell/startup.c	(revision 5900)
+++ trunk/Ohana/src/opihi/lib.shell/startup.c	(revision 5919)
@@ -6,5 +6,5 @@
  */
 
-void general_init (int argc, char **argv) {
+void general_init (int *argc, char **argv) {
 
   /* init srand for rnd numbers elsewhere */
@@ -18,5 +18,5 @@
 
   /* load config data (.ptolemyrc) */
-  if (!ConfigInit (&argc, argv)) {
+  if (!ConfigInit (argc, argv)) {
     fprintf (stderr, "can't find config file. some functions will be unavailable\n");
   }
@@ -25,5 +25,5 @@
 }
 
-void startup (int argc, char **argv) {
+void startup (int *argc, char **argv) {
     
     int i, N, status, ONLY_INPUT, LOAD_RC;
@@ -31,5 +31,4 @@
     char *rcfile, **list;
     int Nlist, NLIST;
-    static char dot[] = ".";
    
     /* load in interesting environment variables */
@@ -37,6 +36,8 @@
     
     home = getenv ("HOME");
-    if (home == NULL) home = dot;
-    set_str_variable ("HOME", home);
+    if (home == NULL) 
+      set_str_variable ("HOME", ".");
+    else 
+      set_str_variable ("HOME", home);
     set_str_variable ("KII", "kii");
     set_str_variable ("KAPA", "kapa");
@@ -54,5 +55,5 @@
     char *opihi_history;
 
-    opihi_history = get_variable ("RCFILE");
+    opihi_history = get_variable ("HISTORY");
     f = fopen (opihi_history, "a");
     if (f == NULL) /* no current history file here */
@@ -84,14 +85,15 @@
       }
     }
+  }
 
     LOAD_RC = TRUE;
-    if ((N = get_argument (argc, argv, "--norc"))) {
-      remove_argument (N, &argc, argv);
+    if ((N = get_argument (*argc, argv, "--norc"))) {
+      remove_argument (N, argc, argv);
       LOAD_RC = FALSE;
     }
     
     ONLY_INPUT = FALSE;
-    if ((N = get_argument (argc, argv, "--only"))) {
-      remove_argument (N, &argc, argv);
+    if ((N = get_argument (*argc, argv, "--only"))) {
+      remove_argument (N, argc, argv);
       ONLY_INPUT = TRUE;
     }
@@ -101,8 +103,8 @@
     NLIST = 10;
     ALLOCATE (list, char *, NLIST);
-    while ((N = get_argument (argc, argv, "--load"))) {
-      remove_argument (N, &argc, argv);
+    while ((N = get_argument (*argc, argv, "--load"))) {
+      remove_argument (N, argc, argv);
       list[Nlist] = strcreate (argv[N]);
-      remove_argument (N, &argc, argv);
+      remove_argument (N, argc, argv);
       Nlist++;
       if (Nlist == NLIST) {
@@ -113,5 +115,5 @@
 
     is_script = TRUE;
-    if (argc == 1) is_script = FALSE;
+    if (*argc == 1) is_script = FALSE;
     set_int_variable ("SCRIPT", is_script);
 
@@ -130,5 +132,5 @@
       /* generate list argv:0 - argv:n from arguments */
       ALLOCATE (varname, char, 256);
-      for (i = 2; i < argc; i++) {
+      for (i = 2; i < *argc; i++) {
 	sprintf (varname, "argv:%d", i - 2);
 	set_str_variable (varname, argv[i]);
@@ -150,4 +152,4 @@
     if (ONLY_INPUT) exit (2);
     if (is_script) exit (2);
-  }
+    return;
 }
