diff options
author | joe <rbo@gmx.us> | 2025-08-27 15:22:35 +0200 |
---|---|---|
committer | joe <rbo@gmx.us> | 2025-08-27 15:22:35 +0200 |
commit | 0f073fec1d25bebae539a501fcfe428fc7275245 (patch) | |
tree | 32ed82a7df0d3c61e36c5b3ab9f94364881dabfd | |
parent | fuck logger use printf (diff) | |
download | hardflip-0f073fec1d25bebae539a501fcfe428fc7275245.tar.gz hardflip-0f073fec1d25bebae539a501fcfe428fc7275245.tar.bz2 hardflip-0f073fec1d25bebae539a501fcfe428fc7275245.tar.xz hardflip-0f073fec1d25bebae539a501fcfe428fc7275245.tar.zst hardflip-0f073fec1d25bebae539a501fcfe428fc7275245.zip |
up
-rw-r--r-- | src/c_fuzz.go | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/src/c_fuzz.go b/src/c_fuzz.go index c629b91..c45e4b5 100644 --- a/src/c_fuzz.go +++ b/src/c_fuzz.go @@ -59,39 +59,31 @@ import ( "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") +func c_init_pipes(ui *HardUI, + search *exec.Cmd) (io.WriteCloser, io.ReadCloser) { stdin, err := search.StdinPipe() if err != nil { c_error_mode("search stdin pipe", err, ui) c_resume_or_die(ui) - return + return nil, nil } stdout, err := search.StdoutPipe() if err != nil { c_error_mode("search stdout pipe", err, ui) c_resume_or_die(ui) + return nil, nil + } + return stdin, stdout +} + +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, stdout := c_init_pipes(ui, search) + if stdin == nil || stdout == nil { return } if err := search.Start(); err != nil { @@ -101,12 +93,17 @@ func c_fuzz(data *HardData, ui *HardUI) { } go func() { defer stdin.Close() - c_list_items(data.litems, stdin) + for ptr := data.litems.head; ptr != nil; ptr = ptr.next { + if ptr.is_dir() == true { + continue + } + io.WriteString(stdin, ptr.path()[1:] + ptr.Host.Name + "\n") + } }() output, err := io.ReadAll(stdout) if err != nil { ui.s.Fini() - c_die("fuck it failed", err) + c_die("search stdout", err) } str_out := strings.TrimSuffix(string(output), "\n") fmt.Printf("[%s]\n", str_out) |