Reads VSS data types from a byte buffer.
Пример #1
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            prevProjectOffset = reader.ReadInt32();
            projectFile = reader.ReadString(12);
        }
Пример #2
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            prevBranchOffset = reader.ReadInt32();
            branchFile = reader.ReadString(12);
        }
Пример #3
0
 public override void Read(BufferReader reader, RecordHeader header)
 {
     base.Read(reader, header);
     
     kindCount = reader.ReadInt16();
     reader.Skip(2); // unknown
     kinds = new NameKind[kindCount];
     names = new string[kindCount];
     var baseOffset = reader.Offset + (kindCount * 4);
     for (int i = 0; i < kindCount; ++i)
     {
         kinds[i] = (NameKind)reader.ReadInt16();
         var nameOffset = reader.ReadInt16();
         var saveOffset = reader.Offset;
         try
         {
             reader.Offset = baseOffset + nameOffset;
             names[i] = reader.ReadString(reader.Remaining);
         }
         finally
         {
             reader.Offset = saveOffset;
         }
     }
 }
Пример #4
0
 public void Read(BufferReader reader)
 {
     offset = reader.Offset;
     length = reader.ReadInt32();
     signature = reader.ReadSignature(2);
     fileCrc = (ushort)reader.ReadInt16();
     actualCrc = reader.Crc16(length);
 }
Пример #5
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            reader.Skip(16); // reserved; always 0
            eofOffset = reader.ReadInt32();
            // remaining reserved; always 0
        }
Пример #6
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            parentProject = reader.ReadString(260);
            parentFile = reader.ReadString(8);
            reader.Skip(4); // reserved; always 0
            totalItems = reader.ReadInt16();
            subprojects = reader.ReadInt16();
        }
Пример #7
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            itemType = (ItemType)reader.ReadInt16();
            flags = (ProjectEntryFlags)reader.ReadInt16();
            name = reader.ReadName();
            pinnedVersion = reader.ReadInt16();
            physical = reader.ReadString(10);
        }
Пример #8
0
 public void Read(BufferReader reader)
 {
     command = (DeltaCommand)reader.ReadInt16();
     reader.Skip(2); // unknown
     offset = reader.ReadInt32();
     length = reader.ReadInt32();
     if (command == DeltaCommand.WriteLog)
     {
         data = reader.GetBytes(length);
     }
 }
Пример #9
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            for (; ; )
            {
                DeltaOperation operation = new DeltaOperation();
                operation.Read(reader);
                if (operation.Command == DeltaCommand.Stop) break;
                operations.AddLast(operation);
            }
        }
Пример #10
0
 public static Action PeekAction(BufferReader reader)
 {
     int saveOffset = reader.Offset;
     try
     {
         reader.Skip(4);
         return (Action)reader.ReadInt16();
     }
     finally
     {
         reader.Offset = saveOffset;
     }
 }
Пример #11
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            itemType = (ItemType)reader.ReadInt16();
            revisions = reader.ReadInt16();
            name = reader.ReadName();
            firstRevision = reader.ReadInt16();
            dataExt = reader.ReadString(2);
            firstRevOffset = reader.ReadInt32();
            lastRevOffset = reader.ReadInt32();
            eofOffset = reader.ReadInt32();
            rightsOffset = reader.ReadInt32();
            reader.Skip(16); // reserved; always 0
        }
Пример #12
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            user               = reader.ReadString(32);
            dateTime           = reader.ReadDateTime();
            workingDir         = reader.ReadString(260);
            machine            = reader.ReadString(32);
            project            = reader.ReadString(260);
            comment            = reader.ReadString(64);
            revision           = reader.ReadInt16();
            flags              = reader.ReadInt16();
            exclusive          = (flags & 0x40) != 0;
            prevCheckoutOffset = reader.ReadInt32();
            thisCheckoutOffset = reader.ReadInt32();
            checkouts          = reader.ReadInt32();
        }
