home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / v20 / repdir / 1003.1 < prev    next >
Internet Message Format  |  1990-08-02  |  29KB

  1. From uucp@tic.com  Thu Jun 28 18:15:17 1990
  2. Received: from cs.utexas.edu by uunet.uu.net (5.61/1.14) with SMTP 
  3.     id AA24519; Thu, 28 Jun 90 18:15:17 -0400
  4. Posted-Date: 28 Jun 90 18:34:23 GMT
  5. Received: by cs.utexas.edu (5.64/1.65)
  6.     id AA25755; Thu, 28 Jun 90 17:15:02 -0500
  7. Received: by longway.tic.com (4.22/tic.1.2)
  8.     id AA06579; Thu, 28 Jun 90 16:10:59 cdt
  9. From: <jsh@usenix.org>
  10. Newsgroups: comp.std.unix
  11. Subject: Standards Update, IEEE 1003.1: System services interface
  12. Message-Id: <385@usenix.ORG>
  13. Sender: std-unix@usenix.ORG
  14. Reply-To: std-unix@uunet.uu.net
  15. Date: 28 Jun 90 18:34:23 GMT
  16. Apparently-To: std-unix-archive@uunet.uu.net
  17.  
  18. From:  <jsh@usenix.org>
  19.  
  20.            An Update on UNIX*-Related Standards Activities
  21.  
  22.                               June, 1990
  23.  
  24.                  USENIX Standards Watchdog Committee
  25.  
  26.                    Jeffrey S. Haemer, Report Editor
  27.  
  28. IEEE 1003.1: System services interface
  29.  
  30. Paul Rabin <rabin@osf.org> reports on the April 23-27 meeting in Salt
  31. Lake City, UT:
  32.  
  33. 1.  Introduction
  34.  
  35. The POSIX 1003.1 working group is the oldest POSIX group, responsible
  36. for specifying general-purpose operating system interfaces for
  37. portable applications.  This group developed the original 1988 POSIX
  38. standard, and is now responsible for writing supplements and revisions
  39. to that standard.  This work includes
  40.  
  41.    + corrections and clarifications to the 1988 POSIX standard
  42.  
  43.    + material that was too controversial to handle before
  44.  
  45.    + new interfaces requested by other POSIX working groups
  46.  
  47. Like other working groups developing ``base standards,'' the 1003.1
  48. working group is responsible for writing both C language and
  49. language-independent versions of the specifications that it develops.
  50. So far, the group has concentrated on the C language versions, but
  51. there is increasing pressure to make progress on the language-
  52. independent specifications.
  53.  
  54. The working group recently completed a revision of the 1988 POSIX
  55. standard, and is currently working on a supplement to that revision.
  56.  
  57. There has been a lot of turnover in the group since the 1988 POSIX
  58. standard was completed, but there are still a few old-timers to
  59. provide continuity.  About 15 people attended the last two meetings.
  60. This seems to be a good size for getting work done.  This is
  61. definitely a technical crowd; check your politics at the door.
  62.  
  63. For more information about the group and how to participate, contact
  64. the chair, Donn Terry, at donn@hpfcla.fc.hp.com or hplabs!hpfcla!donn.
  65.  
  66. __________
  67.  
  68.   * UNIXTM is a Registered Trademark of UNIX System Laboratories in
  69.     the United States and other countries.
  70.  
  71. June, 1990 Standards Update     IEEE 1003.1: System services interface
  72.  
  73.  
  74.                 - 2 -
  75.  
  76. Send comments and proposals to the secretary, Keith Stuck, at
  77. keith@sp7040.uucp.  I've made this report a bit more detailed than
  78. usual in order to give the technical details wider exposure.  New
  79. proposals, and comments on any of the current active proposals or
  80. issues are welcome.
  81.  
  82. 2.  1003.1a Status
  83.  
  84. 1003.1a is the recently completed revision to the 1988 POSIX standard.
  85. No new interfaces or features were introduced, but the text was
  86. revised in several ways.  The main reason for the revision was to
  87. prepare the text for balloting as an ISO standard, so the document had
  88. to be made to look like an ISO standard.  This meant adding ISO
  89. boiler-plate, changing external document references to pretend that
  90. only standards exist, changing internal cross-references so that
  91. chapters are renamed sections, and sections are renamed clauses and
  92. subclauses, changing ``will'' to ``shall,'' etc., ad nauseam.  While
  93. the working group was having fun with all that, they took the
  94. opportunity to do some cleaning up.  They corrected errors, clarified
  95. unclear language, and changed the function synopses to use ANSI C
  96. prototypes.  The group did make one normative change, which was to
  97. specify reserved namespaces.  This will allow implementations and
  98. revisions to the standard to define extensions without breaking
  99. existing, conforming applications.  It's messier than you might think.
  100.  
  101. After four recirculation ballots, IEEE balloting was completed in
  102. April.  Now it has to get through the ISO balloting process.  See the
  103. recent snitch report on 1003.5 for a description of how IEEE and ISO
  104. balloting is synchronized, and what all of the acronyms mean.
  105.  
  106. ISO has been balloting 1003.1a as ISO/IEC DIS 9945-1.  After the first
  107. ISO ballot, JTC1 approved 9945-1 for promotion to full IS status.
  108. This approval was overruled by the ISO Central Secretariat on the
  109. grounds that the document format was still not satisfactory (still
  110. haven't caught all of those ``will''s).  Rather than publish the
  111. current document and then immediately revise, ballot, and publish it
  112. again, it was decided to create a new DIS and to start a second round
  113. of ISO balloting.  This will cause a delay in the publication of the
  114. international POSIX standard (and hence also the IEEE POSIX.1
  115. standard).  The U.S. Technical Advisory Group (TAG) is responsible for
  116. generating the U.S. ballot.  Assuming that no normative changes are
  117. introduced by the ISO balloting process, the resulting document will
  118. be published by IEEE as IEEE Std 1003.1-1990.
  119.  
  120. June, 1990 Standards Update     IEEE 1003.1: System services interface
  121.  
  122.  
  123.                 - 3 -
  124.  
  125. 3.  1003.1b Status
  126.  
  127. Since 1003.1a is now out of IEEE's hands, the working group spent the
  128. Utah meeting working on 1003.1b, the first supplement to 1003.1a.
  129. This will include some corrections and clarifications that didn't make
  130. it into 1003.1a, but will mainly consist of new interfaces and
  131. features.
  132.  
  133. 1003.1b has been in the works for several meetings, so the draft
  134. already contains a lot of material.  The first day was devoted to
  135. revision of the draft, the rest of the week to considering new
  136. proposals.  The previously announced schedule for 1003.1b specified
  137. the Utah meeting as the cutoff date for new proposals.  Unfortunately,
  138. some expected proposals were not received, and some that were received
  139. were not ready for incorporation, so the cutoff was deferred until the
  140. next meeting, in Danvers, Massachusetts.
  141.  
  142. Draft 2 of 1003.1b was distributed just before the meeting in Utah.
  143. Draft 3 should be available before the Danvers meeting.  1003.1b is
  144. expected to be approved sometime in early 1991, and to be published by
  145. IEEE as a separate supplement to the IEEE Std 1003.1-1990.
  146.  
  147. 3.1  New Features in the Current Draft of 1003.1b
  148.  
  149. Draft 2 of P1003.1b includes a new data interchange format, and new
  150. interface specifications for symbolic links, environment list access,
  151. and file-tree walking.  These had been proposed and generally accepted
  152. at previous meetings.  Many new issues were raised and discussed.
  153.  
  154. 3.1.1  Symbolic_Links  P1003.1b adds BSD symbolic links to the 1988
  155. POSIX standard as a new required feature.  New interfaces for
  156. symlink(), readlink(), and lstat() are specified, and the definition
  157. of pathname resolution is amended to include the handling of symbolic
  158. links.  Implementations may optionally enforce a limit on the number
  159. of symbolic links that can be tolerated during the resolution of a
  160. single pathname, for instance to detect loops.  The new symbol
  161. {_POSIX_SYMLOOP} is defined to be the minimum value of such a limit.
  162. A new error, [ELOOP], is returned if such a limit is exceeded.
  163. Symbolic links that are encountered in pathname prefixes are always
  164. resolved.  Symbolic links named by the final component of a pathname
  165. will be resolved or not, depending on the particular interface.  By
  166. default, such symbolic links will be resolved, unless specified
  167. otherwise.  The interfaces that will not resolve symbolic links named
  168. by pathname arguments are:
  169.  
  170.    + readlink()
  171.      If the pathname argument names a symbolic link, the contents of
  172.      the link will be returned.
  173.  
  174.    + lstat()
  175.      If the pathname argument names a symbolic link, a stat structure
  176.      will be returned for the link itself.
  177.  
  178. June, 1990 Standards Update     IEEE 1003.1: System services interface
  179.  
  180.  
  181.                 - 4 -
  182.  
  183.    + unlink()
  184.      If the pathname argument names a symbolic link, the link itself
  185.      will be removed.
  186.  
  187.    + rmdir()
  188.      If the pathname argument names a symbolic link, the link will not
  189.      be followed and the call will fail.
  190.  
  191.    + open()
  192.      Symbolic links are followed, unless both O_CREAT and O_EXCL are
  193.      set.  If both O_CREAT and O_EXCL are set, and the pathname
  194.      argument names an existing symbolic link, the link will not be
  195.      followed and the call will fail.
  196.  
  197.    + link()
  198.      If the new pathname names a symbolic link, the link will not be
  199.      followed and the call will fail.  If the old pathname names a
  200.      symbolic link, the link will be followed.  This is the BSD
  201.      behavior.  SVR4.0 does not follow the link in this case, thus
  202.      supporting hard links to symbolic links.  The working group felt
  203.      that the SVR4 behavior unnecessarily restricts implementations
  204.      (for instance, those that do not implement symbolic links with
  205.      inodes), and has much more complex semantics.
  206.  
  207.    + rename()
  208.      If the old pathname names a symbolic link, the link will not be
  209.      followed.  Instead, the symbolic link itself will be renamed.  If
  210.      the new pathname names a symbolic link, it will not be followed.
  211.      Instead, the symbolic link will be removed, and a new hard link
  212.      will be created naming the file that was previously named by the
  213.      old pathname.
  214.  
  215.      The 1988 POSIX standard specifies that if the new pathname names
  216.      an existing file, rename() will fail if the new and old pathnames
  217.      do not either both name directories or both name non-directory
  218.      files.  This rule needs to be expanded to include the case of the
  219.      new pathname naming a symbolic link.  Should the rename() call
  220.      fail depending on whether or not the symbolic link named by the
  221.      new pathname itself names a directory or a non-directory file?
  222.      This will be resolved at the next meeting.
  223.  
  224. Symbolic links are not required to have any attributes other than
  225. their file type and their contents.  This is intended to provide the
  226. simplest semantics and to allow the greatest latitude for
  227. implementations.
  228.  
  229. 3.1.2  Other_BSD_Interfaces  P1003.1b also includes specifications for
  230. the following interfaces:
  231.  
  232. June, 1990 Standards Update     IEEE 1003.1: System services interface
  233.  
  234.  
  235.                 - 5 -
  236.  
  237.    + fchmod()
  238.  
  239.    + fchown()
  240.  
  241.    + fsync()
  242.  
  243.    + ftruncate()
  244.  
  245. 3.1.3  Environment_List  The ANSI-C standard defines the getenv()
  246. function to retrieve the value corresponding to a given name in a
  247. program's environment list, but does not specify the implementation or
  248. initialization of that list.  The 1988 POSIX standard specified the
  249. traditional list implementation using the external variable environ,
  250. and specified the initialization of the list by the exec functions.
  251. In an attempt to extend the set of high-level interfaces to the
  252. environment list, and to pave the way for the possible eventual
  253. removal of environ, the working group has included putenv() and
  254. clearenv() interfaces in 1003.1b.  Three problems have been identified
  255. with these high-level interfaces:
  256.  
  257.    + They cause static data to be shared between the application and
  258.      the implementation.  Neither the application nor the
  259.      implementation can easily manage the storage for environment
  260.      "name=value" strings.
  261.  
  262.    + They are not robust.  The interactions between the high-level
  263.      interfaces and access via environ is not specified.
  264.  
  265.    + They can't be easily extended to handle multiple lists.  There is
  266.      no way to copy a list, or to build a new list for execle() or
  267.      execve().
  268.  
  269. The putenv() and clearenv() interfaces may be removed from 1003.1b at
  270. the next meeting if a revised proposal does not appear.
  271.  
  272. 3.1.4  File_Tree_Walk  The 1003.1 working group promised the 1003.2
  273. group (Shell and Utilities) that a mechanism would be provided for
  274. walking an directory tree of unbounded depth using any given (non-
  275. zero) number of free file descriptors.  The Berkeley folks have
  276. implemented a set of high-level interfaces defined by David Korn of
  277. Bell Labs, and proposed them for inclusion in 1003.1b.  These
  278. interfaces support every option and search order required by the
  279. 1003.2 commands.  The 1003.1 group wants a simpler interface suitable
  280. for typical application programs, so Keith Bostic will put the
  281. proposal on a ``weight-reducing diet'' and resubmit it for the next
  282. draft.
  283.  
  284. The high-level file-tree walk interfaces can be implemented using only
  285. the existing 1003.1 interfaces.  Since 1003.1 does not define a
  286. portable way to save and restore file position for a directory and
  287. cannot hold a file descriptor open for each directory level, the
  288.  
  289. June, 1990 Standards Update     IEEE 1003.1: System services interface
  290.  
  291.  
  292.                 - 6 -
  293.  
  294. implementation must read and save all directory entries each time a
  295. new directory is visited.  This requires only a single file descriptor
  296. (or whatever resource is used by by opendir()).  If the underlying
  297. system does provide a way to save and restore file position for
  298. directories, the file-tree walk implementation can use it to reduce
  299. memory consumption.
  300.  
  301. There was a discussion about whether it is possible (and preferable)
  302. to improve the low-level directory interfaces instead of adding new,
  303. high-level interfaces.  Do the high-level interfaces really add new
  304. functionality for portable applications?  Do they belong with the
  305. low-level operating system interfaces specified in 1003.1?
  306.  
  307. Walking an unbounded file tree requires an unbounded number of
  308. directory file positions to be supported using a bounded number of
  309. file descriptors.  Either seekdir() and telldir() are needed, or an
  310. unbounded number of opendir()'s must use a bounded number of file
  311. descriptors.  The working group has already rejected seekdir() and
  312. telldir() because they cannot easily be supported on implementations
  313. that use a non-linear directory format.  A prohibition of simple
  314. implementations of opendir() using file descriptors is also likely to
  315. be rejected.
  316.  
  317. The underlying problem is that the orderedness of directory entries
  318. was implicit in the traditional implementations, but was not made
  319. fully explicit in 1003.1, partly out of a desire to permit alternate
  320. implementations (for instance, b-trees).  As a result, orderedness
  321. must now be imposed by the application.  On a non-linear directory
  322. implementation, if positioning is not supported, even opendir() must
  323. read in the whole directory.
  324.  
  325. 3.1.5  Data-Interchange_Format  The 1988 POSIX standard specified two
  326. data-interchange formats based on existing utilities.  These define
  327. the data-stream encoding of a sequence of files, together with their
  328. pathnames and other attributes.  The first format is based on tar and
  329. encodes files as a stream of 512-byte blocks.  The second format is
  330. based on cpio and encodes files as an unblocked byte stream.
  331.  
  332. The ISO POSIX group (JTC1/SC22/WG15) pointed out that both of these
  333. formats are incompatible with accepted international and U.S.
  334. standards.  After some arm twisting, the 1003.1 working group agreed
  335. to devise a new data interchange format based on IS 1001: 1986, which
  336. is more or less equivalent to ANS X3.27-1987, the familiar ANSI
  337. labeled tape format.
  338.  
  339. The current draft of 1003.1b includes the framework for the new
  340. specification, but a lot more work is needed.  Previous meetings
  341. discussed alternate proposals.  The topic has been strangely quiet
  342. lately, considering the confusion that may be expected when it goes to
  343. ballot.  It wasn't discussed at the Utah meeting at all.
  344.  
  345. June, 1990 Standards Update     IEEE 1003.1: System services interface
  346.  
  347.  
  348.                 - 7 -
  349.  
  350. 3.2  {_POSIX_PATH_MAX}: A Clarification
  351.  
  352. The 1988 POSIX standard included two conflicting statements regarding
  353. {PATH_MAX} and {_POSIX_PATH_MAX}: one said that the null was included
  354. in the count; the other said that the null was excluded.  Traditional
  355. implementations have included the trailing null; some new
  356. implementations have excluded the null.
  357.  
  358. One alternative or the other had to be endorsed.  The working group
  359. decided that {_POSIX_PATH_MAX} should not include the trailing null,
  360. since specifying this will not break currently conforming
  361. applications.
  362.  
  363. 3.3  Headers and Name-Space Control
  364.  
  365. Since 1003.1b is adding many new identifiers to the standard, there
  366. was discussion about whether new identifiers should be declared in new
  367. headers, or whether existing headers could be used, with new feature-
  368. test-macros to control visibility of the additional identifiers.  It
  369. was agreed that although both headers and feature-test macros control
  370. identifier visibility, their functions are complementary.  Headers are
  371. appropriately used to divide name-spaces horizontally, by
  372. functionality.  Feature-test macros are appropriately used to divide
  373. name-spaces vertically, by specification level.
  374.  
  375. With this understanding, the group decided that new identifiers will
  376. be declared in the ``right place.'' A new header will be created only
  377. if no existing header is functionally appropriate.
  378.  
  379. A new feature-test macro will be specified by 1003.1b and subsequent
  380. revisions: _POSIX_1_SOURCE.  This macro takes ordinal values, starting
  381. with 2 for 1003.1b, and will be incremented by 1 for every subsequent
  382. revision.  If the value is 1, the effect will be the same as if
  383. _POSIX_SOURCE were defined.
  384.  
  385. There are two changes here.  The new name was used to indicate that
  386. the macro only controls the visibility of identifiers defined in
  387. POSIX.1.  The usage was changed to allow the value to indicate the
  388. particular revision or supplement to the standard, rather than having
  389. to create a new macro each time.  This should simplify the
  390. construction and maintenance of header files.
  391.  
  392. 3.4  Requests
  393.  
  394. Two requests were made by vendors trying to support POSIX behavior on
  395. non-UNIX file systems:
  396.  
  397.    + that {_POSIX_LINK_MAX} be reduced from 6 to 2
  398.  
  399.    + that {_POSIX_PATH_MAX} be reduced from 255 to 252
  400.  
  401. June, 1990 Standards Update     IEEE 1003.1: System services interface
  402.  
  403.  
  404.                 - 8 -
  405.  
  406. Both requests were rejected.  Either of these changes could have made
  407. existing conforming applications non-conforming.  Even where the risk
  408. of breaking applications seemed small, the working group was reluctant
  409. to set a precedent without a pretty good rationale to protect them
  410. against similar requests in the future.
  411.  
  412. 3.5  New Proposals
  413.  
  414. Five proposals for new interfaces were submitted for inclusion in
  415. 1003.1b, many of which provoked lively discussion.  Some were
  416. accepted, some were rejected, and others were deferred to allow a
  417. revised proposal to be submitted or to allow more time for
  418. consideration.
  419.  
  420. 3.5.1  seteuid(),_setegid()  Bob Lenk and Mike Karels proposed a set
  421. of changes to the way the effective user and group id's are handled,
  422. in order to provide better support for setuid/setgid programs.
  423.  
  424.    + Require that all implementations support the functionality of the
  425.      saved user ID and saved group ID.  These process attributes are
  426.      set by the exec functions and by privileged calls to setuid() and
  427.      setgid().
  428.  
  429.    + Add seteuid() and setegid() as new functions that change only the
  430.      effective user ID and effective group ID, respectively.  A change
  431.      is allowed if the proposed new user/group ID is the same as
  432.      either the real user/group ID or the saved user/group ID.
  433.  
  434.    + Redefine the {_POSIX_SAVED_IDS} option to apply only to non-
  435.      privileged calls to setuid() and setgid().
  436.  
  437. This proposal has general support in the working group, and will be
  438. included in the next draft of 1003.1b.
  439.  
  440. The discussion of this proposal led to a general lament about how
  441. unclear the group model is in the 1988 POSIX standard, perhaps the
  442. result of a hasty marriage between the System V and BSD models.  At
  443. the next meeting, the working group intends to add new text to
  444. P1003.1b to clarify the relation between the effective group ID and
  445. the supplementary group list.
  446.  
  447. 3.5.2  Magnetic_Tape_Support  The 1003.10 working group
  448. (Supercomputing Profiles) proposed new interfaces to support basic
  449. controller functions for magnetic tape drives, based on the ioctl()
  450. commands supported in 4.3BSD.  Although support for these interfaces
  451. would be optional in 1003.1b, the working group decided that the
  452. functions should be further specified according to whether they are:
  453.  
  454.    + required for all types of tape drives;
  455.  
  456. June, 1990 Standards Update     IEEE 1003.1: System services interface
  457.  
  458.  
  459.                 - 9 -
  460.  
  461.    + required only for 9-track tape drives;
  462.  
  463.    + required only for cartridge tape drives; or
  464.  
  465.    + optional on all types of tape drives.
  466.  
  467. The proposal needed further revision, but was generally supported by
  468. the working group.
  469.  
  470. The submitted proposal also included interfaces for mounting labeled
  471. tape volumes.  These were considered to be inappropriate for inclusion
  472. at this time and will be deferred until a later revision of the
  473. standard.
  474.  
  475. 3.5.3  Checkpoint/Restart  The 1003.10 working group also proposed new
  476. (optional) interfaces for checkpointing and restarting processes.
  477. This proposal is based on two existing implementations.  The
  478. interfaces are intended to protect very-long-running applications from
  479. both scheduled shutdowns and unexpected failures of the system.
  480.  
  481. The 1003.1 working group was not happy to have to deal with this and
  482. had lots of questions.  Were programming interfaces for portable
  483. applications really needed, or was a command interface sufficient?
  484. How much state needed to be saved in the checkpoint?  What if the
  485. processes depended on additional state information that was not in the
  486. checkpoint, such as file data or the states of other communicating
  487. processes or devices?  In this case, the restart would only be
  488. successful if this additional state had not changed since the
  489. checkpoint.  How could such changes be detected or prevented?  What is
  490. the set of interfaces that an application can use and be sure that it
  491. can be checkpointed and restarted successfully, without dependencies
  492. on additional state?  Should applications have a mechanism for
  493. checkpointing themselves, or for blocking an external request that
  494. they be checkpointed?
  495.  
  496. Because a checkpoint/restart mechanism will have a major impact on
  497. implementations, and the requirements are not yet clear, the working
  498. group was unwilling to endorse the current proposal.  A task force
  499. made up of representatives of the 1003.1 and 1003.10 working groups
  500. will be created to clarify the requirements and revise the proposal.
  501.  
  502. This proposal is going to need a lot more discussion, so checkpoint
  503. restart interfaces will almost certainly not be included in P1003.1b,
  504. but they may be adopted in a subsequent revision.
  505.  
  506. 3.5.4  Messaging  The UniForum proposal for new messaging interfaces
  507. has been before the 1003.1 working group for a couple of meetings now.
  508. The proposed interfaces are intended as replacements for the message
  509. catalog interfaces specified in XPG3, and differ from those in several
  510. ways (since the discussion was fairly contentious, I'll try to be
  511. objective):
  512.  
  513. June, 1990 Standards Update     IEEE 1003.1: System services interface
  514.  
  515.  
  516.                 - 10 -
  517.  
  518.    + The XPG3 interfaces identify a message by the triple: <catalog
  519.      name, set ID, msg ID>, where catalog name is a file name, and set
  520.      ID and msg ID are integers.  The UniForum interfaces identify a
  521.      message by the triple: <locale name, domain name, message name>,
  522.      where locale name, domain name, and message name are all strings.
  523.      The locale for messages is specified by the new LC_MESSAGES
  524.      category of the locale.  Advocates of the UniForum proposal claim
  525.      that string identifiers are easier to use and are more robust
  526.      against errors during application development and maintenance.
  527.  
  528.    + In the XPG3 scheme, each message catalog is an ordinary file.
  529.      Message catalogs must be specified by filename and explicitly
  530.      opened before messages can be retrieved.  The NLSPATH environment
  531.      variable provides a search path for message catalogs that can be
  532.      parameterized by (among other things) the language, territory,
  533.      and codeset fields of the LANG environment variable.  In the
  534.      UniForum scheme, groups of messages are specified by an abstract
  535.      ``domain.'' A default domain can be set to control message
  536.      accesses, or the domain can be explicitly specified for an
  537.      individual message access.  Advocates of the UniForum proposal
  538.      claim that the binding of message catalogs to files unnecessarily
  539.      restricts implementations and imposes a more complex interface on
  540.      application developers.
  541.  
  542.    + The XPG3 interface includes an additional string argument that is
  543.      returned in case no message specified by <set ID, msg ID> can be
  544.      retrieved from the message catalog.  In the UniForum proposal,
  545.      the message name itself is returned if the message cannot be
  546.      found.  Advocates of the UniForum proposal point out that the
  547.      message name string makes a separate, ``default'' message string
  548.      unnecessary.
  549.  
  550. In addition, the UniForum proposal includes a specification of the
  551. message source file format that differs from the format specified in
  552. XPG3.
  553.  
  554.    + In the XPG3 format, message strings are implicitly delimited: at
  555.      the beginning by the preceding message ID followed by a single
  556.      space or tab character, and at the end by an unescaped newline.
  557.      In the UniForum format, all strings, including domain names,
  558.      message ID's, and message strings, are explicitly delimited by
  559.      double quotes (").  Adjacent strings separated by white-space
  560.      characters are concatenated.  Advocates of the UniForum proposal
  561.      claim that the new format provides better support for multi-line
  562.      strings and for leading and trailing white-space characters in
  563.      strings.
  564.  
  565.    + In the XPG3 format, the message ID and its corresponding message
  566.      string are implicitly determined by their position on a source
  567.      line.  In the UniForum format, explicit directives are provided
  568.      for message ID's and message strings.  Advocates of the UniForum
  569.  
  570. June, 1990 Standards Update     IEEE 1003.1: System services interface
  571.  
  572.  
  573.                 - 11 -
  574.  
  575.      proposal claim that the new format is extensible.  New attributes
  576.      may be added to message entries, such as screen coordinates or
  577.      font size.
  578.  
  579.    + The XPG3 format includes directives for deleting individual
  580.      messages and sets of messages, and the associated gencat utility
  581.      takes no switches.  In the UniForum proposal, all deletion
  582.      semantics are provided by switches on the associated gentext
  583.      utility.
  584.  
  585. There was much discussion of the interfaces; less about the source
  586. file format.  The most divisive issue was whether string message ID's
  587. are preferable to numeric message ID's.  Among those who felt that the
  588. new interfaces are better, there was disagreement about whether the
  589. advantages outweighed the cost of conversion for applications and
  590. implementations based on the XPG3 interfaces.  The rationale
  591. accompanying the UniForum proposal described several ways to convert
  592. applications from the XPG3 interfaces to the proposed new interfaces.
  593.  
  594. The working group asked X/Open to submit the XPG3 messaging interfaces
  595. as an alternate proposal, since they represent existing practice, and
  596. X/Open has agreed to do so.  X/Open has said that they will follow
  597. POSIX if POSIX endorses a different interface.  The decision regarding
  598. which, if any, messaging proposal to include in 1003.1b will be made
  599. at the POSIX meeting in Danvers.
  600.  
  601. It's hard to predict the fate of this proposal.  The UniForum proposal
  602. represents the consensus of one of the leading internationalization
  603. working groups and is reported to have some support within X/Open.  On
  604. the other hand, the POSIX working groups are obliged to respect
  605. existing practice.  Watch this space.
  606.  
  607. 3.5.5  /dev/stdin,_/dev/fd/n,_etc.  There was an unofficial proposal
  608. from members of the 1003.2 working group that open() be extended to
  609. recognize the special strings "/dev/stdin", "/dev/stdout",
  610. "/dev/stderr", and "/dev/fd/n", and return a new file descriptor
  611. dup()'ed from STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO, or file
  612. descriptor n, respectively.  This proposal was intended to allow
  613. simplified command line parsing, by eliminating special casing for
  614. ``-'' and ``--'' arguments.  The proposal was rejected after a short
  615. exploration of the possible semantics of these pathnames when used
  616. with link(), rename(), etc..
  617.  
  618. 4.  Conclusion
  619.  
  620. As you can see, there's a lot going on.  Even though most of the
  621. attention has shifted to other working groups, the 1003.1 group is
  622. busy revising and extending the 1988 standard.  The group is small
  623. now, by POSIX standards, but their work is as important as ever.
  624.  
  625. June, 1990 Standards Update     IEEE 1003.1: System services interface
  626.  
  627. Volume-Number: Volume 20, Number 56
  628.  
  629.