Skip to content

Commit b4d3577

Browse files
committed
Modernised package
1 parent 925f952 commit b4d3577

File tree

17 files changed

+131
-261
lines changed

17 files changed

+131
-261
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
This file was deleted.

.travis.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
language: go
22

33
go:
4-
- 1.4.3
5-
- 1.5.4
6-
- 1.6.4
7-
- 1.7.6
8-
- 1.8.3
9-
10-
script: make check
4+
- 1.17
5+
- 1.16
6+
- 1.15
7+
- 1.14
8+
- 1.13
9+
- 1.12
10+
- 1.11

Makefile

Lines changed: 0 additions & 18 deletions
This file was deleted.

README.md

Lines changed: 4 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,9 @@
1-
# go-cpio [![GoDoc](https://godoc.org/github.com/cavaliercoder/go-cpio?status.svg)](https://godoc.org/github.com/cavaliercoder/go-cpio) [![Build Status](https://travis-ci.org/cavaliercoder/go-cpio.svg?branch=master)](https://travis-ci.org/cavaliercoder/go-cpio) [![Go Report Card](https://goreportcard.com/badge/github.com/cavaliercoder/go-cpio)](https://goreportcard.com/report/github.com/cavaliercoder/go-cpio)
1+
# cpio
2+
[![Go Reference](https://pkg.go.dev/badge/github.com/cavaliergopher/cpio.svg)](https://pkg.go.dev/github.com/cavaliergopher/cpio) [![Build Status](https://app.travis-ci.com/cavaliergopher/cpio.svg?branch=main)](https://app.travis-ci.com/cavaliergopher/cpio) [![Go Report Card](https://goreportcard.com/badge/github.com/cavaliergopher/cpio)](https://goreportcard.com/report/github.com/cavaliergopher/cpio)
23

3-
This package provides a Go native implementation of the CPIO archive file
4-
format.
4+
Package cpio provides readers and writers for the CPIO archive file format.
55

66
Currently, only the SVR4 (New ASCII) format is supported, both with and without
77
checksums.
88

9-
```go
10-
// Create a buffer to write our archive to.
11-
buf := new(bytes.Buffer)
12-
13-
// Create a new cpio archive.
14-
w := cpio.NewWriter(buf)
15-
16-
// Add some files to the archive.
17-
var files = []struct {
18-
Name, Body string
19-
}{
20-
{"readme.txt", "This archive contains some text files."},
21-
{"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"},
22-
{"todo.txt", "Get animal handling license."},
23-
}
24-
for _, file := range files {
25-
hdr := &cpio.Header{
26-
Name: file.Name,
27-
Mode: 0600,
28-
Size: int64(len(file.Body)),
29-
}
30-
if err := w.WriteHeader(hdr); err != nil {
31-
log.Fatalln(err)
32-
}
33-
if _, err := w.Write([]byte(file.Body)); err != nil {
34-
log.Fatalln(err)
35-
}
36-
}
37-
// Make sure to check the error on Close.
38-
if err := w.Close(); err != nil {
39-
log.Fatalln(err)
40-
}
41-
42-
// Open the cpio archive for reading.
43-
b := bytes.NewReader(buf.Bytes())
44-
r := cpio.NewReader(b)
45-
46-
// Iterate through the files in the archive.
47-
for {
48-
hdr, err := r.Next()
49-
if err == io.EOF {
50-
// end of cpio archive
51-
break
52-
}
53-
if err != nil {
54-
log.Fatalln(err)
55-
}
56-
fmt.Printf("Contents of %s:\n", hdr.Name)
57-
if _, err := io.Copy(os.Stdout, r); err != nil {
58-
log.Fatalln(err)
59-
}
60-
fmt.Println()
61-
}
62-
```
9+
Copyright 2021, Ryan Armstrong <[email protected]>

cpio.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

doc.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
Package cpio providers readers and writers for CPIO archives. Currently, only
3+
the SVR4 (New ASCII) format is supported, both with and without checksums.
4+
5+
This package aims to be feel like Go's archive/tar package.
6+
7+
See the [CPIO man page](https://www.freebsd.org/cgi/man.cgi?query=cpio&sektion=5).
8+
*/
9+
package cpio

example_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"log"
88
"os"
99

10-
"github.com/cavaliercoder/go-cpio"
10+
"github.com/cavaliergopher/cpio"
1111
)
1212

1313
func Example() {
@@ -38,14 +38,14 @@ func Example() {
3838
log.Fatalln(err)
3939
}
4040
}
41+
4142
// Make sure to check the error on Close.
4243
if err := w.Close(); err != nil {
4344
log.Fatalln(err)
4445
}
4546

4647
// Open the cpio archive for reading.
47-
b := bytes.NewReader(buf.Bytes())
48-
r := cpio.NewReader(b)
48+
r := cpio.NewReader(buf)
4949

5050
// Iterate through the files in the archive.
5151
for {

fileinfo.go

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,70 +6,53 @@ import (
66
"time"
77
)
88

9-
// headerFileInfo implements os.FileInfo.
10-
type headerFileInfo struct {
9+
// fileInfo implements fs.FileInfo.
10+
type fileInfo struct {
1111
h *Header
1212
}
1313

1414
// Name returns the base name of the file.
15-
func (fi headerFileInfo) Name() string {
15+
func (fi fileInfo) Name() string {
1616
if fi.IsDir() {
1717
return path.Base(path.Clean(fi.h.Name))
1818
}
1919
return path.Base(fi.h.Name)
2020
}
2121

22-
func (fi headerFileInfo) Size() int64 { return fi.h.Size }
23-
func (fi headerFileInfo) IsDir() bool { return fi.Mode().IsDir() }
24-
func (fi headerFileInfo) ModTime() time.Time { return fi.h.ModTime }
25-
func (fi headerFileInfo) Sys() interface{} { return fi.h }
22+
func (fi fileInfo) Size() int64 { return fi.h.Size }
23+
func (fi fileInfo) IsDir() bool { return fi.Mode().IsDir() }
24+
func (fi fileInfo) ModTime() time.Time { return fi.h.ModTime }
25+
func (fi fileInfo) Sys() interface{} { return fi.h }
2626

27-
func (fi headerFileInfo) Mode() (mode os.FileMode) {
28-
// Set file permission bits.
27+
func (fi fileInfo) Mode() (mode os.FileMode) {
2928
mode = os.FileMode(fi.h.Mode).Perm()
30-
31-
// Set setuid, setgid and sticky bits.
3229
if fi.h.Mode&ModeSetuid != 0 {
33-
// setuid
3430
mode |= os.ModeSetuid
3531
}
3632
if fi.h.Mode&ModeSetgid != 0 {
37-
// setgid
3833
mode |= os.ModeSetgid
3934
}
4035
if fi.h.Mode&ModeSticky != 0 {
41-
// sticky
4236
mode |= os.ModeSticky
4337
}
44-
45-
// Set file mode bits.
46-
// clear perm, setuid, setgid and sticky bits.
47-
m := os.FileMode(fi.h.Mode) & 0170000
38+
m := os.FileMode(fi.h.Mode) & ModeType
4839
if m == ModeDir {
49-
// directory
5040
mode |= os.ModeDir
5141
}
5242
if m == ModeNamedPipe {
53-
// named pipe (FIFO)
5443
mode |= os.ModeNamedPipe
5544
}
5645
if m == ModeSymlink {
57-
// symbolic link
5846
mode |= os.ModeSymlink
5947
}
6048
if m == ModeDevice {
61-
// device file
6249
mode |= os.ModeDevice
6350
}
6451
if m == ModeCharDevice {
65-
// Unix character device
66-
mode |= os.ModeDevice
67-
mode |= os.ModeCharDevice
52+
mode |= os.ModeDevice | os.ModeCharDevice
6853
}
6954
if m == ModeSocket {
70-
// Unix domain socket
7155
mode |= os.ModeSocket
7256
}
73-
7457
return mode
7558
}

fuzz.go

Lines changed: 0 additions & 35 deletions
This file was deleted.

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/cavaliergopher/cpio
2+
3+
go 1.17

0 commit comments

Comments
 (0)