diff options
Diffstat (limited to 'lib/kernel')
| -rw-r--r-- | lib/kernel/doc/src/file.xml | 38 | ||||
| -rw-r--r-- | lib/kernel/src/kernel.app.src | 2 | ||||
| -rw-r--r-- | lib/kernel/test/file_name_SUITE.erl | 2 | 
3 files changed, 37 insertions, 5 deletions
| diff --git a/lib/kernel/doc/src/file.xml b/lib/kernel/doc/src/file.xml index b674b3ca93..593bee74fe 100644 --- a/lib/kernel/doc/src/file.xml +++ b/lib/kernel/doc/src/file.xml @@ -59,7 +59,7 @@      terminal supports UTF-8, otherwise <c>latin1</c>. The default can      be overridden using <c>+fnl</c> (to force <c>latin1</c> mode)      or <c>+fnu</c> (to force <c>utf8</c> mode) when starting -    <seealso marker="erts:erl"><c>erts:erl</c></seealso>.</p> +    <seealso marker="erts:erl"><c>erl</c></seealso>.</p>      <p>On operating systems with transparent naming, files can be      inconsistently named, for example, some files are encoded in UTF-8 while @@ -81,6 +81,22 @@      <p>See also section <seealso marker="stdlib:unicode_usage#notes-about-raw-filenames">Notes About Raw Filenames</seealso> in the STDLIB User's Guide.</p> +    <note><p> +      File operations used to accept filenames containing +      null characters (integer value zero). This caused +      the name to be truncated at the first null character. +      Filenames containing null characters inside the filename +      are now <em>rejected</em> and will cause primitive +      file operations fail. +    </p></note> +    <warning><p> +      Currently null characters at the end of the filename +      will be accepted by primitive file operations. Such +      filenames are however still documented as invalid. The +      implementation will also change in the future and +      reject such filenames. +    </p></warning> +    </description>    <datatypes> @@ -96,9 +112,21 @@      </datatype>      <datatype>        <name name="filename"/> +      <desc> +        <p> +	  See also the documentation of the +	  <seealso marker="#type-name_all"><c>name_all()</c></seealso> type. +	</p> +      </desc>      </datatype>      <datatype>        <name name="filename_all"/> +      <desc> +        <p> +	  See also the documentation of the +	  <seealso marker="#type-name_all"><c>name_all()</c></seealso> type. +	</p> +      </desc>      </datatype>      <datatype>        <name name="io_device"/> @@ -112,21 +140,23 @@        <name name="name"/>        <desc>          <p>If VM is in Unicode filename mode, <c>string()</c> and <c>char()</c> -          are allowed to be > 255. +          are allowed to be > 255. See also the documentation of the +	  <seealso marker="#type-name_all"><c>name_all()</c></seealso> type.          </p>        </desc>      </datatype>      <datatype>        <name name="name_all"/>        <desc> -        <p>If VM is in Unicode filename mode, <c>string()</c> and <c>char()</c> +        <p>If VM is in Unicode filename mode, characters            are allowed to be > 255.            <c><anno>RawFilename</anno></c> is a filename not subject to            Unicode translation,            meaning that it can contain characters not conforming to            the Unicode encoding expected from the file system            (that is, non-UTF-8 characters although the VM is started -          in Unicode filename mode). +          in Unicode filename mode). Null characters (integer value zero) +	  are <em>not</em> allowed in filenames (not even at the end).          </p>        </desc>      </datatype> diff --git a/lib/kernel/src/kernel.app.src b/lib/kernel/src/kernel.app.src index 2a88cc7e26..b5e5f8eb73 100644 --- a/lib/kernel/src/kernel.app.src +++ b/lib/kernel/src/kernel.app.src @@ -120,6 +120,6 @@    {applications, []},    {env, [{error_logger, tty}]},    {mod, {kernel, []}}, -  {runtime_dependencies, ["erts-9.1", "stdlib-3.4", "sasl-3.0"]} +  {runtime_dependencies, ["erts-9.1.1", "stdlib-3.4.3", "sasl-3.0"]}   ]  }. diff --git a/lib/kernel/test/file_name_SUITE.erl b/lib/kernel/test/file_name_SUITE.erl index 899102c908..f23529fec9 100644 --- a/lib/kernel/test/file_name_SUITE.erl +++ b/lib/kernel/test/file_name_SUITE.erl @@ -302,7 +302,9 @@ check_normal(Mod) ->  	      {ok, BC} = Mod:read(FD,1024),  	      ok = file:close(FD)  	  end || {regular,Name,Content} <- NormalDir ], +	{error, badarg} = Mod:rename("fil1\0tmp_fil2","tmp_fil1"),  	Mod:rename("fil1","tmp_fil1"), +	{error, badarg} = Mod:read_file("tmp_fil1\0.txt"),  	{ok, <<"fil1">>} = Mod:read_file("tmp_fil1"),  	{error,enoent} = Mod:read_file("fil1"),  	Mod:rename("tmp_fil1","fil1"), | 