Пример #13
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            user = reader.ReadString(32);
            dateTime = reader.ReadDateTime();
            workingDir = reader.ReadString(260);
            machine = reader.ReadString(32);
            project = reader.ReadString(260);
            comment = reader.ReadString(64);
            revision = reader.ReadInt16();
            flags = reader.ReadInt16();
            exclusive = (flags & 0x40) != 0;
            prevCheckoutOffset = reader.ReadInt32();
            thisCheckoutOffset = reader.ReadInt32();
            checkouts = reader.ReadInt32();
        }
Пример #14
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            User               = reader.ReadString(32);
            DateTime           = reader.ReadDateTime();
            WorkingDir         = reader.ReadString(260);
            Machine            = reader.ReadString(32);
            Project            = reader.ReadString(260);
            Comment            = reader.ReadString(64);
            Revision           = reader.ReadInt16();
            Flags              = reader.ReadInt16();
            Exclusive          = (Flags & 0x40) != 0;
            PrevCheckoutOffset = reader.ReadInt32();
            ThisCheckoutOffset = reader.ReadInt32();
            Checkouts          = reader.ReadInt32();
        }
Пример #15
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            itemType      = (ItemType)reader.ReadInt16();
            revisions     = reader.ReadInt16();
            name          = reader.ReadName();
            firstRevision = reader.ReadInt16();
            dataExt       = reader.ReadString(2);
            if (Type.GetType("Mono.Runtime") != null)
            {
                dataExt = dataExt.ToLower();
            }
            firstRevOffset = reader.ReadInt32();
            lastRevOffset  = reader.ReadInt32();
            eofOffset      = reader.ReadInt32();
            rightsOffset   = reader.ReadInt32();
            reader.Skip(16); // reserved; always 0
        }
Пример #16
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            Flags      = (FileFlags)reader.ReadInt16();
            BranchFile = reader.ReadString(8);
            reader.Skip(2); // reserved; always 0
            BranchOffset        = reader.ReadInt32();
            ProjectOffset       = reader.ReadInt32();
            BranchCount         = reader.ReadInt16();
            ProjectCount        = reader.ReadInt16();
            FirstCheckoutOffset = reader.ReadInt32();
            LastCheckoutOffset  = reader.ReadInt32();
            DataCrc             = (uint)reader.ReadInt32();
            reader.Skip(8); // reserved; always 0
            LastRevDateTime      = reader.ReadDateTime();
            ModificationDateTime = reader.ReadDateTime();
            CreationDateTime     = reader.ReadDateTime();
            // remaining appears to be trash
        }
Пример #17
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            flags = (FileFlags)reader.ReadInt16();
            branchFile = reader.ReadString(8);
            reader.Skip(2); // reserved; always 0
            branchOffset = reader.ReadInt32();
            projectOffset = reader.ReadInt32();
            branchCount = reader.ReadInt16();
            projectCount = reader.ReadInt16();
            firstCheckoutOffset = reader.ReadInt32();
            lastCheckoutOffset = reader.ReadInt32();
            dataCrc = (uint)reader.ReadInt32();
            reader.Skip(8); // reserved; always 0
            lastRevDateTime = reader.ReadDateTime();
            modificationDateTime = reader.ReadDateTime();
            creationDateTime = reader.ReadDateTime();
            // remaining appears to be trash
        }
Пример #18
0
        protected T GetRecord <T>(
            CreateRecordCallback <T> creationCallback,
            bool ignoreUnknown)
            where T : VssRecord
        {
            try
            {
                RecordHeader recordHeader = new RecordHeader();
                recordHeader.Read(reader);

                BufferReader recordReader = reader.Extract(recordHeader.Length);

                // comment records always seem to have a zero CRC
                if (recordHeader.Signature != CommentRecord.SIGNATURE)
                {
                    recordHeader.CheckCrc();
                }

                T record = creationCallback(recordHeader, recordReader);
                if (record != null)
                {
                    // double-check that the object signature matches the file
                    recordHeader.CheckSignature(record.Signature);
                    record.Read(recordReader, recordHeader);
                }
                else if (!ignoreUnknown)
                {
                    throw new UnrecognizedRecordException(recordHeader,
                                                          string.Format("Unrecognized record signature {0} in item file",
                                                                        recordHeader.Signature));
                }
                return(record);
            }
            catch (EndOfBufferException e)
            {
                throw new RecordTruncatedException(e.Message);
            }
        }
