示例#1
0
        static void EnsureDirectories(string name, ICollection <string> dirs, TarOutputStream tar)
        {
            var root  = Path.GetDirectoryName(name);
            var parts = root.Split(Path.DirectorySeparatorChar);
            var path  = new StringBuilder();

            for (var i = 0; i < parts.Length; i++)
            {
                var part = parts[i];
                if (string.IsNullOrWhiteSpace(part))
                {
                    continue;
                }
                if (i != 0)
                {
                    path.Append(Path.DirectorySeparatorChar);
                }
                path.Append(part);
                var current = path.ToString() + Path.DirectorySeparatorChar;
                if (dirs.Contains(current))
                {
                    continue;
                }
                dirs.Add(current);
                var entry  = TarEntry.CreateTarEntry(FixSlash(current));
                var header = entry.TarHeader;
                TarEntry.NameTarHeader(header, FixSlash(current));
                header.GroupName = "root";
                header.UserName  = "******";
                header.Mode      = GetPermissions(entry.Name, false);
                tar.PutNextEntry(entry);
                tar.CloseEntry();
            }
        }