From d94cc6f1d34517a86db14065fc7b8ada06829a88 Mon Sep 17 00:00:00 2001 From: h3yEllex Date: Tue, 24 Oct 2017 12:12:33 +0300 Subject: [PATCH 1/6] refactored CatFiles function --- utils.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/utils.go b/utils.go index 459bc28..9c23836 100644 --- a/utils.go +++ b/utils.go @@ -11,25 +11,26 @@ import ( "github.com/pkg/errors" ) -func CatFiles(files []string, outfile string, remove ...bool) error { +// CatFiles copies data from n files to a single one and removes source files +// if Debug mode is set to false +func CatFiles(files []string, outfile string, remove bool) error { finished, err := os.Create(outfile) - defer finished.Close() if err != nil { return errors.Wrap(err, "CatFiles create: ") } - for i := range files { - fh, err := os.Open(files[i]) + defer finished.Close() + for _, file := range files { + fh, err := os.Open(file) if err != nil { - return errors.Wrap(err, "CatFiles open "+files[i]+": ") + return errors.Wrap(err, fmt.Sprintf("CatFiles open %v: ", file)) } - + defer fh.Close() _, err = io.Copy(finished, fh) if err != nil { return errors.Wrap(err, "CatFiles copy: ") } - fh.Close() - if len(remove) > 0 && remove[0] { - os.Remove(files[i]) + if remove { + os.Remove(file) } } return nil From 3f606bb87d11f9de94c86b2307bce19e7b704681 Mon Sep 17 00:00:00 2001 From: h3yEllex Date: Tue, 24 Oct 2017 12:13:04 +0300 Subject: [PATCH 2/6] removed unnecessary if statement --- connect.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/connect.go b/connect.go index 7b64d89..1762f7f 100644 --- a/connect.go +++ b/connect.go @@ -461,10 +461,7 @@ func (c *Connection) catFile() error { for id := range files { files[id] = path.Join(c.Path, c.File.Name+".enc."+strconv.Itoa(id)) } - toRemove := true - if c.Debug { - toRemove = false - } + toRemove := !c.Debug return CatFiles(files, path.Join(c.Path, c.File.Name+".enc"), toRemove) } From 33de3066d58915596087e42914de4b53e146a848 Mon Sep 17 00:00:00 2001 From: h3yEllex Date: Tue, 24 Oct 2017 12:22:30 +0300 Subject: [PATCH 3/6] removing splited files after test --- utils_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils_test.go b/utils_test.go index df8be9b..6fb486a 100644 --- a/utils_test.go +++ b/utils_test.go @@ -1,6 +1,7 @@ package main import ( + "os" "testing" ) @@ -9,5 +10,7 @@ func TestSplitFile(t *testing.T) { if err != nil { t.Error(err) } - + os.Remove("README.md.0") + os.Remove("README.md.1") + os.Remove("README.md.2") } From 60cb509ff9c496aca56aea06158bf5600ea8b57a Mon Sep 17 00:00:00 2001 From: h3yEllex Date: Tue, 24 Oct 2017 12:56:50 +0300 Subject: [PATCH 4/6] SplitFile will not create an empty file anymore. Also files created by tests will be removed. --- utils.go | 9 ++++++--- utils_test.go | 1 - 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/utils.go b/utils.go index 9c23836..ccc5c46 100644 --- a/utils.go +++ b/utils.go @@ -36,7 +36,7 @@ func CatFiles(files []string, outfile string, remove bool) error { return nil } -// SplitFile +// SplitFile creates a bunch of smaller files with the data from source splited into them func SplitFile(fileName string, numPieces int) (err error) { file, err := os.Open(fileName) if err != nil { @@ -62,10 +62,13 @@ func SplitFile(fileName string, numPieces int) (err error) { for { n, err := file.Read(buf) out.Write(buf[:n]) - bytesRead += n - if err == io.EOF { + // If written bytes count is smaller than lenght of buffer + // then we don't create one more empty file + if err == io.EOF || n < len(buf) { break } + bytesRead += n + if bytesRead >= bytesPerPiece { // Close file and open a new one out.Close() diff --git a/utils_test.go b/utils_test.go index 6fb486a..8dcab25 100644 --- a/utils_test.go +++ b/utils_test.go @@ -12,5 +12,4 @@ func TestSplitFile(t *testing.T) { } os.Remove("README.md.0") os.Remove("README.md.1") - os.Remove("README.md.2") } From 81312a6647b3b9ad7d2c3d7c65831a9d1ef09d4b Mon Sep 17 00:00:00 2001 From: h3yEllex Date: Tue, 24 Oct 2017 13:02:55 +0300 Subject: [PATCH 5/6] Removed redunant else statement --- connect.go | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/connect.go b/connect.go index 1762f7f..7ea0ac5 100644 --- a/connect.go +++ b/connect.go @@ -422,24 +422,23 @@ func (c *Connection) runClient() error { if c.File.Hash != fileHash { return fmt.Errorf("\nUh oh! %s is corrupted! Sorry, try again.\n", c.File.Name) - } else { - if c.File.IsDir { // if the file was originally a dir - fmt.Print("decompressing folder") - log.Debug("untarring " + c.File.Name) - err := tarinator.UnTarinate(c.Path, path.Join(c.Path, c.File.Name)) + } + if c.File.IsDir { // if the file was originally a dir + fmt.Print("decompressing folder") + log.Debug("untarring " + c.File.Name) + err := tarinator.UnTarinate(c.Path, path.Join(c.Path, c.File.Name)) - if err != nil { - return err - } - // we remove the old tar.gz file - err = os.Remove(path.Join(c.Path, c.File.Name)) - if err != nil { - return err - } - fmt.Printf("\nReceived folder written to %s\n", path.Join(c.Path, c.File.Name[:len(c.File.Name)-4])) - } else { - fmt.Printf("\nReceived file written to %s\n", path.Join(c.Path, c.File.Name)) + if err != nil { + return err } + // we remove the old tar.gz file + err = os.Remove(path.Join(c.Path, c.File.Name)) + if err != nil { + return err + } + fmt.Printf("\nReceived folder written to %s\n", path.Join(c.Path, c.File.Name[:len(c.File.Name)-4])) + } else { + fmt.Printf("\nReceived file written to %s\n", path.Join(c.Path, c.File.Name)) } } From ac976a2a471fe042f92428245f84b62c78f9c6e1 Mon Sep 17 00:00:00 2001 From: h3yEllex Date: Tue, 24 Oct 2017 13:07:03 +0300 Subject: [PATCH 6/6] removed redunant else --- relay.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/relay.go b/relay.go index f5435ea..8598712 100644 --- a/relay.go +++ b/relay.go @@ -303,15 +303,14 @@ func Pipe(conn1 net.Conn, conn2 net.Conn) { case b1 := <-chan1: if b1 == nil { return - } else { - conn2.Write(b1) } + conn2.Write(b1) + case b2 := <-chan2: if b2 == nil { return - } else { - conn1.Write(b2) } + conn1.Write(b2) } } }