# HG changeset patch # User paulo@thepaulopc # Date 1289549314 28800 # Node ID 669266246c6b1a10c77677336aa5b879e631c908 # Parent 2fb87616ab65999f788e948f8b1a64da38221825 rcg.c: simplify string concatenation diff -r 2fb87616ab65 -r 669266246c6b rcg.c --- a/rcg.c Sat Nov 06 02:57:06 2010 -0700 +++ b/rcg.c Fri Nov 12 00:08:34 2010 -0800 @@ -171,11 +171,6 @@ exit(args_error()); } - size_t CLR_START_len = strlen(CLR_START); - size_t clr_len = strlen(clr); - size_t CLR_END_len = strlen(CLR_END); - size_t CLR_CLEAR_len = strlen(CLR_CLEAR); - char *out = NULL; while (fgets(buf, BUFSIZE, stdin)) @@ -216,25 +211,17 @@ if (re_err != REG_NOMATCH && so >= 0 && eo >= 0 && match_len > 0) { - out_len += CLR_START_len + clr_len + CLR_END_len + CLR_CLEAR_len; + size_t CLR_STRING_len = strlen(CLR_START) + strlen(clr) + strlen(CLR_END) + strlen(CLR_CLEAR); + + out_len += CLR_STRING_len; out = realloc(out, out_len*sizeof(char)); if (!out) exit(realloc_error()); - strncpy(&out[out_pos], &buf[buf_pos], so); - out_pos += so; - buf_pos += so; - strncpy(&out[out_pos], CLR_START, CLR_START_len); - out_pos += CLR_START_len; - strncpy(&out[out_pos], clr, clr_len); - out_pos += clr_len; - strncpy(&out[out_pos], CLR_END, CLR_END_len); - out_pos += CLR_END_len; - strncpy(&out[out_pos], &buf[buf_pos], match_len); - out_pos += match_len; - strncpy(&out[out_pos], CLR_CLEAR, CLR_CLEAR_len); - out_pos += CLR_CLEAR_len; - buf_pos += match_len; + sprintf(&out[out_pos], "%.*s%s%s%s%.*s%s", so, &buf[buf_pos], CLR_START, clr, CLR_END, match_len, &buf[buf_pos + so], CLR_CLEAR); + + buf_pos += match_len + so; + out_pos += CLR_STRING_len + match_len + so; } else {