diff src/oct-stream.cc @ 2341:6ee55c0f25a9

[project @ 1996-07-24 10:33:09 by jwe]
author jwe
date Wed, 24 Jul 1996 10:33:10 +0000
parents 8c09c04f7747
children 3be97fe02051
line wrap: on
line diff
--- a/src/oct-stream.cc
+++ b/src/oct-stream.cc
@@ -2025,27 +2025,37 @@
 
   if (! conv_err)
     {
-      int xorigin = convert_to_valid_int (tc_origin, conv_err);
-
       ios::seek_dir origin = ios::beg;
 
-      // XXX FIXME XXX -- matlab allows origin to be:
-      //
-      //  "bof" or -1  ==  ios::beg
-      //  "cof" or  0  ==  ios::cur
-      //  "eof" or  1  ==  ios::end
-
-      if (! conv_err)
+      if (tc_origin.is_string ())
 	{
-	  if (xorigin == 0)
+	  string xorigin = tc_origin.string_value ();
+
+	  if (xorigin == "bof")
 	    origin = ios::beg;
-	  else if (xorigin == 1)
+	  else if (xorigin == "cof")
 	    origin = ios::cur;
-	  else if (xorigin == 2)
+	  else if (xorigin == "eof")
 	    origin = ios::end;
 	  else
 	    conv_err = -1;
 	}
+      else
+	{
+	  int xorigin = convert_to_valid_int (tc_origin, conv_err);
+
+	  if (! conv_err)
+	    {
+	      if (xorigin == -1)
+		origin = ios::beg;
+	      else if (xorigin == 0)
+		origin = ios::cur;
+	      else if (xorigin == 1)
+		origin = ios::end;
+	      else
+		conv_err = -1;
+	    }
+	}
 
       if (! conv_err)
 	retval = seek (xoffset, origin);