<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/5097953904842f0d107547043c6e9c207dd53af6">https://github.com/macports/macports-ports/commit/5097953904842f0d107547043c6e9c207dd53af6</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 5097953  fpc: Update to 3.0.4 and improvements
</span>5097953 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 5097953904842f0d107547043c6e9c207dd53af6
</span>Author: Karl-Michael Schindler <karl-michael.schindler@web.de>
AuthorDate: Tue Apr 23 11:07:34 2019 +0200

<span style='display:block; white-space:pre;color:#404040;'>    fpc: Update to 3.0.4 and improvements
</span>---
 lang/fpc/Portfile                              | 197 +++++++++-----
 lang/fpc/files/patch-iso-tmp.diff              | 346 +++++++++++++++++++++++++
 lang/fpc/files/patch-transparent-filename.diff |  93 +++++++
 3 files changed, 576 insertions(+), 60 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/fpc/Portfile b/lang/fpc/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 5629b75..08e9f23 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/fpc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/fpc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,94 +3,171 @@
</span> PortSystem          1.0
 
 name                fpc
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             2.6.4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             3.0.4
</span> categories          lang
 platforms           darwin
 license             GPL-2 LGPL-2
 maintainers         nomaintainer
<span style='display:block; white-space:pre;background:#ffe0e0;'>-description         free pascal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description    Open source compiler for Pascal and Object Pascal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Free Pascal, an open source Pascal and Object Pascal compiler.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    Free Pascal is a 32, 64 and 16 bit professional Pascal compiler. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    It can target many processor architectures: Intel x86 (including 8086), \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    AMD64/x86-64, PowerPC, PowerPC64, SPARC, ARM, AArch64, MIPS and the JVM. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Supported operating systems include Linux, FreeBSD, Mac OS X/iOS/iPhoneSimulator/Darwin, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Win32, Win64, WinCE and Android.
</span> homepage            http://www.freepascal.org
 master_sites        sourceforge:freepascal
 
 set src             ${name}build-${version}.tar.gz
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set pp              universal-macosx-10.5-ppcuniversal.tar.bz2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the 3.0.0 bootstrap compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pp              x86_64-macosx-10.7-ppcx64.tar.bz2
</span> distfiles           ${src} ${pp}
 checksums           ${src} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  339b71d3c9983a720eed7c6bda1cfd330d89966f \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  8d9c3bcfa469d9b37c05663e2775d179809e4b3443604fac7d21aa64c9a56daa \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    rmd160  f9414fe72342cff4317029f3a83a90e8dc710389 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  f66514e6f2c2e4e1bccccb4d554c24b77682ed61c87811ae5dd210f421855e76 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    68908523 \
