home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / volume.20 / text0057.txt < prev    next >
Encoding:
Internet Message Format  |  1990-08-02  |  27.4 KB

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