If a merge ended at EOF, --extract wouldn't interpret it properly.
lineno++;
switch(state) {
case 0:
- if (len>8 &&
+ if (len>=8 &&
strncmp(cp, "<<<<<<<", 7)==0 &&
(cp[7] == ' ' || cp[7] == '\n')
) {
}
break;
case 1:
- if (len>8 &&
+ if (len>=8 &&
strncmp(cp, "|||||||", 7)==0 &&
(cp[7] == ' ' || cp[7] == '\n')
) {
copyline(&r1, &cp, end);
break;
case 2:
- if (len>8 &&
+ if (len>=8 &&
strncmp(cp, "=======", 7)==0 &&
(cp[7] == ' ' || cp[7] == '\n')
) {
copyline(&r2, &cp, end);
break;
case 3:
- if (len>8 &&
+ if (len>=8 &&
strncmp(cp, ">>>>>>>", 7)==0 &&
(cp[7] == ' ' || cp[7] == '\n')
) {
{
rm -f "$1~current~"
mv "$1" "$1~current~"
- cp "$1~current~" $1
+ cp -p "$1~current~" $1
chmod u+w $1
}