updates to fix bundler on win32
[feisty_meow.git] / nucleus / library / application / command_line.cpp
index 19f61810ce130f4151a510659b85243a950c6af0..ea3d28d5755b509896e4d90e65acd57136a16c31 100644 (file)
@@ -67,17 +67,9 @@ command_parameter &command_parameter::operator =
 //////////////
 
 // option_prefixes: the list of valid prefixes for options on a command line.
-// these are the characters that precede command line arguments.  For Unix,
-// the default is a dash (-), while for DOS most programs use forward-slash
-// (/).  Adding more characters is trivial; just add a character to the list
-// before the sentinel of '\0'.
-#if defined(_MSC_VER) || defined(__MINGW32__)
-  static char option_prefixes[] = { '-', '/', '\0' };
-#elif defined(__UNIX__)
-  static char option_prefixes[] = { '-', '\0' };
-#else
-  #error "I don't know what kind of operating system this is."
-#endif
+// these are the characters that precede command line arguments.  we have
+// dropped any but the linux default of dash ('-').
+static char option_prefixes[] = { '-', '\0' };
 
 bool it_is_a_prefix_char(char to_test)
 {
@@ -118,10 +110,11 @@ command_line::command_line(const astring &full_line)
   astring accumulator;
   string_array string_list;
   bool in_quote = false;
-//hmmm: this is not quote right yet.
+//hmmm: this is not quite right yet.
 //      use the separate command line method, but get it to run iteratively
 //      so we can keep pulling them apart?  maybe it already does!
 //      separate is better because it handles escaped quotes.
+//hmmm: does above complaint parse?  what's not right yet?
   for (int i = 0; i < full_line.length(); i++) {
     char to_examine = full_line.get(i);
     if (to_examine == '"') {
@@ -236,12 +229,12 @@ bool command_line::zap(int field)
 
 string_array command_line::get_command_line()
 {
-//  FUNCDEF("get_command_line");
+  FUNCDEF("get_command_line");
   string_array listo_cmds;
   // the temporary string below can be given a flat formatting of the commands
   // and it will be popped out into a list of arguments.
   astring temporary;
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   if (!_global_argc || !_global_argv) {
     // our global parameters have not been set, so we must calculate them.
     temporary = application_configuration::get_cmdline_from_proc();
@@ -254,7 +247,7 @@ string_array command_line::get_command_line()
     // we don't need a long string to be parsed; the list is ready.
     return listo_cmds;
   }
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   // we have easy access to the original list of commands.
   for (int i = 0; i < _global_argc; i++) {
     // add a string entry for each argument.
@@ -367,6 +360,7 @@ LOG(astring("found option string with dash!  string is: ") + option_string);
 bool command_line::get_value(char option_character, astring &value,
     bool case_sense) const
 {
+  FUNCDEF("get_value");
   value = "";
   int posn = 0;  // where we find the flag.
   if (!find(option_character, posn, case_sense)) return false;
@@ -394,17 +388,21 @@ LOG(astring("found option string with dash!  string is: ") + option_string);
   value = "";
   int posn = 0;  // where we find the flag.
   if (!find(option_string, posn, case_sense)) return false;
+//printf("found the flag! at %d\n", posn);
 
   // get the value after the flag, if there is such.
   posn++;  // this is where we think our flag's value lives.
   if (posn >= entries()) return false;
+//printf("next posn is still okay at %d\n", posn);
 
   // there's still an entry after where we found our flag; grab it.
   command_parameter cp = get(posn);
+//printf("comm parm has text %s\n", cp.text().s());
   if (cp.type() != command_parameter::VALUE) return false;
 
   // finally; we've found an appropriate text value.
   value = cp.text();
+//printf("assigning value %s\n", value.s());
   return true;
 }