comparison src/ut/lu/lu.go @ 17:72ce457fb99d

ut: bug fix.
author pyon@macmini
date Wed, 20 Jun 2018 06:01:58 +0900
parents 38b64afbaf79
children 45ca03520eea
comparison
equal deleted inserted replaced
16:38b64afbaf79 17:72ce457fb99d
79 fmt.Printf( "%s:\t%5d\n", file, cnt ) 79 fmt.Printf( "%s:\t%5d\n", file, cnt )
80 } 80 }
81 } 81 }
82 } 82 }
83 83
84 /* tar cvfz: done. */
85 func Tgz( tgzfile string, files []string ) {
86
87 tgz, err := os.Create( tgzfile )
88 if err != nil {
89 log.Fatal( err )
90 }
91 defer tgz.Close()
92
93 gw := gzip.NewWriter( tgz )
94 defer gw.Close()
95 tw := tar.NewWriter( gw )
96 defer tw.Close()
97
98 for _, file := range fullpath( files ) {
99 f, err := os.Open( file )
100 if err != nil {
101 log.Fatal( err )
102 }
103
104 stat, _ := f.Stat()
105 header := new( tar.Header )
106 header.Name = file
107 header.Size = stat.Size()
108 header.Mode = int64( stat.Mode() )
109 header.ModTime = stat.ModTime()
110
111 if err := tw.WriteHeader( header ); err != nil {
112 log.Fatal( err )
113 }
114 if _, err := io.Copy( tw, f ); err != nil {
115 log.Fatal( err )
116 }
117 f.Close()
118 }
119 }
120
84 /* tar xvfz: done. */ 121 /* tar xvfz: done. */
85 func UnTgz( files []string ) { 122 func UnTgz( files []string ) {
86 123
87 for _, file := range files { 124 for _, file := range files {
88 125
126 163
127 if err := zr.Close(); err != nil { 164 if err := zr.Close(); err != nil {
128 log.Fatal( err ) 165 log.Fatal( err )
129 } 166 }
130 } 167 }
131 168 }
169
170 func fullpath( files []string ) []string {
171 var buf []string
172 for _, f := range files {
173 fi, _ := os.Stat( f )
174 if fi.IsDir() {
175 filepath.Walk( f, func( path string, info os.FileInfo, err error ) error {
176 if !info.IsDir() {
177 buf = append( buf, path )
178 }
179 return nil
180 } )
181 } else {
182 buf = append( buf, f )
183 }
184 }
185 return buf
132 } 186 }
133 187
134 /* tac: done. */ 188 /* tac: done. */
135 func Reverse( files []string ) { 189 func Reverse( files []string ) {
136 var buf []string 190 var buf []string