CVS difference for ai12s/ai12-0337-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0337-1.txt

--- ai12s/ai12-0337-1.txt	2019/06/11 00:53:16	1.1
+++ ai12s/ai12-0337-1.txt	2019/07/04 00:16:11	1.2
@@ -1,5 +1,9 @@
-!standard A.16(74/2)                                    19-06-06  AI12-0337-1/01
+!standard A.16(47/2)                                    19-07-03  AI12-0337-1/02
+!standard A.16(74/2)
+!standard A.16(82/3)
 !class binding interpretation 19-06-06
+!status Amendment 1-2012 19-07-03
+!status ARG Approved 8-0-2  19-06-14
 !status work item 19-06-06
 !status received 19-06-03
 !priority Low
@@ -22,7 +26,7 @@
 
 Add after A.16(47/2):
 
-   A *root directory* is a directory whose name cannot be decomposed.
+   A *root directory* is a directory that has no containing directory.
 
    Implementation Note: For Unix and Unix-like systems, "/" is the root. 
    For Windows, "C:\" and "\\Computer\Share" are roots. 
@@ -41,18 +45,17 @@
 Add after A.16(74/2):
 
    AARM Discussion: The result of Simple_Name corresponds to the result of 
-    the "basename" command on Linux and Unix. The "basename" command ignores 
-    a trailing '/' and then returns the part of the name in front of a '/'. 
-    It returns a root intact. The null string is never returned. Similar 
-    rules should be used for Windows filenames.
+    the "basename" command on Linux and Unix. If the filename ends with a ‘/’,
+    and is not a root, then “basename” returns the part in front of all of 
+    the trailing ‘/’s. It returns a root intact. The null string is never 
+    returned. Similar rules should be used for Windows filenames.
 
 Add after AARM A.16(76.a/2):
 
    AARM Ramification: Containing_Directory raises Use_Error when passed a
-     string representing a root directory. A root has no containing 
-     directory by definition.
+     string representing a root directory.
 
-Modify A.16(81/3):
+Modify A.16(82/3):
 
    Returns the name of the external file with the specified 
    Containing_Directory, Name, and Extension. If Extension is the null 
@@ -69,19 +72,14 @@
         extension;
       * the string given as Name is not a possible simple name (if 
         Extension is null) or base name (if Extension is nonnull); or
-      * the string given as Name is a root directory and either of 
+      * the string given as Name is a root directory, and 
         Containing_Directory or Extension is nonnull.
 
-   [Editor's note: Rather than the second part of this rule, we could have
-    Base_Name passed a root raising Name_Error. I didn't do that as we'd
-    still need the containing directory rule, and it doesn't seem to help
-    enough.]
-
 Add after A.16.1(17/3):
 
    AARM Ramification: Root directories are considered simple names, so
    this function will return True if Name represents a root. Use 
-   Is_Root_Directory if it necessary to tell between roots and other
+   Is_Root_Directory if it is necessary to distinguish roots and other
    simple names.
 
 Delete AARM A.16.1(20.a/3). [It was moved above.]
@@ -112,13 +110,71 @@
 returns a root unchanged. This keeps Simple_Name idemopotent and keeps it from 
 raising exceptions unnecessarily.
 
-To allow this, we have to explicit state that Compose of a Root will raise 
+To allow this, we have to explicitly state that Compose of a Root will raise 
 Name_Error unless the Containing_Directory is null.
 
 We update a number of AARM notes to clarify the intent as well, in particular
 that Containing_Directory(<Some_Root>) raises Use_Error. This is necessary in
 order that Compose (Containing_Directory (A), Simple_Name (A)) always returns
 a name functionally the same as A in the absence of exceptions.
+
+!corrigendum A.16(47/2)
+
+@dinsa
+The @i<full name> of an external file is a full specification of the name of
+the file. If the external environment allows alternative specifications of the
+name (for example, abbreviations), the full name should not use such
+alternatives. A full name typically will include the names of all of the
+directories that contain the item. The @i<simple name> of an external file is
+the name of the item, not including any containing directory names. Unless
+otherwise specified, a file name or directory name parameter in a call to a
+predefined Ada input-output subprogram can be a full name, a simple name, or
+any other form of name supported by the implementation.
+@dinst
+A @i<root directory> is a directory that has no containing directory.
+
+!corrigendum A.16(74/2)
+
+@drepl
+@xindent<Returns the simple name portion of the file name specified by Name.
+The exception Name_Error is propagated if the string given as Name does not
+allow the identification of an external file (including directories and special
+files).>
+@dby
+@xindent<Returns the simple name portion of the file name specified by Name.
+The simple name of a root directory is the root itself.
+The exception Name_Error is propagated if the string given as Name does not
+allow the identification of an external file (including directories and special
+files).>
+
+!corrigendum A.16(82/3)
+
+@drepl
+@xindent<Returns the name of the external file with the specified
+Containing_Directory, Name, and Extension. If Extension is the null string, then
+Name is interpreted as a simple name; otherwise, Name is interpreted as a base
+name. The exception Name_Error is propagated if the string given as
+Containing_Directory is not null and does not allow the identification of a
+directory, or if the string given as Extension is not null and is not a possible
+extension, or if the string given as Name is not a possible simple name (if
+Extension is null) or base name (if Extension is non-null).>
+@dby
+@xindent<Returns the name of the external file with the specified
+Containing_Directory, Name, and Extension. If Extension is the null string, then
+Name is interpreted as a simple name; otherwise, Name is interpreted as a base
+name. The exception Name_Error is propagated if:>
+
+@xinbull<the string given as Containing_Directory is not null and does not 
+allow the identification of a directory;>
+
+@xinbull<the string given as Extension is not null and is not a possible 
+extension;>
+
+@xinbull<the string given as Name is not a possible simple name (if 
+Extension is null) or base name (if Extension is nonnull); or>
+
+@xinbull<the string given as Name is a root directory, and 
+Containing_Directory or Extension is nonnull.>
 
 !ASIS
 

Questions? Ask the ACAA Technical Agent