Beispiel #1
0
 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;
 }
Beispiel #2
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);
 }
Beispiel #3
0
 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;
 }