URI:
       tfrstr.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tfrstr.c (626B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 #include <draw.h>
            4 #include <mouse.h>
            5 #include <frame.h>
            6 
            7 #define        CHUNK        16
            8 #define        ROUNDUP(n)        ((n+CHUNK)&~(CHUNK-1))
            9 
           10 uchar *
           11 _frallocstr(Frame *f, unsigned n)
           12 {
           13         uchar *p;
           14 
           15         p = malloc(ROUNDUP(n));
           16         if(p == 0)
           17                 drawerror(f->display, "out of memory");
           18         return p;
           19 }
           20 
           21 void
           22 _frinsure(Frame *f, int bn, unsigned n)
           23 {
           24         Frbox *b;
           25         uchar *p;
           26 
           27         b = &f->box[bn];
           28         if(b->nrune < 0)
           29                 drawerror(f->display, "_frinsure");
           30         if(ROUNDUP(b->nrune) > n)        /* > guarantees room for terminal NUL */
           31                 return;
           32         p = _frallocstr(f, n);
           33         b = &f->box[bn];
           34         memmove(p, b->ptr, NBYTE(b)+1);
           35         free(b->ptr);
           36         b->ptr = p;
           37 }