skalibs

Mirror/fork of https://skarnet.org/software/skalibs/
git clone https://ccx.te2000.cz/git/skalibs
Log | Files | Refs | README | LICENSE

stralloc_reverse_blocks.c (402B)


      1 /* ISC license. */
      2 
      3 #include <string.h>
      4 #include <skalibs/stralloc.h>
      5 
      6 void stralloc_reverse_blocks (stralloc *sa, size_t size)
      7 {
      8   size_t n = sa->len / (size << 1) ;
      9   size_t i = 0 ;
     10   char tmp[size] ;
     11   for (; i < n ; i++)
     12   {
     13     size_t k = sa->len - (i + 1) * size ;
     14     memcpy(tmp, sa->s + i * size, size) ;
     15     memcpy(sa->s + i * size, sa->s + k, size) ;
     16     memcpy(sa->s + k, tmp, size) ;
     17   }
     18 }