home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / cpm / emacs / emacssrc.lzh / kbuf.c < prev    next >
C/C++ Source or Header  |  1992-03-11  |  1KB  |  55 lines

  1. #include    "stdio.h"
  2. #include    "ed.h"
  3.  
  4. #define    NBLOCK    16            /* Line block chunk size    */
  5. #define    KBLOCK    256            /* Kill buffer block size    */
  6.  
  7. char    *kbufp    = NULL;            /* Kill buffer data        */
  8. int    kused    = 0;            /* # of bytes used in KB    */
  9. int    ksize    = 0;            /* # of bytes allocated in KB    */
  10.  
  11. /*
  12.  * Delete all of the text
  13.  * saved in the kill buffer. Called by commands
  14.  * when a new kill context is being created. The kill
  15.  * buffer array is released, just in case the buffer has
  16.  * grown to immense size. No errors.
  17.  */
  18. kdelete()
  19. {
  20.     if (kbufp != NULL) {
  21.         free((char *) kbufp);
  22.         kbufp = 
  23.         kused = 
  24.         ksize = 0;
  25.     }
  26. }
  27.  
  28. /*
  29.  * Insert a character to the kill buffer,
  30.  * enlarging the buffer if there isn't any room. Always
  31.  * grow the buffer in chunks, on the assumption that if you
  32.  * put something in the kill buffer you are going to put
  33.  * more stuff there too later. Return TRUE if all is
  34.  * well, and FALSE on errors.
  35.  */
  36. kinsert(c)
  37. {
  38.     register char    *nbufp;
  39.     register int    i;
  40.  
  41.     if (kused == ksize) {
  42.         if ((nbufp=malloc(ksize+KBLOCK)) == NULL)
  43.             return (FALSE);
  44.         blockmv( nbufp, kbufp, ksize );
  45.         /* for (i=0; i<ksize; ++i) */
  46.             /* nbufp[i] = kbufp[i]; */
  47.         if (kbufp != NULL)
  48.             free((char *) kbufp);
  49.         kbufp  = nbufp;
  50.         ksize += KBLOCK;
  51.     }
  52.     kbufp[kused++] = c;
  53.     return (TRUE);
  54. }
  55.