summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go50
1 files changed, 29 insertions, 21 deletions
diff --git a/main.go b/main.go
index 60e74d7..ecc148f 100644
--- a/main.go
+++ b/main.go
@@ -103,6 +103,12 @@ Options:
slog.SetDefault(logger)
slog.Debug("logging started")
+ if ti, err := tcell.LookupTerminfo(os.Getenv("TERM")); err != nil {
+ slog.Error("ERROR: failed to lookup terminfo:", err)
+ } else {
+ slog.Debug(fmt.Sprintf("term is: %s, aliases: %v", ti.Name, ti.Aliases))
+ }
+
if !pasteFlag {
// copy
if len(flag.Args()) > 0 {
@@ -111,35 +117,38 @@ Options:
fnames = []string{"-"}
}
- tty, err := opentty()
- if err != nil {
- slog.Error("ERROR: opentty:", err)
- return
- }
- defer closetty(tty)
+ slog.Debug("Beginning osc52 copy operation")
+ func() {
+ tty, err := opentty()
+ if err != nil {
+ slog.Error("ERROR: opentty:", err)
+ return
+ }
+ defer closetty(tty)
- // Open buffered output, using default max OSC52 length as buffer size
- // TODO limit size
- out := bufio.NewWriterSize(tty, 1000000)
+ // Open buffered output, using default max OSC52 length as buffer size
+ // TODO limit size
+ out := bufio.NewWriterSize(tty, 1000000)
- // Start OSC52
- slog.Debug("Beginning osc52 copy operation")
- fmt.Fprintf(out, "\x1b]52;c;")
+ // Start OSC52
+ fmt.Fprintf(out, "\x1b]52;c;")
- b64 := base64.NewEncoder(base64.StdEncoding, out)
- for _, fname := range fnames {
- encode(fname, b64)
- }
- b64.Close()
+ b64 := base64.NewEncoder(base64.StdEncoding, out)
+ for _, fname := range fnames {
+ encode(fname, b64)
+ }
+ b64.Close()
- // End OSC52
- fmt.Fprintf(out, "\a")
+ // End OSC52
+ fmt.Fprintf(out, "\a")
- out.Flush()
+ out.Flush()
+ }()
slog.Debug("Ended osc52")
} else {
// paste
+ slog.Debug("Beginning osc52 paste operation")
data := func() []byte {
tty, err := opentty()
if err != nil {
@@ -149,7 +158,6 @@ Options:
defer closetty(tty)
// Start OSC52
- slog.Debug("Beginning osc52 paste operation")
fmt.Fprintf(tty, "\x1b]52;c;?\a")
ttyReader := bufio.NewReader(tty)