bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
2052.3.2
by John Arbash Meinel
 Change Copyright .. by Canonical to Copyright ... Canonical  | 
1  | 
# Copyright (C) 2006 Canonical Ltd
 | 
| 
1558.15.7
by Aaron Bentley
 Add copyright statements  | 
2  | 
#
 | 
3  | 
# This program is free software; you can redistribute it and/or modify
 | 
|
4  | 
# it under the terms of the GNU General Public License as published by
 | 
|
5  | 
# the Free Software Foundation; either version 2 of the License, or
 | 
|
6  | 
# (at your option) any later version.
 | 
|
7  | 
#
 | 
|
8  | 
# This program is distributed in the hope that it will be useful,
 | 
|
9  | 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|
10  | 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|
11  | 
# GNU General Public License for more details.
 | 
|
12  | 
#
 | 
|
13  | 
# You should have received a copy of the GNU General Public License
 | 
|
14  | 
# along with this program; if not, write to the Free Software
 | 
|
| 
4183.7.1
by Sabin Iacob
 update FSF mailing address  | 
15  | 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
| 
1558.15.7
by Aaron Bentley
 Add copyright statements  | 
16  | 
|
| 
1558.15.11
by Aaron Bentley
 Apply merge review suggestions  | 
17  | 
"""Utilities for distinguishing binary files from text files"""
 | 
18  | 
||
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
19  | 
from itertools import chain  | 
| 
1558.15.1
by Aaron Bentley
 Add text_file function  | 
20  | 
|
21  | 
from bzrlib.errors import BinaryFile  | 
|
22  | 
from bzrlib.iterablefile import IterableFile  | 
|
23  | 
from bzrlib.osutils import file_iterator  | 
|
| 
1558.15.8
by Aaron Bentley
 Whitespace fixes  | 
24  | 
|
25  | 
||
| 
1558.15.1
by Aaron Bentley
 Add text_file function  | 
26  | 
def text_file(input):  | 
27  | 
"""Produce a file iterator that is guaranteed to be text, without seeking.  | 
|
28  | 
    BinaryFile is raised if the file contains a NUL in the first 1024 bytes.
 | 
|
29  | 
    """
 | 
|
30  | 
first_chunk = input.read(1024)  | 
|
31  | 
if '\x00' in first_chunk:  | 
|
32  | 
raise BinaryFile()  | 
|
33  | 
return IterableFile(chain((first_chunk,), file_iterator(input)))  | 
|
| 
1558.15.2
by Aaron Bentley
 Implemented binary file handling for diff  | 
34  | 
|
35  | 
||
36  | 
def check_text_lines(lines):  | 
|
37  | 
"""Raise BinaryFile if the supplied lines contain NULs.  | 
|
38  | 
    Only the first 1024 characters are checked.
 | 
|
39  | 
    """
 | 
|
40  | 
f = IterableFile(lines)  | 
|
41  | 
if '\x00' in f.read(1024):  | 
|
42  | 
raise BinaryFile()  | 
|
| 
1558.15.3
by Aaron Bentley
 Handle binary files for diff3 merges  | 
43  | 
|
| 
1558.15.8
by Aaron Bentley
 Whitespace fixes  | 
44  | 
|
| 
1558.15.3
by Aaron Bentley
 Handle binary files for diff3 merges  | 
45  | 
def check_text_path(path):  | 
46  | 
"""Check whether the supplied path is a text, not binary file.  | 
|
47  | 
    Raise BinaryFile if a NUL occurs in the first 1024 bytes.
 | 
|
48  | 
    """
 | 
|
| 
1711.7.24
by John Arbash Meinel
 check_text_file was leaving the file handle open, now it closes.  | 
49  | 
f = open(path, 'rb')  | 
50  | 
try:  | 
|
51  | 
text_file(f)  | 
|
52  | 
finally:  | 
|
53  | 
f.close()  |