changeset 20799:c349d4c91ce2

eliminate return statements after calls to print_usage * symtab.cc, sysdep.cc, toplev.cc, tsearch.cc, urlwrite.cc, variables.cc: Eliminate return statements after calls to print_usage.
author John W. Eaton <jwe@octave.org>
date Thu, 03 Dec 2015 16:40:05 -0500
parents bb585db6dee2
children fb128aafc322
files libinterp/corefcn/symtab.cc libinterp/corefcn/sysdep.cc libinterp/corefcn/toplev.cc libinterp/corefcn/tsearch.cc libinterp/corefcn/urlwrite.cc libinterp/corefcn/variables.cc
diffstat 6 files changed, 263 insertions(+), 328 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/symtab.cc	Thu Dec 03 15:07:01 2015 -0500
+++ b/libinterp/corefcn/symtab.cc	Thu Dec 03 16:40:05 2015 -0500
@@ -1668,6 +1668,9 @@
 
   int nargin = args.length ();
 
+  if (nargin > 1)
+    print_usage ();
+
   if (nargout > 0 || nargin == 0)
     {
       switch (Vignore_function_time_stamp)
@@ -1699,8 +1702,6 @@
       else
         error ("ignore_function_time_stamp: argument must be one of \"all\", \"system\", or \"none\"");
     }
-  else if (nargin > 1)
-    print_usage ();
 
   return retval;
 }
@@ -1752,6 +1753,9 @@
 
   int nargin = args.length ();
 
+  if (nargin > 1)
+    print_usage ();
+
   if (nargin == 0)
     {
       symbol_table::dump_functions (octave_stdout);
@@ -1764,7 +1768,7 @@
            p != lst.end (); p++)
         symbol_table::dump (octave_stdout, *p);
     }
