diff --git a/cbconvert.go b/cbconvert.go index b3c9a53..cfda7ca 100644 --- a/cbconvert.go +++ b/cbconvert.go @@ -11,6 +11,7 @@ import ( "os" "path/filepath" "strconv" + "strings" pngstructure "github.com/dsoprea/go-png-image-structure" "github.com/dustin/go-humanize" @@ -275,12 +276,13 @@ func (c *Converter) Cover(fileName string, fileInfo os.FileInfo) error { var fName string if c.Opts.Recursive { - err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Dir(fileName)), 0755) + fDir := strings.Split(filepath.Dir(fileName), string(os.PathSeparator))[1:] + err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Join(fDir...)), 0755) if err != nil { return fmt.Errorf("%s: %w", fileName, err) } - fName = filepath.Join(c.Opts.OutDir, filepath.Dir(fileName), fmt.Sprintf("%s.%s", baseNoExt(fileName), ext)) + fName = filepath.Join(c.Opts.OutDir, filepath.Join(fDir...), fmt.Sprintf("%s.%s", baseNoExt(fileName), ext)) } else { fName = filepath.Join(c.Opts.OutDir, fmt.Sprintf("%s.%s", baseNoExt(fileName), ext)) } @@ -341,12 +343,13 @@ func (c *Converter) Thumbnail(fileName string, fileInfo os.FileInfo) error { fURI = "file://" + fileName if c.Opts.Recursive { - err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Dir(fileName)), 0755) + fDir := strings.Split(filepath.Dir(fileName), string(os.PathSeparator))[1:] + err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Join(fDir...)), 0755) if err != nil { return fmt.Errorf("%s: %w", fileName, err) } - fName = filepath.Join(c.Opts.OutDir, filepath.Dir(fileName), fmt.Sprintf("%x.png", md5.Sum([]byte(fURI)))) + fName = filepath.Join(c.Opts.OutDir, filepath.Join(fDir...), fmt.Sprintf("%x.png", md5.Sum([]byte(fURI)))) } else { fName = filepath.Join(c.Opts.OutDir, fmt.Sprintf("%x.png", md5.Sum([]byte(fURI)))) } diff --git a/cbconvert_archive.go b/cbconvert_archive.go index e100a70..6ae30ce 100644 --- a/cbconvert_archive.go +++ b/cbconvert_archive.go @@ -7,6 +7,7 @@ import ( "io" "os" "path/filepath" + "strings" "github.com/gen2brain/go-unarr" ) @@ -30,12 +31,13 @@ func (c *Converter) archiveSaveZip(fileName string) error { var zipName string if c.Opts.Recursive { - err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Dir(fileName)), 0755) + fDir := strings.Split(filepath.Dir(fileName), string(os.PathSeparator))[1:] + err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Join(fDir...)), 0755) if err != nil { return fmt.Errorf("archiveSaveZip: %w", err) } - zipName = filepath.Join(c.Opts.OutDir, filepath.Dir(fileName), fmt.Sprintf("%s%s.cbz", baseNoExt(fileName), c.Opts.Suffix)) + zipName = filepath.Join(c.Opts.OutDir, filepath.Join(fDir...), fmt.Sprintf("%s%s.cbz", baseNoExt(fileName), c.Opts.Suffix)) } else { zipName = filepath.Join(c.Opts.OutDir, fmt.Sprintf("%s%s.cbz", baseNoExt(fileName), c.Opts.Suffix)) } @@ -104,12 +106,13 @@ func (c *Converter) archiveSaveTar(fileName string) error { var tarName string if c.Opts.Recursive { - err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Dir(fileName)), 0755) + fDir := strings.Split(filepath.Dir(fileName), string(os.PathSeparator))[1:] + err := os.MkdirAll(filepath.Join(c.Opts.OutDir, filepath.Join(fDir...)), 0755) if err != nil { return fmt.Errorf("archiveSaveTar: %w", err) } - tarName = filepath.Join(c.Opts.OutDir, filepath.Dir(fileName), fmt.Sprintf("%s%s.cbt", baseNoExt(fileName), c.Opts.Suffix)) + tarName = filepath.Join(c.Opts.OutDir, filepath.Join(fDir...), fmt.Sprintf("%s%s.cbt", baseNoExt(fileName), c.Opts.Suffix)) } else { tarName = filepath.Join(c.Opts.OutDir, fmt.Sprintf("%s%s.cbt", baseNoExt(fileName), c.Opts.Suffix)) }