diff liboctave/util/cmd-edit.cc @ 21168:26f85aa072de

maint: Replace instances of goto in liboctave where convenient. * CMatrix.cc (operator >>): Replace "goto done;" with "return is;". * CNDArray.cc (operator >>): Replace "goto done;" with "return is;". * lo-specfun.cc (gammainc (various)) : Rename return variable result to retval. Replace "goto done;" with "return XXX ();" where XXX is a container such as Matrix, NDArray, FloatMatrix, FloatNDArray. * lo-specfun.cc (gammainc (double, double, err), gammainc (float,float, err)): Move input validation to top of function. * randpoisson.c (poisson_cdf_lookup): Place action of if statement on separate line. * cmd-edit.cc (do_decode_prompt_string): Replace goto statement with break. Rename variable result to retval. Rename variable temp to tmpstr. Place cases of switch statement in mostly alphabetical order. Use single quotes when describing a single character. Use temporary number buffer of 32, not 128. * oct-sort.cc (sort): Replace "goto fail;" with "return;"
author Rik <rik@octave.org>
date Mon, 01 Feb 2016 13:29:21 -0800
parents 7cac4e7458f2
children f7121e111991
line wrap: on
line diff
--- a/liboctave/util/cmd-edit.cc	Sun Jan 31 19:26:47 2016 -0800
+++ b/liboctave/util/cmd-edit.cc	Mon Feb 01 13:29:21 2016 -0800
@@ -1556,8 +1556,8 @@
 std::string
 command_editor::do_decode_prompt_string (const std::string& s)
 {
-  std::string result;
-  std::string temp;
+  std::string retval;
+  std::string tmpstr;
   size_t i = 0;
   size_t slen = s.length ();
   int c;
@@ -1586,37 +1586,22 @@
               {
                 int n = read_octal (s.substr (i, 3));
 
-                temp = "\\";
+                tmpstr = "\\";
 
                 if (n != -1)
                   {
-                    i += 3;
-                    temp[0] = n;
+                    tmpstr[0] = n;
+                    i += 2;   // i++ makes this += 3 later
                   }
 
-                c = 0;
-                goto add_string;
+                break;
               }
 
             case 'a':
               {
-                temp = '\a';
-
-                goto add_string;
-              }
-
-            case 'e':
-              {
-                temp = '\033';
+                tmpstr = '\a';
 
-                goto add_string;
-              }
-
-            case 'r':
-              {
-                temp = '\r';
-
-                goto add_string;
+                break;
               }
 
             case 'd':
@@ -1629,32 +1614,72 @@
                 octave_localtime now;
 
                 if (c == 'd')
-                  temp = now.strftime ("%a %b %d");
+                  tmpstr = now.strftime ("%a %b %d");
                 else if (c == 't')
-                  temp = now.strftime ("%H:%M:%S");
+                  tmpstr = now.strftime ("%H:%M:%S");
                 else if (c == 'T')
-                  temp = now.strftime ("%I:%M:%S");
+                  tmpstr = now.strftime ("%I:%M:%S");
                 else if (c == '@')
-                  temp = now.strftime ("%I:%M %p");
+                  tmpstr = now.strftime ("%I:%M %p");
                 else if (c == 'A')
-                  temp = now.strftime ("%H:%M");
+                  tmpstr = now.strftime ("%H:%M");
+
+                break;
+              }
+
+            case 'e':
+              {
+                tmpstr = '\033';
+
+                break;
+              }
 
-                goto add_string;
+            case 'h':
+              {
+                tmpstr = octave_env::get_host_name ();
+
+                size_t pos = tmpstr.find ('.');
+
+                if (pos != std::string::npos)
+                  tmpstr.resize (pos);
+
+                break;
+              }
+
+            case 'H':
+              {
+                tmpstr = octave_env::get_host_name ();
+
+                break;
               }
 
             case 'n':
               {
-                temp = newline_chars ();
+                tmpstr = newline_chars ();
+
+                break;
+              }
 
-                goto add_string;
+            case 'r':
+              {
+                tmpstr = '\r';
+
+                break;
               }
 
             case 's':
               {
-                temp = octave_env::get_program_name ();
-                temp = octave_env::base_pathname (temp);
+                tmpstr = octave_env::get_program_name ();
+                tmpstr = octave_env::base_pathname (tmpstr);
+
+                break;
+              }
 
