diff options
| -rw-r--r-- | main.go | 61 | 
1 files changed, 6 insertions, 55 deletions
@@ -482,45 +482,20 @@ func (dm *directoryManager) IDForDirectoryPath(  }  func isImage(path string) (bool, error) { -	cmd := exec.Command("xdg-mime", "query", "filetype", path) - -	// XXX: Early returns may leak resources. -	stdout, err := cmd.StdoutPipe() -	if err != nil { -		return false, err -	} -	if err := cmd.Start(); err != nil { -		return false, err -	} -	out, err := io.ReadAll(stdout) +	out, err := exec.Command("xdg-mime", "query", "filetype", path).Output()  	if err != nil {  		return false, err  	} -	if err := cmd.Wait(); err != nil { -		return false, err -	} +  	return bytes.HasPrefix(out, []byte("image/")), nil  }  func pingImage(path string) (int, int, error) { -	cmd := exec.Command("identify", "-limit", "thread", "1", "-ping", -		"-format", "%w %h", path+"[0]") - -	// XXX: Early returns may leak resources. -	stdout, err := cmd.StdoutPipe() -	if err != nil { -		return 0, 0, err -	} -	if err := cmd.Start(); err != nil { -		return 0, 0, err -	} -	out, err := io.ReadAll(stdout) +	out, err := exec.Command("identify", "-limit", "thread", "1", "-ping", +		"-format", "%w %h", path+"[0]").Output()  	if err != nil {  		return 0, 0, err  	} -	if err := cmd.Wait(); err != nil { -		return 0, 0, err -	}  	var w, h int  	_, err = fmt.Fscanf(bytes.NewReader(out), "%d %d", &w, &h) @@ -813,21 +788,10 @@ func makeThumbnail(pathImage, pathThumb string) (int, int, error) {  		"-resize", "256x128>", "-colorspace", "sRGB",  		"-format", "%w %h", "+write", pathThumb, "-delete", "1--1", "info:") -	// XXX: Early returns may leak resources. -	stdout, err := cmd.StdoutPipe() -	if err != nil { -		return 0, 0, err -	} -	if err := cmd.Start(); err != nil { -		return 0, 0, err -	} -	out, err := io.ReadAll(stdout) +	out, err := cmd.Output()  	if err != nil {  		return 0, 0, err  	} -	if err := cmd.Wait(); err != nil { -		return 0, 0, err -	}  	var w, h int  	_, err = fmt.Fscanf(bytes.NewReader(out), "%d %d", &w, &h) @@ -898,23 +862,10 @@ func cmdThumbnail(args []string) error {  // --- Perceptual hash ---------------------------------------------------------  func makeDhash(hasher, pathThumb string) (uint64, error) { -	cmd := exec.Command(hasher, pathThumb) - -	// XXX: Early returns may leak resources. -	stdout, err := cmd.StdoutPipe() -	if err != nil { -		return 0, err -	} -	if err := cmd.Start(); err != nil { -		return 0, err -	} -	out, err := io.ReadAll(stdout) +	out, err := exec.Command(hasher, pathThumb).Output()  	if err != nil {  		return 0, err  	} -	if err := cmd.Wait(); err != nil { -		return 0, err -	}  	var hash uint64  	_, err = fmt.Fscanf(bytes.NewReader(out), "%x", &hash)  | 
