private static void Reinitialize(RubyFile/*!*/ file, MutableString/*!*/ path, IOInfo info, int permission) { var strPath = file.Context.DecodePath(path); var stream = RubyFile.OpenFileStream(file.Context, strPath, info.Mode); file.Path = strPath; file.Mode = info.Mode; file.SetStream(stream); file.SetFileDescriptor(file.Context.AllocateFileDescriptor(stream)); if (info.HasEncoding) { file.ExternalEncoding = info.ExternalEncoding; file.InternalEncoding = info.InternalEncoding; } }
public static RubyFile/*!*/ Reinitialize(RubyFile/*!*/ self, [DefaultProtocol, NotNull]Union<int, MutableString> descriptorOrPath, int mode, [Optional]int permission) { // TODO: remove duplicity (constructors vs initializers) if (descriptorOrPath.IsFixnum()) { RubyIOOps.Reinitialize(self, descriptorOrPath.Fixnum(), mode); } else { var path = self.Context.DecodePath(descriptorOrPath.Second); var stream = RubyFile.OpenFileStream(self.Context, path, (IOMode)mode); self.Path = path; self.Mode = (IOMode)mode; self.SetStream(stream); self.SetFileDescriptor(self.Context.AllocateFileDescriptor(stream)); } // TODO: permission return self; }