</span>                     ${pp} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  0124c2f4447ba7f96e3db0a27e6bff459c5749f4 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  e7243e83e6a04de147ebab7530754ec92cd1fbabbc9b6b00a3f90a796312f3e9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    rmd160  25fb3c2eb9fa364ee56a5f3c2667151143f39777 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  a67ef5def356d122a4692e21b209c328f6d46deef4539f4d4506c3dc1eecb4b0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    1095556
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs     x86_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# doesn't install shared libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+installs_libs       no
</span> 
 extract.only        ${src}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> use_configure       no
 universal_variant   no
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    system -W ${workpath} "bzip2 -dc ${distpath}/${pp} | tar xf -"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set fpcbasepath     ${prefix}/libexec/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport "chmcmd-${name}" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     The FPC Pascal htmlhelp (CHM) compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    chmcmd is an cross-platform utility to generate compressed HTML (.chm) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    documentation, written in Free Pascal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    extract.post_args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/chm \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/fcl-xml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/fcl-base \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/fcl-process \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/fpmkunit \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/hash \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/iconvenc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/libtar \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/paszlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/packages/univint \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${name}build-${version}/fpcsrc/rtl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    worksrcdir      ${name}build-${version}/fpcsrc/packages/chm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    use_configure   yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.cmd   ${fpcbasepath}/bin/fpcmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.pre_args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args  -r -v Makefile.fpc.fpcmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.post_args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.env       PREFIX=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.target
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.post_args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    V=1 VERBOSE=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 755 ${build.dir}/chmcmd ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-worksrcdir          ${name}build-${version}/fpcsrc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set fpcbasepath     ${prefix}/lib/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.env           PP=${workpath}/ppcuniversal \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    PREFIX=${destroot}${fpcbasepath}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.target        all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${subport} eq "${name}"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    installs_libs       yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${workpath} "bzip2 -dc ${distpath}/${pp} | tar xf -"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot.env        ${build.env}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Fix filename issues in iso mode. Should be resolved in version 3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles          patch-transparent-filename.diff patch-iso-tmp.diff
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Yosemite fix: fpc's build system checkes MACOSX_DEPLOYMENT_TARGET and halts if > 10.9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-platform darwin {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.major} > 13} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        macosx_deployment_target    10.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # adjust the path "codfilepath" for plex from /usr/local to MacPort's prefix.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace "s|/usr/local|${prefix}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${worksrcpath}/utils/tply/pyacc.y \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${worksrcpath}/utils/tply/pyacc.pas \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${worksrcpath}/utils/tply/plex.pas
</span>     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# create a symlink to the architecture dependent executable
</span>     switch ${build_arch} {
         "x86_64" {
             set b "ppcx64"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        } 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        "i386" {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set b "ppc386"
</span>         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        default {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set b "ppcppc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    worksrcdir          ${name}build-${version}/fpcsrc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.env           PP=${workpath}/${b} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        PREFIX=${destroot}${fpcbasepath}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.target        all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.env        ${build.env}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Yosemite fix: fpc's build system checks MACOSX_DEPLOYMENT_TARGET and halts if > 10.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${os.major} > 13} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            macosx_deployment_target 10.9
</span>         }
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    ln -s ${fpcbasepath}/lib/${name}/${version}/${b} ${destroot}${fpcbasepath}/bin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# generate a configuration file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -d ${destroot}${fpcbasepath}/etc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    system "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${destroot}${fpcbasepath}/bin/fpcmkcfg \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            -d basepath=${fpcbasepath}/lib/${name}/${version} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            -o ${destroot}${fpcbasepath}/etc/fpc.cfg
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# install man
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -d ${destroot}${fpcbasepath}/man
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach d {1 5} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        file copy ${workpath}/${name}build-${version}/install/man/man${d} ${destroot}${fpcbasepath}/man
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach f [glob ${destroot}${fpcbasepath}/man/man${d}/*.${d}] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            system "/usr/bin/gzip ${f}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # build the compiler utilities msgdif and msg2inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-build {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${worksrcpath}/compiler/utils \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               "../ppcx64 -WM10.9 -Fu../../rtl/units/${build_arch}-darwin msgdif.pp && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ../ppcx64 -WM10.9 -Fu../../rtl/units/${build_arch}-darwin msg2inc.pp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # create a symlink to the architecture dependent executable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ln -s ${fpcbasepath}/lib/${name}/${version}/${b} ${destroot}${fpcbasepath}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # generate a configuration file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${fpcbasepath}/etc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${fpcbasepath}/bin/fpcmkcfg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                -d basepath=${fpcbasepath}/lib/${name}/${version} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                -o ${destroot}${fpcbasepath}/etc/fpc.cfg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ln -s ${fpcbasepath}/etc/fpc.cfg ${destroot}${prefix}/etc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # install man
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${fpcbasepath}/man
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach d {1 5} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            file copy ${workpath}/${name}build-${version}/install/man/man${d} ${destroot}${fpcbasepath}/man
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach f [glob ${destroot}${fpcbasepath}/man/man${d}/*.${d}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                system "/usr/bin/gzip ${f}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ln -s ${fpcbasepath}/man/man1/fpc.1.gz ${destroot}${prefix}/share/man/man1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ln -s ${fpcbasepath}/man/man5/fpc.cfg.5.gz ${destroot}${prefix}/share/man/man5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # chmcmd will be installed by the chmcmd-fpc subport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete -force ${destroot}${fpcbasepath}/bin/chmcmd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach b [glob -nocomplain ${destroot}${fpcbasepath}/bin/*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set n [file tail ${b}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ln -s ${fpcbasepath}/bin/${n} ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # install the compiler utilities msgdif and msg2inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 755 ${worksrcpath}/compiler/utils/msgdif  ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 755 ${worksrcpath}/compiler/utils/msg2inc ${destroot}${prefix}/bin
</span>         }
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    ln -s ${fpcbasepath}/man/man1/fpc.1.gz ${destroot}${prefix}/share/man/man1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ln -s ${fpcbasepath}/man/man5/fpc.cfg.5.gz ${destroot}${prefix}/share/man/man5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-notes "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    The compiler fpc looks for the fpc.cfg file in the following places: \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - The current directory. \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - Home directory, looks for .fpc.cfg \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - The directory specified in the environment variable PPC_CONFIG_PATH, \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      and if it's not set under compilerdir/../etc. \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - If it is not yet found: in /etc. \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    All the files of fpc are installed in ${fpcbasepath} and \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    the executables are installed in ${fpcbasepath}/bin. \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    The fpc.cfg is installed in ${fpcbasepath}/etc to make fpc find fpc.cfg. \n\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    To customize, use ~/.fpc.cfg or /etc/fpc.cfg and call ${fpcbasepath}/bin/fpc directly.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-" 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    notes "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        The compiler fpc looks for the fpc.cfg file in the following places: \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        - The current directory. \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        - Home directory, looks for .fpc.cfg \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        - The directory specified in the environment variable PPC_CONFIG_PATH, \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          and if it's not set under compilerdir/../etc. \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        - If it is not yet found: in /etc. \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        All the files of fpc are installed in ${fpcbasepath} and \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        the executables are installed in ${fpcbasepath}/bin. \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        The fpc.cfg is installed in ${fpcbasepath}/etc to make fpc find fpc.cfg. \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        To customize, use ~/.fpc.cfg or /etc/fpc.cfg and call ${fpcbasepath}/bin/fpc directly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/fpc/files/patch-iso-tmp.diff b/lang/fpc/files/patch-iso-tmp.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..918300c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/fpc/files/patch-iso-tmp.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,346 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -Naur rtl/inc/iso7185.pp rtl-new/inc/iso7185.pp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- rtl/inc/iso7185.pp     2017-02-17 19:04:47.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ rtl-new/inc/iso7185.pp 2017-02-18 10:38:58.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,13 +47,160 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   implementation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$IF defined(WINDOWS)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    type
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      isoLPWStr = PWideChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      isoWinBool = LongBool;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TSysCharSet = set of AnsiChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function GetEnvironmentStringsW: isoLPWStr; stdcall; external 'kernel32' name 'GetEnvironmentStringsW';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function FreeEnvironmentStringsW(_para1 : isoLPWStr): isoWinBool; stdcall; external 'kernel32' name 'FreeEnvironmentStringsW';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function StrLen(p : PWideChar): sizeint; external name 'FPC_PWIDECHAR_LENGTH'; overload;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {$push}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {$checkpointer off}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function CharInSet(Ch : WideChar; const CSet : TSysCharSet): Boolean;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      CharInSet := (Ch <= #$FF) and (AnsiChar(byte(Ch)) in CSet);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function InternalChangeCase(const S : UnicodeString; const Chars: TSysCharSet; const Adjustment: Longint): UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i : Integer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        p : PWideChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        unique : Boolean;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        InternalChangeCase := S;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if InternalChangeCase = '' then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          exit;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        unique := false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        p := PWideChar(InternalChangeCase);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for i := 1 to Length(InternalChangeCase) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if CharInSet(p^, Chars) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if not unique then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              UniqueString(InternalChangeCase);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              p := @InternalChangeCase[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              unique := true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            p^ := WideChar(Ord(p^) + Adjustment);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(p);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function UpperCase(const s : UnicodeString) : UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        UpperCase := InternalChangeCase(s, ['a'..'z'], -32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function GetEnvironmentVariable(const EnvVar : UnicodeString) : UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      s, upperenv : UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      i : Longint;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      hp, p : PWideChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GetEnvironmentVariable := '';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      p := GetEnvironmentStringsW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      hp := p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      upperenv := uppercase(envvar);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      while hp^ <> #0 do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        s := hp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i := pos('=', s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if uppercase(copy(s,1,i-1)) = upperenv then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          GetEnvironmentVariable := copy(s, i+1, length(s)-i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { next string entry }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        hp := hp + strlen(hp) + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      FreeEnvironmentStringsW(p);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function getTempDir: String;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      astringLength : Integer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      getTempDir := GetEnvironmentVariable('TMP');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if getTempDir = '' then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        getTempDir := GetEnvironmentVariable('TEMP');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      astringlength := Length(getTempDir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (astringlength > 0) and (getTempDir[astringlength] <> DirectorySeparator) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        getTempDir := getTempDir + DirectorySeparator;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {$pop}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ELSEIF defined(UNIX)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  function getTempDir: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      key: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      value: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      i_env, i_key, i_value: integer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      value := '/tmp/';  (** default for UNIX **)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      while (envp <> NIL) and assigned(envp^) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i_env := 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i_key := 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        while not (envp^[i_env] in ['=', #0]) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          key[i_key] := envp^[i_env];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(i_env);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(i_key);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        setlength(key, i_key - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (key = 'TEMP') or (key = 'TMP') or (key = 'TMPDIR') then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(i_env);    (** skip '=' **)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          i_value := 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          while (envp^[i_env] <> #0) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            value[i_value] := envp^[i_env];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            inc(i_env);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            inc(i_value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          setlength(value, i_value - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        inc(envp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      i_value:=length(value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (i_value > 0) and (value[i_value] <> DirectorySeparator) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        value := value + DirectorySeparator;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      getTempDir := value;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ELSE}  // neither unix nor windows
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  function getTempDir: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    getTempDir:='';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ENDIF}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {$i-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     procedure DoAssign(var t : Text);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ifndef FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        NextIndex : Word = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$endif FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        Assign(t,'fpc_'+HexStr(random(1000000000),8)+'.tmp');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ifdef FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        Assign(t,getTempDir+'fpc_'+HexStr(random(1000000000),8)+'.tmp');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$else FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        Assign(t,getTempDir+'fpc_'+HexStr(NextIndex,4)+'.tmp');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        Inc(NextIndex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$endif FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Procedure Rewrite(var t : Text);[IOCheck];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       Begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         { create file name? }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -172,7 +319,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { we shouldn't do this because it might confuse user programs, but for now it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     is good enough to get pretty unique tmp file names }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ifdef FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Randomize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$endif FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { reset opens with read-only }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Filemode:=0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ end.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -Naur rtl/inc/typefile.inc rtl-new/inc/typefile.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- rtl/inc/typefile.inc   2017-02-18 10:41:19.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ rtl-new/inc/typefile.inc       2017-02-18 10:48:32.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -68,12 +68,151 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Rewrite(UnTypedFile(f),Size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ End;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{ this code is duplicated in the iso7185 unit }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$IF defined(WINDOWS)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    type
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      isoLPWStr = PWideChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      isoWinBool = LongBool;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TSysCharSet = set of AnsiChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function GetEnvironmentStringsW: isoLPWStr; stdcall; external 'kernel32' name 'GetEnvironmentStringsW';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function FreeEnvironmentStringsW(_para1 : isoLPWStr): isoWinBool; stdcall; external 'kernel32' name 'FreeEnvironmentStringsW';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function StrLen(p : PWideChar): sizeint; external name 'FPC_PWIDECHAR_LENGTH'; overload;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {$push}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {$checkpointer off}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function CharInSet(Ch : WideChar; const CSet : TSysCharSet): Boolean;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      CharInSet := (Ch <= #$FF) and (AnsiChar(byte(Ch)) in CSet);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function InternalChangeCase(const S : UnicodeString; const Chars: TSysCharSet; const Adjustment: Longint): UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i : Integer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        p : PWideChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        unique : Boolean;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        InternalChangeCase := S;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if InternalChangeCase = '' then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          exit;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        unique := false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        p := PWideChar(InternalChangeCase);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for i := 1 to Length(InternalChangeCase) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if CharInSet(p^, Chars) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if not unique then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              UniqueString(InternalChangeCase);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              p := @InternalChangeCase[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              unique := true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            p^ := WideChar(Ord(p^) + Adjustment);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(p);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function UpperCase(const s : UnicodeString) : UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        UpperCase := InternalChangeCase(s, ['a'..'z'], -32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function GetEnvironmentVariable(const EnvVar : UnicodeString) : UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      s, upperenv : UnicodeString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      i : Longint;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      hp, p : PWideChar;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GetEnvironmentVariable := '';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      p := GetEnvironmentStringsW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      hp := p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      upperenv := uppercase(envvar);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      while hp^ <> #0 do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        s := hp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i := pos('=', s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if uppercase(copy(s,1,i-1)) = upperenv then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          GetEnvironmentVariable := copy(s, i+1, length(s)-i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { next string entry }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        hp := hp + strlen(hp) + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      FreeEnvironmentStringsW(p);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    function getTempDir: String;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      astringLength : Integer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      getTempDir := GetEnvironmentVariable('TMP');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if getTempDir = '' then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        getTempDir := GetEnvironmentVariable('TEMP');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      astringlength := Length(getTempDir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (astringlength > 0) and (getTempDir[astringlength] <> DirectorySeparator) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        getTempDir := getTempDir + DirectorySeparator;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {$pop}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ELSEIF defined(UNIX)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  function getTempDir: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      key: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      value: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      i_env, i_key, i_value: integer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      value := '/tmp/';  (** default for UNIX **)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      while (envp <> NIL) and assigned(envp^) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i_env := 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        i_key := 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        while not (envp^[i_env] in ['=', #0]) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          key[i_key] := envp^[i_env];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(i_env);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(i_key);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        setlength(key, i_key - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (key = 'TEMP') or (key = 'TMP') or (key = 'TMPDIR') then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          inc(i_env);    (** skip '=' **)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          i_value := 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          while (envp^[i_env] <> #0) do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            value[i_value] := envp^[i_env];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            inc(i_env);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            inc(i_value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          setlength(value, i_value - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        inc(envp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      i_value:=length(value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (i_value > 0) and (value[i_value] <> DirectorySeparator) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        value := value + DirectorySeparator;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      getTempDir := value;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ELSE}  // neither unix nor windows
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  function getTempDir: string;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    getTempDir:='';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ENDIF}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {$ifdef FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ { this code is duplicated in the iso7185 unit }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Procedure DoAssign(var t : TypedFile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  Assign(t,'fpc_'+HexStr(random(1000000000),8)+'.tmp');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  Assign(t,getTempDir+'fpc_'+HexStr(random(1000000000),8)+'.tmp');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ End;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {$else FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ { this code is duplicated in the iso7185 unit }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -81,8 +220,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   start : dword = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  Assign(t,'fpc_'+HexStr(start,8)+'.tmp');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {$ifdef EXCLUDE_COMPLEX_PROCS}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   runerror(219);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {$else EXCLUDE_COMPLEX_PROCS}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  Assign(t,getTempDir+'fpc_'+HexStr(start,8)+'.tmp');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   inc(start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {$endif EXCLUDE_COMPLEX_PROCS}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ End;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {$endif FPC_HAS_FEATURE_RANDOM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/fpc/files/patch-transparent-filename.diff b/lang/fpc/files/patch-transparent-filename.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..39019b8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/fpc/files/patch-transparent-filename.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,93 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -Naur compiler/globtype.pas compiler/globtype.pas
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- compiler/globtype.pas  2017-02-18 11:41:40.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ compiler/globtype.pas  2017-02-18 11:49:27.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -179,6 +179,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          { parameter switches }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          cs_check_unit_name,cs_constructor_name,cs_support_exceptions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          cs_support_c_objectivepas,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         cs_transparent_file_names,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          { units }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          cs_load_objpas_unit,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          cs_load_gpc_unit,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -Naur compiler/ngenutil.pas compiler/ngenutil.pas
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- compiler/ngenutil.pas  2017-02-18 11:41:57.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ compiler/ngenutil.pas  2017-02-18 11:48:51.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -274,12 +274,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        (tfiledef(tstaticvarsym(p).vardef).filetyp=ft_text) and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        (tstaticvarsym(p).isoindex<>0) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-         addstatement(stat^,ccallnode.createintern('fpc_textinit_iso',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-           ccallparanode.create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-             cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-           ccallparanode.create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-             cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-           nil))));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         if cs_transparent_file_names in current_settings.globalswitches then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           addstatement(stat^,ccallnode.createintern('fpc_textinit_filename_iso',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             ccallparanode.create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               cstringconstnode.createstr(tstaticvarsym(p).Name),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             ccallparanode.create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             ccallparanode.create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             nil)))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           addstatement(stat^,ccallnode.createintern('fpc_textinit_iso',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             ccallparanode.create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             ccallparanode.create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             nil))));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -Naur compiler/options.pas compiler/options.pas
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- compiler/options.pas   2017-02-18 11:42:12.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ compiler/options.pas   2017-02-18 11:47:51.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1933,6 +1933,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            include(init_settings.moduleswitches,cs_support_macro);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        'o' : //an alternative to -Mtp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          SetCompileMode('TP',true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                       'r' :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                         If UnsetBool(More, j, opt, false) then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                           exclude(init_settings.globalswitches,cs_transparent_file_names)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                         else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                           include(init_settings.globalswitches,cs_transparent_file_names);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {$ifdef gpc_mode}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        'p' : //an alternative to -Mgpc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          SetCompileMode('GPC',true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -Naur rtl/inc/compproc.inc rtl/inc/compproc.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- rtl/inc/compproc.inc   2017-02-18 11:44:14.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ rtl/inc/compproc.inc   2017-02-18 11:47:10.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -411,6 +411,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Function fpc_get_input:PText;compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Function fpc_get_output:PText;compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Procedure fpc_textinit_iso(var t : Text;nr : DWord);compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Procedure fpc_textinit_filename_iso(var t : Text;nr : DWord;const filename : string);compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Procedure fpc_textclose_iso(var t : Text);compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Procedure fpc_Write_End(var f:Text); compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Procedure fpc_Writeln_End(var f:Text); compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -Naur rtl/inc/text.inc rtl/inc/text.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- rtl/inc/text.inc       2017-02-18 11:44:36.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ rtl/inc/text.inc       2017-02-18 11:46:23.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -652,6 +652,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {$endif FPC_HAS_FEATURE_COMMANDARGS}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Procedure fpc_textinit_filename_iso(var t : Text;nr : DWord;const filename : string);compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$ifdef FPC_HAS_FEATURE_COMMANDARGS}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if paramstr(nr)='' then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    assign(t,filename+'.txt')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    assign(t,paramstr(nr));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$else FPC_HAS_FEATURE_COMMANDARGS}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  { primitive workaround for targets supporting no command line arguments,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    invent some file name, try to avoid complex procedures like concating strings which might
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    pull-in bigger parts of the rtl }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  assign(t,chr((nr mod 16)+65));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{$endif FPC_HAS_FEATURE_COMMANDARGS}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Procedure fpc_textclose_iso(var t : Text);compilerproc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ begin
</span></pre><pre style='margin:0'>

</pre>