aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Whitley <markw@lineo.com>2001-04-20 23:41:44 +0000
committerMark Whitley <markw@lineo.com>2001-04-20 23:41:44 +0000
commit56c14a647354b6b77fdc0c2f6c5e2f1c433ec410 (patch)
treeb5893656cf9a09d97b7bc6e28617a91bfadbd298
parent497ef4658755762d44e1b83e067c985f79f8cba5 (diff)
downloadbusybox-w32-56c14a647354b6b77fdc0c2f6c5e2f1c433ec410.tar.gz
busybox-w32-56c14a647354b6b77fdc0c2f6c5e2f1c433ec410.tar.bz2
busybox-w32-56c14a647354b6b77fdc0c2f6c5e2f1c433ec410.zip
Fixed a buglet where an extra newline was being added after an insert command
in some cases.
-rw-r--r--editors/sed.c17
-rw-r--r--sed.c17
2 files changed, 20 insertions, 14 deletions
diff --git a/editors/sed.c b/editors/sed.c
index 07e3a3e30..1342a6643 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -333,17 +333,20 @@ static int parse_edit_cmd(struct sed_cmd *sed_cmd, const char *editstr)
333 } 333 }
334 334
335out: 335out:
336 ptr[idx] = '\n';
337 ptr[idx+1] = 0;
338
339 /* this accounts for discrepancies between the modified string and the 336 /* this accounts for discrepancies between the modified string and the
340 * original string passed in to this function */ 337 * original string passed in to this function */
341 idx += slashes_eaten; 338 idx += slashes_eaten;
342 339
343 /* this accounts for the fact that A) we started at index 3, not at index 340 /* figure out if we need to add a newline */
344 * 0 and B) that we added an extra '\n' at the end (if you think the next 341 if (ptr[idx-1] != '\n') {
345 * line should read 'idx += 4' remember, arrays are zero-based) */ 342 ptr[idx] = '\n';
346 idx += 3; 343 idx++;
344 }
345
346 /* terminate string */
347 ptr[idx]= 0;
348 /* adjust for opening 2 chars [aic]\ */
349 idx += 2;
347 350
348 return idx; 351 return idx;
349} 352}
diff --git a/sed.c b/sed.c
index 07e3a3e30..1342a6643 100644
--- a/sed.c
+++ b/sed.c
@@ -333,17 +333,20 @@ static int parse_edit_cmd(struct sed_cmd *sed_cmd, const char *editstr)
333 } 333 }
334 334
335out: 335out:
336 ptr[idx] = '\n';
337 ptr[idx+1] = 0;
338
339 /* this accounts for discrepancies between the modified string and the 336 /* this accounts for discrepancies between the modified string and the
340 * original string passed in to this function */ 337 * original string passed in to this function */
341 idx += slashes_eaten; 338 idx += slashes_eaten;
342 339
343 /* this accounts for the fact that A) we started at index 3, not at index 340 /* figure out if we need to add a newline */
344 * 0 and B) that we added an extra '\n' at the end (if you think the next 341 if (ptr[idx-1] != '\n') {
345 * line should read 'idx += 4' remember, arrays are zero-based) */ 342 ptr[idx] = '\n';
346 idx += 3; 343 idx++;
344 }
345
346 /* terminate string */
347 ptr[idx]= 0;
348 /* adjust for opening 2 chars [aic]\ */
349 idx += 2;
347 350
348 return idx; 351 return idx;
349} 352}