Пример #19
0
        public void ReadRecord(VssRecord record)
        {
            try
            {
                RecordHeader recordHeader = new RecordHeader();
                recordHeader.Read(reader);

                BufferReader recordReader = reader.Extract(recordHeader.Length);

                // comment records always seem to have a zero CRC
                if (recordHeader.Signature != CommentRecord.SIGNATURE)
                {
                    recordHeader.CheckCrc();
                }

                recordHeader.CheckSignature(record.Signature);

                record.Read(recordReader, recordHeader);
            }
            catch (EndOfBufferException e)
            {
                throw new RecordTruncatedException(e.Message);
            }
        }
Пример #20
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            name = reader.ReadName();
            unkShort = reader.ReadInt16(); // 0 or 1
            physical = reader.ReadString(10);
        }
Пример #21
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            name = reader.ReadName();
            physical = reader.ReadString(10);
            reader.Skip(2); // 0?
            archivePath = reader.ReadString(260);
            reader.Skip(4); // ?
        }
Пример #22
0
        private static RevisionRecord CreateRevisionRecord(
            RecordHeader recordHeader, BufferReader recordReader)
        {
            if (recordHeader.Signature != RevisionRecord.SIGNATURE)
            {
                return(null);
            }

            RevisionRecord record;
            var            action = RevisionRecord.PeekAction(recordReader);

            switch (action)
            {
            case Action.Label:
                record = new RevisionRecord();
                break;

            case Action.DestroyProject:
            case Action.DestroyFile:
                record = new DestroyRevisionRecord();
                break;

            case Action.RenameProject:
            case Action.RenameFile:
                record = new RenameRevisionRecord();
                break;

            case Action.MoveFrom:
            case Action.MoveTo:
                record = new MoveRevisionRecord();
                break;

            case Action.ShareFile:
                record = new ShareRevisionRecord();
                break;

            case Action.BranchFile:
            case Action.CreateBranch:
                record = new BranchRevisionRecord();
                break;

            case Action.EditFile:
                record = new EditRevisionRecord();
                break;

            case Action.ArchiveProject:
            case Action.RestoreProject:
            case Action.RestoreFile:
                record = new ArchiveRevisionRecord();
                break;

            case Action.CreateProject:
            case Action.AddProject:
            case Action.AddFile:
            case Action.DeleteProject:
            case Action.DeleteFile:
            case Action.RecoverProject:
            case Action.RecoverFile:
            case Action.CreateFile:
            default:
                record = new CommonRevisionRecord();
                break;
            }
            return(record);
        }
Пример #23
0
 public virtual void Read(BufferReader reader, RecordHeader header)
 {
     this.header = header;
 }
Пример #24
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            itemType = (ItemType)reader.ReadInt16();
            revisions = reader.ReadInt16();
            name = reader.ReadName();
            firstRevision = reader.ReadInt16();
            dataExt = reader.ReadString(2);
            if (Type.GetType("Mono.Runtime") != null)
            {
                dataExt = dataExt.ToLower();
            }
            firstRevOffset = reader.ReadInt32();
            lastRevOffset = reader.ReadInt32();
            eofOffset = reader.ReadInt32();
            rightsOffset = reader.ReadInt32();
            reader.Skip(16); // reserved; always 0
        }
Пример #25
0
 public virtual void Read(BufferReader reader, RecordHeader header)
 {
     this.header = header;
 }
