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 }