diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2008-06-13 20:28:08 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2008-06-13 20:28:08 +0000 |
commit | cea93abbe2d08a5a1df8cf6522d7d34aad3dca78 (patch) | |
tree | 6519779ba74e7e856024b0c512587694f342c5db /libgfortran/io/open.c | |
parent | c5f4d1cc2f628f7ab48b905896082fcdfedfe889 (diff) | |
download | gcc-cea93abbe2d08a5a1df8cf6522d7d34aad3dca78.zip gcc-cea93abbe2d08a5a1df8cf6522d7d34aad3dca78.tar.gz gcc-cea93abbe2d08a5a1df8cf6522d7d34aad3dca78.tar.bz2 |
re PR libfortran/35863 ([F2003] Implement ENCODING="UTF-8")
2008-06-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/35863
* libgfortran.h: Change l8_to_l4_offset to big_endian and add endian_off.
* runtime/main.c: Fix error in comment. Change l8_to_l4_offset to
big_endian. (determine_endianness): Add endian_off and set its value
according to big_endian.
* gfortran.map: Add symbol for new _gfortran_transfer_character_wide.
* io/io.h: Add prototype declarations for new functions.
* io/list_read.c (list_formatted_read_scalar): Modify to handle kind=4.
(list_formatted_read): Calculate stride based on kind for character type
and use it when calling list_formatted_read_scalar.
* io/inquire.c (inquire_via_unit): Change l8_to_l4_offset to big_endian.
* io/open.c (st_open): Change l8_to_l4_offset to big_endian.
* io/read.c (read_a_char4): New function to handle formatted read.
* io/write.c: Define GFC_CHAR4(x) to improve readability of code.
(write_a_char4): New function to handle formatted write.
(write_character): Modify to accept the kind parameter and adjust for
endianess of the machine. (list_formatted_write): Calculate the stride
resulting from the kind and adjust the list_formatted_write_scalar call
accordingly. (nml_write_obj): Adjust calls to write_character.
(namelist_write): Likewise.
* io/transfer.c (formatted_transfer_scaler): Rename 'len' argument to
'kind' argument to better describe what it is. Add calls to new
functions for kind == 4. (formatted_transfer): Modify to handle the case
of type character and kind equals 4 to pass in the kind to the transfer
routines. (transfer_character_wide): Add this new function.
(transfer_array): Don't set kind to the character string length. Adjust
strides bases on character kind.
(unformatted_read): Adjust size based on kind for character types.
(unformatted_write): Likewise. (data_transfer_init): Change
l8_to_l4_offset to big_endian.
From-SVN: r136763
Diffstat (limited to 'libgfortran/io/open.c')
-rw-r--r-- | libgfortran/io/open.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c index 84575f7..4a78efa 100644 --- a/libgfortran/io/open.c +++ b/libgfortran/io/open.c @@ -107,7 +107,7 @@ static const st_option decimal_opt[] = static const st_option encoding_opt[] = { - /* TODO { "utf-8", ENCODING_UTF8}, */ + { "utf-8", ENCODING_UTF8}, { "default", ENCODING_DEFAULT}, { NULL, 0} }; @@ -795,7 +795,7 @@ st_open (st_parameter_open *opp) conv = compile_options.convert; } - /* We use l8_to_l4_offset, which is 0 on little-endian machines + /* We use big_endian, which is 0 on little-endian machines and 1 on big-endian machines. */ switch (conv) { @@ -804,11 +804,11 @@ st_open (st_parameter_open *opp) break; case GFC_CONVERT_BIG: - conv = l8_to_l4_offset ? GFC_CONVERT_NATIVE : GFC_CONVERT_SWAP; + conv = big_endian ? GFC_CONVERT_NATIVE : GFC_CONVERT_SWAP; break; case GFC_CONVERT_LITTLE: - conv = l8_to_l4_offset ? GFC_CONVERT_SWAP : GFC_CONVERT_NATIVE; + conv = big_endian ? GFC_CONVERT_SWAP : GFC_CONVERT_NATIVE; break; default: |