aboutsummaryrefslogtreecommitdiffstats
path: root/src/c_fuzz.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/c_fuzz.go65
1 files changed, 62 insertions, 3 deletions
diff --git a/src/c_fuzz.go b/src/c_fuzz.go
index 5b59297..c629b91 100644
--- a/src/c_fuzz.go
+++ b/src/c_fuzz.go
@@ -43,7 +43,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* hardflip: src/c_fuzz.go
- * Tue, 26 Aug 2025 19:32:25 +0200
+ * Wed, 27 Aug 2025 13:43:16 +0200
* Joe
*
* search with fzf otherwise shitty search
@@ -51,6 +51,65 @@
package main
-func c_fuzz(data *HardData) {
- // TODO: here
+import (
+ "fmt"
+ "io"
+ "os/exec"
+ "strings"
+ "time"
+)
+
+func c_list_items(litems *ItemsList, stdin io.WriteCloser) {
+ for ptr := litems.head; ptr != nil; ptr = ptr.next {
+ var forebears []string
+
+ if ptr.is_dir() == true {
+ continue
+ }
+ for rptr := ptr.Host.parent; len(rptr.Name) > 0; rptr = rptr.Parent {
+ forebears = append(forebears, rptr.Name)
+ }
+ for i := len(forebears) - 1; i >= 0; i-- {
+ io.WriteString(stdin, forebears[i] + "/")
+ }
+ io.WriteString(stdin, ptr.Host.Name + "\n")
+ }
+}
+
+func c_fuzz(data *HardData, ui *HardUI) {
+ if err := ui.s.Suspend(); err != nil {
+ c_error_mode("screen", err, ui)
+ return
+ }
+ search := exec.Command("fzf")
+ stdin, err := search.StdinPipe()
+ if err != nil {
+ c_error_mode("search stdin pipe", err, ui)
+ c_resume_or_die(ui)
+ return
+ }
+ stdout, err := search.StdoutPipe()
+ if err != nil {
+ c_error_mode("search stdout pipe", err, ui)
+ c_resume_or_die(ui)
+ return
+ }
+ if err := search.Start(); err != nil {
+ c_error_mode("fzf", err, ui)
+ c_resume_or_die(ui)
+ return
+ }
+ go func() {
+ defer stdin.Close()
+ c_list_items(data.litems, stdin)
+ }()
+ output, err := io.ReadAll(stdout)
+ if err != nil {
+ ui.s.Fini()
+ c_die("fuck it failed", err)
+ }
+ str_out := strings.TrimSuffix(string(output), "\n")
+ fmt.Printf("[%s]\n", str_out)
+ time.Sleep(3 * time.Second)
+ c_resume_or_die(ui)
}