- // Expand Buffer\r
- if(len > space) {\r
- space += 256;\r
- ret = realloc(ret, space+1);\r
- if(!ret) return NULL;\r
+ default: \r
+ // Expand Buffer\r
+ if(len+1 > space) {\r
+ space += 256;\r
+ ret = realloc(ret, space+1);\r
+ if(!ret) return NULL;\r
+ }\r
+ \r
+ // Editing inside the buffer\r
+ if(pos != len) {\r
+ char buf[7] = "\x1B[000D";\r
+ buf[2] += ((len-pos)/100) % 10;\r
+ buf[3] += ((len-pos)/10) % 10;\r
+ buf[4] += (len-pos) % 10;\r
+ write(_stdout, 1, &ch); // Print new character\r
+ write(_stdout, len-pos, &ret[pos]); // Move Text\r
+ write(_stdout, 7, buf); // Update Cursor\r
+ memmove( &ret[pos+1], &ret[pos], len-pos );\r
+ }\r
+ else {\r
+ write(_stdout, 1, &ch);\r
+ }\r
+ ret[pos++] = ch;\r
+ len ++;\r
+ break;\r