- if (first != '+' || !no_add) {
- int added = apply_line(new, patch,
- plen, ws_rule);
- add_line_info(&postimage, new, added,
- (first == '+' ? 0 : LINE_COMMON));
-
- new += added;
- if (first == '+' &&
- added == 1 && new[-1] == '\n')
- added_blank_line = 1;
+ /* --no-add does not add new lines */
+ if (first == '+' && no_add)
+ break;
+
+ if (first != '+' ||
+ !whitespace_error ||
+ ws_error_action != correct_ws_error) {
+ memcpy(new, patch + 1, plen);
+ added = plen;
+ }
+ else {
+ added = copy_wsfix(new, patch, plen, ws_rule);