|
|
@@ -263,10 +263,38 @@ func FindRar() (string, error) {
|
|
|
|
|
|
func RarVersion() string {
|
|
|
output, _ := exec.Command("rar").Output()
|
|
|
- fmt.Printf("RAR:\n%s\n", output)
|
|
|
+ // fmt.Printf("RAR:\n%s\n", output)
|
|
|
buffer := bytes.NewBuffer(output)
|
|
|
- line, _ := buffer.ReadString('\n')
|
|
|
- line, _ = buffer.ReadString('\n')
|
|
|
+ line, err := buffer.ReadString('\n')
|
|
|
+ if err != nil {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ line, _ = strings.CutSuffix(line, "\n")
|
|
|
+
|
|
|
+ for len(line) == 0 {
|
|
|
+ // First line is blank.
|
|
|
+ line, err = buffer.ReadString('\n')
|
|
|
+ if err != nil {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ line, _ = strings.CutSuffix(line, "\n")
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Printf("RAR: [%s]\n", line)
|
|
|
+ if line != "" {
|
|
|
+ rarver, _, found := strings.Cut(line, " ")
|
|
|
+ if found {
|
|
|
+ line = rarver
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Ok, we should have something like "RAR 7.10"
|
|
|
+ _, version, found := strings.Cut(line, " ")
|
|
|
+ if found {
|
|
|
+ return version
|
|
|
+ }
|
|
|
+
|
|
|
return line
|
|
|
}
|
|
|
|