-                goto add_string;
+            case 'u':
+              {
+                tmpstr = octave_env::get_user_name ();
+
+                break;
               }
 
             case 'w':
@@ -1662,135 +1687,102 @@
               {
                 try
                   {
-                    temp = octave_env::get_current_directory ();
+                    tmpstr = octave_env::get_current_directory ();
                   }
                 catch (const octave_execution_exception&)
                   {
-                    temp = "";
+                    tmpstr = "";
                   }
 
                 std::string home_dir = octave_env::get_home_directory ();
 
-                if (c == 'W' && (home_dir.empty () || temp != home_dir))
+                if (c == 'W' && (home_dir.empty () || tmpstr != home_dir))
                   {
-                    if (temp != "/" && temp != "//")
+                    if (tmpstr != "/" && tmpstr != "//")
                       {
-                        size_t pos = temp.rfind ('/');
+                        size_t pos = tmpstr.rfind ('/');
 
                         if (pos != std::string::npos && pos != 0)
-                          temp = temp.substr (pos + 1);
+                          tmpstr = tmpstr.substr (pos + 1);
                       }
                   }
                 else
-                  temp = octave_env::polite_directory_format (temp);
-
-                goto add_string;
-              }
-
-            case 'u':
-              {
-                temp = octave_env::get_user_name ();
-
-                goto add_string;
-              }
-
-            case 'H':
-              {
-                temp = octave_env::get_host_name ();
-
-                goto add_string;
-              }
+                  tmpstr = octave_env::polite_directory_format (tmpstr);
 
-            case 'h':
-              {
-                temp = octave_env::get_host_name ();
-
-                size_t pos = temp.find ('.');
-
-                if (pos != std::string::npos)
-                  temp.resize (pos);
-
-                goto add_string;
-              }
-
-            case '#':
-              {
-                char number_buffer[128];
-                sprintf (number_buffer, "%d", command_number);
-                temp = number_buffer;
-
-                goto add_string;
+                break;
               }
 
             case '!':
               {
-                char number_buffer[128];
+                char number_buffer[32];
                 int num = command_history::current_number ();
                 if (num > 0)
                   sprintf (number_buffer, "%d", num);
                 else
                   strcpy (number_buffer, "!");
-                temp = number_buffer;
+                tmpstr = number_buffer;
+
+                break;
+              }
 
-                goto add_string;
+            case '#':
+              {
+                char number_buffer[32];
+                sprintf (number_buffer, "%d", command_number);
+                tmpstr = number_buffer;
+
+                break;
               }
 
             case '$':
               {
 #if defined (HAVE_GETEUID)
-                temp = (::geteuid () == 0 ? "#" : "$");
+                tmpstr = (::geteuid () == 0 ? '#' : '$');
 #else
-                temp = "$";
+                tmpstr = '$';
 #endif
 
-                goto add_string;
+                break;
               }
 
 #if defined (USE_READLINE)
             case '[':
             case ']':
               {
-                temp.resize (1);
+                tmpstr.resize (1);
 
-                temp[0] = ((c == '[')
-                           ? ::octave_rl_prompt_start_ignore ()
-                           : ::octave_rl_prompt_end_ignore ());
+                tmpstr[0] = ((c == '[')
+                             ? ::octave_rl_prompt_start_ignore ()
+                             : ::octave_rl_prompt_end_ignore ());
 
-                goto add_string;
+                break;
               }
 #endif
 
             case '\\':
               {
-                temp = "\\";
+                tmpstr = "\\";
 
-                goto add_string;
+                break;
               }
 
             default:
               {
-                temp = "\\ ";
-                temp[1] = c;
-
-                goto add_string;
-              }
-
-            add_string:
-              {
-                if (c)
-                  i++;
-
-                result.append (temp);
+                tmpstr = "\\ ";
+                tmpstr[1] = c;
 
                 break;
               }
             }
+
+          retval.append (tmpstr);
+          i++;   // Move past processed escape character
         }
       else
-        result += c;
+        retval += c;
     }
 
-  return result;
+  return retval;
 }
 
 int