コード例 #1
0
ファイル: FileOps.cs プロジェクト: rpattabi/ironruby
        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;
            }
        }
コード例 #2
0
ファイル: FileOps.cs プロジェクト: BrianGenisio/ironruby
        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;
        }