~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Alexander Belchenko
  • Date: 2006-12-19 08:45:03 UTC
  • mto: This revision was merged to the branch mainline in revision 2204.
  • Revision ID: bialix@ukr.net-20061219084503-m4szifvnbo8nq0qm
encoding_type = 'exact' force sys.stdout to be binary stream on win32
(get rid of binary_stdout attribute)

Show diffs side-by-side

added added

removed removed

Lines of Context:
214
214
            replace - put in a bogus character (typically '?')
215
215
            exact - do not encode sys.stdout
216
216
 
217
 
    binary_stdout
218
 
        Typically output of Command use native line-endings on each
219
 
        platform. This leads to problems on win32 with some commands,
220
 
        because Windows convert LF to CRLF.
221
 
        If this attribute is True then output forced to binary
222
 
        (without such conversion) on Windows
 
217
            NOTE: by default on Windows sys.stdout opened as text stream,
 
218
            therefore line-endings LF converted to CRLF.
 
219
            When command use encoding_type = 'exact' then
 
220
            sys.stdout forced to be binary stream and line-endings
 
221
            will not mangled.
223
222
    """
224
223
    aliases = []
225
224
    takes_args = []
226
225
    takes_options = []
227
226
    encoding_type = 'strict'
228
 
    binary_stdout = False
229
227
 
230
228
    hidden = False
231
229
    
250
248
        """Return a file linked to stdout, which has proper encoding."""
251
249
        assert self.encoding_type in ['strict', 'exact', 'replace']
252
250
 
253
 
        if sys.platform == 'win32' and self.binary_stdout:
254
 
            if hasattr(sys.stdout, 'fileno'):
255
 
                import msvcrt
256
 
                msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
257
 
 
258
251
        # Originally I was using self.stdout, but that looks
259
252
        # *way* too much like sys.stdout
260
253
        if self.encoding_type == 'exact':
 
254
            # force sys.stdout to be binary stream on win32
 
255
            if sys.platform == 'win32':
 
256
                fileno = getattr(sys.stdout, 'fileno', None)
 
257
                if fileno:
 
258
                    import msvcrt
 
259
                    msvcrt.setmode(fileno(), os.O_BINARY)
261
260
            self.outf = sys.stdout
262
261
            return
263
262