-  else if (nargin == 1)
+  else
     {
       octave_value arg = args(0);
 
@@ -1800,8 +1804,6 @@
           symbol_table::dump (octave_stdout, s);
         }
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -1814,27 +1816,25 @@
 {
   octave_value retval;
 
-  if (args.length () == 1)
-    {
-      std::string name = args(0).xstring_value ("__get_cmd_line_function_text__: first argument must be function name");
+  if (args.length () != 1)
+    print_usage ();
 
-      octave_value ov = symbol_table::find_cmdline_function (name);
+  std::string name = args(0).xstring_value ("__get_cmd_line_function_text__: first argument must be function name");
 
-      octave_user_function *f = ov.user_function_value ();
+  octave_value ov = symbol_table::find_cmdline_function (name);
+
+  octave_user_function *f = ov.user_function_value ();
 
-      if (f)
-        {
-          std::ostringstream buf;
-
-          tree_print_code tpc (buf);
+  if (f)
+    {
+      std::ostringstream buf;
 
-          f->accept (tpc);
+      tree_print_code tpc (buf);
 
-          retval = buf.str ();
-        }
+      f->accept (tpc);
+
+      retval = buf.str ();
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -1847,14 +1847,12 @@
 {
   octave_value retval;
 
-  if (args.length () == 2)
-    {
-      std::string name = args(0).xstring_value ("set_variable: variable NAME must be a string");
+  if (args.length () != 2)
+    print_usage ();
 
-      symbol_table::assign (name, args(1));
-    }
-  else
-    print_usage ();
+  std::string name = args(0).xstring_value ("set_variable: variable NAME must be a string");
+
+  symbol_table::assign (name, args(1));
 
   return retval;
 }
@@ -1863,18 +1861,16 @@
 {
   octave_value retval;
 
-  if (args.length () == 1)
-    {
-      std::string name = args(0).xstring_value ("variable_value: variable NAME must be a string");
+  if (args.length () != 1)
+    print_usage ();
 
-      retval = symbol_table::varval (name);
+  std::string name = args(0).xstring_value ("variable_value: variable NAME must be a string");
 
-      if (retval.is_undefined ())
-        error ("variable_value: '%s' is not a variable in the current scope",
-               name.c_str ());
-    }
-  else
-    print_usage ();
+  retval = symbol_table::varval (name);
+
+  if (retval.is_undefined ())
+    error ("variable_value: '%s' is not a variable in the current scope",
+           name.c_str ());
 
   return retval;
 }
--- a/libinterp/corefcn/sysdep.cc	Thu Dec 03 15:07:01 2015 -0500
+++ b/libinterp/corefcn/sysdep.cc	Thu Dec 03 16:40:05 2015 -0500
@@ -193,27 +193,25 @@
 {
   octave_value retval;
 
-  if (args.length () == 1)
-    {
-      std::string file = args(0).xstring_value ("__open_with_system_app__: argument must be a filename");
+  if (args.length () != 1)
+    print_usage ();
+
+  std::string file = args(0).xstring_value ("__open_with_system_app__: argument must be a filename");
 
 #if defined (__WIN32__) && ! defined (_POSIX_VERSION)
-      HINSTANCE status = ShellExecute (0, 0, file.c_str (), 0, 0,
-                                       SW_SHOWNORMAL);
+  HINSTANCE status = ShellExecute (0, 0, file.c_str (), 0, 0,
+                                   SW_SHOWNORMAL);
 
-      // ShellExecute returns a value greater than 32 if successful.
-      retval = (reinterpret_cast<ptrdiff_t> (status) > 32);
+  // ShellExecute returns a value greater than 32 if successful.
+  retval = (reinterpret_cast<ptrdiff_t> (status) > 32);
 #else
-      octave_value_list tmp
-        = Fsystem (ovl ("xdg-open " + file + " 2> /dev/null",
-                        false, "async"),
-                   1);
+  octave_value_list tmp
+    = Fsystem (ovl ("xdg-open " + file + " 2> /dev/null",
+                    false, "async"),
+               1);
 
-      retval = (tmp(0).double_value () == 0);
+  retval = (tmp(0).double_value () == 0);
 #endif
-    }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -614,20 +612,14 @@
 @seealso{setenv, unsetenv}\n\
 @end deftypefn")
 {
-  octave_value retval;
-
   int nargin = args.length ();
 
-  if (nargin == 1)
-    {
-      std::string name = args(0).string_value ();
-
-      retval = octave_env::getenv (name);
-    }
-  else
+  if (nargin != 1)
     print_usage ();
 
-  return retval;
+  std::string name = args(0).string_value ();
+
+  return octave_value (octave_env::getenv (name));
 }
 
 /*
@@ -650,18 +642,16 @@
 
   int nargin = args.length ();
 
-  if (nargin == 2 || nargin == 1)
-    {
-      std::string var = args(0).xstring_value ("setenv: VAR must be a string");
+  if (nargin < 1 || nargin > 2)
+    print_usage ();
+
+  std::string var = args(0).xstring_value ("setenv: VAR must be a string");
 
-      std::string val = (nargin == 2
-                         ? args(1).xstring_value ("setenv: VALUE must be a string")
-                         : std::string ());
+  std::string val = (nargin == 2
+                     ? args(1).xstring_value ("setenv: VALUE must be a string")
+                     : std::string ());
 
-      octave_env::putenv (var, val);
-    }
-  else
-    print_usage ();
+  octave_env::putenv (var, val);
 
   return retval;
 }
@@ -686,20 +676,14 @@
 @seealso{setenv, getenv}\n\
 @end deftypefn")
 {
-  octave_value retval;
-
   int nargin = args.length ();
 
-  if (nargin == 1)
-    {
-      std::string tmp = args(0).string_value ();
-
-      retval = gnulib::unsetenv (tmp.c_str ());
-    }
-  else
+  if (nargin != 1)
     print_usage ();
 
-  return retval;
+  std::string tmp = args(0).string_value ();
+
+  return octave_value (gnulib::unsetenv (tmp.c_str ()));
 }
 
 /*
@@ -785,11 +769,8 @@
 
   int nargin = args.length ();
 
-  if (! (nargin == 0 || nargin == 1))
-    {
-      print_usage ();
-      return retval;
-    }
+  if (nargin > 1)
+    print_usage ();
 
   if (nargin == 1)
     {
@@ -836,20 +817,18 @@
 {
   octave_value_list retval;
 
-  if (args.length () == 1)
-    {
-      double dval = args(0).double_value ();
+  if (args.length () != 1)
+    print_usage ();
+
+  double dval = args(0).double_value ();
 
-      if (xisnan (dval))
-        warning ("sleep: NaN is an invalid delay");
-      else
-        {
-          Fdrawnow ();
-          octave_sleep (dval);
-        }
+  if (xisnan (dval))
+    warning ("sleep: NaN is an invalid delay");
+  else
+    {
+      Fdrawnow ();
+      octave_sleep (dval);
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -876,24 +855,22 @@
 {
   octave_value_list retval;
 
-  if (args.length () == 1)
-    {
-      double dval = args(0).double_value ();
+  if (args.length () != 1)
+    print_usage ();
+
+  double dval = args(0).double_value ();
 
-      if (xisnan (dval))
-        warning ("usleep: NaN is an invalid delay");
-      else
-        {
-          Fdrawnow ();
+  if (xisnan (dval))
+    warning ("usleep: NaN is an invalid delay");
+  else
+    {
+      Fdrawnow ();
 
-          int delay = NINT (dval);
+      int delay = NINT (dval);
 
-          if (delay > 0)
-            octave_usleep (delay);
-        }
+      if (delay > 0)
+        octave_usleep (delay);
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -975,21 +952,19 @@
 
   int nargin = args.length ();
 
-  if (nargin == 1)
-    {
-      octave_value arg = args(0);
+  if (nargin != 1)
+    print_usage ();
 
-      string_vector sv = arg.xall_strings ("tilde_expand: argument must be char or cellstr object");
+  octave_value arg = args(0);
 
-      sv = file_ops::tilde_expand (sv);
+  string_vector sv = arg.xall_strings ("tilde_expand: argument must be char or cellstr object");
 
-      if (arg.is_cellstr ())
-        retval = Cell (arg.dims (), sv);
-      else
-        retval = sv;
-    }
+  sv = file_ops::tilde_expand (sv);
+
+  if (arg.is_cellstr ())
+    retval = Cell (arg.dims (), sv);
   else
-    print_usage ();
+    retval = sv;
 
   return retval;
 }
--- a/libinterp/corefcn/toplev.cc	Thu Dec 03 15:07:01 2015 -0500
+++ b/libinterp/corefcn/toplev.cc	Thu Dec 03 16:40:05 2015 -0500
@@ -1029,112 +1029,110 @@
 
   int nargin = args.length ();
 
-  if (nargin > 0 && nargin < 4)
-    {
-      bool return_output = (nargin == 1 && nargout > 1);
+  if (nargin == 0 || nargin > 3)
+    print_usage ();
 
-      system_exec_type type = et_sync;
+  bool return_output = (nargin == 1 && nargout > 1);
 
-      if (nargin == 3)
-        {
-          std::string type_str = args(2).xstring_value ("system: TYPE must be a string");
+  system_exec_type type = et_sync;
 
-          if (type_str == "sync")
-            type = et_sync;
-          else if (type_str == "async")
-            type = et_async;
-          else
-            {
-              error ("system: TYPE must be \"sync\" or \"async\"");
-              return retval;
-            }
-        }
+  if (nargin == 3)
+    {
+      std::string type_str = args(2).xstring_value ("system: TYPE must be a string");
 
-      if (nargin > 1)
+      if (type_str == "sync")
+        type = et_sync;
+      else if (type_str == "async")
+        type = et_async;
+      else
         {
-          try
-            {
-              return_output = args(1).is_true ();
-            }
-          catch (octave_execution_exception& e)
-            {
-              error (e, "system: RETURN_OUTPUT must be boolean value true or false");
-            }
-        }
-
-      if (return_output && type == et_async)
-        {
-          error ("system: can't return output from commands run asynchronously");
+          error ("system: TYPE must be \"sync\" or \"async\"");
           return retval;
         }
+    }
 
-      std::string cmd_str = args(0).xstring_value ("system: first argument must be a string");
+  if (nargin > 1)
+    {
+      try
+        {
+          return_output = args(1).is_true ();
+        }
+      catch (octave_execution_exception& e)
+        {
+          error (e, "system: RETURN_OUTPUT must be boolean value true or false");
+        }
+    }
+
+  if (return_output && type == et_async)
+    {
+      error ("system: can't return output from commands run asynchronously");
+      return retval;
+    }
+
+  std::string cmd_str = args(0).xstring_value ("system: first argument must be a string");
 
 #if defined (__WIN32__) && ! defined (__CYGWIN__)
-      // Work around weird double-quote handling on Windows systems.
-      if (type == et_sync)
-        cmd_str = "\"" + cmd_str + "\"";
+  // Work around weird double-quote handling on Windows systems.
+  if (type == et_sync)
+    cmd_str = "\"" + cmd_str + "\"";
 #endif
 
-      if (type == et_async)
-        {
-          // FIXME: maybe this should go in sysdep.cc?
+  if (type == et_async)
+    {
+      // FIXME: maybe this should go in sysdep.cc?
 #ifdef HAVE_FORK
-          pid_t pid = fork ();
+      pid_t pid = fork ();
 
-          if (pid < 0)
-            error ("system: fork failed -- can't create child process");
-          else if (pid == 0)
-            {
-              // FIXME: should probably replace this
-              // call with something portable.
+      if (pid < 0)
+        error ("system: fork failed -- can't create child process");
+      else if (pid == 0)
+        {
+          // FIXME: should probably replace this
+          // call with something portable.
 
-              execl (SHELL_PATH, "sh", "-c", cmd_str.c_str (),
-                     static_cast<void *> (0));
+          execl (SHELL_PATH, "sh", "-c", cmd_str.c_str (),
+                 static_cast<void *> (0));
 
-              panic_impossible ();
-            }
-          else
-            retval(0) = pid;
+          panic_impossible ();
+        }
+      else
+        retval(0) = pid;
 #elif defined (__WIN32__)
-          STARTUPINFO si;
-          PROCESS_INFORMATION pi;
-          ZeroMemory (&si, sizeof (si));
-          ZeroMemory (&pi, sizeof (pi));
-          OCTAVE_LOCAL_BUFFER (char, xcmd_str, cmd_str.length ()+1);
-          strcpy (xcmd_str, cmd_str.c_str ());
+      STARTUPINFO si;
+      PROCESS_INFORMATION pi;
+      ZeroMemory (&si, sizeof (si));
+      ZeroMemory (&pi, sizeof (pi));
+      OCTAVE_LOCAL_BUFFER (char, xcmd_str, cmd_str.length ()+1);
+      strcpy (xcmd_str, cmd_str.c_str ());
 
-          if (! CreateProcess (0, xcmd_str, 0, 0, FALSE, 0, 0, 0, &si, &pi))
-            error ("system: CreateProcess failed -- can't create child process");
-          else
-            {
-              retval(0) = pi.dwProcessId;
-              CloseHandle (pi.hProcess);
-              CloseHandle (pi.hThread);
-            }
-#else
-          error ("system: asynchronous system calls are not supported");
-#endif
-        }
-      else if (return_output)
-        retval = run_command_and_return_output (cmd_str);
+      if (! CreateProcess (0, xcmd_str, 0, 0, FALSE, 0, 0, 0, &si, &pi))
+        error ("system: CreateProcess failed -- can't create child process");
       else
         {
-          int status = system (cmd_str.c_str ());
-
-          // The value in status is as returned by waitpid.  If
-          // the process exited normally, extract the actual exit
-          // status of the command.  Otherwise, return 127 as a
-          // failure code.
+          retval(0) = pi.dwProcessId;
+          CloseHandle (pi.hProcess);
+          CloseHandle (pi.hThread);
+        }
+#else
+      error ("system: asynchronous system calls are not supported");
+#endif
+    }
+  else if (return_output)
+    retval = run_command_and_return_output (cmd_str);
+  else
+    {
+      int status = system (cmd_str.c_str ());
 
-          if (octave_wait::ifexited (status))
-            status = octave_wait::exitstatus (status);
+      // The value in status is as returned by waitpid.  If
+      // the process exited normally, extract the actual exit
+      // status of the command.  Otherwise, return 127 as a
+      // failure code.
 
-          retval(0) = status;
-        }
+      if (octave_wait::ifexited (status))
+        status = octave_wait::exitstatus (status);
+
+      retval(0) = status;
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -1221,27 +1219,24 @@
 
   int nargin = args.length ();
 
-  if (nargin == 1 || nargin == 2)
-    {
-      std::string arg = args(0).xstring_value ("atexit: FCN argument must be a string");
+  if (nargin < 1 || nargin > 2)
+    print_usage ();
 
-      bool add_mode = true;
+  std::string arg = args(0).xstring_value ("atexit: FCN argument must be a string");
 
-      if (nargin == 2)
-        add_mode = args(1).xbool_value ("atexit: FLAG argument must be a logical value");
+  bool add_mode = (nargin == 2)
+    ? args(1).xbool_value ("atexit: FLAG argument must be a logical value")
+    : true;
 
-      if (add_mode)
-        octave_add_atexit_function (arg);
-      else
-        {
-          bool found = octave_remove_atexit_function (arg);
+  if (add_mode)
+    octave_add_atexit_function (arg);
+  else
+    {
+      bool found = octave_remove_atexit_function (arg);
 
-          if (nargout > 0)
-            retval(0) = found;
-        }
+      if (nargout > 0)
+        retval(0) = found;
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -1521,6 +1516,9 @@
 
   int nargin = args.length ();
 
+  if (nargin > 1)
+    print_usage ();
+
   if (nargin == 1)
     {
       std::string arg = args(0).string_value ();
@@ -1537,10 +1535,8 @@
       else
         error ("octave_config_info: invalid parameter '%s'", arg.c_str ());
     }
-  else if (nargin == 0)
+  else
     retval = m;
-  else
-    print_usage ();
 
   return retval;
 }
--- a/libinterp/corefcn/tsearch.cc	Thu Dec 03 15:07:01 2015 -0500
+++ b/libinterp/corefcn/tsearch.cc	Thu Dec 03 16:40:05 2015 -0500
@@ -70,15 +70,14 @@
 @seealso{delaunay, delaunayn}\n\
 @end deftypefn")
 {
-  const double eps=1.0e-12;
+  octave_value_list retval;
 
-  octave_value_list retval;
+  const double eps = 1.0e-12;
+
   const int nargin = args.length ();
+
   if (nargin != 5)
-    {
-      print_usage ();
-      return retval;
-    }
+    print_usage ();
 
   const ColumnVector x (args(0).vector_value ());
   const ColumnVector y (args(1).vector_value ());
--- a/libinterp/corefcn/urlwrite.cc	Thu Dec 03 15:07:01 2015 -0500
+++ b/libinterp/corefcn/urlwrite.cc	Thu Dec 03 16:40:05 2015 -0500
@@ -340,10 +340,7 @@
 
   // verify arguments
   if (nargin != 2 && nargin != 4)
-    {
-      print_usage ();
-      return retval;
-    }
+    print_usage ();
 
   std::string url = args(0).xstring_value ("urlwrite: URL must be a string");
 
@@ -477,10 +474,7 @@
 
   // verify arguments
   if (nargin != 1 && nargin != 3)
-    {
-      print_usage ();
-      return retval;
-    }
+    print_usage ();
 
   std::string url = args(0).xstring_value ("urlread: URL must be a string");
 
@@ -538,35 +532,25 @@
 Undocumented internal function\n\
 @end deftypefn")
 {
-  octave_value retval;
-
   int nargin = args.length ();
-  std::string host;
-  std::string user = "anonymous";
-  std::string passwd = "";
 
   if (nargin < 1 || nargin > 3)
-    {
-      print_usage ();
-      return retval;
-    }
-  else
-    {
-      host = args(0).xstring_value ("__ftp__: HOST must be a string");
+    print_usage ();
+
+  std::string host = args(0).xstring_value ("__ftp__: HOST must be a string");
 
-      if (nargin > 1)
-        user = args(1).xstring_value ("__ftp__: USER must be a string");
+  std::string user = (nargin > 1)
+    ? args(1).xstring_value ("__ftp__: USER must be a string")
+    : std::string ("anonymous");
 
-      if (nargin > 2)
-        passwd = args(2).xstring_value ("__ftp__: PASSWD must be a string");
+  std::string passwd = (nargin > 2)
+    ? args(2).xstring_value ("__ftp__: PASSWD must be a string")
+    : std::string ();
 
-      curl_handle ch
-        = ch_manager::make_curl_handle (host, user, passwd, octave_stdout);
+  curl_handle ch
+    = ch_manager::make_curl_handle (host, user, passwd, octave_stdout);
 
-      retval = ch.value ();
-    }
-
-  return retval;
+  return octave_value (ch.value ());
 }
 
 DEFUN (__ftp_pwd__, args, ,
--- a/libinterp/corefcn/variables.cc	Thu Dec 03 15:07:01 2015 -0500
+++ b/libinterp/corefcn/variables.cc	Thu Dec 03 16:40:05 2015 -0500
@@ -331,10 +331,7 @@
   int nargin = args.length ();
 
   if (nargin != 1)
-    {
-      print_usage ();
-      return retval;
-    }
+    print_usage ();
 
   if (! args(0).is_string ())
     {
@@ -595,24 +592,22 @@
 
   int nargin = args.length ();
 
-  if (nargin == 1 || nargin == 2)
+  if (nargin < 1 || nargin > 2)
+    print_usage ();
+
+  std::string name = args(0).xstring_value ("exist: NAME must be a string");
+
+  if (nargin == 2)
     {
-      std::string name = args(0).xstring_value ("exist: NAME must be a string");
-
-      if (nargin == 2)
-        {
-          std::string type = args(1).xstring_value ("exist: TYPE must be a string");
-
-          if (type == "class")
-            warning ("exist: \"class\" type argument is not implemented");
-
-          retval = symbol_exist (name, type);
-        }
-      else
-        retval = symbol_exist (name);
+      std::string type = args(1).xstring_value ("exist: TYPE must be a string");
+
+      if (type == "class")
+        warning ("exist: \"class\" type argument is not implemented");
+
+      retval = symbol_exist (name, type);
     }
   else
-    print_usage ();
+    retval = symbol_exist (name);
 
   return retval;
 }
@@ -951,6 +946,7 @@
     nchoices++;
 
   int nargin = args.length ();
+
   assert (var < nchoices);
 
   if (nargout > 0 || nargin == 0)
@@ -1846,18 +1842,14 @@
 {
   octave_value retval;
 
-  if (nargout < 2)
-    {
-      int argc = args.length () + 1;
-
-      string_vector argv = args.make_argv ("who");
-
-      retval = do_who (argc, argv, nargout == 1);
-    }
-  else
+  if (nargout > 1)
     print_usage ();
 
-  return retval;
+  int argc = args.length () + 1;
+
+  string_vector argv = args.make_argv ("who");
+
+  return do_who (argc, argv, nargout == 1);
 }
 
 DEFUN (whos, args, nargout,
@@ -1926,18 +1918,14 @@
 {
   octave_value retval;
 
-  if (nargout < 2)
-    {
-      int argc = args.length () + 1;
-
-      string_vector argv = args.make_argv ("whos");
-
-      retval = do_who (argc, argv, nargout == 1, true);
-    }
-  else
+  if (nargout > 1)
     print_usage ();
 
-  return retval;
+  int argc = args.length () + 1;
+
+  string_vector argv = args.make_argv ("whos");
+
+  return do_who (argc, argv, nargout == 1, true);
 }
 
 // Defining variables.
@@ -2028,17 +2016,15 @@
 {
   octave_value_list retval;
 
-  if (args.length () == 0)
-    {
-      octave_function *fcn = octave_call_stack::caller ();
-
-      if (fcn)
-        fcn->lock ();
-      else
-        error ("mlock: invalid use outside a function");
-    }
+  if (args.length () != 0)
+    print_usage ();
+
+  octave_function *fcn = octave_call_stack::caller ();
+
+  if (fcn)
+    fcn->lock ();
   else
-    print_usage ();
+    error ("mlock: invalid use outside a function");
 
   return retval;
 }
@@ -2055,13 +2041,18 @@
 {
   octave_value_list retval;
 
-  if (args.length () == 1)
+  int nargin = args.length ();
+
+  if (nargin > 1)
+    print_usage ();
+
+  if (nargin == 1)
     {
       std::string name = args(0).xstring_value ("munlock: FCN must be a string");
 
       munlock (name);
     }
-  else if (args.length () == 0)
+  else
     {
       octave_function *fcn = octave_call_stack::caller ();
 
@@ -2070,8 +2061,6 @@
       else
         error ("munlock: invalid use outside a function");
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -2089,13 +2078,18 @@
 {
   octave_value retval;
 
-  if (args.length () == 1)
+  int nargin = args.length ();
+
+  if (nargin > 1)
+    print_usage ();
+
+  if (nargin == 1)
     {
       std::string name = args(0).xstring_value ("mislocked: FCN must be a string");
 
       retval = mislocked (name);
     }
-  else if (args.length () == 0)
+  else
     {
       octave_function *fcn = octave_call_stack::caller ();
 
@@ -2104,8 +2098,6 @@
       else
         error ("mislocked: invalid use outside a function");
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -2326,10 +2318,7 @@
   do \
     { \
       if (cond) \
-        { \
-          print_usage (); \
-          return retval; \
-        } \
+        print_usage (); \
     } \
   while (0)
 
@@ -2664,16 +2653,12 @@
 Return the value of the variable @var{name} directly from the symbol table.\n\
 @end deftypefn")
 {
-  octave_value retval;
-
   if (args.length () != 1)
     print_usage ();
 
   std::string name = args(0).xstring_value ("__varval__: first argument must be a variable name");
 
-  retval = symbol_table::varval (args(0).string_value ());
-
-  return retval;
+  return symbol_table::varval (args(0).string_value ());
 }
 
 static std::string Vmissing_component_hook;