MCPcopy
hub / github.com/syncthing/syncthing / tarGz

Function tarGz

build.go:1167–1219  ·  view source on GitHub ↗
(out string, files []archiveFile)

Source from the content-addressed store, hash-verified

1165}
1166
1167func tarGz(out string, files []archiveFile) {
1168 fd, err := os.Create(out)
1169 if err != nil {
1170 log.Fatal(err)
1171 }
1172
1173 gw, err := gzip.NewWriterLevel(fd, gzip.BestCompression)
1174 if err != nil {
1175 log.Fatal(err)
1176 }
1177 tw := tar.NewWriter(gw)
1178
1179 for _, f := range files {
1180 sf, err := os.Open(f.src)
1181 if err != nil {
1182 log.Fatal(err)
1183 }
1184
1185 info, err := sf.Stat()
1186 if err != nil {
1187 log.Fatal(err)
1188 }
1189 h := &tar.Header{
1190 Name: f.dst,
1191 Size: info.Size(),
1192 Mode: int64(info.Mode()),
1193 ModTime: info.ModTime(),
1194 }
1195
1196 err = tw.WriteHeader(h)
1197 if err != nil {
1198 log.Fatal(err)
1199 }
1200 _, err = io.Copy(tw, sf)
1201 if err != nil {
1202 log.Fatal(err)
1203 }
1204 sf.Close()
1205 }
1206
1207 err = tw.Close()
1208 if err != nil {
1209 log.Fatal(err)
1210 }
1211 err = gw.Close()
1212 if err != nil {
1213 log.Fatal(err)
1214 }
1215 err = fd.Close()
1216 if err != nil {
1217 log.Fatal(err)
1218 }
1219}
1220
1221func zipFile(out string, files []archiveFile) {
1222 fd, err := os.Create(out)

Callers 1

buildTarFunction · 0.85

Calls 10

FatalMethod · 0.80
CreateMethod · 0.65
OpenMethod · 0.65
StatMethod · 0.65
SizeMethod · 0.65
ModeMethod · 0.65
ModTimeMethod · 0.65
CloseMethod · 0.65
WriteHeaderMethod · 0.45
CopyMethod · 0.45

Tested by

no test coverage detected