tfix snarf - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9
 (DIR) parent ac963cb3f58e13555336bc9c33e4e9591f9c914e
 (HTM) Author: rsc <devnull@localhost>
       Date:   Mon,  7 Nov 2005 01:51:11 +0000
       
       fix snarf
       
       Diffstat:
         M src/cmd/9term/9term.c               |      32 +++++++++++++++++++++++++++++--
         M src/cmd/9term/fns.h                 |       4 ++++
         M src/cmd/9term/wind.c                |       4 ++--
       
       3 files changed, 36 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
       t@@ -322,7 +322,7 @@ button2menu(Window *w)
                        break;
        
                case Paste:
       -        //XXX        getsnarf();
       +                riogetsnarf();
                        wpaste(w);
                        wscrdraw(w);
                        break;
       t@@ -332,7 +332,7 @@ button2menu(Window *w)
                        break;
        
                case Send:
       -        //XXX        getsnarf();
       +                riogetsnarf();
                        wsnarf(w);
                        if(nsnarf == 0)
                                break;
       t@@ -505,3 +505,31 @@ rcinputproc(void *arg)
                }
        }
        
       +void
       +rioputsnarf(void)
       +{
       +        char *s;
       +        
       +        s = smprint("%.*S", nsnarf, snarf);
       +        if(s){
       +                putsnarf(s);
       +                free(s);
       +        }
       +}
       +
       +void
       +riogetsnarf(void)
       +{
       +        char *s;
       +        int n, nb, nulls;
       +
       +fprint(2, "getsnarf\n");
       +        s = getsnarf();
       +        if(s == nil)
       +                return;
       +        n = strlen(s)+1;
       +        free(snarf);
       +        snarf = runemalloc(n);
       +        cvttorunes(s, n, snarf, &nb, &nsnarf, &nulls);
       +        free(s);
       +}
 (DIR) diff --git a/src/cmd/9term/fns.h b/src/cmd/9term/fns.h
       t@@ -35,3 +35,7 @@ void        winterrupt(Window*);
        #define        runemalloc(n)                malloc((n)*sizeof(Rune))
        #define        runerealloc(a, n)        realloc(a, (n)*sizeof(Rune))
        #define        runemove(a, b, n)        memmove(a, b, (n)*sizeof(Rune))
       +
       +void rioputsnarf(void);
       +void riogetsnarf(void);
       +
 (DIR) diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c
       t@@ -772,7 +772,7 @@ wsnarf(Window *w)
                snarf = runerealloc(snarf, nsnarf);
                snarfversion++;        /* maybe modified by parent */
                runemove(snarf, w->r+w->q0, nsnarf);
       -//XXX        putsnarf();
       +        rioputsnarf();
        }
        
        void
       t@@ -1034,7 +1034,7 @@ wselect(Window *w)
                                }else{
                                        if(first){
                                                first = 0;
       -                                        getsnarf();
       +                                        riogetsnarf();
                                        }
                                        wpaste(w);
                                }