private static void Seek(RubyIO /*!*/ self, long pos, int seekOrigin)
{
if (seekOrigin < 0 || seekOrigin > 2)
{
throw RubyExceptions.CreateArgumentError("Invalid argument");
}
if (self.IsConsoleDescriptor())
{
throw new Errno.BadFileDescriptorError();
}
// TODO: make sure we assert stream is not actually closed
if (self.Closed)
{
throw RubyExceptions.CreateArgumentError("trying to seek on a non-existent stream?");
}
SeekOrigin origin = SeekOrigin.Current;
if (seekOrigin == SEEK_SET)
{
origin = SeekOrigin.Begin;
}
else if (seekOrigin == SEEK_END)
{
origin = SeekOrigin.End;
}
self.Seek(pos, origin);
}