diff options
author | Mark Whitley <markw@lineo.com> | 2001-04-20 23:41:44 +0000 |
---|---|---|
committer | Mark Whitley <markw@lineo.com> | 2001-04-20 23:41:44 +0000 |
commit | 56c14a647354b6b77fdc0c2f6c5e2f1c433ec410 (patch) | |
tree | b5893656cf9a09d97b7bc6e28617a91bfadbd298 | |
parent | 497ef4658755762d44e1b83e067c985f79f8cba5 (diff) | |
download | busybox-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.c | 17 | ||||
-rw-r--r-- | sed.c | 17 |
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 | ||
335 | out: | 335 | out: |
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 | } |
@@ -333,17 +333,20 @@ static int parse_edit_cmd(struct sed_cmd *sed_cmd, const char *editstr) | |||
333 | } | 333 | } |
334 | 334 | ||
335 | out: | 335 | out: |
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 | } |