view mercurial/strutil.py @ 5483:ec2cc1dadbf7

Handle patches with misformatted empty lines Insert a space on empty lines which are missing a control character. Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com> --- I frequently receive emailed patches with empty lines represented as "\n\n", where Mercurial expects them to be "\n \n". patch(1) applies these patches without complaint, but qpush fails all hunks.
author Hollis Blanchard <hollisb@us.ibm.com>
date Thu, 01 Nov 2007 17:15:50 -0500
parents 3d5547845158
children af1117f37fa7
line wrap: on
line source

# strutil.py - string utilities for Mercurial
#
# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.

def findall(haystack, needle, start=0, end=None):
    if end is None:
        end = len(haystack)
    if end < 0:
        end += len(haystack)
    if start < 0:
        start += len(haystack)
    while start < end:
        c = haystack.find(needle, start, end)
        if c == -1:
            break
        yield c
        start = c + 1

def rfindall(haystack, needle, start=0, end=None):
    if end is None:
        end = len(haystack)
    if end < 0:
        end += len(haystack)
    if start < 0:
        start += len(haystack)
    while end >= 0:
        c = haystack.rfind(needle, start, end)
        if c == -1:
            break
        yield c
        end = c - 1