public void NameTarHeader(Grepton.Helpers.ZipLib.TarHeader hdr, string name) { bool flag = name.EndsWith("/"); hdr.checkSum = 0; hdr.devMajor = 0; hdr.devMinor = 0; hdr.name = new StringBuilder(name); hdr.mode = flag ? 0x9f33 : 0x18924; hdr.userId = 0; hdr.groupId = 0; hdr.size = 0; hdr.checkSum = 0; hdr.modTime = DateTime.Now; hdr.linkFlag = flag ? Grepton.Helpers.ZipLib.TarHeader.LF_DIR : Grepton.Helpers.ZipLib.TarHeader.LF_NORMAL; hdr.linkName = new StringBuilder(string.Empty); hdr.userName = new StringBuilder(string.Empty); hdr.groupName = new StringBuilder(string.Empty); hdr.devMajor = 0; hdr.devMinor = 0; }
public void ParseTarHeader(Grepton.Helpers.ZipLib.TarHeader hdr, byte[] header) { int offset = 0; hdr.name = Grepton.Helpers.ZipLib.TarHeader.ParseName(header, offset, Grepton.Helpers.ZipLib.TarHeader.NAMELEN); offset += Grepton.Helpers.ZipLib.TarHeader.NAMELEN; hdr.mode = (int) Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.MODELEN); offset += Grepton.Helpers.ZipLib.TarHeader.MODELEN; hdr.userId = (int) Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.UIDLEN); offset += Grepton.Helpers.ZipLib.TarHeader.UIDLEN; hdr.groupId = (int) Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.GIDLEN); offset += Grepton.Helpers.ZipLib.TarHeader.GIDLEN; hdr.size = Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.SIZELEN); offset += Grepton.Helpers.ZipLib.TarHeader.SIZELEN; hdr.modTime = GetDateTimeFromCTime(Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.MODTIMELEN)); offset += Grepton.Helpers.ZipLib.TarHeader.MODTIMELEN; hdr.checkSum = (int) Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.CHKSUMLEN); offset += Grepton.Helpers.ZipLib.TarHeader.CHKSUMLEN; hdr.linkFlag = header[offset++]; hdr.linkName = Grepton.Helpers.ZipLib.TarHeader.ParseName(header, offset, Grepton.Helpers.ZipLib.TarHeader.NAMELEN); offset += Grepton.Helpers.ZipLib.TarHeader.NAMELEN; hdr.magic = Grepton.Helpers.ZipLib.TarHeader.ParseName(header, offset, Grepton.Helpers.ZipLib.TarHeader.MAGICLEN); offset += Grepton.Helpers.ZipLib.TarHeader.MAGICLEN; hdr.userName = Grepton.Helpers.ZipLib.TarHeader.ParseName(header, offset, Grepton.Helpers.ZipLib.TarHeader.UNAMELEN); offset += Grepton.Helpers.ZipLib.TarHeader.UNAMELEN; hdr.groupName = Grepton.Helpers.ZipLib.TarHeader.ParseName(header, offset, Grepton.Helpers.ZipLib.TarHeader.GNAMELEN); offset += Grepton.Helpers.ZipLib.TarHeader.GNAMELEN; hdr.devMajor = (int) Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.DEVLEN); offset += Grepton.Helpers.ZipLib.TarHeader.DEVLEN; hdr.devMinor = (int) Grepton.Helpers.ZipLib.TarHeader.ParseOctal(header, offset, Grepton.Helpers.ZipLib.TarHeader.DEVLEN); }
public void GetFileTarHeader(Grepton.Helpers.ZipLib.TarHeader hdr, string file) { this.file = file; string directoryName = Path.GetDirectoryName(file); if ((Path.DirectorySeparatorChar == '\\') && (directoryName.Length > 2)) { char c = directoryName[0]; char ch2 = directoryName[1]; if ((ch2 == ':') && char.IsLetter(c)) { directoryName = directoryName.Substring(2); } } directoryName = directoryName.Replace(Path.DirectorySeparatorChar, '/'); while (directoryName.StartsWith("/")) { directoryName = directoryName.Substring(1); } hdr.linkName = new StringBuilder(string.Empty); hdr.name = new StringBuilder(directoryName); if (Directory.Exists(file)) { hdr.mode = 0x9f33; hdr.linkFlag = Grepton.Helpers.ZipLib.TarHeader.LF_DIR; if (hdr.name[hdr.name.Length - 1] != '/') { hdr.name.Append("/"); } hdr.size = 0; } else { hdr.mode = 0x18924; hdr.linkFlag = Grepton.Helpers.ZipLib.TarHeader.LF_NORMAL; Console.WriteLine(file.Replace('/', Path.DirectorySeparatorChar)); hdr.size = new FileInfo(file.Replace('/', Path.DirectorySeparatorChar)).Length; } hdr.modTime = System.IO.File.GetLastAccessTime(file.Replace('/', Path.DirectorySeparatorChar)); hdr.checkSum = 0; hdr.devMajor = 0; hdr.devMinor = 0; }