static void transpose_swap(int start, int middle, int end) { int len1, len2; ZLE_STRING_T first; len1 = middle - start; len2 = end - middle; first = (ZLE_STRING_T)zalloc(len1 * ZLE_CHAR_SIZE); ZS_memcpy(first, zleline + start, len1); /* Move may be overlapping... */ ZS_memmove(zleline + start, zleline + middle, len2); ZS_memcpy(zleline + start + len2, first, len1); zfree(first, len1 * ZLE_CHAR_SIZE); }
static void set_lbuffer(UNUSED(Param pm), char *x) { ZLE_STRING_T y; int len; if (x && *x != ZWC('\0')) y = stringaszleline(x, 0, &len, NULL, NULL); else y = ZWS(""), len = 0; sizeline(zlell - zlecs + len); ZS_memmove(zleline + len, zleline + zlecs, zlell - zlecs); ZS_memcpy(zleline, y, len); zlell = zlell - zlecs + len; zlecs = len; zsfree(x); if (len) free(y); fixsuffix(); menucmp = 0; }