Ticket UUID: | 577093 | |||
Title: | Tcl_(FS)OpenFileChannel and 'rb' | |||
Type: | RFE | Version: | None | |
Submitter: | vincentdarley | Created on: | 2002-07-03 17:51:17 | |
Subsystem: | None | Assigned To: | dgp | |
Priority: | 5 Medium | Severity: | ||
Status: | Closed | Last Modified: | 2005-04-28 02:03:05 | |
Resolution: | Accepted | Closed By: | dgp | |
Closed on: | 2005-04-27 19:03:05 | |||
Description: |
The standard 'fopen()' C function allows the optional "b" mode specifier alongside "rwa+" to specify that the file to be opened is binary. Tcl's Tcl_(FS)OpenFileChannel commands do not support "b" and throw an error if it is given. It would be quite easy to parse out the "b" and do call Tcl_SetChannelOption(NULL, chan, "- translation", "binary") after the channel is opened. Should this be added to Tcl? I don't know enough about generic channels in Tcl to know if it is possible for that action to fail or otherwise cause problems (bear in mind that, with VFS, the channel may not be a file, but could be a memchan, for example). | |||
User Comments: |
dgp added on 2005-04-28 02:03:05:
Logged In: YES user_id=80530 Committed for Tcl 8.5a3 dgp added on 2005-04-28 01:41:15: File Deleted - 131982: File Added - 131986: 577093.patch dgp added on 2005-04-28 01:41:12: Logged In: YES user_id=80530 correction. dgp added on 2005-04-28 01:35:01: File Deleted - 128021: dgp added on 2005-04-28 01:34:59: File Added - 131982: 577093.patch dgp added on 2005-04-28 01:34:56: Logged In: YES user_id=80530 Updated patch contains docs and tests. vincentdarley added on 2005-04-01 15:55:52: Logged In: YES user_id=32170 I haven't had time to test right now, but the patch itself looks nice and clean. It would be good to add a new test which writes some stuff to a file in binary and then reads it back and check that \r \n line endings have not been mangled. dgp added on 2005-04-01 06:30:02: File Added - 128021: 577093.patch Logged In: YES user_id=80530 Turns out doing this at the Tcl_FSOpenFileChannel() level works fine, and spares the VFS drivers from having to do anything. Here's the patch. dgp added on 2005-03-25 00:43:19: Logged In: YES user_id=80530 Actually this is a bit different from TIP 183, which proposes the change only for [open]. That's simpler to do than changing for Tcl_FSOpenFileChannel() since the latter raises questions about what changes each Tcl_Filesystem's Tcl_FSOpenFileChannelProc might have to handle in its "mode" argument. dgp added on 2005-03-24 01:45:51: Logged In: YES user_id=80530 This is TIP 183. vincentdarley added on 2002-07-04 21:48:41: Logged In: YES user_id=32170 The behaviour hasn't changed since 8.3, so I guess this is indeed a feature request. One could even imagine a hookable mechanism in the future which allowed other (arbitrary) actions to be taken on open. (Set the 'encoding' automatically might be nice, then perhaps 'source' could deal with unicode files). andreas_kupries added on 2002-07-04 01:53:31: Logged In: YES user_id=75003 What is the behaviour of 8.3 when using a "b" specifier ? If it is the same I would consider this a feature request, and not a bug. |
Attachments:
- 577093.patch [download] added by dgp on 2005-04-28 01:41:12. [details]