Пример #26
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            comment = reader.ReadString(reader.Remaining);
        }
Пример #27
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            prevDeltaOffset = reader.ReadInt32();
            reader.Skip(4); // reserved; always 0
            projectPath = reader.ReadString(260);
        }
Пример #28
0
 public VssRecordFile(string filename, Encoding encoding)
 {
     this.Filename = filename;
     reader        = new BufferReader(encoding, ReadFile(filename));
 }
Пример #29
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            Comment = reader.ReadString(reader.Remaining);
        }
Пример #30
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            prevRevOffset = reader.ReadInt32();
            action = (Action)reader.ReadInt16();
            revision = reader.ReadInt16();
            dateTime = reader.ReadDateTime();
            user = reader.ReadString(32);
            label = reader.ReadString(32);
            commentOffset = reader.ReadInt32();
            labelCommentOffset = reader.ReadInt32();
            commentLength = reader.ReadInt16();
            labelCommentLength = reader.ReadInt16();
        }
Пример #31
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            name = reader.ReadName();
            oldName = reader.ReadName();
            physical = reader.ReadString(10);
        }
Пример #32
0
 private static VssRecord CreateRecord(
     RecordHeader recordHeader, BufferReader recordReader)
 {
     VssRecord record = null;
     switch (recordHeader.Signature)
     {
         case RevisionRecord.SIGNATURE:
             record = CreateRevisionRecord(recordHeader, recordReader);
             break;
         case CommentRecord.SIGNATURE:
             record = new CommentRecord();
             break;
         case CheckoutRecord.SIGNATURE:
             record = new CheckoutRecord();
             break;
         case ProjectRecord.SIGNATURE:
             record = new ProjectRecord();
             break;
         case BranchRecord.SIGNATURE:
             record = new BranchRecord();
             break;
         case DeltaRecord.SIGNATURE:
             record = new DeltaRecord();
             break;
     }
     return record;
 }
Пример #33
0
        public override void Read(BufferReader reader, RecordHeader header)
        {
            base.Read(reader, header);

            projectPath = reader.ReadString(260);
            name = reader.ReadName();
            unpinnedRevision = reader.ReadInt16();
            pinnedRevision = reader.ReadInt16();
            unkShort = reader.ReadInt16(); // often seems to increment
            physical = reader.ReadString(10);
        }
Пример #34
0
        private static RevisionRecord CreateRevisionRecord(
            RecordHeader recordHeader, BufferReader recordReader)
        {
            if (recordHeader.Signature != RevisionRecord.SIGNATURE)
            {
                return null;
            }

            RevisionRecord record;
            var action = RevisionRecord.PeekAction(recordReader);
            switch (action)
            {
                case Action.Label:
                    record = new RevisionRecord();
                    break;
                case Action.DestroyProject:
                case Action.DestroyFile:
                    record = new DestroyRevisionRecord();
                    break;
                case Action.RenameProject:
                case Action.RenameFile:
                    record = new RenameRevisionRecord();
                    break;
                case Action.MoveFrom:
                case Action.MoveTo:
                    record = new MoveRevisionRecord();
                    break;
                case Action.ShareFile:
                    record = new ShareRevisionRecord();
                    break;
                case Action.BranchFile:
                case Action.CreateBranch:
                    record = new BranchRevisionRecord();
                    break;
                case Action.EditFile:
                    record = new EditRevisionRecord();
                    break;
                case Action.ArchiveProject:
                case Action.RestoreProject:
                    record = new ArchiveRevisionRecord();
                    break;
                case Action.CreateProject:
                case Action.AddProject:
                case Action.AddFile:
                case Action.DeleteProject:
                case Action.DeleteFile:
                case Action.RecoverProject:
                case Action.RecoverFile:
                case Action.CreateFile:
                default:
                    record = new CommonRevisionRecord();
                    break;
            }
            return record;
        }