2010-05-20 21:40:30 +02:00
|
|
|
|
2010-05-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/43851
|
|
|
|
|
* runtime/stop.c (stop_string): Make sure nothing is emitted for
|
|
|
|
|
blank stop.
|
|
|
|
|
|
2010-05-20 06:44:11 +02:00
|
|
|
|
2010-05-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/43851
|
|
|
|
|
* runtime/stop.c (error_stop_numeric): New function and updated comment.
|
|
|
|
|
Add declaration for stop_numeric and remove declaration for stop_string.
|
|
|
|
|
(stop_string): Use for blank STOP.
|
|
|
|
|
(stop_numeric): Remove use of special -1 stop code.
|
|
|
|
|
* runtime/pause.c (do_pause): Use stop_string for blank stop.
|
|
|
|
|
(pause_numeric): Remove use of special -1 pause code.
|
|
|
|
|
* gfortran.map: Add new symbol to run-time library.
|
|
|
|
|
* libgfortran.h: Move declaration for stop_string to here to make
|
|
|
|
|
function visible for do_pause. Remove declaration for stop_numeric.
|
|
|
|
|
|
2010-05-08 16:43:32 +02:00
|
|
|
|
2010-05-08 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* io/unix.h (mem_alloc_r): Fix typo to reduce visibility.
|
|
|
|
|
|
2010-05-07 17:55:59 +02:00
|
|
|
|
2010-05-07 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* libgfortran.h (free_mem): Remove prototype.
|
|
|
|
|
* runtime/memory.c (free_mem): Remove function.
|
|
|
|
|
* intrinsics/date_and_time.c (secnds): Replace free_mem() with
|
|
|
|
|
free().
|
|
|
|
|
* io/fbuf.c (fbuf_destroy): Likewise.
|
|
|
|
|
* io/format.c (free_format_hash_table): Likewise.
|
|
|
|
|
(save_parsed_format): Likewise.
|
|
|
|
|
(free_format_data): Likewise.
|
|
|
|
|
* io/list_read.c (free_saved): Likewise.
|
|
|
|
|
(free_line): Likewise.
|
|
|
|
|
(nml_touch_nodes): Likewise.
|
|
|
|
|
(nml_read_obj): Likewise
|
|
|
|
|
* io/lock.c (free_ionml): Likewise.
|
|
|
|
|
* io/open.c (new_unit): Likewise.
|
|
|
|
|
(already_open): Likewise.
|
|
|
|
|
* io/unit.c (destroy_unit_mutex): Likewise.
|
|
|
|
|
(free_internal_unit): Likewise.
|
|
|
|
|
(close_unit_1): Likewise.
|
|
|
|
|
* io/unix.c (raw_close): Likewise.
|
|
|
|
|
(buf_close): Likewise.
|
|
|
|
|
(mem_close): Likewise.
|
|
|
|
|
(tempfile): Likewise.
|
|
|
|
|
* io/write.c (nml_write_obj): Likewise.
|
|
|
|
|
* io/write_float.def (output_float_FMT_G_##): Likewise.
|
|
|
|
|
* runtime/error.c (show_locus): Likewise.
|
|
|
|
|
|
2010-05-04 20:58:11 +02:00
|
|
|
|
2010-05-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
|
|
|
|
|
|
|
|
|
PR other/43620
|
|
|
|
|
* configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* Makefile.in: Regenerate.
|
|
|
|
|
|
2010-04-30 11:15:03 +02:00
|
|
|
|
2010-04-30 Kai Tietz <kai.tietz@onevision.com>
|
|
|
|
|
|
|
|
|
|
PR/43844
|
|
|
|
|
* io/unix.c (raw_truncate): Explicit cast from integer-scalar
|
|
|
|
|
to pointer.
|
2010-05-08 16:43:56 +02:00
|
|
|
|
(tempfile): Use for mingw GetTempPath and avoid double slash
|
2010-04-30 11:15:03 +02:00
|
|
|
|
for path.
|
|
|
|
|
|
2010-04-24 14:24:33 +02:00
|
|
|
|
2010-04-24 Kai Tietz <kai.tietz@onevision.com>
|
|
|
|
|
|
|
|
|
|
PR/43844
|
|
|
|
|
* io/unix.c (tempfile): Correct logic for mktemp case.
|
|
|
|
|
|
re PR fortran/39997 (Procedure(), pointer & implicit typing: rejects-valid / accepts-invalid?)
2010-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/39997
* intrinsic.c (add_functions): Add num_images.
* decl.c (gfc_match_end): Handle END CRITICAL.
* intrinsic.h (gfc_simplify_num_images): Add prototype.
* dump-parse-tree.c (show_code_node): Dump CRITICAL, ERROR STOP,
and SYNC.
* gfortran.h (gfc_statement): Add enum items for those.
(gfc_exec_op) Ditto.
(gfc_isym_id): Add num_images.
* trans-stmt.c (gfc_trans_stop): Handle ERROR STOP.
(gfc_trans_sync,gfc_trans_critical): New functions.
* trans-stmt.h (gfc_trans_stop,gfc_trans_sync,
gfc_trans_critical): Add/update prototypes.
* trans.c (gfc_trans_code): Handle CRITICAL, ERROR STOP,
and SYNC statements.
* trans.h (gfor_fndecl_error_stop_string) Add variable.
* resolve.c (resolve_sync): Add function.
(gfc_resolve_blocks): Handle CRITICAL.
(resolve_code): Handle CRITICAL, ERROR STOP,
(resolve_branch): Add CRITICAL constraint check.
and SYNC statements.
* st.c (gfc_free_statement): Add new statements.
* trans-decl.c (gfor_fndecl_error_stop_string): Global variable.
(gfc_build_builtin_function_decls): Initialize it.
* match.c (gfc_match_if): Handle ERROR STOP and SYNC.
(gfc_match_critical, gfc_match_error_stop, sync_statement,
gfc_match_sync_all, gfc_match_sync_images,
gfc_match_sync_memory):
New functions.
(match_exit_cycle): Handle CRITICAL constraint.
(gfc_match_stopcode): Handle ERROR STOP.
* match.h (gfc_match_critical, gfc_match_error_stop,
gfc_match_sync_all, gfc_match_sync_images,
gfc_match_sync_memory): Add prototype.
* parse.c (decode_statement, gfc_ascii_statement,
parse_executable): Handle new statements.
(parse_critical_block): New function.
* parse.h (gfc_compile_state): Add COMP_CRITICAL.
* intrinsic.texi (num_images): Document new function.
* simplify.c (gfc_simplify_num_images): Add function.
2010-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/39997
* gfortran.dg/coarray_1.f90: New test.
* gfortran.dg/coarray_2.f90: New test.
* gfortran.dg/coarray_3.f90: New test.
2010-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/39997
* runtime/stop.c (error_stop_string): New function.
* gfortran.map (_gfortran_error_stop_string): Add.
From-SVN: r158008
2010-04-06 18:26:02 +02:00
|
|
|
|
2010-04-06 Tobias Burnus <burnus@net-b.de>
|
|
|
|
|
|
|
|
|
|
PR fortran/39997
|
|
|
|
|
* runtime/stop.c (error_stop_string): New function.
|
|
|
|
|
* gfortran.map (_gfortran_error_stop_string): Add.
|
|
|
|
|
|
2010-04-02 20:18:06 +02:00
|
|
|
|
2010-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
|
|
|
|
|
|
|
|
|
* Makefile.in: Regenerate.
|
|
|
|
|
* aclocal.m4: Regenerate.
|
|
|
|
|
|
2010-04-01 22:51:45 +02:00
|
|
|
|
2010-04-01 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/43605
|
|
|
|
|
* io/intrinsics.c (gf_ftell): New function, seek to correct offset.
|
re PR fortran/39997 (Procedure(), pointer & implicit typing: rejects-valid / accepts-invalid?)
2010-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/39997
* intrinsic.c (add_functions): Add num_images.
* decl.c (gfc_match_end): Handle END CRITICAL.
* intrinsic.h (gfc_simplify_num_images): Add prototype.
* dump-parse-tree.c (show_code_node): Dump CRITICAL, ERROR STOP,
and SYNC.
* gfortran.h (gfc_statement): Add enum items for those.
(gfc_exec_op) Ditto.
(gfc_isym_id): Add num_images.
* trans-stmt.c (gfc_trans_stop): Handle ERROR STOP.
(gfc_trans_sync,gfc_trans_critical): New functions.
* trans-stmt.h (gfc_trans_stop,gfc_trans_sync,
gfc_trans_critical): Add/update prototypes.
* trans.c (gfc_trans_code): Handle CRITICAL, ERROR STOP,
and SYNC statements.
* trans.h (gfor_fndecl_error_stop_string) Add variable.
* resolve.c (resolve_sync): Add function.
(gfc_resolve_blocks): Handle CRITICAL.
(resolve_code): Handle CRITICAL, ERROR STOP,
(resolve_branch): Add CRITICAL constraint check.
and SYNC statements.
* st.c (gfc_free_statement): Add new statements.
* trans-decl.c (gfor_fndecl_error_stop_string): Global variable.
(gfc_build_builtin_function_decls): Initialize it.
* match.c (gfc_match_if): Handle ERROR STOP and SYNC.
(gfc_match_critical, gfc_match_error_stop, sync_statement,
gfc_match_sync_all, gfc_match_sync_images,
gfc_match_sync_memory):
New functions.
(match_exit_cycle): Handle CRITICAL constraint.
(gfc_match_stopcode): Handle ERROR STOP.
* match.h (gfc_match_critical, gfc_match_error_stop,
gfc_match_sync_all, gfc_match_sync_images,
gfc_match_sync_memory): Add prototype.
* parse.c (decode_statement, gfc_ascii_statement,
parse_executable): Handle new statements.
(parse_critical_block): New function.
* parse.h (gfc_compile_state): Add COMP_CRITICAL.
* intrinsic.texi (num_images): Document new function.
* simplify.c (gfc_simplify_num_images): Add function.
2010-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/39997
* gfortran.dg/coarray_1.f90: New test.
* gfortran.dg/coarray_2.f90: New test.
* gfortran.dg/coarray_3.f90: New test.
2010-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/39997
* runtime/stop.c (error_stop_string): New function.
* gfortran.map (_gfortran_error_stop_string): Add.
From-SVN: r158008
2010-04-06 18:26:02 +02:00
|
|
|
|
(ftell): Call gf_ftell.
|
2010-04-01 22:51:45 +02:00
|
|
|
|
(FTELL_SUB): Likewise.
|
|
|
|
|
|
2010-04-01 20:22:00 +02:00
|
|
|
|
2010-04-01 Paul Thomas <pault@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* io/transfer.c : Update copyright.
|
|
|
|
|
* io/unix.c : ditto
|
|
|
|
|
* io/read.c : ditto
|
|
|
|
|
* io/io.h : ditto
|
|
|
|
|
* io/unix.h : ditto
|
|
|
|
|
* io/inquire.c : ditto
|
|
|
|
|
* io/format.c : ditto
|
|
|
|
|
* io/list_read.c : ditto
|
|
|
|
|
* runtime/error.c : ditto
|
|
|
|
|
* libgfortran.h : ditto
|
|
|
|
|
* intrinsics/date_and_time.c: ditto
|
|
|
|
|
* intrinsics/args.c : ditto
|
|
|
|
|
|
2010-04-01 18:22:57 +02:00
|
|
|
|
2010-04-01 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/43605
|
|
|
|
|
* io/intrinsics.c (ftell): Reset fbuf, correct offset.
|
|
|
|
|
(FTELL_SUB): Likewise.
|
|
|
|
|
|
2010-03-30 05:22:28 +02:00
|
|
|
|
2010-03-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/43265
|
|
|
|
|
* io/transfer.c (next_record_r): Only call hit_eof for specific
|
|
|
|
|
conditions when an EOF is encountered.
|
|
|
|
|
|
2010-03-29 08:17:19 +02:00
|
|
|
|
2010-03-29 Tobias Burnus <burnus@net-b.de>
|
|
|
|
|
|
|
|
|
|
PR fortran/43551
|
|
|
|
|
* io/unix.c (buf_write): Set physical_offset after lseek.
|
|
|
|
|
|
2010-03-26 04:23:34 +01:00
|
|
|
|
2010-03-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/43517
|
|
|
|
|
* io/read.c (read_x): Return if seen EOR condition.
|
|
|
|
|
|
2010-03-22 03:39:02 +01:00
|
|
|
|
2010-03-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/43409
|
|
|
|
|
* io/io.h: Fix type of size in st_parameter_inquire structure.
|
|
|
|
|
|
2010-03-20 15:39:00 +01:00
|
|
|
|
2010-03-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/43409
|
|
|
|
|
* io/unix.h: Add prototype for new function to return file size.
|
|
|
|
|
* io/unix.c (file_size): New function.
|
|
|
|
|
* io/inquire.c (inquire_via_unit): Use new function.
|
|
|
|
|
(inquire_via_filename): Use new function.
|
|
|
|
|
|
2010-03-18 04:26:07 +01:00
|
|
|
|
2010-03-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* io/transfer.c (read_sf_internal): Remove stray function declaration
|
2010-03-20 15:39:00 +01:00
|
|
|
|
used during debugging.
|
2010-03-18 04:26:07 +01:00
|
|
|
|
|
2010-03-18 03:38:17 +01:00
|
|
|
|
2010-03-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/43265
|
|
|
|
|
* io/io.h: Delete prototype for read_sf, making it static.
|
|
|
|
|
* io/read.c (read_x): Modify to call hit_eof if PAD="no".
|
|
|
|
|
* io/transfer.c (read_sf_internal): New static function extracted from
|
|
|
|
|
read_sf for use on internal units only. Handle empty string case.
|
|
|
|
|
(read_sf): New factoring of this function, make it static. Add special
|
|
|
|
|
conditions for EOF based on ADVANCE="no", PAD="no", and whether any
|
|
|
|
|
bytes have been previously read from the record.
|
|
|
|
|
(read_block_form): Modify to call read_sf or read_sf_internal.
|
|
|
|
|
(next_record_r): Add a done flag similar to next_record_w. Call hit_eof
|
|
|
|
|
if internal array unit next record returns finished, meaning an EOF was
|
|
|
|
|
found and not done, ie not the last record expected. For external
|
|
|
|
|
units call hit_eof if item_count is 1 or there are no pending spaces.
|
|
|
|
|
(next_record): Update call to next_record_r.
|
|
|
|
|
|
2010-03-12 15:43:55 +01:00
|
|
|
|
2010-03-12 Kai Tietz <kai.tietz@onevision.com>
|
|
|
|
|
|
|
|
|
|
PR/42950
|
|
|
|
|
* io/format.c (parse_format_list): Add to ERROR, WARNING,
|
|
|
|
|
SILENT enumerators NOTIFICATION_ prefix.
|
|
|
|
|
* runtime/error.c (notification_std): Likewise.
|
|
|
|
|
* libgfortran.h (notification): Likewise.
|
|
|
|
|
(GFC_LARGEST_BUF): Check for HAVE_GFC_INTEGER_16.
|
|
|
|
|
|
2010-03-11 17:06:37 +01:00
|
|
|
|
2010-03-11 Tobias Burnus <burnus@net-b.de>
|
|
|
|
|
|
|
|
|
|
PR fortran/43228
|
|
|
|
|
* io/list_read.c (nml_parse_qualifier): Disable expanded_read
|
|
|
|
|
for array sections.
|
|
|
|
|
|
2010-03-11 03:15:33 +01:00
|
|
|
|
2010-03-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/43320
|
|
|
|
|
* io/transfer.c (next_record_r): Add hit_eof based on item_count
|
|
|
|
|
condition.
|
|
|
|
|
|
2010-03-09 15:41:17 +01:00
|
|
|
|
2010-03-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/43265
|
|
|
|
|
* io/read.c: Include fbuf.h and unix.h to enable lower level I/O for
|
|
|
|
|
read_x. (read_x): Replace the use of read_sf with equivalent lower level
|
|
|
|
|
I/O, eliminating unneeded code and handling EOF and EOR conditions.
|
|
|
|
|
* io/io.h: Revise prototype for read_sf.
|
|
|
|
|
* io/transfer.c (read_sf): Delete no_error parameter and all uses of it.
|
|
|
|
|
(read_block_form): Likewise.
|
|
|
|
|
(next_record_r): Delete wrong code call to hit_eof.
|
|
|
|
|
|
2010-03-08 09:01:55 +01:00
|
|
|
|
2010-03-08 Kai TIetz <kai.tietz@onevision.com>
|
|
|
|
|
|
|
|
|
|
PR/42950
|
|
|
|
|
* libgfortran.h (_POSIX): Define if __MINGW32__ is defined.
|
|
|
|
|
(gfc_printf): Define to gnu_printf for __MINGW32__ case,
|
|
|
|
|
otherwise to __printf__.
|
|
|
|
|
(gfc_strtof,gfc_strtod,gfc_strtold): Define for mingw case
|
|
|
|
|
to POSIX compatible converter functions.
|
|
|
|
|
(runtime_error): Use instead gfc_printf as formatter
|
|
|
|
|
attribute name.
|
|
|
|
|
(runtime_error_at): Likewise.
|
|
|
|
|
(runtime_warning_at): Likewise.
|
|
|
|
|
(st_printf): Likewise.
|
|
|
|
|
* intrinsics/date_and_time.c (localtime_r): Undefine
|
|
|
|
|
possible defined macro.
|
|
|
|
|
(gmtime_r): Likewise.
|
|
|
|
|
* io/read.c (convert_real): Use gfc_strtof, gfc_strtod,
|
|
|
|
|
and gfc_strtold.
|
|
|
|
|
|
2010-02-25 06:47:10 +01:00
|
|
|
|
2010-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
2010-02-25 06:53:35 +01:00
|
|
|
|
PR libfortran/43155
|
2010-02-25 06:47:10 +01:00
|
|
|
|
* io/transfer.c (require_type): Subtract one from item_count for output
|
|
|
|
|
of error message. Add comment before formatted_transfer function
|
|
|
|
|
explaining why the item_count is off by one.
|
|
|
|
|
|
2010-02-24 16:35:40 +01:00
|
|
|
|
2010-02-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
* io/write_float.def (WRITE_FLOAT): Use __builtin_signbit.
|
|
|
|
|
|
2010-02-23 06:00:42 +01:00
|
|
|
|
2010-02-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* io/list_read.c (list_formatted_read_scalar): Remove duplicate code.
|
|
|
|
|
|
2010-02-09 18:04:57 +01:00
|
|
|
|
2010-02-09 Tobias Burnus <burnus@net-b.de>
|
|
|
|
|
|
|
|
|
|
PR fortran/42996
|
|
|
|
|
* intrinsics/args.c (get_command_argument_i4): Always return
|
|
|
|
|
commandline-argument length for length parameter.
|
|
|
|
|
|
2010-02-07 08:45:55 +01:00
|
|
|
|
2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/42742
|
|
|
|
|
* io/format.c (reset_fnode_counters): Use the correct pointer to the
|
|
|
|
|
head of the fnode list. (parse_format): Remove previous hack that set
|
|
|
|
|
limit on size of format string for caching.
|
|
|
|
|
|
2010-02-06 15:39:51 +01:00
|
|
|
|
2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran
|
|
|
|
|
* io/transfer.c (read_sf): Handle EOR and EOF conditions for
|
|
|
|
|
ADVANCE="no" with PAD="yes" or PAD="no".
|
|
|
|
|
|
2010-02-04 02:49:41 +01:00
|
|
|
|
2010-02-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/42901
|
|
|
|
|
* io/list_read.c (nml_get_obj_data): Add new qualifier flag, clean up
|
|
|
|
|
code, and adjust logic to set namelist info pointer correctly for array
|
|
|
|
|
qualifiers of derived type components.
|
|
|
|
|
|
2010-01-15 16:52:28 +01:00
|
|
|
|
2010-01-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
2010-01-15 16:55:24 +01:00
|
|
|
|
PR libfortran/42742
|
2010-01-15 16:52:28 +01:00
|
|
|
|
* io/format.c (parse_format): Set limit on size of format strings that
|
|
|
|
|
will be cached.
|
|
|
|
|
|
2010-01-05 15:02:37 +01:00
|
|
|
|
2010-01-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2010-01-03 19:09:37 +01:00
|
|
|
|
2010-01-03 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/42420
|
|
|
|
|
* io/unix.c: Defines for MINGW stat and fstat.
|
|
|
|
|
(gfstat_t): New typedef.
|
|
|
|
|
(id_from_fd): Use gfstat_t instead of struct stat.
|
|
|
|
|
(fd_to_stream): Likewise.
|
|
|
|
|
(compare_file_filename): Likewise.
|
|
|
|
|
(find_file): Likewise.
|
|
|
|
|
(file_exists): Likewise.
|
|
|
|
|
(inquire_sequential): Likewise.
|
|
|
|
|
(inquire_direct): Likewise.
|
|
|
|
|
(inquire_formatted): Likewise.
|
2009-12-19 11:43:11 +01:00
|
|
|
|
|
2010-01-04 09:59:59 +01:00
|
|
|
|
|
|
|
|
|
Copyright (C) 2010 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
|
|
Copying and distribution of this file, with or without modification,
|
|
|
|
|
are permitted in any medium without royalty provided the copyright
|
|
|
|
|
notice and this notice are preserved.
|