home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / std_unix / mod.std.unix.v7 < prev    next >
Internet Message Format  |  1987-06-30  |  335KB

  1. From news  Sun Sep 21 21:54:25 1986
  2. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3. Newsgroups: mod.std.unix
  4. Subject: mod.std.unix Volume 7
  5. Message-Id: <5755@ut-sally.UUCP>
  6. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  7. Date: 22 Sep 86 02:54:09 GMT
  8. Draft-9: mod.std.unix
  9.  
  10. This is the first article in Volume 7 of the USENET newsgroup mod.std.unix
  11. (also known as the ARPA Internet mailing list std-unix@sally.utexas.edu).
  12. These volumes are strictly for administrative convenience.
  13. Paper copies of them get delivered to the P1003 committee chair
  14. from time to time and several members of the committee follow
  15. the newsgroup on-line.
  16.  
  17. Feel free to continue any discussions from the previous volume
  18. or to start new discussions.
  19.  
  20.  
  21. This newsgroup and mailing list are for discussions of UNIX standards,
  22. particularly the IEEE 1003.1 Trial Use Standard.  The moderator is
  23. John S. Quarterman, who is also the institutional representative of
  24. the USENIX Association to the IEEE P1003 Portable Operating System for
  25. Computer Environments Committee (commonly known as the UNIX Standards
  26. Committee).
  27.  
  28. Submissions-To:    ut-sally!std-unix    or std-unix@sally.utexas.edu
  29. Comments-To: ut-sally!std-unix-request    or std-unix-request@sally.utexas.edu
  30. UUCP-Routes: {gatech,harvard,ihnp4,seismo,pyramid,sequent}!ut-sally!std-unix
  31.  
  32. Permission to post to the newsgroup is assumed for mail to std-unix.
  33. Permission to post is not assumed for mail to std-unix-request,
  34. unless explicitly granted in the mail.  Mail to my personal addresses
  35. will be treated like mail to std-unix-request if it obviously refers
  36. to the newsgroup.
  37.  
  38. Archives may be found on sally.utexas.edu.  The current volume may
  39. be retreived by anonymous ftp (login anonymous, password guest)
  40. as ~ftp/pub/mod.std.unix, while the previous volumes may be retrieved
  41. as ~ftp/pub/mod.std.unix.v1, ~ftp/pub/mod.std.unix.v2, etc., through 6.
  42. The volume with the AT&T public domain getopt(3) is ~ftp/pub/mod.std.unix.v3.
  43.  
  44. Finally, remember that any remarks by any committee member (especially
  45. including me) in this newsgroup do not represent any position (including
  46. any draft, proposed or actual, of a standard) of the committee as a
  47. whole, unless explicitly stated otherwise in such remarks.
  48.  
  49. Volume-Number: Volume 7, Number 1
  50.  
  51. From news  Sun Sep 21 22:01:56 1986
  52. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  53. Newsgroups: mod.std.unix
  54. Subject: mod.std.unix and P1003
  55. Message-Id: <5756@ut-sally.UUCP>
  56. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  57. Date: 22 Sep 86 03:01:40 GMT
  58. Draft-9: mod.std.unix
  59.  
  60. This article is a slightly adapted copy of an earlier one.
  61.  
  62. There seems to be widespread confusion as to the relation of the
  63. newsgroup mod.std.unix (aka the mailing list STD-UNIX) and the
  64. IEEE P1003 standards committee and its subcommittees.  Allow me
  65. to try to clear some of it up.
  66.  
  67.  
  68. Because something is discussed in mod.std.unix does not mean that
  69. it is automatically proposed to P1003 for inclusion in the standard.
  70. Proposals to the committee have to be more formal.  Especially they
  71. have to include specific proposed wording.
  72.  
  73. As it happens, the moderator of the newsgroup is also the USENIX
  74. representative to the committee.  As such, I am willing to present
  75. proposals to the committee if someone actually has some to present.
  76. However, the proposer has to specifically request that for a specific
  77. proposal and I have to agree to it before it will happen.
  78.  
  79. It is true that several committee members follow the newsgroup and
  80. that I make sure that copies of articles from the newsgroup go to
  81. appropriate technical reviewers or are mentioned to the committee
  82. as a whole.  However, they are not presented as proposals:  they
  83. are presented as comments.  They may help committee members understand
  84. the context of a topic which is treated in the standards document,
  85. but they are unlikely to cause new topics to be added to the document.
  86.  
  87. This is not to say that input from the newsgroup is not useful
  88. to the committee.  A number of problems with the latest drafts
  89. were pointed out in the newsgroup and fixed because of that.
  90. The time zone discussion has led to an actual proposal which
  91. may be adopted by the committee.
  92.  
  93.  
  94. Because something is discussed in mod.std.unix does not even
  95. necessarily mean that it has anything to do with the P1003 committee.
  96.  
  97.  
  98. The committee is very aware that they should not be introducing
  99. new facilities.  It has happened a few times.  The only one
  100. I can think of at the moment is file locking, specifically the
  101. mandatory locking feature of flock (which was actually introduced
  102. by the /usr/group committee).  This is also, not coincidentally,
  103. one of the most controversial things in the current document,
  104. even though its proponents only back it because they are convinced
  105. it is necessary.
  106.  
  107. You will find things in the draft standard document which do not
  108. correspond to your local system, regardless of what your local system
  109. is.  This is because in the real world there are at least two major
  110. variants of UNIX and many minor ones.  To pick one and standardize on
  111. it alone would be to try to outlaw all the others.  This is probably
  112. not even possible, even if it were desirable.  The committee has chosen
  113. instead to try to produce something which is not exactly like anything
  114. out there but which can be implemented with relatively minor changes on
  115. most existing systems.
  116.  
  117. Ritual disclaimer:  this article is constructed of my personal opinions
  118. and does not necessarily represent any official position of IEEE, P1003,
  119. USENIX, /usr/group, or any other organization.
  120.  
  121. Volume-Number: Volume 7, Number 2
  122.  
  123. From news  Sun Sep 21 22:10:19 1986
  124. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  125. Newsgroups: mod.std.unix
  126. Subject: time_t values
  127. Message-Id: <5757@ut-sally.UUCP>
  128. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  129. Date: 22 Sep 86 03:09:53 GMT
  130. Draft-9: time_t TZ
  131.  
  132. [ I believe this is from Mark Crispin.  -mod ]
  133.  
  134. From: @SUMEX-AIM.ARPA:MRC@PANDA 
  135. Date: Mon 15 Sep 86 10:32:48-PDT
  136. Postal-Address: 1802 Hackett Ave.; Mountain View, CA  94043-4431
  137. Phone: +1 (415) 968-1052
  138.  
  139. Has anyone taken the effort to see how other operating systems handle
  140. this problem?  If not, I'll throw one example I'm quite familiar with
  141. into the pot.
  142.  
  143. TOPS-20 uses a 36-bit value for the time (after all it runs on a 36-bit
  144. machine).  This is a fixed point number with the decimal point located
  145. between the halfwords expressing the number of days since midnight, 17
  146. November 1858.  Time -1 is reserved to mean "current time", therefore
  147. the latest representable time on TOPS-20 is 7 August 2576, one second
  148. before midnight.  I guess sometime in August 2576 we'll have to fix
  149. TOPS-20 to add another word to the time!  All this is in GMT, by the
  150. way, with no adjustments for leap seconds.
  151.  
  152. Local time is strictly a user interface consideration.  The default
  153. routines use the following cells to determine how to present the time:
  154. TIMZON    The number of hours local time lags GMT.  +12 and -12 are the
  155.     same zone on different sides of the International Date Line
  156. DSTFLG    Daylight Saving Time flag:
  157.         NEVDST    never use Daylight Saving Time
  158.         ALLDST    always use Daylight Saving Time
  159.         0    use algorithm
  160.  
  161. DSTBGN    The year in which the algorithm became effective
  162.  
  163. DSTON    The last day of the year on which DST may start
  164.  
  165. DSTOFF    The last day of the year on which DST may end
  166.  
  167. The present algorithm starts on the Sunday preceeding DSTON and ends
  168. on the Sunday preceeding DSTOFF.  It started in 1975, so it makes no
  169. attempt to handle the energy conservation rules of earlier years.
  170.  
  171. The user interface will accept times in which no zone is specified
  172. ("GMT" or "PST" or "PDT", etc. will always override the TIMZON and
  173. DST flags) and convert them into the GMT representation.  Times are
  174. output in the "current local timezone/DST" according to the rules
  175. unless written otherwise.
  176.  
  177. This is all pretty minimal stuff.  I think Unix should bite the bullet
  178. and use at least a 48 bit time representation.
  179. -------
  180.  
  181. Volume-Number: Volume 7, Number 3
  182.  
  183. From news  Sun Sep 28 15:23:02 1986
  184. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  185. Newsgroups: mod.std.unix
  186. Subject: brief notes on the Palo Alto P1003 meeting
  187. Message-Id: <5829@ut-sally.UUCP>
  188. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  189. Date: 28 Sep 86 20:22:47 GMT
  190. Draft-9: P1003.Palo.Alto
  191.  
  192. P1003.1 met week before last (17-19 September) in Palo Alto.
  193. Various technical issues were addressed (many in the form of
  194. line by line objections from the balloting this spring) and
  195. some of them will probably be posted to this newsgroup.
  196.  
  197. The new secretary is Shane McCarron of MECC and the new keeper of
  198. the document is Hal Jespersen of Amdahl.  (Many thanks to their
  199. predecessors, Steve Head of HP and Jim McGinness of DEC.)
  200.  
  201. P1003.2 (shell interface) and P1003.3 (verficiation) also met 
  202. the same week, as did the /usr/group Real Time working group,
  203. and other /usr/group committees.  I solicit reports from their
  204. secretaries or comments from attendees.
  205.  
  206. The relations of the GM, /usr/group, and P1003.1 subcommittees
  207. on Real Time were of sufficient interest to me that I took some
  208. notes which I intend to turn into a brief report next time I'm
  209. in town long enough.
  210.  
  211. The proposal form that you've all seen before as the last section
  212. of RFC.001, but with some of the error code details and X3J11 text
  213. filled in, has been assigned a proposal number and is now P.55.
  214. I will post the complete text shortly.  No action was taken on
  215. including it in the actual document because another proposal on
  216. timezones is expected imminently from HP and I did not feel it
  217. appropriate to push the issue before the other proposal could
  218. be seen.  Presumably, some action will be taken at the next meeting.
  219.  
  220. Meanwhile, many people at the various meetings got tired of
  221. hearing me say that mod.std.unix != mod.timezone and have
  222. promised to submit interesting articles on new subjects.
  223. How about termios?  Job control?  Real time?  Reliable signals?
  224. High performance file systems?  Atomicity of readdir()?
  225. Appendix H (which is no longer in the draft document)?  
  226. Multiple groups?  DoD (and other) security requirements?
  227. Relation of 1003.1 to X3J11?
  228.  
  229. Volume-Number: Volume 7, Number 4
  230.  
  231. From news  Sun Sep 28 16:23:04 1986
  232. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  233. Newsgroups: mod.std.unix
  234. Subject: 1003.1 Appendix H.  Additional System Characteristics
  235. Message-Id: <5831@ut-sally.UUCP>
  236. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  237. Date: 28 Sep 86 21:22:47 GMT
  238. Draft-9: 2.9
  239.  
  240. The POSIX(TM) Trial Use Standard has attached to it an Appendix H
  241. whose purpose was to include parameters not in <limits.h> but
  242. that might be of use to an application porter in determining
  243. how well or if an application would run on a target system.
  244.  
  245. This appendix was removed from the working document at the Palo
  246. Alto meeting of the working group on the grounds that while
  247. a guide of this type for the application porter might well
  248. be useful, Appendix H is not it.  This is because the information
  249. it requests is too arbitrary, too vague, and it was written by
  250. representatives of vendors, not users.
  251.  
  252. A committee of representatives of users was appointed to produce
  253. a proposal for a replacement appendix.  It occurs to me that there
  254. are a lot of users on USENET.  It would be interesting to gather
  255. comments on what should be in the new appendix.
  256.  
  257. A couple of caveats:  I am not on the subcommittee just mentioned,
  258. and they are under no obligation to pay attention to anything that
  259. appears here.  And minor modifications to the previous appendix
  260. are not what is wanted:  a plan for a complete new set of implementation
  261. characteristics is needed.  Given those constraints, I suspect someone
  262. out there may still be able to make useful suggestions.
  263.  
  264. Since Appendix H is an appendix and not part of the Trial Use Standard
  265. proper, I am permitted to post it to the network.  Here is its full text
  266. as it was before it was removed in Palo Alto:
  267.  
  268.  
  269.  
  270.  
  271.  
  272.                      H.  Additional System Characteristics
  273.  
  274.           In the header file <limits.h> we have placed parameters that
  275.           may  vary  from  system  to  system  and  need to be used by
  276.           applications in a dynamic fashion.  There is also a  set  of
  277.           parameters  that  can  influence  how an application program
  278.           runs (or if it will run) which are not  dynamic  application
  279.           parameters,   but   may   be   essential   in   matching  an
  280.           implementation  and  application  to  make  sure  they  work
  281.           together.
  282.  
  283.           Should conforming implementations  be  required  to  provide
  284.           this in printed form on a product model basis?  Should it be
  285.           recommended  that  application  implementors   define   what
  286.           parameters  from  this  list impact the ability to run their
  287.           application?
  288.  
  289.           This  would  eventually  go  into  the  definitions  section
  290.           (Ch. 2)  or  perhaps a section of its own. Feedback on these
  291.           items is sought in the trial use period to  determine  which
  292.           are  considered  to  be  of  use  in determining application
  293.           portability and capacity.
  294.  
  295.           H.1  Conforming implementation characteristics
  296.  
  297.           In addition to the parameters specified in the  header  file
  298.           <limits.h>,  the  following information shall be provided to
  299.           more clearly describe a conforming implementation.   Vendors
  300.           of   conforming   applications   should  provide  a  similar
  301.           description   indicating   the   required   and    preferred
  302.           characteristics  of  an  implementation  that  might  use an
  303.           application.  Such a specification might include  how  these
  304.           parameters  need  to  vary  as  application  use varies (for
  305.           example, with increase in the number of users, in the number
  306.           of  records,  or  in  the transaction rates).  Some of these
  307.           characteristics are simple numbers, others  may  be  in  the
  308.           control  of  a  system  manager  within  limits and some may
  309.           differ within limits of hardware configurations.  In all  of
  310.           these  cases  the  limits  shall  be described.  In any case
  311.           there are no specified range of values for these  parameters
  312.           required  by  this standard.  Some of these limit values may
  313.           be mutually exclusive for a given implementation or product.
  314.  
  315.           Is sizeof(int)=sizeof(ptr)?
  316.  
  317.           Maximum number of users logged in at one time
  318.           Maximum number of user IDs
  319.           Maximum number of active processes
  320.           Maximum number of processes connected by a pipe
  321.  
  322.           Maximum number of groups
  323.           Maximum number of users in a group
  324.  
  325.           Maximum number of hours until clock rollover
  326.  
  327.  
  328.  
  329.           H.1 Conforming implementation characteristics              1
  330.  
  331.           IEEE Std 1003.1       POSIX Appendix H    Trial Use Standard
  332.  
  333.  
  334.           Calendar date/time when calendar rollover occurs
  335.  
  336.           Maximum number of serial ports
  337.           Number of ports that support Modem Control
  338.           Maximum bit rate per serial port
  339.           Maximum aggregate character input rate
  340.           Maximum aggregate character output rate
  341.           Maximum aggregate character input & output rate
  342.  
  343.           Maximum number of directories
  344.           Maximum number of levels of directory nesting
  345.           Maximum number of files per logical volume
  346.           Maximum number of logical volumes concurrently mounted
  347.  
  348.           Maximum number of locks per logical volume
  349.           Maximum number of locks active at one time
  350.           Maximum number of files that can be opened concurrently
  351.           Maximum number of files a process can open concurrently
  352.  
  353.           Maximum logical file size
  354.           Maximum physical file size
  355.           Maximum logical volume size
  356.           Maximum physical disk capacity (multi-spindles)
  357.  
  358.           Maximum delay in writting modified buffers to disk
  359.  
  360.           Minimum disk storage occupied by OS & essential tools
  361.           Maximum disk storage occupied by OS including tools
  362.  
  363.           Implementation supports swapping of processes?
  364.           Implementation supports virtual memory paging?
  365.  
  366.           Maximum physical memory capacity
  367.           Maximum physical memory address space per process
  368.           Maximum logical address space per process
  369.           Maximum text/instruction address space per process
  370.           Can text/instruction address space be shared?
  371.           Maximum local data space per process
  372.           Maximum size for a single array in bytes
  373.           Maximum global (shared) data space per process
  374.           Maximum stack space per process
  375.  
  376.           Minimum RAM used by resident OS kernel
  377.           Maximum RAM used by resident OS kernel
  378.  
  379.           Maximum number of characters significant in external C
  380.                   variable and procedure names
  381.           Internal character representation (ASCII,...)
  382.           Number of bits used for internal character storage
  383.           Number of bits/character permitted in string I/O
  384.           Number of bits/character permitted in file names
  385.  
  386.           Floating point format (IEEE, other)
  387.           Floating point mantissa range
  388.  
  389.  
  390.  
  391.           H.1 Conforming implementation characteristics              2
  392.  
  393.           IEEE Std 1003.1       POSIX Appendix H    Trial Use Standard
  394.  
  395.  
  396.           Floating point exponent range
  397.  
  398.           Number of bits per register
  399.           Number of registers that can be assigned to pointer variables
  400.           Number of registers that can be assigned to short variables
  401.           Number of registers that can be assigned to integer variables
  402.           Number of registers that can be assigned to long variables
  403.           Number of registers that can be assigned to float variables
  404.           Number of registers that can be assigned to double variables
  405.  
  406.           Media classes supported:
  407.           1/2 in. tape, 9 track, 1600 bpi
  408.           1/2 in. tape, 9 track, 6250 bpi
  409.           Qic-11, 1/4 in. streamer tape
  410.           Qic-24, 1/4 in. streamer tape
  411.           5.25 inch floppy, 8 512-byte sectors/track, 96 tpi
  412.           5.25 inch floppy, 8 512-byte sectors/track, 48 tpi
  413.  
  414.           Some number of these  questions  are  configuration-specific
  415.           and  may  vary  dynamically  in  execution  (for instance, a
  416.           system has a theoretical maximum disk storage  capacity,  at
  417.           execution  it  has some maximum of connected storage, and at
  418.           any point in time  the  maximum  amount  available  that  is
  419.           mounted  is  in  flux).   This  may call for three levels of
  420.           specifying some of this data:
  421.  
  422.           1.  Published theoretical maximum values
  423.  
  424.           2.  Static configuration files that may be read and
  425.           interpreted by an executing program
  426.  
  427.           3. System calls that provide dynamic snapshots of key
  428.           information.
  429.  
  430.           Please provide feedback on which of these  may  require  the
  431.           second or third form of description.
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.           H.1 Conforming implementation characteristics              3
  452.  
  453. Volume-Number: Volume 7, Number 5
  454.  
  455. From news  Mon Sep 29 13:48:16 1986
  456. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  457. Newsgroups: mod.std.unix
  458. Subject: Problem in "tar" definition in P1003
  459. Message-Id: <5834@ut-sally.UUCP>
  460. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  461. Date: 29 Sep 86 18:47:59 GMT
  462. Draft-9: 10.0
  463.  
  464. From: hoptoad!gnu@lll-crg.arpa (John Gilmore)
  465. To: std-unix@sally.utexas.edu
  466. Cc: sun!amdahl!chongo@lll-crg.arpa
  467. Date: Mon, 29 Sep 86 03:48:59 PDT
  468.  
  469. In the version of P1003 that I have (long before the Trial Use Standard,
  470. since IEEE would rather make money than give it widespread distribution
  471. in the Unix community) there is a problem with the tar format described.
  472.  
  473. [ I'd be interested to know how much they're making, but at less than $20
  474. per 200 page hardback, I doubt it's much.  Also, remember that they've got
  475. not only the costs of publication and distribution of the book itself to
  476. pay for but also those of the reams of drafts, proposals, RFCs, and random
  477. verbiage that get mailed around to everybody on the interest list.  -mod ]
  478.  
  479. Basically it is the same as V7 tar with some new types added for directories,
  480. devices, named pipes, etc.  It also has some of the unused space in
  481. the header blocks filled with owner name, group name, etc.  All good ideas.
  482.  
  483. Anyway, the problem is that directories are defined as a new file type
  484. (linktype).  This works OK when talking to another P1003 "tar" program,
  485. but I implemented it and tried it.  If you feed such a tape to a V7 or
  486. 4BSD tar program, it doesn't recognize the linktype, so it creates the
  487. directory as a normal [empty] file.  This causes all the files that
  488. should have gone into that directory to fail because the directory name
  489. is now in use as a file name.  (I'm sure Sys V tar has the same problem.)
  490.  
  491. The temporary workaround I am using is to write the tapes with a linktype
  492. of "directory" and a trailing slash in the file name.  This causes 4.2
  493. to create it as a directory and causes V7 to fail at trying to create it
  494. as a file.
  495.  
  496. I suggest that we change the "tar" format in the standard.  To what I
  497. am not sure.  Maybe the above kludge is good enough.  Maybe we should go
  498. back to the 4.2BSD style tar tape.
  499.  
  500. I also suggest that we actually implement and run a few of the other
  501. "innovations" of this standard, before we standardize it...
  502.  
  503. [ Good idea.  Such things as Doug Gwyn's mkdir/rmdir implementation
  504. are quite useful, especially when distributed for general use.  -mod ]
  505.  
  506.     John
  507.  
  508. PS:  I was on the APL Standards committee and there is always a strong
  509. temptation to "fix" things rather than embed mistakes in concrete.
  510. Resist!  The mistakes are already embedded, in user programs and file systems
  511. and minds...
  512.  
  513. [ The committee is aware of that problem.  -mod ]
  514.  
  515. PPS:  Post the **&^&^$%#@ standard to the net!  This message needs to be
  516. repeated until the bozo(s) who are preventing it get the message.  I'm sure
  517. they are having lots of fun passing drafts back and forth via email while
  518. we sit out here empty handed.
  519.  
  520. [ Not true.  The committee in general doesn't have machine-readable text
  521. of the document, either (only the few people actually preparing the new
  522. draft do):  it's IEEE, not the committee, that has imposed the current
  523. moratorium on distributing text that "represents" (as they insist we
  524. put it) the current document.  As I understand it, the restriction
  525. applies only to actual Standards (whether Trial Use or Full Use).
  526. I.e., it is likely that the draft between them will be available
  527. by the previous mechanisms (anonymous FTP on the Internet and UUCP
  528. from designated machines).
  529.  
  530. The Appendix I just posted was taken from the on-line copy of Draft 6
  531. and I typed in changes found in the published book of the Trial Use Standard
  532. (once known as Draft 7):  I don't have an on-line copy of the latter, either.
  533.  
  534. As the person responsible for distributing machine-readable text
  535. representing previous drafts, I can assure you that *nobody* *ever*
  536. passed them around by electronic mail:  think of the size of the thing!
  537.  
  538. Finally, it's not as if the document weren't publicly available.
  539. Less heat and more light please:  this is a technical newsgroup,
  540. not a shouting match.
  541. -mod ]
  542.  
  543. Volume-Number: Volume 7, Number 6
  544.  
  545. From news  Mon Sep 29 13:52:45 1986
  546. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  547. Newsgroups: mod.std.unix
  548. Subject: Summary of Volume 6 of mod.std.unix
  549. Message-Id: <5835@ut-sally.UUCP>
  550. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  551. Date: 29 Sep 86 18:52:17 GMT
  552. Draft-9: mod.std.unix
  553.  
  554. Administrativia:    N1, N13b, N51
  555. mod.std.unix & P1003:    N2
  556. Publicity:        N6
  557. Access to standards:  N7, N10, N11, N12, N13a, N21, N22, N26, N27, N40, N46, N50
  558. Access to user groups and publications:  N11, N21, N40, N45
  559. POSIX Conformance Workshop:    N20
  560. P1003.2 Shell Working Group:    N24, N25 (Hal Jespersen)
  561. IEEE 1003.1, POSIX, & ISO/TC97:    N49 (Isaak)
  562. RFCs:            N16 (jbc, jsq)
  563.  
  564. write EOF:        N5, N8, N9
  565. tape file marks:    N14
  566. ioctl vs. iocntl (and fcntl):  N15 (Smith, jbc), N17 (jbc), N18 (rbj), N19 (dag)
  567. mkdir & rmdir implementation:  N23 (jsq, dag), N28 (dag)
  568.  
  569. Timezones:
  570.     motivation:  N3 (Horton); location:  N4 (dag);  past:  N4 (jsq)
  571.  
  572. RFC.001:  Timezones:  N29 (jsq)
  573.     RFC.001 Summary of mod.std.unix Volume 5:  N30 (jsq)
  574.     RFC.001 Timezone Interface:  N31 (Elz)
  575.     RFC.001 Timezone Examples:  N32 (Olsen)
  576.     RFC.001 Timezone Proposal:  N33 (jsq)
  577.  
  578. Responses to RFC.001:
  579.     Previous call on settz():  N34 (Noel), N36 (Elz)       (perhaps add)
  580.     Implementor's TZ a bad default:  N34 (Noel), N36 (Elz)          (add note)
  581.     Method to retrieve TZ name:  N34 (Noel), N36 (Elz)      (not tzname[])
  582.     BSD timezone():  N34 (Noel)
  583.     tzset() of System V:  N34 (Noel), N36 (Elz)      (implement, don't add)
  584.     TZ & DST rule:  N34 (Noel), N35 (Horton), N36 (Elz)(can't be done right)
  585.     Details of Olsen's implementation:  N37 (Devine)
  586. The parenthetical comments at the far right indicate my interpretation
  587. of the outcome of the discussions on the various topics and what I
  588. recommended the committee do.
  589.  
  590. What does time_t represent and localtime() convert?  N38 (Harris)
  591. *    unsigned for future:  N39 (Franklin), N42 (Harris), N43 (Yao)
  592.     signed for past:  N41 (Olsen)
  593.     an implementation:  N44 (Campbell)
  594.  
  595. Far Past:  N46 (jsq)
  596. *    different representation:  N44 (jsq, genealogy), N47 (Horton)
  597.     use time_t:  N48 (Brader)
  598.  
  599. * indicates the side of the discussion that won, as I see it.
  600.  
  601. Abbreviations:
  602.     Brader:        Mark Brader
  603.     Campbell:    Larry Campbell
  604.     dag:        Douglas A. Gwyn
  605.     Devine:        Bob Devine
  606.     Elz:        Robert Elz
  607.     Franklin:    Dan Franklin
  608.     Harris:        Guy Harris
  609.     Horton:        Mark Horton
  610.     Isaak:        James Isaak (P1003 co-chair)
  611.     jbc:        John B. Chambers (guest moderator)
  612.     Jespersen:    Hal Jespersen (P1003.2 co-chair)
  613.     jsq:        John S. Quarterman (moderator)
  614.     Noel:        Greg Noel
  615.     Olsen:        Arthur Olsen
  616.     rbj:        Root Boy Jim Cottrell
  617.     Smith:        Roy Smith
  618.     Yao:        Joe Yao
  619.  
  620. Volume-Number: Volume 7, Number 7
  621.  
  622. From news  Mon Sep 29 14:14:39 1986
  623. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  624. Newsgroups: mod.std.unix
  625. Subject: IEEE 1003.1 P.55
  626. Message-Id: <5836@ut-sally.UUCP>
  627. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  628. Date: 29 Sep 86 19:14:18 GMT
  629. Draft-9: TZ.P.055
  630.  
  631. There are several decisions needed regarding timezones and 1003.1:
  632.  
  633. Which proposal should be accepted (P.55 or the one forthcoming from HP)?
  634.  
  635. If P.55:
  636. Accept settz 4.5.3?
  637. Add 4.5.4 or incorporate third paragraph in 4.5.3?
  638. Details of Errors and References.
  639. Suggested Appendices:
  640.     Olsen's implementation?
  641.     List of names of timezones?
  642.  
  643. The rest of this article is the text of Proposal 55.
  644.  
  645. IEEE 1003.1 P.55:
  646.  
  647. Time Zone Proposal based on work by Robert Elz and Arthur Olsen.
  648. Submitted by John S. Quarterman.  Proposal number assigned 19 Sept. 1986.
  649.  
  650. Add 4.5.3 and 4.5.4 to the standard and perhaps also
  651. document Arthur Olsen's implementation in an Appendix.
  652.  
  653. Note that all of 4.5.4 except the last paragraph of 4.5.4.2, the last
  654. sentence of 4.5.4.3, and all of 4.5.4.4 and 4.5.4.5, is intended to
  655. track X3J11.  I.e., the purpose of 4.5.4 is to constrain ctime() and
  656. localtime() further than X3J11, not to change what X3J11 says about them.
  657.  
  658. % is used to indicate the section sign.  Italics are implied in the
  659. normal format of the POSIX document.
  660.  
  661.  
  662. 4.5.3    Set Local Time Conversion
  663. Function:  settz()
  664.  
  665. 4.5.3.1    Synopsis
  666.     int settz(p)
  667.     char *p;
  668.  
  669. 4.5.3.2    Description
  670.     The settz() function determines the conversion from GMT
  671. of the local times returned by localtime() and ctime().
  672. When called with a NULL pointer argument (p==0), settz
  673. shall select the appropriate local time conversion for the
  674. location of the host machine on which the call is executed.
  675. When called with a null string (p!=0 && *p=='\0'), settz
  676. shall select no conversion for localtime, making localtime()
  677. and gmtime() equivalent and ctime() and asctime(gmtime())
  678. equivalent.  When called with a non-null string (p!=0 && *p!='\0'),
  679. settz may set the conversion according to that string.
  680. The format of the string and the conversions it may specify
  681. are implementation specific.  If an implementation accepts
  682. non-null string arguments to settz, the implementation
  683. should allow users to define their own conversions
  684. rather than restricting conversions to a standard set.
  685. If settz is called with a string for which the implementation
  686. can not find a conversion, settz shall return -1, but the
  687. conversion it sets is implementation defined and may be one of
  688. GMT, the executing machine's local time, or local time for
  689. the area where the implementation was performed.
  690.  
  691. 4.5.3.3    Returns
  692.     Upon successful completion, settz() returns 0, otherwise -1,
  693. and errno is set to indicate the error.
  694.  
  695. 4.5.3.4  Errors
  696.     If the function returns -1 the value stored in errno may be
  697. interpreted as follows:
  698.  
  699. [EFAULT]    The argument p points outside the process's allocated
  700.     addresss space.
  701.  
  702. 4.5.3.5  References
  703. time() %4.5.1, localtime(), ctime() %4.5.4.
  704.  
  705.  
  706. 4.5.4  Get Local Time
  707. Functions:  localtime(), ctime()
  708.  
  709. 4.5.4.1  Synopsis
  710.     #include <time.h>
  711.  
  712.     struct tm *localtime(timer)
  713.     char *ctime(timer)
  714.     time_t *timer;
  715.  
  716. 4.5.4.2  Description
  717.     The localtime() function converts the calendar time pointed to
  718. by timer to local time in the form of a string.  It is equivalent to
  719.     asctime(localtime(timer))
  720.  
  721.     The local time conversion is specified by a call on settz().
  722. If localtime() or ctime() is called and settz() has not been called
  723. since the last exec(), the localtime() or ctime() call shall call
  724. settz(getenv("TZ")) before performing the local time conversion.
  725. The local time conversion should be accurate for all times
  726. from the base time of the time() function up to the time
  727. the call is made.  Future times should be converted as accurately
  728. as possible with available political information.  Daylight savings
  729. time should be taken into account in both cases.
  730.  
  731. 4.5.4.3  Returns
  732.     The localtime() function returns a pointer to that object.
  733.     The ctime() function returns the pointer returned by the
  734. asctime() function with that broken-down time as argument.
  735.     On unsuccessful completion of either function, a NULL pointer
  736. shall be returned and errno is set to indicate the error.
  737.  
  738. 4.5.4.4  Errors
  739.     If either function returns a NULL pointer the value stored in
  740. errno may be interpreted as follows:
  741.  
  742. [EFAULT]    The argument points outside the process's allocated
  743.     address space.
  744.  
  745. 4.5.4.5  References
  746. time() %4.5.1, settz() %4.5.3.
  747.  
  748. Volume-Number: Volume 7, Number 8
  749.  
  750. From news  Tue Sep 30 11:04:16 1986
  751. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  752. Newsgroups: mod.std.unix
  753. Subject: P1003.2 Command Suites
  754. Message-Id: <5845@ut-sally.UUCP>
  755. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  756. Date: 30 Sep 86 16:03:31 GMT
  757. Draft-9: P1003.2.Command.Groups
  758.  
  759. From: nike!pyramid!amdahl!hlj@sally.utexas.edu (Hal Jespersen)
  760. Date: Mon, 29 Sep 86 13:06:16 PDT
  761.  
  762. Here is a subject != timezones.
  763. [ Much appreciated, for sure.  -mod ]
  764.  
  765. The P1003.2 Shell and Utilities Working Group is currently soliciting
  766. input for proposed commands to be included in the standard.  It is felt
  767. by the Working Group that these commands should be grouped into
  768. "command suites" that would not have to be implemented by all
  769. conforming implementations [as long as the implementations identified
  770. which suites were there, of course].  This is similar to the
  771. organization of AT&T's SVID, where commands are divided into
  772. "extensions".
  773.  
  774. Three companies at the September Palo Alto meeting promised to submit
  775. RFCs on proposed suite names and the contents of each suite, by command
  776. name.  One of these was AT&T, who will submit the SVID organization.
  777.  
  778. In the meantime, does anyone have suggestions on which commands to
  779. include and how to organize them?  Remember that the charter of the
  780. Working Group generally limits the commands to:
  781.  
  782.     commands usefully executable via the shell by application
  783.     programs or shell scripts (i.e., not terminal interface
  784.     programs, or window managers, etc.)
  785.  
  786.     user-level, and not system administrative, commands.
  787.  
  788. If you have a detailed proposal to submit to the Working Group, contact
  789. me or:
  790.  
  791.     Don Cragun
  792.     Sun Microsystems, Inc.
  793.     2550 Garcia Avenue
  794.     Mountain View, CA  94043
  795.     (415) 691-7487
  796.     {amdahl|decvax|hplabs|ihnp4|seismo}!sun!dwc
  797.  
  798. Thanks for your input.  
  799.  
  800.                 Hal Jespersen
  801.                 (408) 746-8288
  802.                 ...{ihnp4|hplabs|seismo|decwrl}!amdahl!hlj
  803.                 Amdahl Corporation
  804.                 Mailstop 316
  805.                 1250 East Arques Avenue
  806.                 Sunnyvale, CA 94088-3470
  807.  
  808. Volume-Number: Volume 7, Number 9
  809.  
  810. From news  Tue Sep 30 11:11:26 1986
  811. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  812. Newsgroups: mod.std.unix
  813. Subject: Re: IEEE 1003.1 P.55
  814. Message-Id: <5846@ut-sally.UUCP>
  815. References: <5836@ut-sally.UUCP>
  816. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  817. Date: 30 Sep 86 16:11:06 GMT
  818. Draft-9: TZ.P.055
  819.  
  820. From: seismo!elsie!ado (Arthur Olson)
  821. Date: Mon, 29 Sep 86 22:46:41 EDT
  822.  
  823. A few words regarding the "P.55" time zone proposal.
  824.  
  825. One thing it lacks is a way of determining the "time zone abbreviation"
  826. ("EST" or "EDT" or "EWT", for example) to be used with a particular combination
  827. of time and time zone.  One approach is to declare a global variable such as
  828.     char *    tz_abbr;
  829. and have "localtime" set it to point to the abbreviation for the converted time.
  830. Alternately, some folks have suggested adding either a character pointer or a
  831. character array to the "struct tm" that "localtime" returns as a way of
  832. recording the abbreviation.  The approach used isn't too important;
  833. standardizing the approach is.  (Avoiding changes to the "struct tm" structure
  834. would be desirable if there are applications that have stored such structures
  835. in files.  I don't know of--and can't imagine--applications that do so.)
  836.  
  837. If the standard *does* end up telling how a caller of localtime can learn the
  838. abbreviation for the converted time, then a change may be needed in the
  839. passage reading
  840.  
  841. > When called with a null string (p!=0 && *p=='\0'), settz
  842. > shall select no conversion for localtime, making localtime()
  843. > and gmtime() equivalent and ctime() and asctime(gmtime())
  844. > equivalent.
  845.  
  846. If, for example, "localtime" sets "tz_abbr" as a side effect, but "gmtime"
  847. doesn't, then calling "localtime" and calling "gmtime" can never be equivalent.
  848.  
  849. It may be simplest to just leave the settz("") case out of the standard
  850. entirely--any application programmer who's interested in getting GMT can
  851. just call gmtime() directly.  (The settz("") case is actually a bone to throw
  852. to speedsters who don't want "ls" to get time conversion information from
  853. disk; while this has some value, the value may well be too small to warrant
  854. standardization.)  But having settz((char *) 0) set things for local time
  855. (regardless, for example, of the state of the environment variable "TZ")
  856. provides a capability that's important to programs such as uucp;
  857. the behavior of settz((char *) 0) *should*, I believe, be documented.
  858.  
  859. Concretely:  I'd suggest this shortening of section 4.5.3.2:
  860.     4.5.3.2    Description
  861.     The settz() function determines the conversion from GMT
  862.     of the local times returned by localtime() and ctime().
  863.     When called with a null pointer argument (p==0), settz
  864.     shall select the appropriate local time conversion for the
  865.     location of the host machine on which the call is executed.
  866.     When called with a non-null pointer argument (p!=0),
  867.     settz may set the conversion according to that string...
  868.  
  869. And, perhaps, an addition along these lines to 4.5.4.3 (or wherever):
  870.     As a side effect, both ctime and localtime set the global character
  871.     pointer tz_abbr to point to the time zone abbreviation for the
  872.     converted time and time zone.
  873. --
  874.     UUCP: ..decvax!seismo!elsie!ado   ARPA: elsie!ado@seismo.ARPA
  875.     DEC, VAX, Elsie & Ado are Digital, Borden & Ampex trademarks.
  876.  
  877. Volume-Number: Volume 7, Number 10
  878.  
  879. From news  Thu Oct  2 01:59:24 1986
  880. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  881. Newsgroups: mod.std.unix
  882. Subject: Case sensitive file names
  883. Message-Id: <5860@ut-sally.UUCP>
  884. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  885. Date: 2 Oct 86 06:59:13 GMT
  886. Draft-9: 2.3.folding
  887.  
  888. Date: Mon, 29 Sep 86 12:33:36 edt
  889. From: mark@cbosgd.att.com (Mark Horton)
  890.  
  891. OK, here's a new topic.  File names.
  892.  
  893. I note that the committee recently decided that all file names
  894. in conforming systems must be case sensitive, for example,
  895. makefile and Makefile must be different files.  (I've forgotten
  896. where I read this, it was probably Communixations.)
  897.  
  898. I think this is a mistake.  UNIX is the only major operating system
  899. that treats things like file names, logins, host names, and commands
  900. as case sensitive.  The net effect of this is that users get
  901. confused, since they have to get the capitalization right every time.
  902. To avoid confusion, everybody always just uses lower case.  So
  903. there are few, if any, benefits from a two-case system, and any time
  904. anyone tries to do something that isn't pure lower case, it causes
  905. confusion for somebody and often breaks some program.
  906.  
  907. Another problem is that emulations on other operating systems,
  908. such as VMS or MS DOS, will become impossible without drastic
  909. changes to their file systems.  Given the problems in the above
  910. paragraph, plus politics as usual, I think it is unlikely that
  911. other systems will be changed to have case sensitive file systems.
  912. After all, it's not like it was easiest to make the VMS filesystem
  913. case insensitive - that took extra effort on their part.
  914.  
  915. I think it's a mistake to move in the direction of requiring other
  916. operating systems to become case sensitive.  If anything, motion in
  917. the other direction might be of more benefit.
  918.  
  919. Note: I am NOT suggesting that UNIX should have a case insensitive
  920. filesystem that maps everything to UPPER CASE like MS DOS.  There is
  921. nothing wrong with mapping everything to lower case, for example.
  922. It's also reasonable to leave the case alone, but ignore case in
  923. comparisons.  There is also probably a good argument for keeping
  924. it case sensitive (after all, there are probably 5 or 6 people out
  925. there who really need both makefile and Makefile, or both mail and
  926. Mail, for some reason that escapes me at the moment.)  But I think
  927. it would be a mistake to require other systems to change if they
  928. are to support a POSIX emulation on top of them.  (On the other hand,
  929. it may be reasonable to expect other operating systems to support
  930. more general file name lengths and character sets, rather than things
  931. like the MS DOS 8+3 convention.  But in practice, this may be too
  932. painful to fix.)
  933.  
  934.     Mark Horton
  935.  
  936. Volume-Number: Volume 7, Number 11
  937.  
  938. From news  Thu Oct  2 11:08:33 1986
  939. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  940. Newsgroups: mod.std.unix
  941. Subject: Re: Case sensitive file names
  942. Message-Id: <5865@ut-sally.UUCP>
  943. References: <5860@ut-sally.UUCP>
  944. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  945. Date: 2 Oct 86 16:08:21 GMT
  946. Draft-9: 2.3.folding
  947.  
  948. Date: Thu 2 Oct 86 01:59:26-PDT
  949. From: Mark Crispin <MRC%PANDA@SUMEX-AIM.Stanford.EDU>
  950. Postal-Address: 1802 Hackett Ave.; Mountain View, CA  94043-4431
  951. Phone: +1 (415) 968-1052
  952.  
  953. I would like to add a loud "Bravo!" to Mark Horton's message!  The present
  954. case sensitivity of the Unix filesystem is a real drag, and something that
  955. has regularly and reliably caused me problems when working in a heterogenous
  956. environment.  As far as I can tell, the only individuals who actually *like*
  957. case sensitivity in Unix are the high-schoolish hackers who think it's really
  958. cute to write programs with separate -1, -l, -I, and -L switches.
  959.  
  960. I think that the most reasonable proposal is to do a free case match on input,
  961. so that "more foobar" is the same as "More FooBar", etc.  On output, you first
  962. do a free case match to see if there is an extant file and if so preserve the
  963. case of that file.  In other words, if I overwrite FooBar but specify foobar
  964. or FOOBAR, the file is still called FooBar.  Otherwise, use whatever case the
  965. user specifies.  Renaming would always use the case the user specifies, so the
  966. user can rename foobar to FooBar, etc.
  967.  
  968. Now, if I can convince you guys to do this for usernames, I will take back at
  969. least 50% of the nasty things I've ever said about Unix.  Golly gee, it would
  970. be nice to be MRC or Crispin, not "mrc" or "crispin"...
  971.  
  972. Another way of doing it is how TOPS-20 does it.  TOPS-20's filesystem isn't
  973. *really* case independent.  All lowercase characters are coerced into upper
  974. case, so if I say foobar.txt it becomes FOOBAR.TXT in the actual filename.
  975. This is both from the user interface and from the filename lookup system call.
  976. It is, however, possible for any of the 128 ASCII characters to be in a filename,
  977. provided that the "oddball" characters are quoted using CTRL/V.  In other words,
  978. a FooBar.Txt file is possible on TOPS-20, but only by F<^V>o<^V>oB<^V>a<^V>r.T<^V>x<^V>t.
  979.  
  980. For once, I don't favor the TOPS-20 way of doing things.  TOPS-20's scheme is
  981. alright if you started with case independence to begin with, but I don't think
  982. it would fit in well into Unix, and certainly not without a major flag day.  I
  983. hope that my suggestion above could fit in with only minimal inconvenience.
  984.  
  985. I found on TOPS-20 that no serious user used case-sensitive filenames.  Everybody
  986. appreciated the case-insensitivity of the interface, even though it took the form
  987. of coercing to upper case.  My experience also suggests that case sensitivity is
  988. a pain in the a**; I tried writing a major utility in Interlisp using mixed case
  989. function and variable names and eventually gave up when most of my errors turned
  990. out to be case errors.  It's *so* much easier to keep the shift lock key down...
  991.  
  992. -- Mark --
  993. -------
  994.  
  995. Volume-Number: Volume 7, Number 12
  996.  
  997. From news  Fri Oct  3 12:11:46 1986
  998. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  999. Newsgroups: mod.std.unix
  1000. Subject: Re: IEEE 1003.1 P.55
  1001. Message-Id: <5874@ut-sally.UUCP>
  1002. References: <5836@ut-sally.UUCP>
  1003. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1004. Date: 3 Oct 86 17:11:33 GMT
  1005. Draft-9: TZ.P.055
  1006.  
  1007. From: seismo!decvax!ittatc!bunker!garys (Gary Samuelson)
  1008. Date: Wed, 1 Oct 86 11:04:08 edt
  1009. Organization: Bunker Ramo, Trumbull CT
  1010.  
  1011. In article <5836@ut-sally.UUCP> you write:
  1012. >If settz is called with a string for which the implementation
  1013. >can not find a conversion, settz shall return -1...
  1014.  
  1015. Under section 4.5.3.4, the appropriate value for errno is not
  1016. specified for this case.  See suggested additional wording, below.
  1017.  
  1018. >4.5.3.4  Errors
  1019. >    If the function returns -1 the value stored in errno may be
  1020. >interpreted as follows:
  1021.  
  1022. I suggest the following change in wording:
  1023.  
  1024. -[EFAULT]    The argument p points outside the process's allocated
  1025. -    address space.
  1026.  
  1027. +[EFAULT]    The argument p does not point to a readable string.
  1028.  
  1029. This covers the case where the beginning of the string is within
  1030. the process's address space, but the end is not.
  1031.  
  1032. I suggest the following additional wording:
  1033.  
  1034. +[EINVAL]    The argument p points to a string for which the
  1035. +    implementation could not find a conversion.
  1036.  
  1037. >4.5.4  Get Local Time
  1038. >Functions:  localtime(), ctime()
  1039. >
  1040. >4.5.4.1  Synopsis
  1041. >    #include <time.h>
  1042.  
  1043. It is not clear that the type of 'timer' specified for 'ctime'
  1044. also applies to 'localtime'.  I suggest the following additional
  1045. wording:
  1046.  
  1047. >    struct tm *localtime(timer)
  1048. +    time_t *timer;
  1049. +
  1050. >    char *ctime(timer)
  1051. >    time_t *timer;
  1052.  
  1053. >4.5.4.3  Returns
  1054.  
  1055. The description of ctime's return value specifies not only the return
  1056. value of ctime, but also how ctime should be coded (i.e., 'ctime' must
  1057. call 'asctime').  I suggest the following change in wording:
  1058.  
  1059. -    The ctime() function returns the pointer returned by the
  1060. -asctime() function with that broken-down time as argument.
  1061.  
  1062. +    The ctime() function returns a pointer to a string containing
  1063. +the time, converted to the same format produced by 'asctime'.
  1064.  
  1065. >4.5.4.4  Errors
  1066.  
  1067. I suggest the following change in wording:
  1068.  
  1069. -[EFAULT]    The argument p points outside the process's allocated
  1070. -    address space.
  1071.  
  1072. +[EFAULT]    The argument p does not point to a readable object of
  1073. +    type time_t.
  1074.  
  1075. This covers the cases where the first byte of time_t is in the address
  1076. space, but the last byte isn't, and where the pointer is not properly
  1077. aligned.
  1078.  
  1079. I suggest the following additional wording:
  1080.  
  1081. +[EINVAL]    The argument points to an object which does not contain
  1082. +    a valid time_t value.
  1083.  
  1084. Gary Samuelson
  1085.  
  1086.  
  1087. Volume-Number: Volume 7, Number 13
  1088.  
  1089. From news  Fri Oct  3 12:56:36 1986
  1090. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1091. Newsgroups: mod.std.unix
  1092. Subject: Re:  Case sensitive file names
  1093. Message-Id: <5875@ut-sally.UUCP>
  1094. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1095. Date: 3 Oct 86 17:56:07 GMT
  1096. Draft-9: 2.3.folding
  1097.  
  1098. Date:     Thu, 2 Oct 86 12:43:49 EDT
  1099. From: Dan Franklin <im4u!dan@prophet.bbn.com>
  1100.  
  1101. I can see that it will be hard to emulate POSIX filenames on top of an
  1102. operating system such as MS-DOS or VMS, but the benefits of changing the
  1103. POSIX spec must be weighed against the costs.  Suppose we changed the spec
  1104. so that it permitted a POSIX implementor to provide either a
  1105. case-sensitive or case-insensitive filesystem, their choice (which I think
  1106. is what Mark is proposing).  There are three groups of people who will be
  1107. affected: those who write POSIX emulators, those who write programs for
  1108. POSIX, and those who *use* POSIX and its programs.  The last group will be
  1109. the largest and most important by far; the emulator writers will be the
  1110. smallest group.
  1111.  
  1112. So how would users be affected?  It might benefit them, because
  1113. case-insensitivity might really be better than case-sensitivity.  However,
  1114. in the absence of a controlled study, let's assume the null hypothesis:
  1115. that it makes no big difference.  More than "proof by assertion" is needed!
  1116.  
  1117. Regardless of which is really better, some users will probably benefit
  1118. because they will be used to other operating systems providing
  1119. case-insensitivity, particularly MS-DOS.
  1120.  
  1121. However, if we really make it an implementor's choice, users will
  1122. be hurt by the fact that each POSIX system they encounter will be
  1123. different.  In fact, this system-to-system difference will probably
  1124. cause more problems than optional case insensitivity would solve.
  1125.  
  1126. What about people who write POSIX programs?  They will lose.  To the extent
  1127. that POSIX permits two possible underlying filesystems, a truly portable
  1128. POSIX program will have to be prepared for either one.  For many programs
  1129. it may not matter what the FS looks like, but if it does matter, it will
  1130. mean extra work.
  1131.  
  1132. Finally, there are all those emulator writers.  They might find it easier;
  1133. then again, they might not.  If I were going to do an emulator on top of
  1134. MS-DOS, then (since I don't work for Microsoft) I would probably use the
  1135. existing filesystem just as a base to build the POSIX filesystem, almost
  1136. the way UNIX builds a named hierarchical filesystem space out of inodes.
  1137. Going to case insensitivity wouldn't help me a bit, because of the other
  1138. limitations Mark mentioned.  It might help Microsoft, because they could
  1139. change the 8+3 convention at the same time.  But unless they were willing
  1140. to do that, it wouldn't help them either.  VAX-VMS might be easier, but
  1141. again there are other problems I would have to solve.  Case-insensitivity
  1142. would help me some, but I'd still have a lot of work ahead of me.
  1143.  
  1144. But arguments regarding emulator-writing are beside the point.  No matter
  1145. what POSIX does on this, it will always be possible to write a POSIX
  1146. emulator on top of an existing operating system.  So the ease of *using*
  1147. the system must take precedence over the ease of writing it.
  1148.  
  1149. For the reasons above, I believe that making case-insensitivity an *option*
  1150. would be a bad idea.  Changing the spec to *insist* on case-insensitivity
  1151. might be a good idea, but it would cause enough problems w.r.t. existing
  1152. UNIX systems that it ought to be very strongly motivated.  To start with:
  1153. is it really much easier for people to use such a system?
  1154.  
  1155.     Dan Franklin
  1156.  
  1157. Volume-Number: Volume 7, Number 14
  1158.  
  1159. From news  Fri Oct  3 14:09:18 1986
  1160. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1161. Newsgroups: mod.std.unix
  1162. Subject: Re: Case sensitive file names
  1163. Message-Id: <5880@ut-sally.UUCP>
  1164. References: <5860@ut-sally.UUCP>
  1165. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1166. Date: 3 Oct 86 19:08:59 GMT
  1167. Draft-9: 2.3.folding
  1168.  
  1169. Organization: Tektronix, Inc., Beaverton, OR.
  1170. Date: 03 Oct 86 11:25:11 PDT (Fri)
  1171. From: "David C. Stewart" <davest%tektronix.csnet@CSNET-RELAY.ARPA>
  1172. Source-Info:  From (or Sender) name not authenticated.
  1173.  
  1174. In article <5860@ut-sally.UUCP> Mark Horton <mark@cbosgd.att.com> writes:
  1175. >It's also reasonable to leave the case alone, but ignore case in
  1176. >comparisons.  There is also probably a good argument for keeping
  1177. >it case sensitive (after all, there are probably 5 or 6 people out
  1178. >there who really need both makefile and Makefile, or both mail and
  1179. >Mail, for some reason that escapes me at the moment.)
  1180.  
  1181.     I can think of one well-used exception right away: make(1), as it
  1182. works now, will look for rules in `makefile' first, and if `Makefile'
  1183. exists in the same directory, it will not be used by make.  On the
  1184. other hand, Glenn Fowler's Fourth Generation Make [1] chooses the
  1185. opposite order of accepting default rules files, ie, it tries
  1186. `Makefile' first and, if one does not exist, it tries `makefile'.
  1187. It is claimed that this is a feature, rather than an annoyance since
  1188. Fourth Generation makefiles are incompatable with old-style makefiles.
  1189. Thus, one can maintain the old make makefile in `makefile' and the new make
  1190. makefile in `Makefile'.
  1191.  
  1192.     This may just be picking nits, but I think the point is that
  1193. case sensitivity in the file system is a Unix feature, like it or
  1194. not.  There may be other applications that depend on case-sensitive
  1195. file names that would become non-portable.
  1196.  
  1197. [1] Fowler, Glenn S., "The Fourth Generation Make", Proceedings of the
  1198. Usenix Association Summer Conference, Portland, OR, 1985.  (Note that
  1199. the actual release of nmake in the AT&T Toolchest differs in this
  1200. respect with the function described in this paper.)
  1201.  
  1202. --
  1203. David C. Stewart                          uucp:    tektronix!davest
  1204. Unix Systems Support Group                csnet:   davest@TEKTRONIX
  1205. Tektronix, Inc.                           phone:   (503) 627-5418
  1206.  
  1207. Volume-Number: Volume 7, Number 15
  1208.  
  1209. From news  Fri Oct  3 16:14:27 1986
  1210. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1211. Newsgroups: mod.std.unix
  1212. Subject: Re: Case sensitive file names
  1213. Message-Id: <5882@ut-sally.UUCP>
  1214. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1215. Date: 3 Oct 86 21:14:14 GMT
  1216. Draft-9: 2.3.folding
  1217.  
  1218. Date: Fri, 3 Oct 86 12:26:22 PDT
  1219. From: sun!gorodish!guy@utastro.UUCP (Guy Harris)
  1220.  
  1221. > From: mark@cbosgd.att.com (Mark Horton)
  1222. > Subject: Case sensitive file names
  1223.  
  1224. > I think this is a mistake.  UNIX is the only major operating system
  1225. > that treats things like file names, logins, host names, and commands
  1226. > as case sensitive.
  1227.  
  1228. It's been a while since I used Multics; I think it was case-sensitive.  Of
  1229. course, I don't know whether it counts as "major" here or not; I don't know
  1230. how many sites are around.  Are you sure there are no others?
  1231.  
  1232. > It's also reasonable to leave the case alone, but ignore case in
  1233. > comparisons.
  1234.  
  1235. This would probably be the best scheme (I think the Xerox Alto's operating
  1236. system did this).  Some people may want to use mixed case in file names for
  1237. aesthetic reasons, for example.
  1238.  
  1239. > There is also probably a good argument for keeping it case sensitive
  1240. > (after all, there are probably 5 or 6 people out there who really need
  1241. > both makefile and Makefile...
  1242.  
  1243. This means UNIX probably can't change, at least not without a fair bit of
  1244. pain.  I know of at least one directory on a UNIX system that has both
  1245. "makefile" and "Makefile" in it; this would cause some upset on a
  1246. case-mapping UNIX system.
  1247.  
  1248. However, there is another problem with case mapping.  It's dependent on the
  1249. language the text is in!  Doing case mapping is all very well and good for
  1250. English-speaking users; the algorithm for mapping characters between cases
  1251. in English is straightforward.  However, in German "ss" is a single special
  1252. character in lower-case but "SS" in upper case.  Even if you don't have
  1253. anomalies like this, the current schemes proposed by AT&T for "international
  1254. UNIX" use various ISO codes; this means that the character whose hex value
  1255. is E6 is the "ae" diaresis in the ISO Latin Alphabet #1, and thus matches
  1256. the character whose hex value is C6 (which is the "AE" diaresis); however,
  1257. in the JIS C6226 Kanji set, it is probably the first byte of a two-byte
  1258. sequence representing a Kanji sysmbol, and I don't think it gets case mapped
  1259. at all.
  1260.  
  1261. This means that the operating system would have to know what character set a
  1262. particular character was in, so that it could map its case correctly; this
  1263. would be best done with sequences embedded in the file name indicating
  1264. shifts in the character set to which bytes belong.  (These same sequences
  1265. should be used in text files, character strings in programs, etc..  Other
  1266. suggestions include a per-file character set designator, that would
  1267. presumably apply to any files containing character strings, including
  1268. directories; however, this means that *all* strings in that file must be in
  1269. the same character set, which is not always a reasonable restriction.)  It
  1270. would then have to know how to do case mapping for all character sets
  1271. supported by the system, and would have to be modified or have new
  1272. information supplied to it if a new character set was to be supported.
  1273.  
  1274. Volume-Number: Volume 7, Number 16
  1275.  
  1276. From news  Sun Oct  5 17:23:30 1986
  1277. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1278. Newsgroups: mod.std.unix
  1279. Subject: Re: Case sensitive file names
  1280. Message-Id: <5912@ut-sally.UUCP>
  1281. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1282. Date: 5 Oct 86 22:23:17 GMT
  1283. Draft-9: 2.3.folding
  1284.  
  1285. Date: Fri, 3 Oct 86 20:07:32 edt
  1286. From: Robert Viduya <gatech!gitpyr!robert@seismo.UUCP>
  1287.  
  1288. > Date: Mon, 29 Sep 86 12:33:36 edt
  1289. > From: mark@cbosgd.att.com (Mark Horton)
  1290. > Subject: Case sensitive file names
  1291.  
  1292. I've found a useful rule to be used in deciding cases like this is to
  1293. decide in favor of the more general and flexible.  A couple of times
  1294. I've been guilty of saying, "Well, I can't think of any good reason for
  1295. this particular feature, so I'll get rid of it", only to discover,
  1296. later on, a good reason for a feature.  I don't believe in artificial
  1297. limits mainly because the person who implements the limit generally
  1298. hasn't considered ALL possible reasons for going beyond the limit.
  1299.  
  1300. > I think this is a mistake.  UNIX is the only major operating system
  1301. > that treats things like file names, logins, host names, and commands
  1302. > as case sensitive.  The net effect of this is that users get
  1303. > confused, since they have to get the capitalization right every time.
  1304. > To avoid confusion, everybody always just uses lower case.  So
  1305. > there are few, if any, benefits from a two-case system, and any time
  1306. > anyone tries to do something that isn't pure lower case, it causes
  1307. > confusion for somebody and often breaks some program.
  1308.  
  1309. It isn't difficult to explain Unix's case-sensitivity to a user and,
  1310. once explained, the case-sensitivity tends to be one of the few things
  1311. a user remembers without having to be reminded.  What confusion may be
  1312. caused by case-sensitivity is lost in the much greater confusion caused
  1313. by trying to learn a new operating system.
  1314.  
  1315. > Another problem is that emulations on other operating systems,
  1316. > such as VMS or MS DOS, will become impossible without drastic
  1317. > changes to their file systems.  Given the problems in the above
  1318. > paragraph, plus politics as usual, I think it is unlikely that
  1319. > other systems will be changed to have case sensitive file systems.
  1320. > After all, it's not like it was easiest to make the VMS filesystem
  1321. > case insensitive - that took extra effort on their part.
  1322.  
  1323. But, on the other hand, adopting a VMS or MS-DOS filesystem to coexist
  1324. with Unix in a Unix environment would be trivial as far as filenames
  1325. are concerned.  The fact that Unix allows *any* ascii character in it's
  1326. filenames (except for the path seperator, '/', and the string
  1327. terminator, NUL), makes it almost ideal for adopting other, foreign
  1328. filesystems to it because most of the special graphic characters (!, @, #,
  1329. $, and etc..) can already be represented in a filename without having to
  1330. be mapped to something else (unlike other, more restrictive, operating
  1331. systems).
  1332.  
  1333.  
  1334.                 robert
  1335.  
  1336. ---
  1337. Robert Viduya                         robert@pyr.ocs.gatech.edu
  1338.  
  1339. Office of Computing Services                    (404) 894-4660
  1340. Georgia Institute of Technology
  1341. Atlanta, Georgia    30332
  1342.  
  1343. Volume-Number: Volume 7, Number 17
  1344.  
  1345. From news  Sun Oct  5 17:25:37 1986
  1346. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1347. Newsgroups: mod.std.unix
  1348. Subject: Re:  Case sensitive file names
  1349. Message-Id: <5913@ut-sally.UUCP>
  1350. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1351. Date: 5 Oct 86 22:25:25 GMT
  1352. Draft-9: 2.3.folding
  1353.  
  1354. Date: Fri, 3 Oct 86 23:56:26 edt
  1355. From: mark@cbosgd.att.com (Mark Horton)
  1356.  
  1357. >Finally, there are all those emulator writers.  They might find it easier;
  1358. >then again, they might not.  If I were going to do an emulator on top of
  1359. >MS-DOS, then (since I don't work for Microsoft) I would probably use the
  1360. >existing filesystem just as a base to build the POSIX filesystem, almost
  1361. >the way UNIX builds a named hierarchical filesystem space out of inodes.
  1362. >Going to case insensitivity wouldn't help me a bit, because of the other
  1363. >limitations Mark mentioned.  It might help Microsoft, because they could
  1364. >change the 8+3 convention at the same time.  But unless they were willing
  1365. >to do that, it wouldn't help them either.  VAX-VMS might be easier, but
  1366. >again there are other problems I would have to solve.  Case-insensitivity
  1367. >would help me some, but I'd still have a lot of work ahead of me.
  1368.  
  1369. I'm not concerned very much about the amount of work the emulator
  1370. writer has to do, but I am concerned about the quality of the
  1371. resulting emulation.  If I'm a user of an emulator which is written
  1372. on an otherwise-reasonable case insensitive filesystem (VMS comes
  1373. to mind) which emulates case sensitivity, then apparent POSIX filenames
  1374. will bear little resemblance to real native filenames.  Either there's
  1375. an external table somewhere not unlike the UNIX directory/inode # tables,
  1376. or else file names are somehow encoded into longer native filenames.
  1377. I'm living with the latter kind of system now (Sun's PC/NFS, which makes
  1378. UNIX filesystems look like DOS filesystems) and the contortions it has
  1379. to go through to fit ordinary UNIX file names into DOS filenames are
  1380. a serious inconvenience.  The former kind of system makes it impossible
  1381. to access native files from inside the POSIX environment, unless someone
  1382. is awfully clever.
  1383.  
  1384. On the other hand, if case insensitive is an option for the emulator,
  1385. then two possibilities occur: (1) the vendor of the native operating
  1386. system can otherwise upgrade their filesystem to allow a clean POSIX
  1387. implementation (maybe they will arrange that their native OS conforms
  1388. directly to POSIX; wouldn't you consider it strongly if the market
  1389. starts to demand POSIX compatibility?) and (2) True UNIX systems have
  1390. the option to evolve to case insensitive, should a study be done and
  1391. the world conclude that insensitive is better.
  1392.  
  1393. I agree that a study should be done; I have my own intuitive feelings
  1394. on the subject, and there is quite a collection of operating systems
  1395. out there that went to extra work to be case insensitive, they can't
  1396. all be wrong, can they?  But by all means, this would make a great
  1397. human factors study for somebody.
  1398.  
  1399.     Mark
  1400.  
  1401. Volume-Number: Volume 7, Number 18
  1402.  
  1403. From news  Sun Oct  5 17:26:38 1986
  1404. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1405. Newsgroups: mod.std.unix
  1406. Subject: Case sensitive file names
  1407. Message-Id: <5914@ut-sally.UUCP>
  1408. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1409. Date: 5 Oct 86 22:26:23 GMT
  1410. Draft-9: 2.3.folding
  1411.  
  1412. Date: Sat, 4 Oct 86 04:19:12 CDT
  1413. From: dutoit!dmr@research.UUCP
  1414. Subject:  Case sensitive file names
  1415.  
  1416. The suggestion that POSIX be required (worse, permitted) to conflate
  1417. cases in file names is utterly loony.  We have enough portability
  1418. problems already in reconciling System V with 4.x without trying to
  1419. make Unix compatible with MS-DOS.
  1420.  
  1421. It is granted that Stu Feldman committed a rare lapse of taste in
  1422. accepting both `makefile' and `Makefile' (thus dooming everyone to
  1423. typing `cat ?akefile') and that Fowler apparently compounded the
  1424. distinction to the point of felony by encouraging both kinds of
  1425. ?akefiles to exist and have different meanings.
  1426.  
  1427. Nevertheless, neither the possibility of silliness in choosing file
  1428. name conventions nor the dubious advantages of permitting Unix to be
  1429. embedded in other systems are relevant; what is important is that such
  1430. a subtle yet central change would be certain to make transport of
  1431. programs and of files more onerous.  This is not a wise thing for an
  1432. endeavor devoted to promoting portability.
  1433.  
  1434.     Dennis Ritchie
  1435.  
  1436. Volume-Number: Volume 7, Number 19
  1437.  
  1438. From news  Sun Oct  5 17:32:11 1986
  1439. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1440. Newsgroups: mod.std.unix
  1441. Subject: Re: Case sensitive file names
  1442. Message-Id: <5915@ut-sally.UUCP>
  1443. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1444. Date: 5 Oct 86 22:31:52 GMT
  1445. Draft-9: 2.3.folding
  1446.  
  1447. Date: Sat, 4 Oct 86 16:54:37 PDT
  1448. From: hoptoad!gnu@lll-crg.ARPA (John Gilmore)
  1449. Subject: Re: Case sensitive file names
  1450.  
  1451. > From: mark@cbosgd.att.com (Mark Horton)
  1452. > Another problem is that emulations on other operating systems,
  1453. > such as VMS or MS DOS, will become impossible without drastic
  1454. > changes to their file systems.
  1455.  
  1456. I think we should eliminate the hierarchical file system too (-:).
  1457. After all, VM/370 doesn't use it, nor does CP/M.  It would be too hard
  1458. to emulate.  (Thank Bog that MSDOS and the Mac added the feature, and
  1459. that Atari and Amiga started that way, or somebody might actually take
  1460. me seriously!)  We could consider getting rid of devices-as-files, though --
  1461. there's an idea that none of those people have picked up :-).
  1462.  
  1463. > After all, it's not like it was easiest to make the VMS filesystem
  1464. > case insensitive - that took extra effort on their part.
  1465.  
  1466. Their feeling it was worth the work for VMS doesn't make it right for Unix.
  1467.  
  1468. > I think it's a mistake to move in the direction of requiring other
  1469. > operating systems to become case sensitive.
  1470.  
  1471. Nobody is requiring anything of any other operating system.  We're
  1472. defining a *new* operating system here.
  1473.  
  1474. My impression was that the "new operating system" was supposed to look
  1475. very much like the set of features-in-common to the various Unix operating
  1476. systems.  If we are trying to standardize an environment that will
  1477. run under other operating systems, somebody better tell us quick.
  1478. I thought the "Portable Operating System" stuff was just a legalese hack
  1479. because we can't use the trademarked name "Unix".  Was I wrong?
  1480.  
  1481. >                                                        But I think
  1482. > it would be a mistake to require other systems to change if they
  1483. > are to support a POSIX emulation on top of them.  (On the other hand,
  1484. > it may be reasonable to expect other operating systems to support
  1485. > more general file name lengths and character sets, rather than things
  1486. > like the MS DOS 8+3 convention.  But in practice, this may be too
  1487. > painful to fix.)
  1488.  
  1489. Either they will implement POSIX compatability or they won't.  If we
  1490. define POSIX systems to be case insensitive, MSDOS would not qualify
  1491. anyway, since you can't use an arbitrary 14-character file name.  VMS
  1492. would have problems with files whose names contained [, ], or colon,
  1493. etc.  So they will have to provide some form of file name translation,
  1494. and they should handle the case issue at the same time they handle the
  1495. length and allowable character set issues.
  1496.  
  1497. Volume-Number: Volume 7, Number 20
  1498.  
  1499. From news  Sun Oct  5 17:33:06 1986
  1500. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1501. Newsgroups: mod.std.unix
  1502. Subject: so-called "case sensitive" file names
  1503. Message-Id: <5916@ut-sally.UUCP>
  1504. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1505. Date: 5 Oct 86 22:32:53 GMT
  1506. Draft-9: 2.3.folding
  1507.  
  1508. Date:     Sat, 4 Oct 86 23:09:29 EDT
  1509. From: Doug Gwyn (VLD/VMB) <gwyn@BRL.ARPA>
  1510. Subject:  so-called "case sensitive" file names
  1511.  
  1512. It seems some people either have forgotten what UNIX is about
  1513. or never knew in the first place.  Pathname components are simply
  1514. strings of byte-chunked bit patterns.  It is not the operating
  1515. system's business to second-guess the user's intentions and
  1516. interpret the strings he has chosen to use for filenames in order
  1517. to "fix them" on his behalf.  (Some *applications* may elect to
  1518. impose restrictions on formats of filenames for files that they
  1519. deal with, when appropriate.)
  1520.  
  1521. I know several experienced UNIX users who rely on the freedom to
  1522. choose meaningful (*to them*) filenames, frequently using both
  1523. upper- and lower-case versions of a name concurrently for
  1524. different purposes (I do this myself).  If somebody can't cope
  1525. with names that are distinguished only by case, then of course
  1526. he is free to adopt his own naming procedures.  Automatic
  1527. enforcement of unnecessary restrictions by the kernel is not
  1528. desirable; that's the sort of thing UNIX was a rebellion against.
  1529.  
  1530. I also think this discussion was based on a misconception:
  1531. although we removed the note that some implementations may fold
  1532. cases in filenames, I can't find anything in the current draft
  1533. of the POSIX standard that prohibits this or other constraints
  1534. on filenames imposed by an implementation.  Presumably only a
  1535. layered implementation on a system that doesn't support
  1536. arbitrary characters in filenames would impose any such
  1537. restriction, but that's a marketing matter, not a technical one.
  1538.  
  1539. Volume-Number: Volume 7, Number 21
  1540.  
  1541. From news  Mon Oct  6 11:20:48 1986
  1542. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1543. Newsgroups: mod.std.unix
  1544. Subject: Re:  Case sensitive file names
  1545. Message-Id: <5918@ut-sally.UUCP>
  1546. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1547. Date: 6 Oct 86 16:20:30 GMT
  1548. Draft-9: 2.3.folding
  1549.  
  1550. From: axiom!drilex!dricej@harvard.UUCP
  1551. Date: Mon, 6 Oct 86 10:24:22 edt
  1552. Subject: Re:  Case sensitive file names
  1553.  
  1554. I fully support Mark Horton's points about making case-insensitivity
  1555. optional in POSIX.  The fact remains that case-sensitivity in file names
  1556. is a Unix parochialism, and not a very good one, at that.  I've found that
  1557. case-sensitivity is not hard to teach, just hard to get along with.  I am
  1558. in a situation that is not unusual these days--I use several operating
  1559. systems each day (Unix, MS-DOS, VM/CMS, Burroughs MCP).  To remember the
  1560. peculiarities of each one is difficult--and case-sensitivity in file names
  1561. (and switches) is such a peculiarity.  The uppercase-lowercase system just
  1562. wasn't designed to convey that much information (in English)!  Look at
  1563. e. e. cummings!
  1564. ---
  1565. Craig Jackson
  1566. UUCP: {harvard,linus}!axiom!drilex!dricej
  1567. BIX:  cjackson
  1568.  
  1569. Volume-Number: Volume 7, Number 22
  1570.  
  1571. From news  Mon Oct  6 11:22:44 1986
  1572. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1573. Newsgroups: mod.std.unix
  1574. Subject: Case Sensitive file names
  1575. Message-Id: <5919@ut-sally.UUCP>
  1576. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1577. Date: 6 Oct 86 16:22:08 GMT
  1578. Draft-9: 2.3.folding
  1579.  
  1580. Date:     Mon, 6 Oct 86 0:30:45 EDT
  1581. From: Bernie Cosell <cosell@prophet.bbn.com>
  1582. Subject:  Case Sensitive file names
  1583.  
  1584. To my view, the case folders have to make a VERY strong case that
  1585. case-sensitivity is a bad thing before we could justify BUILDING IN
  1586. that somewhat arbitrary limitation onto the operating system.  As has
  1587. been mentioned, if the filesystem is left alone, then it is easy to
  1588. envision that for certain uses, certain users *might* want to use (or
  1589. to use utilities that use...) a variant or (or layer on) stdio that
  1590. simply toupper's the filename string in the fopen call.  The users
  1591. that didn't need or want such a limitation should be free to do as
  1592. they wish.
  1593.  
  1594. Note that most of these other systems that are being presented as
  1595. exemplars have pretty horrible filename conventions (most punctuation
  1596. marks are not legal, certainly control chars aren't legal, the
  1597. equivalent of '..' is *built in* to the kernel, the operation of '.'
  1598. is *built in*.  I've always thought that was a crock!
  1599.  
  1600. >From what I've heard of the arguments so far, coupled with my biases,
  1601. I'd vote to keep it case-sensitive (but then, of course, I don't have
  1602. a vote so that hardly matters... :-).
  1603.  
  1604.   /Bernie
  1605.  
  1606. Volume-Number: Volume 7, Number 23
  1607.  
  1608. From news  Mon Oct  6 11:31:10 1986
  1609. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1610. Newsgroups: mod.std.unix
  1611. Subject: POSIX system range [more case sensitivity]
  1612. Message-Id: <5920@ut-sally.UUCP>
  1613. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1614. Date: 6 Oct 86 16:30:37 GMT
  1615. Draft-9: 2.3.folding
  1616.  
  1617. From: cybvax0!frog!jim@harvard.UUCP
  1618. Date: Mon, 6 Oct 86 08:56:55 edt
  1619. Subject: POSIX system range
  1620.  
  1621. In a comment on the sensitive issue of UPPERCASE us lowercase, John
  1622. Gilmore stated:
  1623.  
  1624.  "My impression was that the "new operating system" was supposed to look
  1625.   very much like the set of features-in-common to the various Unix operating
  1626.   systems.  If we are trying to standardize an environment that will
  1627.   run under other operating systems, somebody better tell us quick.
  1628.   I thought the "Portable Operating System" stuff was just a legalese hack
  1629.   because we can't use the trademarked name "Unix".  Was I wrong? "
  1630.      ( Volume-Number: Volume 7, Number 20)
  1631.  
  1632. The POSIX effort is defining an operating system interface, the boundary
  1633. layer between application and OS Services; not an "operating system".
  1634. One point is that we are not trying to specify the implementation.
  1635. We also want a portable environment that can work with various UN*X
  1636. versions. But, it should also work with some range of hosted systems,
  1637. and systems developed from scratch.  The name POSIX is to provide a
  1638. handle for such a thing without treading on the AT&T Trademark.  However,
  1639. The purpose is to define application portability beyond the scope of the
  1640. language constructs, but without necessarily specifiying a specific
  1641. implementation or specific version of system from a specific vendor.
  1642. If we reverse the implicit question "Why not UN*X" and ask "Why not hosted?"
  1643. it is useful.  If we vary from System V or Berkeley, we would like to know,
  1644. and have some rationale for that (or not vary); similarly if we define
  1645. constraints that prevent hosting we should have a rationale for that,
  1646. or not propose such constraints.
  1647.  
  1648.     For information, POSIX has been proposed as a FIPS standard,
  1649. which would have a substaintial impact on government purchases when
  1650. that becomes finalized, and the first US Government purchase spec for
  1651. a POSIX system went out in Oct.  So we are not concerned with minor
  1652. legalisms, but practical solutions in the real world.  If the definition
  1653. aids significantly in this, we have done well; if not, ...
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659. Volume-Number: Volume 7, Number 24
  1660.  
  1661. From news  Mon Oct  6 12:07:57 1986
  1662. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Guest Moderator, John B. Chambers)
  1663. Newsgroups: mod.std.unix
  1664. Subject: Re: Case sensitive file names
  1665. Message-Id: <5921@ut-sally.UUCP>
  1666. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1667. Date: 6 Oct 86 17:07:33 GMT
  1668. Draft-9: 2.3.folding
  1669.  
  1670. Date: Mon, 6 Oct 86 09:56:50 edt
  1671. From: philabs!nyit!rick@seismo.CSS.GOV (Rick Ace)
  1672.  
  1673. Regarding comments by Mark Crispin <MRC%PANDA@SUMEX-AIM.Stanford.EDU>:
  1674.  
  1675. > I would like to add a loud "Bravo!" to Mark Horton's message!  The present
  1676. > case sensitivity of the Unix filesystem is a real drag, and something that
  1677. > has regularly and reliably caused me problems when working in a heterogenous
  1678. > environment.
  1679.  
  1680. What specifically is wrong with case-sensitivity?  I work on both
  1681. case-sensitive (UNIX) and other (TOPS-20) systems regularly, and
  1682. have no problems in switching between them.
  1683.  
  1684. >              As far as I can tell, the only individuals who actually *like*
  1685. > case sensitivity in Unix are the high-schoolish hackers who think it's really
  1686. > cute to write programs with separate -1, -l, -I, and -L switches.
  1687.  
  1688. And many software professionals.
  1689.  
  1690. > I think that the most reasonable proposal is to do a free case match on input,
  1691. > so that "more foobar" is the same as "More FooBar", etc.  On output, you first
  1692. > do a free case match to see if there is an extant file and if so preserve the
  1693. > case of that file.  In other words, if I overwrite FooBar but specify foobar
  1694. > or FOOBAR, the file is still called FooBar.  Otherwise, use whatever case the
  1695. > user specifies.  Renaming would always use the case the user specifies, so the
  1696. > user can rename foobar to FooBar, etc.
  1697.  
  1698. Changing the UNIX kernel to behave like this is, of course, within the
  1699. capabilities of a single programmer.  However, not all filename recognition
  1700. under UNIX occurs in the kernel, and you're going to have an
  1701. awesome task finding and rewriting all those user-mode programs that
  1702. know implicitly that filenames are case-sensitive.  The problem is
  1703. exacerbated by the fact that you're going to a more complex scheme
  1704. than what was there in the first place.
  1705.  
  1706. > ... a FooBar.Txt file is possible on TOPS-20, but only by
  1707. > F<^V>o<^V>oB<^V>a<^V>r.T<^V>x<^V>t.
  1708. > For once, I don't favor the TOPS-20 way of doing things.  TOPS-20's scheme is
  1709. > alright if you started with case independence to begin with, but I don't think
  1710. > it would fit in well into Unix, and certainly not without a major flag day.  I
  1711. > hope that my suggestion above could fit in with only minimal inconvenience.
  1712.  
  1713. It could fit in *part of the way* with minimal inconvenience.
  1714.  
  1715. > I found on TOPS-20 that no serious user used case-sensitive filenames.
  1716.  
  1717. You've got the cart before the horse.  No serious TOPS-20 users used
  1718. case-sensitive filenames because of the inconvenience in entering
  1719. filenames with embedded lowercase characters.  On output, filenames
  1720. with embedded ^V characters are aesthetically unpleasant as well.
  1721.  
  1722. > Everybody
  1723. > appreciated the case-insensitivity of the interface, even though it took the form
  1724. > of coercing to upper case.
  1725.  
  1726. You can replace the word "appreciated" with the words "became accustomed to".
  1727. Also, this argument fails on the grounds that it's hard to get people
  1728. to vote rationally on a subject that involves a decision to change
  1729. from something they're comfortable with.
  1730.  
  1731. >                         My experience also suggests that case sensitivity is
  1732. > a pain in the a**; I tried writing a major utility in Interlisp using mixed case
  1733. > function and variable names and eventually gave up when most of my errors turned
  1734. > out to be case errors.
  1735.  
  1736. How about keeping all variable names in one case?
  1737.  
  1738. >                     It's *so* much easier to keep the shift lock key down...
  1739. > -- Mark --
  1740.  
  1741. It's just as easy to leave the shift lock key up.  Many typists do.
  1742.  
  1743.  
  1744. The issue of case-sensitivity is a subjective one, thus you'll always
  1745. find many vehement proponents on both sides of the fence.  At this
  1746. point in the development of UNIX, such a fundamental change in the
  1747. behavior of the OS would receive at best only partial acceptance among
  1748. the myriad UNIX implementations, leading to even more divergence.
  1749. This effect diametrically opposes the purpose of a standard.
  1750.  
  1751. -----
  1752. Rick Ace
  1753. Computer Graphics Laboratory
  1754. New York Institute of Technology
  1755. Old Westbury, NY  11568
  1756. (516) 686-7644
  1757.  
  1758. {decvax,seismo}!philabs!nyit!rick
  1759.  
  1760.  
  1761. Volume-Number: Volume 7, Number 25
  1762.  
  1763. From news  Mon Oct  6 17:40:19 1986
  1764. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  1765. Newsgroups: mod.std.unix
  1766. Subject: Re: Case sensitive file names
  1767. Message-Id: <5928@ut-sally.UUCP>
  1768. References: <5860@ut-sally.UUCP> <5865@ut-sally.UUCP>
  1769. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1770. Date: 6 Oct 86 22:40:02 GMT
  1771. Draft-9: 2.3.folding
  1772.  
  1773. From: seismo!hadron!jsdy@sally.utexas.edu (Joseph S. D. Yao)
  1774. To: ut-sally!std-unix@sally.utexas.edu
  1775. Date: Sun, 5 Oct 86 11:52:40 edt
  1776. Summary: Case sensitivity is useful; harms only those not used to it.
  1777. Organization: Hadron, Inc., Fairfax, VA
  1778.  
  1779. In <5860@ut-sally.UUCP>, mark@cbosgd.att.com (Mark Horton) writes:
  1780. > Message-Id: <8609291633.AA10479@cbosgd.ATT.COM>
  1781. > Newsgroups: mod.std.unix
  1782. > I note that the committee recently decided that all file names
  1783. > in conforming systems must be case sensitive, for example,
  1784. > makefile and Makefile must be different files.  ...
  1785. > I think this is a mistake.  UNIX is the only major operating system
  1786. > that treats things like file names, logins, host names, and commands
  1787. > as case sensitive.  The net effect of this is that users get
  1788. > confused, since they have to get the capitalization right every time.
  1789.  
  1790. Since this is primarily an opinion, I'll say that I think any such
  1791. "confusion" is a product of someone getting wedded to odd ways of
  1792. doing things in a single-case environment, and not really learning
  1793. their own language.  Only the followers of the late great e. e.
  1794. cummings have any problem with "normal" use of different cases.
  1795. (Yes, German does it differently.  Fine!  AS LONG AS THERE IS A
  1796. STANDARD CONVENTION, I am willing to let Nouns be Uppercasen.)
  1797. I use both cases for reasons and, now that I have been weaned away
  1798. (for years!) from single-case environments, I find them very limiting.
  1799. After all, we DO have two cases here, and they are separate characters
  1800. that can be used separately.  Not to mention that UC-lc conversion
  1801. is only easy in the USASCII standard -- ISO and other conversions may
  1802. be quite difficult.
  1803.  
  1804. The sole time I like case independence is on the occasional text
  1805. search (often because some @#$% case-independent language allowed
  1806. a whimsical program to vary case without care).  Vi/ex's ":set ic"
  1807. mode works well for this, but I wish there were an "ignorecase"
  1808. flag to the grep family.  (-ic:ascii / -ic:deutsche / ... ?)
  1809. [ There is:  "grep -i"  -mod ]
  1810.  
  1811. (Anecdote: UPPER CASE ONLY is a product of the original TTYs' design.
  1812. A study had said that  l o w e r  case was easier to read!  but it
  1813. was decided to be UC-only, when a Board member asked the president
  1814. whether he wanted to be responsible when the name of God came over the
  1815. wires ... in lower case ...)
  1816.  
  1817. The emulation argument,
  1818. > Another problem is that emulations on other operating systems,
  1819. > such as VMS or MS DOS, will become impossible without drastic
  1820. > changes to their file systems.
  1821. almost swayed me, except that this is not an emulation document,
  1822. this is an OS document!
  1823. [ It's neither:  it's an interface document.  -mod ]
  1824.   And I remembered that it's quite possible
  1825. to provide a "flexnames"-type of mapping: RATFOR does something
  1826. similar.  Perhaps POSIX might wish to add a codicil, regarding
  1827. emulations ("hosted" implementations?), that gives some relaxation
  1828. and some requirements for minimum performance.  Perhaps they do
  1829. not want to relax their standards for emulations at all.  Their
  1830. privilege (considering that the Committee includes many vendors).
  1831. [ Hosted systems have been considered in excruciating detail
  1832. in writing the standard.  -mod ]
  1833.  
  1834. In article <5865@ut-sally.UUCP>, MRC%PANDA@SUMEX-AIM (Mark Crispin) writes:
  1835. >case sensitivity of the Unix filesystem is a real drag, and something that
  1836. >has regularly and reliably caused me problems when working in a heterogenous
  1837. >environment.
  1838.  
  1839. See above.
  1840.  
  1841. There follow several comments on the use of mixed case.  OF COURSE
  1842. people won't use mixed case when the operating system stands in the
  1843. way of using it comfortably!  And if hackers aren't taught better
  1844. than to mix 1, I, L, O, and 0 in their codes (as a certain major
  1845. stinker of a company does -- using them EXCLUSIVELY -- in software
  1846. released with an alleged source-code license!), then people should
  1847. undertake to educate them ... and their alleged educators.
  1848.  
  1849. When I name a file FooBar, I better well come back and find it named
  1850. FooBar ... NOT FOOBAR or foobar or (God help us) FoObAr.
  1851.  
  1852. >            ...  It's *so* much easier to keep the shift lock key down...
  1853.  
  1854. I HATE it when people do this to my terminal ... and leave it
  1855. that way ...
  1856. -- 
  1857.  
  1858.     Joe Yao        hadron!jsdy@seismo.{CSS.GOV,ARPA,UUCP}
  1859.             jsdy@hadron.COM (not yet domainised)
  1860.  
  1861. Volume-Number: Volume 7, Number 26
  1862.  
  1863. From news  Mon Oct  6 17:55:54 1986
  1864. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  1865. Newsgroups: mod.std.unix
  1866. Subject: Re:  Case sensitive file names
  1867. Message-Id: <5929@ut-sally.UUCP>
  1868. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1869. Date: 6 Oct 86 22:55:36 GMT
  1870. Draft-9: 2.3.folding
  1871.  
  1872. The discussion has been interesting and has brought up some topics,
  1873. such as what case insensitivity means in non-English languages, that
  1874. many of the readers were evidently unaware of.  However, it's getting
  1875. a bit out of hand.
  1876.  
  1877. IEEE P1003.1 is interested in promoting portability of applications
  1878. by defining a UNIX-like operating system interface.  Any major change
  1879. from a feature of *every* variant of UN*X, such as case-sensitive
  1880. file names (really, filenames as uninterpreted byte strings), needs
  1881. major justification before being considered.  So further assertions
  1882. of the form "I want it because I like it" are not of interest.  It
  1883. would be most interesting to see the results of a survey on user
  1884. reaction to case sensitivity or insensitivity, but this newsgroup
  1885. isn't the place to conduct such a survey, and it's not clear that
  1886. the results would be relevant to 1003.1 anyway (what does case
  1887. mean in Japanese or Finnish)?
  1888.  
  1889. So, unless you've got something new to say on this subject, please
  1890. let's go on to something else.
  1891.  
  1892. Volume-Number: Volume 7, Number 27
  1893.  
  1894. From news  Mon Oct  6 18:00:50 1986
  1895. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  1896. Newsgroups: mod.std.unix
  1897. Subject: Administrativia
  1898. Message-Id: <5930@ut-sally.UUCP>
  1899. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1900. Date: 6 Oct 86 23:00:31 GMT
  1901. Draft-9: mod.std.unix
  1902.  
  1903. Thanks to John B. Chambers for guest moderating while I was swapped
  1904. out last week (to the USENIX Board meeting in Monterey).
  1905.  
  1906. It appears the newsgroup name change from mod.std.unix to comp.std.unix
  1907. is imminent.  Details as they become available.
  1908.  
  1909. Volume-Number: Volume 7, Number 28
  1910.  
  1911. From news  Mon Oct  6 18:07:41 1986
  1912. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  1913. Newsgroups: mod.std.unix
  1914. Subject: POSIX book cost and P1003 participation
  1915. Message-Id: <5931@ut-sally.UUCP>
  1916. References: <5834@ut-sally.UUCP>
  1917. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1918. Date: 6 Oct 86 23:07:23 GMT
  1919. Draft-9: Trial.Use
  1920.  
  1921. [ This is a first for this newsgroup:  an anonymous posting.
  1922. The submittor asked to be signed "participant in 1003 effort."
  1923. -mod ]
  1924.  
  1925.  
  1926. IEEE is one of the lowest cost sources of standards; both CBEMA(X3)
  1927. [ who produce the X3J11 C Standard documents  -mod ]
  1928. and ISO tend to charge more for similar documents.  Part of this is
  1929. due to the fact that IEEE uses commercial distribution channels,
  1930. and thus can print higher volumes than if they were the only source.
  1931. For those of us who are putting in hundreds of hours of time (and our
  1932. companies who pay for that) substantial travel costs for meetings,
  1933. and even the per hour costs of sorting through mod.std.unix,
  1934. [ Amen -mod ] $20 is a drop in the bucket.
  1935.  
  1936. Now for a more challenging thought ... I'm not sure there is much use
  1937. in feedback from persons who cannot afford the $20!  Clearly they are
  1938. not professionally involved in this area or they would have a cause or
  1939. justification for the expense.  Any company in the computer industry
  1940. or related fields can afford $20 to find out what the federal government
  1941. is proposing be made a Federal Purchasing Specification, if not just
  1942. to keep employees current.  End user sites would have the same interest
  1943. in knowing what is "coming down", so they can respond intelligently
  1944. to the the multitude of products coming out.  I can see some limit
  1945. on the number of copies that a University might be willing to buy,
  1946. but each one has a book store, and if there are enough UNIX users on
  1947. campus that store can buy the book at a discount (or a user group could
  1948. put in a bulk order).  For a class of interested professionals, the
  1949. $20 is a minimal investment in keeping up with technology.  So I will
  1950. stand on my comment.
  1951.  
  1952. For those who consider this process to be of significant interest, they
  1953. can join the working group or corresponding group.  Working group members
  1954. attend meetings, and that is a moderate expense.  Correspondents are expected
  1955. to provide written feedback, and specific proposed wordings that would
  1956. improve the document.  These groups both get all of the mailings, drafts,
  1957. etc. (and the glory of having their names printed in the front of the book).
  1958. With the fairly tight budget constraints of the IEEE, if the correspondent
  1959. group gets too big we may need to charge them for the costs of distribution
  1960. of materials (far more than the $20) (so far that has not happened).
  1961.  
  1962. Finally, we hope to get the next draft on line in some form so persons
  1963. can "see" what is happening, and comment on current status information.
  1964. But I suspect that transfering that in bulk over UUCP, and printing it
  1965. locally is not a way to save $20 (phone, computer, paper, manpower
  1966. expenses will exceed $20 in most modern countries).
  1967.  
  1968. Volume-Number: Volume 7, Number 29
  1969.  
  1970. From news  Mon Oct  6 18:16:38 1986
  1971. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  1972. Newsgroups: mod.std.unix
  1973. Subject: job control
  1974. Message-Id: <5932@ut-sally.UUCP>
  1975. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  1976. Keywords: POSIX Appendix C
  1977. Date: 6 Oct 86 23:15:47 GMT
  1978. Draft-9: job.control
  1979.  
  1980. From: pyramid!utzoo!henry@sally.utexas.edu  (Henry Spencer)
  1981. Date: Sat, 4 Oct 86 03:03:30 PDT
  1982.  
  1983. After some activity back when the Unix standard was with /usr/group, I've
  1984. "gone dormant" on standardization work through lack of time.  I haven't
  1985. even seen most of the P1003 stuff.  However, I understand that there is
  1986. a proposal to incorporate Berklix-like "job control" into P1003.  Given
  1987. the interest in getting some new topics into mod.std.unix, I'm submitting
  1988. the following.  It's a slightly touched-up version of a paper Ian Darwin
  1989. and I submitted to the /usr/group standards effort, arguing strongly that
  1990. neither 4BSD "job control" nor SysV "shell layers" should be incorporated
  1991. into a standard.  Since I haven't seen the detailed P1003 proposal, it's
  1992. possible that some of this is out of date, but on the whole I think it's
  1993. of interest nonetheless.
  1994.  
  1995.                 Henry Spencer @ U of Toronto Zoology
  1996.                 {allegra,ihnp4,decvax,pyramid}!utzoo!henry
  1997.  
  1998. [ Perhaps whoever has the original online copy of the current P1003
  1999. proposal could submit it?  That would probably be worthwhile even if
  2000. it had to be broken into several articles for space reasons.  -mod ]
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.              Comments on Terminal I/O, Specifically `Job Control'
  2011.  
  2012.  
  2013.                                 Henry Spencer
  2014.  
  2015.                             University of Toronto
  2016.                                  utzoo!henry
  2017.  
  2018.  
  2019.                                   Ian Darwin
  2020.  
  2021.                             University of Toronto
  2022.                                  utcsstat!ian
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030. `Job Control', What It's Really About
  2031.  
  2032.      There is no longer any argument that it is desirable  to  permit  orderly
  2033. user  interaction  with multiple processes.  Unfortunately, a whole generation
  2034. of Unix users has had their view of this concept warped by the dreadful way it
  2035. was  implemented  by Berkeley.  And AT&T, in its recent attempt to address the
  2036. problem, has taken the easy way out instead of doing it right.
  2037.  
  2038.      The basic concept involved here is multiplexing,  not  `job  control'  or
  2039. process  suspension.   The ideal is something like the environment on the Bell
  2040. Labs Blit, where multiple processes run simultaneously  in  multiple  windows,
  2041. and  the user can switch his attention and his interaction from one to another
  2042. at will.  There is a popular misconception that doing this *requires*  a  Blit
  2043. or a similar highly-intelligent terminal; this is simply not true.
  2044.  
  2045.      Window-based multiplexed interaction is harder to do when the terminal is
  2046. dumb,  but  even  the Blit is not actually writing things into several windows
  2047. *simultaneously*:  it just looks that way because of the high-speed multiplex-
  2048. ing  involved.   There  is no intrinsic reason why this multiplexing cannot be
  2049. done at the other end of the communications line when the terminal is  incapa-
  2050. ble of doing it.
  2051.  
  2052.      The multiplexing can be done in the kernel (albeit at  considerable  cost
  2053. in  added kernel complexity) or in a user process (given suitable interprocess
  2054. communication).  In either case, the fundamental structure is quite simple:  a
  2055. central  `manager'  coordinates  terminal  i/o to and from `client' processes,
  2056. each of which has total control of its own "virtual terminal".  The  manager's
  2057. job  is  simulating  multiple  virtual terminals on a single real terminal, by
  2058. routing input to the appropriate process and placing output in the appropriate
  2059. area of the screen.
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.                                     - 2 -
  2066.  
  2067.  
  2068.  
  2069.      The basic characteristics of such a multiplexing  system  are  that  each
  2070. process  has  what  looks (to it) like a private terminal, and that all i/o to
  2071. and from the user is centrally supervised.  This  is  precisely  analogous  to
  2072. file i/o under Unix:  simultaneous independent activity by multiple processes,
  2073. coordinated by a central manager which multiplexes physical resources so as to
  2074. prevent interference.  The benefits are similar:  individual processes neither
  2075. know nor care about the multiplexing, and useful high-level  abstractions  can
  2076. be implemented in one central place.
  2077.  
  2078. Job Control and Layers:  Half-Baked Approaches
  2079.  
  2080.      The existing schemes, Berkeley `job control' and  AT&T  `layers',  unfor-
  2081. tunately  are  clumsy  and  incomplete  attempts  at  implementing multiplexed
  2082. interaction.  Neither one  makes  any  provision  for  simultaneous  on-screen
  2083. activities  by  more  than one process, except for the `cop-out' of permitting
  2084. multiple processes to intermix their output at random.  But there  are  deeper
  2085. problems.
  2086.  
  2087.      Both schemes require that *every* *program* which is going to participate
  2088. in  multiplexed  interaction  must contain code to allow for this possibility!
  2089. User programs must be prepared to redraw  the  screen  on  request,  with  the
  2090. requests  coming  from  the kernel in the Berkeley scheme and from the user in
  2091. the System V.2 scheme.  This is an abomination.
  2092.  
  2093.      Not only does this demand specialized code in every user program, but  it
  2094. entirely  denies  multiplexed  interaction  to the bulk of Unix programs.  The
  2095. concept of `redraw the screen' is meaningful  only  for  interactive  programs
  2096. with  full-screen  interfaces.   The result of, say, an *egrep*, once replaced
  2097. on-screen by (say) the editing buffer of a *vi*,  is  gone  for  good.   Since
  2098. *egrep*  is  not an interactive program, it is no longer around to be asked to
  2099. redraw its output.
  2100.  
  2101.      The heart of the problem is that neither job control  nor  layers  imple-
  2102. ments  the  crucial half of a window system:  centralized management of screen
  2103. updates.  It has long been accepted that multiple processes cannot  safely  do
  2104. updates  to disks without centralized management and consistency control.  The
  2105. same obviously applies to terminal i/o:  orderly simultaneous interaction with
  2106. multiple  processes  requires centralized supervision of the interaction.  The
  2107. existing schemes supervise input but not output.
  2108.  
  2109.      It is obvious *why* this deficiency exists:  supervising  output  is  the
  2110. hard part.  The idea of switching input from one program to another is reason-
  2111. ably straightforward.  Differences in input handling,  such  as  `cooked'  vs.
  2112. `raw'  modes,  are relatively minor problems, since the user can be conversing
  2113. with at most one process at a time.  But a CRT terminal  permits  output  from
  2114. multiple  processes  to  be  displayed simultaneously, and coordinating screen
  2115. updates isn't trivial.  Furthermore, there is no agreement on the precise user
  2116. interface  that  should  be presented for output -- consider, for example, the
  2117. religious debates over overlapping vs. non-overlapping  windows  --  and  this
  2118. discourages  attempts  to  provide  a single and relatively inflexible central
  2119. solution.  The immense variation in CRT-terminal control  sequences  puts  the
  2120. icing on the cake.
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.                                     - 3 -
  2128.  
  2129.  
  2130.  
  2131.      Nevertheless, these problems *can* be solved.  There are at least  three,
  2132. and  probably several more, complete window systems in experimental use.  Some
  2133. of them have performance problems, and most of them are outside the kernel and
  2134. hence have interprocess-communication problems, but they do work.
  2135.  
  2136. Standardizing Multiplexed Interaction:  A Recommendation
  2137.  
  2138.      As mentioned above, several experimental window  systems  already  exist.
  2139. (This is quite apart from the `real' window systems on bitmapped workstations,
  2140. which are also relevant.) Experience with these and other  implementations  of
  2141. the  same  concept will yield a wealth of knowledge on how best to handle this
  2142. function.  It is important that this experimentation, and the adoption of  the
  2143. results  that come out of it, not be stifled by further `official endorsement'
  2144. of incomplete and badly-designed existing schemes.
  2145.  
  2146.      The best approach for P1003 to take on this matter would  be  to  reserve
  2147. some  characters,  and some flag bits, for implementations of multiplexed user
  2148. interfaces, but not to specify any such  interface  at  this  time.   Such  an
  2149. attempt  to  specify the interface would be premature, especially when the two
  2150. approaches under consideration are  already  known  to  be  grossly-incomplete
  2151. botches.
  2152.  
  2153.      *Neither Berkeley `job control' nor AT&T `layers' is an  adequate  imple-
  2154. mentation  of  a  multiplexed user interface*.  *Neither one should be cast in
  2155. concrete as a standard at this time*.
  2156.  
  2157. A Retraction
  2158.  
  2159.      Our previous recommendation was that, if multiplexed  interaction  *must*
  2160. be  standardized,  AT&T `layers' would be a better place to start.  The layers
  2161. system, unlike Berkeley job control, does do input  multiplexing  more-or-less
  2162. correctly,  and  hence  is essentially upward-compatible with true window sys-
  2163. tems.  It has several desirable characteristics:  independent  tty  state  for
  2164. each  layer,  suspension/resumption  invisible  to  the  processes,  a central
  2165. manager process which is *not* imbedded in a shell, and an implementation that
  2166. does not have ramifications everywhere.
  2167.  
  2168.      Nevertheless, as discussed above, it doesn't do the  hard  part:   output
  2169. multiplexing.   It  also  has  some  annoying  implementation  limits,  which,
  2170. although they wouldn't necessarily have to propagate into  a  standard,  might
  2171. well  propagate  into  most  early implementations.  Its major problem is that
  2172. it's not clear how to extend  it  to  centralized  output  management  without
  2173. imbedding said management inside the kernel.
  2174.  
  2175.      We therefore retract our recommendation for  standardizing  layers  as  a
  2176. second choice.  The proper course is to standardize nothing, at least until we
  2177. understand the user-interface issues and the implementation problems better.
  2178.  
  2179. Specifics
  2180.  
  2181.      A decision not to standardize a multiplexed-interaction  scheme  notwith-
  2182. standing,  there  are a few useful minor things that can be standardized.  The
  2183. *termio* structure probably should have a reserved character or two  (or  room
  2184. for  same)  and  a few reserved bits (or room for same) to permit kernel-based
  2185.  
  2186.  
  2187.  
  2188.  
  2189.                                     - 4 -
  2190.  
  2191.  
  2192.  
  2193. implementations of multiplexing.
  2194.  
  2195.      In particular, almost any multiplexing scheme using ordinary ASCII termi-
  2196. nals  will need a special character to attract the attention of the multiplex-
  2197. ing software.  Without this, it's very difficult  to  do  things  like  moving
  2198. between windows.  Reserving space for such a character might be useful; recom-
  2199. mending a default choice for the character would be very valuable, as it would
  2200. forestall unnecessary differences between implementations.  Control-Z would be
  2201. plausible.
  2202.  
  2203.      Implementing supervision of multiplexed interaction in user processes  is
  2204. difficult  in  many  existing Unix implementations, minimal implementations of
  2205. the existing P1003 standard among them.  The basic problem is that normal user
  2206. processes  are  definitely aware that their output is going to a terminal, the
  2207. device-independence of Unix  i/o  notwithstanding.   Screen-oriented  programs
  2208. doing *ioctl*s are the biggest problem.  A less obvious glitch is that *stdio*
  2209. adjusts its buffering strategy depending on whether output is to a terminal or
  2210. not;  this  is  a major nuisance with some existing window systems.  Something
  2211. like the `pseudo-tty' concept would be very useful:   an  entity  which  looks
  2212. like  a  terminal from one side, but whose behavior is under user-process con-
  2213. trol from the other side.  Some existing systems do implement such things, but
  2214. the lack of standardization largely prevents use of them in portable programs.
  2215.  
  2216. Suspending Processes:  A Non-Issue
  2217.  
  2218.      Several people have objected to AT&T layers, and similar  approaches,  on
  2219. the grounds that `...but 4BSD lets me suspend misbehaving processes...'.  This
  2220. is silly; a process-suspension  facility  can  be  very  simple  if  it  isn't
  2221. required to double as a multiplexing system.
  2222.  
  2223.      If it is thought desirable to standardize process  suspension,  we  would
  2224. suggest the following.  Some magic character (control-Y?), when typed as input
  2225. to a tty/window, suspends all processes  attached  to  that  tty/window.   The
  2226. suspension can be, and should be, utterly invisible to the processes involved.
  2227. This avoids the sticky problem of how to notify the  processes  without  doing
  2228. incompatible things to the *signal* mechanism.  The suspension probably should
  2229. have a permission requirement analogous to that of signals:  if the  effective
  2230. userids  of  the user and the process don't match, the suspension doesn't hap-
  2231. pen.  This is necessary to prevent major  security  breaches  like  suspending
  2232. *passwd*(1) in the middle of an update to the password file.
  2233.  
  2234.      Note that this suspension facility isn't very useful in  the  absence  of
  2235. multiplexed  interaction  --  you  can't  *do* anything to a suspended process
  2236. without access to another (real or virtual) terminal -- but the  two  concepts
  2237. are nevertheless quite independent.  There is no need to confuse them.
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251. Volume-Number: Volume 7, Number 30
  2252.  
  2253. From news  Mon Oct  6 18:24:32 1986
  2254. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2255. Newsgroups: mod.std.unix
  2256. Subject: drafts since POSIX Trial Use Standard
  2257. Message-Id: <5933@ut-sally.UUCP>
  2258. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  2259. Date: 6 Oct 86 23:24:09 GMT
  2260. Draft-9: mailings
  2261.  
  2262. From: ihnp4!pegasus!hansen@sally.utexas.edu (Tony Hansen)
  2263. Date: Wed, 1 Oct 86 18:31:52 CDT
  2264.  
  2265. I received the hard-cover copy of the trial use standard as a member of the
  2266. corresponding group. However I haven't seen anything since then. Has there
  2267. been any correspondence since the hard-cover book which I should have
  2268. received? I have seen a few references in mod.std.unix regarding some
  2269. additional appendices/modifications since the hard-cover, but no indication
  2270. about who should have received a copy of them.
  2271.  
  2272. [ Decisions have been made in working group meetings about changes in
  2273. the document, but there has been no complete draft produced or distributed
  2274. to anyone since the printed book became available.  There have been several
  2275. mailings of administrativia, RFCs, proposals, and such to the interest list.
  2276. There was a cleanup of that list recently involving every person on it being
  2277. sent a note asking for confirmation of address and continued interest.
  2278. It is possible that you didn't get one or that it didn't get sent back.
  2279. If so, inquire at the address to be found in the next article.  -mod ]
  2280.  
  2281. If other people might be interested in the answer to this question, you
  2282. might post your response as well as mailing it to me. Thanks.
  2283.  
  2284. [ Don't post it:  there's no point in repeatedly asking the same question.
  2285. -mod]
  2286.  
  2287.                     Tony Hansen
  2288.                     ihnp4!pegasus!hansen
  2289.  
  2290. Volume-Number: Volume 7, Number 31
  2291.  
  2292. From news  Mon Oct  6 18:30:29 1986
  2293. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2294. Newsgroups: mod.std.unix
  2295. Subject: Access to UNIX-Related Standards
  2296. Message-Id: <5934@ut-sally.UUCP>
  2297. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  2298. Date: 6 Oct 86 23:30:08 GMT
  2299. Draft-9: Access.Standards
  2300.  
  2301.  
  2302. This is the latest in a series of similar mod.std.unix articles.
  2303.  
  2304.  
  2305. Access information is given in this article for the following standards:
  2306. IEEE 1003.1 (POSIX), 1003.2 (shell/tools), 1003.3 (verification)
  2307. /usr/group working groups on networking, graphics, database,
  2308.     internationalization, performance measurements, realtime, and security
  2309. X3J11 (C language)
  2310. /usr/group Standard
  2311. System V Interface Definition
  2312. X/OPEN PORTABILITY GUIDE
  2313.  
  2314.  
  2315. The IEEE P1003 Portable Operating System for Computer Environments Committee
  2316. is sometimes known colloquially as the UNIX Standards Committee.
  2317. They have recently produced the 1003.1 "POSIX" Trial Use Standard.
  2318. According to its Foreword:
  2319.  
  2320.     The purpose of this document is to define a standard
  2321.     operating system interface and environment based on the
  2322.     UNIX Operating System documentation to support application
  2323.     portability at the source level.  This is intended for
  2324.     systems implementors and applications software developers.
  2325.  
  2326. Published copies are available at $19.95,
  2327. with bulk purchasing discounts available.
  2328. Call the IEEE Computer Society in Los Angeles
  2329.  
  2330.     714-821-8380
  2331.  
  2332. and ask for Book #967.  Or contact:
  2333.  
  2334.     IEEE Service Center
  2335.     445 Hoes Ln.
  2336.     Piscataway, NJ 08854
  2337.  
  2338. and ask for "IEEE 1003.1 Trial Use Standard" - stock number SH10546.
  2339.  
  2340. The Trial Use Standard will be available for comments for a period
  2341. such as a year.  The current target for a Full Use Standard is Fall 1987.
  2342. IEEE has initiated the process to have the 1003.1 effort brought into
  2343. the International Organization for Standardization (ISO) arena.
  2344.  
  2345. There is a paper mailing list by which interested parties may get
  2346. copies of drafts of the standard.  To get on it, or to submit comments
  2347. directly to the committee, mail to:
  2348.  
  2349.     James Isaak
  2350.     Chairperson, IEEE/CS P1003
  2351.     Charles River Data Systems
  2352.     983 Concord St.
  2353.     Framingham, MA 01701
  2354.     decvax!frog!jim
  2355.  
  2356. Sufficiently interested parties may join the working group.
  2357. The next scheduled meetings of the working group of the committee are
  2358.  
  2359.     9-11 December 1986    Atlantic City NJ with X3J11
  2360.     2-6 March 1987        Toronto, ON
  2361.         June 1987        Phoenix, AZ    the week of USENIX
  2362.         September 1987    New Orleans, LA
  2363.  
  2364. There is also a balloting group (which intersects with the working group).
  2365. This is more difficult.  Contact the committee chair for details.
  2366. I will repost them in this newsgroup if there is sufficient interest.
  2367.  
  2368. Related working groups are
  2369.     group    subject        co-chairs
  2370.     1003.2    shell and tools    Hal Jespersen (Amdahl), Don Cragun (Sun)
  2371.     1003.3    verification    Roger Martin (NBS), Carol Raye (AT&T)
  2372.  
  2373. Both will meet concurrently with 1003.1 in Palo Alto in September
  2374. (though 1003.2 will meet concurrently only on the morning of the 17th),
  2375. and inquiries should go to the same address as for 1003.1.
  2376.  
  2377. There are two Institutional Representatives to P1003:  John Quarterman
  2378. from USENIX and Heinz Lycklama from /usr/group.  As the one from USENIX,
  2379. one of my functions is to get comments from the USENIX membership and
  2380. the general public to the committee.  One of the ways I try to do that
  2381. is by moderating this newsgroup (currently known as mod.std.unix,
  2382. eventually as comp.std.unix).  An article related to this one just
  2383. appeared in the September/October 1986 ;login: (The USENIX Association
  2384. Newsletter).  I'm also currently on the USENIX Board of Directors.
  2385.  
  2386. The May/June 1986 issue of CommUNIXations (the /usr/group newsletter)
  2387. contains a report by Heinz Lycklama on the /usr/group Technical Committee
  2388. working groups which met in February 1986 on the areas of Networking,
  2389. Internationalization, Graphics, Realtime, Database, Performance, and
  2390. the proposed new group on Security.  Here is contact information for
  2391. those working groups as taken from that article (if you are interested
  2392. in starting another working group, contact Heinz Lycklama at the address
  2393. below):
  2394.  
  2395. /usr/group Working Group on Networking:
  2396.     Dave Buck
  2397.     D.L. Buck & Associates, Inc.
  2398.     6920 Santa Teresa Bldg, #108
  2399.     San Jose, CA 95119
  2400.     (408)972-2825
  2401.  
  2402. /usr/group Working Group on Internationalization:
  2403.     Brian Boyle            Karen Barnes
  2404.     Novon Research Group        Hewlett-Packard Co.
  2405.     537 Panorama Dr.        19447 Pruneridge Ave.
  2406.     San Francisco, CA 94131        M/S 47U2
  2407.     (415)641-9800            Cupertino, CA 95014
  2408.                     (408) 725-8111, ext 2438
  2409.  
  2410. /usr/group Working Group on Graphics:
  2411.     Heinz Lycklama
  2412.     Interactive Systems Corp.
  2413.     2401 Colorado Ave., 3rd Fl.
  2414.     Santa Monica, CA 90404
  2415.     (213)453-8649
  2416.  
  2417. /usr/group Working Group on Realtime:
  2418.     Bill Corwin            Ben Patel
  2419.     Intel Corp.            EDS Corp.
  2420.     5200 Elam Young Pkwy        P.O. Box 5121
  2421.     Hillsboro, OR 97123        23077 Greenfield
  2422.     (503)640-7588            Southfield, MI 48075
  2423.                     (313)443-3460
  2424.  
  2425. /usr/group Working Group on Database:
  2426.     Val Skalabrin
  2427.     Unify Corp.
  2428.     1111 Howe Ave.
  2429.     Sacramento, CA 95825
  2430.     (916)920-9092
  2431.  
  2432. /usr/group Working Group on Performance Measurements:
  2433.     Ram Celluri            Dave Hinant
  2434.     AT&T Computer Systems        SCI Systems, Inc.
  2435.     Room E15B            Ste 325, Pamlico Bldg
  2436.     4513 Western Ave.        Research Triangle Pk, NC 27709
  2437.     Lisle, IL 60532            (919)549-8334
  2438.     (312)810-6223
  2439.  
  2440. /usr/group Working Group on Security:
  2441.     Steve Sutton
  2442.     Computer Systems Div.
  2443.     Gould Inc.
  2444.     1101 East University
  2445.     Urbana, IL 61801
  2446.     (217)384-8500
  2447.  
  2448.  
  2449. The Abstract of the 1003.1 Trial Use Standard adds:
  2450.  
  2451.     This interface is a complement to the C Programming Language
  2452.     in the C Information Bulletin prepared by Technical Committee X3J11
  2453.     of the Accredited Standards Committee X3, Information Processing
  2454.     Systems, further specifying an environment for portable application
  2455.     software.
  2456.  
  2457. X3J11 is sometimes known as the C Standards Committee.  Their liaison to
  2458. P1003 is
  2459.  
  2460.     Don Kretsch
  2461.     AT&T
  2462.     190 River Road
  2463.     Summit, NJ 07901
  2464.  
  2465. A contact for information regarding publications and working groups is
  2466.  
  2467.     Thomas Plum
  2468.     Vice Chair, X3J11 Committee
  2469.     Plum Hall Inc.
  2470.     1 Spruce Avenue
  2471.     Cardiff, New Jersey 08232
  2472.  
  2473. There is frequent discussion of X3J11 in the USENET newsgroup mod.std.c,
  2474. which see.  (That newsgroup will eventually be known as comp.std.c.)
  2475.  
  2476.  
  2477. The /usr/group Standard is the principle ancestor of P1003.1:
  2478.  
  2479.     /usr/group Standards Committee
  2480.     4655 Old Ironsides Drive, Suite 200
  2481.     Santa Clara, California 95050
  2482.  
  2483. The price is still $15.00.
  2484.  
  2485.  
  2486. The System V Interface Definition (The Purple Book).
  2487. This is the AT&T standard and is one of the most frequently-used
  2488. references of the IEEE 1003 committee.
  2489.  
  2490.     System V Interface Definition, Issue 2
  2491.     Select Codes 320-011 (Volume 1) and 320-012 (Volume 2)
  2492.     or Select Code 307-127 (both volumes).
  2493.     AT&T Customer Information Center
  2494.     2833 North Franklin Road
  2495.     Indianapolis, IN 46219
  2496.     1-800-432-6600, operator 77.
  2497.  
  2498. The price is about 37 U.S. dollars for each volume or $52 for the pair.
  2499. Major credit cards are accepted for telephone orders:  mail orders
  2500. should include a check or money order.  Previous SVID owners should
  2501. have received a discount coupon to upgrade to Release 2 for only $37.
  2502.  
  2503. Volume 1 is essentially equivalent to the whole previous SVID;
  2504. Volume 2 is mostly commands and a few add-ons (e.g. curses).
  2505. A third volume is expected in the last quarter of 1986 to cover new
  2506. items in System V Release 3, such as streams and networking.  There may
  2507. be an upgrade discount similar to the previous one.  A draft copy is
  2508. reputed to be available now to source licensees.
  2509.  
  2510.  
  2511. The X/OPEN PORTABILITY GUIDE (The Green Book)
  2512. is another reference frequently used by IEEE 1003.
  2513.  
  2514. X/OPEN is "A Group of European Computer Manufacturers" who have produced
  2515. a document intended to promote the writing of portable facilities.
  2516. (They now have member computer manufacturers from outside Europe.)
  2517. Their flyer remarks (in five languages), "Now we all speak the same
  2518. language in Europe."
  2519.  
  2520. The book is published by
  2521.  
  2522.     Elsevier Science Publishers
  2523.     Book Order Department
  2524.     PO Box 211
  2525.     1000 AE Amsterdam
  2526.     The Netherlands
  2527.  
  2528. or, for those in the U.S.A. or Canada:
  2529.  
  2530.     Elsevier Science Publishers Co Inc.
  2531.     PO Box 1663
  2532.     Grand Central Station
  2533.     New York, NY 10163
  2534.  
  2535. The price is Dfl 275,00 or USD 75.00.  According to the order form,
  2536. "This price includes the costs of one update which will be mailed
  2537. automatically upon publication."  They take a large number of credit
  2538. cards and other forms of payment.
  2539.  
  2540.  
  2541. Corrections and additions to this article are solicited.
  2542. Oh, yes:  "UNIX is a Registered Trademark of AT&T."
  2543. And POSIX is a trademark of IEEE.
  2544.  
  2545. Volume-Number: Volume 7, Number 32
  2546.  
  2547. From news  Mon Oct  6 18:38:15 1986
  2548. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2549. Newsgroups: mod.std.unix
  2550. Subject: Access to UNIX User Groups and Publications
  2551. Message-Id: <5935@ut-sally.UUCP>
  2552. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  2553. Date: 6 Oct 86 23:37:03 GMT
  2554. Draft-9: Access.User.Groups
  2555.  
  2556.  
  2557. This is the latest in a series of similar mod.std.unix articles.
  2558.  
  2559.  
  2560. Access information is given in this article for the following:
  2561. user groups:    USENIX, /usr/group, EUUG, AUUG
  2562. newsletters:    ;login:, CommUNIXations, EUUG, AUUGN
  2563. magazines:    UNIX REVIEW, UNIX/WORLD
  2564.  
  2565.  
  2566. USENIX is "The Professional and Technical UNIX(R) Association."
  2567.  
  2568.     USENIX Association
  2569.     P.O. Box 7
  2570.     El Cerrito, CA 94530
  2571.     415-528-8649
  2572.     {ucbvax,decvax}!usenix!office
  2573.  
  2574. USENIX sponsors two USENIX Conferences a year, featuring technical papers.
  2575. The next one is in Washington, D.C., 20-23 January 1987.
  2576. They publish ";login:  The USENIX Association Newsletter"
  2577. which is sent free of charge to all their members.
  2578.  
  2579.  
  2580. /usr/group is "the commercially oriented UNIX system users organization."
  2581.  
  2582.     /usr/group
  2583.     4655 Old Ironsides Drive, Suite 200
  2584.     Santa Clara, California 95054
  2585.     408-986-8840
  2586.  
  2587. They publish a newsletter called CommUNIXations.
  2588.  
  2589. The annual Uniforum Conferences are sponsored by /usr/group
  2590. and feature a large trade show.  The next one is in D.C.
  2591. at the same time as the next USENIX Conference.  USENIX
  2592. and /usr/group have held several concurrent conferences
  2593. in the past and will probably do so in the future.
  2594.  
  2595.  
  2596. Both USENIX and /usr/group also have tutorials at their
  2597. conferences and both sponsor other meeting activities
  2598. in addition to their regular conferences.
  2599.  
  2600.  
  2601. EUUG is the European UNIX systems Users Group.
  2602.  
  2603.     EUUG secretariat
  2604.     Owles Hall
  2605.     Buntingford
  2606.     Herts SG9 9PL
  2607.     England
  2608.     seismo!mcvax!euug
  2609.  
  2610. They have a newsletter and hold two conferences a year.
  2611.  
  2612.  
  2613. AUUG is the Australian UNIX systems users Group.
  2614.  
  2615.     AUUG
  2616.     P.O. Box 366
  2617.     Kensington
  2618.     N.S.W.    2033
  2619.     Australia
  2620.  
  2621.     seismo!munnari!auug
  2622.     auug@munnari.oz.au
  2623.  
  2624. Phone contact can occasionally be made at +61 3 344 5225
  2625.  
  2626. AUUG holds biennial conferences, usually of 2 days each:
  2627. the next one will probably be in late February 1986.
  2628. They publish a newsletter (AUUGN) at a frequency defined
  2629. to be every 2 months.
  2630.  
  2631.  
  2632. There are similar groups in other parts of the world, such as Japan and
  2633. Korea.  If such a group wishes to be included in later versions of this
  2634. access list, they should please send me information.
  2635.  
  2636.  
  2637. The two main general circulation magazines about the UNIX system are
  2638.  
  2639.     UNIX REVIEW            UNIX/WORLD
  2640.     Miller Freeman Publications Co.    Tech Valley Publishing
  2641.     500 Howard Street        444 Castro St.
  2642.     San Francisco, CA 94105        Mountain View, CA 94041
  2643.     415-397-1881            415-940-1500
  2644.  
  2645.  
  2646. Corrections and additions to this article are solicited.
  2647. Oh, yes:  "UNIX is a Registered Trademark of AT&T."
  2648.  
  2649. Volume-Number: Volume 7, Number 33
  2650.  
  2651. From news  Tue Oct  7 11:09:23 1986
  2652. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2653. Newsgroups: mod.std.unix
  2654. Subject: Re: Access to UNIX-Related Standards
  2655. Message-Id: <5939@ut-sally.UUCP>
  2656. References: <5934@ut-sally.UUCP>
  2657. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  2658. Date: 7 Oct 86 16:08:16 GMT
  2659. Draft-9: Access.Standards
  2660.  
  2661. [ Some updates on 1003 meetings from chairs of 1003.1 and 1003.2.
  2662. For those of you who don't like digests:  this is not a digest,
  2663. it is a compendium.  -mod ]
  2664.  
  2665. From: harvard!cybvax0!frog!jim (Jim Isaak, P1003.1 Chair)
  2666. Date: Tue, 7 Oct 86 09:25:06 edt
  2667.  
  2668. An update on meeting dates & locations
  2669.  
  2670. December  8-12    Atlantic City, NJ    Bally's Hotel & Casino
  2671.     (Same time/location as X3J11 C Standards Committee meeting)
  2672.     Host: Concurrent Computer Corporation (previously Perkin Elmer)
  2673.  
  2674. April    22-24    Toronto            Host: IBM (!)
  2675.         (Canadian UNIX Conference)
  2676.  
  2677. June    9-12    Phoenix (USENIX Conference)    No Host yet
  2678.  
  2679. Aug/Sept 31-4   East Coast Probably Washington DC area    No Host yet
  2680.  OR Sept 14-18    Boston (Same Time/loc as X3J11)
  2681. (Sept 7th is Labor day, and that week is ISO TC97 SC22 meeting in Wash DC)
  2682.  
  2683. From: pyramid!amdahl!hlj@sally.utexas.edu (Hal Jespersen, P1003.2 Chair)
  2684. Date: Tue, 7 Oct 86 07:25:57 PDT
  2685.  
  2686. [ This is an extract from a mail message.  There may be an article later. -mod ]
  2687.  
  2688. The 1003.2 (shell/tools) meeting is 8 December and may ooze over into the
  2689. small group meetings the morning of 12/9.
  2690.  
  2691. Volume-Number: Volume 7, Number 34
  2692.  
  2693. From news  Tue Oct  7 16:36:47 1986
  2694. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2695. Newsgroups: mod.std.unix
  2696. Subject: Vowel-insensitive UNIX Filenames
  2697. Message-Id: <5944@ut-sally.UUCP>
  2698. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  2699. Date: 7 Oct 86 21:36:07 GMT
  2700. Draft-9: 2.3.folding
  2701.  
  2702. From: hammond@lafite.bellcore.com (Rich A. Hammond)
  2703. Date: Tue, 7 Oct 86 08:13:22 edt
  2704.  
  2705. As long as we're proposing case-insensitive filenames, we should
  2706. fix the real user interface problem and have vowel-insensitive
  2707. filenames.  We've had many problems with users who typed
  2708. "move" to rename a file, or once they had learned mv, couldn't
  2709. understand why "ct" didn't cat.  And of course, they are forever
  2710. trying to chdir to /user.  Clearly, vowel-insensitive filenames
  2711. i.e. move == mv, usr == user, ld == load, name == nm, ...
  2712. would eliminate many of the complaints about UNIX's user interface.
  2713.  
  2714. Rich Hammond    Bell Communications Research    hammond@bellcore.com
  2715.  
  2716. [ Ok, this is different, but I seem to recall the issue of command
  2717. names being beat to death in other fora, perhaps including a CACM paper.
  2718. If someone can recall the details, please post.
  2719.  
  2720. Also, I assume this wasn't really meant as input to P1003 (actually
  2721. P1003.2, since it's a shell interface issue), because that group is
  2722. trying to standardize what's there, not invent new things.
  2723.  
  2724. For that matter, it couldn't have been a *gasp* joke, could it?
  2725. -mod ]
  2726.  
  2727. Volume-Number: Volume 7, Number 35
  2728.  
  2729. From news  Wed Oct  8 19:02:28 1986
  2730. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2731. Newsgroups: mod.std.unix
  2732. Subject: Re:  Case sensitive file names
  2733. Message-Id: <5958@ut-sally.UUCP>
  2734. References: <5918@ut-sally.UUCP>
  2735. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  2736. Date: 9 Oct 86 00:02:14 GMT
  2737. Draft-9: 2.3.folding
  2738.  
  2739. From: caip!uw-beaver!geops!uw-atm!james@seismo.css.gov (James M Synge)
  2740. Date: Wed, 8 Oct 86 09:17:04 pdt
  2741.  
  2742. Just a note on usefulness:  I've used two machines (Xerox XDE and Amiga) where
  2743. the case of a filename is preserved, but not used for comparisons.  This means
  2744. I can create a file called READ_ME, and be sure that it stands out (to some
  2745. extent) in a directory listing where most filenames are lower case or mixed
  2746. case.  This feature is a nice convenience.  Not essential, but nice.
  2747.  
  2748. I find it irritating to find filenames like makefile and Makefile in the
  2749. same directory, because I must then try to remember the searching scheme used
  2750. by make.  There are similar problems with mail and Mail.
  2751.  
  2752. None of this is to say it SHOULD be done one way or the other.  I simply want
  2753. it kept in mind that people must use these systems, and they have preferences
  2754. based on such things as levels of irritability and ease of use; not because
  2755. something is "right".
  2756. ---
  2757. ---------------------------------------------------------------------------
  2758. James M Synge, Department of Atmospheric Sciences, University of Washington
  2759. VOX: 1 206 543 0308 (Work)   1 206 455 2025 (Home)
  2760. UUCP: uw-beaver!geops!uw-atm!james
  2761. ARPA: geops!uw-atm!james@beaver.cs.washington.edu
  2762.  
  2763. Volume-Number: Volume 7, Number 36
  2764.  
  2765. From news  Wed Oct  8 19:08:17 1986
  2766. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2767. Newsgroups: mod.std.unix
  2768. Subject: Re: Case sensitive file names
  2769. Message-Id: <5959@ut-sally.UUCP>
  2770. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  2771. Date: 9 Oct 86 00:07:05 GMT
  2772. Draft-9: 2.3.folding
  2773.  
  2774. From: seismo!nbs-amrf!libes@sally.utexas.edu (Don Libes)
  2775. Date: Wed, 8 Oct 86 19:54:05 EDT
  2776.  
  2777. I write programs for both case-sensitive (CS) and case-insensitive
  2778. (CI) systems.  As an applications programmer, I prefer case-sensitivity.
  2779.  
  2780. Why?  Because my code on the CI system is full of calls to upper(),
  2781. lower(), isupper() and islower(), while the CS programs don't have
  2782. any of that.  On the CS system, case is important - it would be a
  2783. mistake to map it either way.
  2784.  
  2785. On the other hand, take the CI system.  If I have a user-supplied
  2786. filename, depending upon the system I may have to case-map it before
  2787. calling open.  But suppose I'm reading a directory and I want to
  2788. match the filename against the entries.  Now, I definitely have to
  2789. case-map it before doing a string comparison.  Unless you want to
  2790. supply me with a filecmp() which is just a case-map wrapped around
  2791. a strcmp().  Seems silly.
  2792.  
  2793. Now you may think, I'm getting annoyed over one little case-map,
  2794. but as MRC points out, OSs tend to go about this in a big way.  For
  2795. example, VMS has case-insensitive filenames, logical names, device
  2796. names, usernames, symbols, etc.  Everytime I deal with an object,
  2797. the first thing I have to do is start worrying about case.
  2798. Depending upon the utility, library, language, etc I'm working with
  2799. I then have to start thinking if their interfaces are
  2800. case-sensitive or not.  I find all of this quite annoying.
  2801.  
  2802. That is why, as an application programmer, I much prefer case-sensitivity.
  2803.  
  2804. Please don't tell me I am insensitive to users.  I am not about to
  2805. argue here whether or not users have the intelligence to hold down
  2806. the shift key at the appropriate times.
  2807.  
  2808. As far as m/Mail, m/Makefile goes, the problem is not that users
  2809. find them easily confused.  That should've been obvious to the
  2810. genius who reused the name.  If you want, I can easily choose
  2811. filenames that you will find confusing, even in the same case.
  2812.  
  2813. As far as emulator's go, I daily use Eunice, which faces this very
  2814. problem of handling case-sensitive file names in a case-insensitive
  2815. environment.  As far as case-mapping, their solution is very
  2816. elegant.  (No other claims about the elegance of Eunice are
  2817. proffered here.)  I.e.  UNIX programs see a case-sensitive
  2818. filesystem.  Further, they are also allowed arbitrary characters in
  2819. a filename, outside the legal VMS character set.)
  2820.  
  2821. Don Libes   {seismo,umcp-cs}!nbs-amrf!libes
  2822.  
  2823. Volume-Number: Volume 7, Number 37
  2824.  
  2825. From news  Wed Oct  8 19:27:03 1986
  2826. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2827. Newsgroups: mod.std.unix
  2828. Subject: Re:  Case sensitive file names
  2829. Message-Id: <5960@ut-sally.UUCP>
  2830. References: <5913@ut-sally.UUCP>
  2831. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  2832. Date: 9 Oct 86 00:26:29 GMT
  2833. Draft-9: 2.3.folding
  2834.  
  2835. From: seismo!mnetor!spectrix!clewis (Chris Lewis)
  2836. Date: Wed Oct  8 11:00:33 1986
  2837. Organization: Spectrix Microsystems Inc., Toronto, Ontario, Canada
  2838.  
  2839. Mod,
  2840.  
  2841. I'll leave this to your judgement whether to post this or not...
  2842. [ Judgement?  Who, me?  -mod ]
  2843.  
  2844. I'd rather everybody be very careful about making global statements like
  2845. "all other systems are case insensitive".  Many of the examples given
  2846. so far, eg: CP/M, VM/CMS *are* case sensitive.   When dealing with these 
  2847. O/S's right down at the "system call level" (if you could call it that), 
  2848. they *do* respect case.  The upper-casing is done in the command 
  2849. interpreters (CCP, EXEC1, EXEC2, optionally in REX), and in the utilities.  
  2850. [Most of the time it's damn difficult to get lower case into a VM/CMS 
  2851. system in any way].  [That comment was not by the moderator -mod]
  2852. However, down deep (eg: CP/M BDOS, VM/CMS FSOPEN/FSREAD) 
  2853. these systems will create files with mixed case and respect case in file 
  2854. name searches.  One of my CP/M floppies still has a lower case named 
  2855. file on it because Microsoft basic isn't smart enough to upper case 
  2856. file names, and I haven't gotten around to writing the assembler code 
  2857. to delete it.  One of the favorite CCP hacks is to zap the upper-case
  2858. command line code.
  2859.  
  2860. Yes, there are some systems that are truly case insensitive - Honeywell
  2861. GCOS comes to mind - it keeps its file names in BCD!
  2862.  
  2863. Further, I wonder whether any sort of conformance would help - every
  2864. system differs so much from each other, that case [in]sensitivity is
  2865. a very minor part.  Eg: 18 character 3 blank separated part file names 
  2866. in CMS (gack ptui!) etc., etc., etc....  When writing an emulator you'll
  2867. almost always have to write your own filesystem handler anyways, with
  2868. specific escapes for "native mode" files.
  2869.  
  2870. Mind you, it would be nice to have file transfer utilities (eg: tar)
  2871. warn you that the file names you are putting on your tape may not be
  2872. unique/representable on a non-UNIX target.  Eg: warn when two files
  2873. on the tape differ only in case and when two files have the same name
  2874. within the first 8 chars.
  2875.  
  2876. Chris Lewis
  2877. UUCP: {utzoo|utcs|yetti|genat|seismo}!mnetor!spectrix!clewis
  2878. Phone: (416)-474-1955
  2879.  
  2880. Volume-Number: Volume 7, Number 38
  2881.  
  2882. From news  Wed Oct  8 19:29:30 1986
  2883. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2884. Newsgroups: mod.std.unix
  2885. Subject: Case sensitive file names
  2886. Message-Id: <5961@ut-sally.UUCP>
  2887. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  2888. Date: 9 Oct 86 00:28:55 GMT
  2889. Draft-9: 2.3.folding
  2890.  
  2891. From: seismo!hpscda!hpdsd!hpda!hpisoa1!davel (Dave Lennert)
  2892. Date: Mon, 6 Oct 86 15:24:20 pdt
  2893.  
  2894. Perhaps a good approach might be to require POSIX applications to specify
  2895. filenames to the system as all lowercase in order to be truly portable.
  2896. As long as the filenames don't contain *mixed* case then case shifting to
  2897. all lower or all uppper (or leaving case insensitive) on the part of the
  2898. system won't result in name collisions.
  2899.  
  2900. A variant on this is to require all hardcoded filenames in applications
  2901. to be lowercase, but filenames supplied by a user could be passed to the
  2902. system unshifted by the application.  The user should know the case
  2903. limitations of the underlying system.
  2904.  
  2905. However, my preference is to have the POSIX interface support cases
  2906. sensitive filenames.  I agree with others that this will not be hard
  2907. to implement given some of the other things that will have to be
  2908. provided.
  2909.  
  2910. Volume-Number: Volume 7, Number 39
  2911.  
  2912. From news  Thu Oct  9 11:25:43 1986
  2913. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2914. Newsgroups: mod.std.unix
  2915. Subject: Re: job control
  2916. Message-Id: <5965@ut-sally.UUCP>
  2917. References: <5932@ut-sally.UUCP>
  2918. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  2919. Keywords: POSIX Appendix C
  2920. Date: 9 Oct 86 16:25:20 GMT
  2921. Draft-9: job.control
  2922.  
  2923. From: cbosgd!cbosgd.ATT.COM!mark@seismo.css.gov (Mark Horton)
  2924. Date: Thu, 9 Oct 86 01:30:59 edt
  2925. Organization: AT&T Bell Laboratories, Columbus
  2926.  
  2927. I've made significant use of four different sorts of systems
  2928. for multiplexing, so hopefully I can provide some feedback on
  2929. their relative merits, from a user's point of view.
  2930.  
  2931. (1) True windows, such as a 5620, Sun, UNIX PC, etc.  Each window
  2932. acts like a terminal.  This is unquestionably the best, but it
  2933. requires special hardware, and is an area that needs to be
  2934. standardized.
  2935.  
  2936. (2) A dumb-terminal window manager as Henry describes.  I've written
  2937. such a window manager; on a system that has ptys, select, and a smart
  2938. curses package, it's easy (my code is only 700 lines.)  It runs on both
  2939. 4.2BSD and System V, provided that all three ingredients are present.
  2940. This package runs about as well as you could hope for, (the buffering
  2941. and ioctl problems Henry mentions are solved using ptys, and it doesn't
  2942. eat up much CPU time, and all my windows are the full 80 cols wide)
  2943. and I have a 60 line terminal so there's really room for two or three
  2944. windows.  I use this rarely, because I dont' like the "mushy" feeling I
  2945. get from the screen management layer.
  2946.  
  2947. (3) Berkeley job control.  Henry may think this is ugly, but from a user's
  2948. point of view, if you can't have a real bitmapped display, this is the
  2949. next best thing.  I strongly prefer it to (2).
  2950.  
  2951. (4) System V shell layers.  I don't use this very often, it's just not
  2952. very powerful and awfully inconvenient.  It can't pop you out from any
  2953. program that runs in raw mode, such as cu or rlogin, because there's
  2954. no way for a program to suspend itself.  rlogin really NEEDS to suspend
  2955. output in a non-window environment, otherwise your screen will be a mess.
  2956.  
  2957. I should mention that my major use of multiplexing is to switch between
  2958. rlogins to various other systems on our LAN, and a few local applications
  2959. such as vi, mail, and news.  For situations where I really need two windows
  2960. (e.g. developing a network client and server) I strongly prefer to do it
  2961. on a true window system.  It is possible that others, running other mixes
  2962. of applications, will feel differently.
  2963.  
  2964. My recommendation is, however, similar to Henry's, for the standard.
  2965. I don't think the dumb terminal window manager is the answer, but I
  2966. think it's clear we don't have the best answer yet, in general.  I do
  2967. think that certain things should be standardized:
  2968.  
  2969. (a) termio, or at least the subset that's commonly used.  You could always
  2970.     put in a few high level subroutines like the cbreak/nocbreak echo/noecho
  2971.     erasechar/killchar/baudrate routines in curses, just to provide a
  2972.     portable interface.
  2973. (b) an ioctl to find out the current window size, in chars and pixels.
  2974. (c) a pty-like mechanism.  (Streams may be a viable candidate here, or
  2975.     Illinois/Berkeley ptys might be expedient.)
  2976. (d) a software-multiplexing mechanism, like select.
  2977.  
  2978.     Mark
  2979.  
  2980. Volume-Number: Volume 7, Number 40
  2981.  
  2982. From news  Thu Oct  9 11:33:34 1986
  2983. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  2984. Newsgroups: mod.std.unix
  2985. Subject: the scope of POSIX
  2986. Message-Id: <5966@ut-sally.UUCP>
  2987. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  2988. Date: 9 Oct 86 16:33:13 GMT
  2989. Draft-9: 1.0 2.3.folding
  2990.  
  2991. From: cbosgd!cbosgd.ATT.COM!mark@seismo.css.gov (Mark Horton)
  2992. Date: Thu, 9 Oct 86 01:46:35 edt
  2993.  
  2994. The spirited debate about case sensitive file names raises
  2995. an important issue: what is the scope of POSIX?  I think the
  2996. answer to the case issue may depend on the answer to the
  2997. scope issue.  It's pretty clear that whether names are case
  2998. sensitive is a religious issue, with many people on each side.
  2999. While I hope somebody does a human factors study, I won't get
  3000. into the technical merits of the different sides here.
  3001.  
  3002. I used to think that P1003 was just to be a standard that all
  3003. the UNIX systems would conform to, e.g. a way to smash System
  3004. V and 4.2BSD and Xenix into enough similarity so that it would
  3005. be possible to write a program that will run on all of them.
  3006. If this is the real intent of POSIX, that it's really to be the
  3007. standard for UNIX, and the name is just a trademark game, then
  3008. it's pretty clear we want to keep filenames as they currently
  3009. are: case sensitive.
  3010.  
  3011. But I'm not sure POSIX has such a narrow scope.  I hear mention
  3012. of hosted implementations, but no cries of "foul" about the
  3013. case-sensitive ruling from the vendors of those hosted implementations,
  3014. so either they don't consider it a problem, or I'm missing something.
  3015.  
  3016. I personally think POSIX could easily have a MUCH wider scope.
  3017. Let's look into the crystal ball.  In a couple of years, IEEE
  3018. or FIPS or ANSI or ISO or somebody publishes a final "Standard
  3019. for Portable Operating System Interfaces."  Now, say I'm a vendor
  3020. of some other operating system (say MS DOS, or VMS, or OS9, or QNX,
  3021. or AOS, or VM/CMS, or pick your favorite proprietary operating system.)
  3022. I see this standard, and think "If we enhanced our OS to support all
  3023. this POSIX stuff, we'd be able to market our OS as POSIX compatible,
  3024. and there's be a big software base we'd automatically support, and
  3025. we'd be eligible for all those government contracts."  I'd sure think
  3026. seriously about making the necessary enhancements to my standard system
  3027. (not an emulation built on top) to make it comply.
  3028.  
  3029. Now, for the most part, adding UNIX/POSIX functionality would amount
  3030. to adding some enhancements to the system.  (There will probably be
  3031. some major surgery in areas like the filesystem, but we're still talking
  3032. about an enhanced result.)  However, if I were such a vendor, I'd be
  3033. pretty reluctant to take my case insensitive filesystem and make it
  3034. case sensitive.  (But I'm not such a vendor; it would be interesting
  3035. to hear what the real vendors have to say.)  After all, maybe nobody
  3036. uses UNIX with their caps lock key on, or on an upper case terminal,
  3037. but MY system has lots of users like that, and I don't want to break
  3038. the ability for the caps lock users to communicate with the lower case
  3039. users.
  3040.  
  3041. I think it would be appropriate to ask what the scope of POSIX should
  3042. be.  Maybe some vendors should be queried about whether they might be
  3043. interested in someday conforming their systems to POSIX, and how they
  3044. feel about the case properties of their system.  They're the ones who
  3045. are really affected by all this.  Me, I'm used to doing everything in
  3046. lower case, as are most of you reading this.
  3047.  
  3048.     Mark
  3049.  
  3050. Volume-Number: Volume 7, Number 41
  3051.  
  3052. From news  Thu Oct  9 11:39:29 1986
  3053. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3054. Newsgroups: mod.std.unix
  3055. Subject: Re: Administrativia
  3056. Message-Id: <5967@ut-sally.UUCP>
  3057. References: <5930@ut-sally.UUCP>
  3058. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3059. Date: 9 Oct 86 16:39:16 GMT
  3060. Draft-9: mod.std.unix
  3061.  
  3062. >From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3063. >Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  3064. >Date: 6 Oct 86 23:00:31 GMT
  3065.  
  3066. >It appears the newsgroup name change from mod.std.unix to comp.std.unix
  3067. >is imminent.  Details as they become available.
  3068.  
  3069. >Volume-Number: Volume 7, Number 28
  3070.  
  3071. I've been informed that mod.std.unix will not change names at least until
  3072. the end of 1986.
  3073.  
  3074. Volume-Number: Volume 7, Number 42
  3075.  
  3076. From news  Thu Oct  9 11:46:41 1986
  3077. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3078. Newsgroups: mod.std.unix
  3079. Subject: Re: Access to UNIX-Related Standards
  3080. Message-Id: <5968@ut-sally.UUCP>
  3081. References: <5921@ut-sally.UUCP>
  3082. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3083. Date: 9 Oct 86 16:46:20 GMT
  3084. Draft-9: Access.Standards
  3085.  
  3086. [ This will get incorporated into the next posting of the article
  3087. Access to UNIX-Related Standards.  -mod ]
  3088.  
  3089. From: pyramid!amdahl!hlj@sally.utexas.edu (Hal Jespersen, co-chair, P1003.2)
  3090. Date: Wed, 8 Oct 86 14:27:41 PDT
  3091.  
  3092. The IEEE P1003.2 "Shell and Utilities" Working Group is developing a
  3093. proposed standard to complement the 1003.1 POSIX standard.  It will
  3094. consist of
  3095.  
  3096.     a shell command language (currently planned to be based on the
  3097.     Bourne Shell),
  3098.  
  3099.     groups of utility programs, or commands,
  3100.  
  3101.     programmatic interfaces to the shell (system(), popen()) and
  3102.     related facilities (regular expressions, file name expansion,
  3103.     etc.)
  3104.  
  3105.     defined environments (variables, file hierarchies, etc) that
  3106.     applications may rely upon
  3107.  
  3108. which will allow application programs to be developed out of existing
  3109. pieces, in the UNIX tradition.  The scope of the standard emphasizes
  3110. commands and features that are more typically used by shell scripts or
  3111. C language programs than those that are oriented to the terminal user
  3112. with windows, mice, visual shells, and so forth.
  3113.  
  3114. The group is currently seeking proposals for groupings of commands that
  3115. may be offered by implementors.  As groups are identified, command
  3116. descriptions will be solicited.  There is no requirement that the commands
  3117. be in System V or BSD today, but they should realistically be commands 
  3118. that are commonly found in most existing implementations.
  3119.  
  3120. Meetings are normally held in conjunction with the 1003.1 group and
  3121. have a large membership overlap.  The next meeting is 12/8/86, and
  3122. possibly the morning of the 9th, in Atlantic City.  Future meetings
  3123. will generally be held on the day or two preceding 1003.1.
  3124.  
  3125. The 1003.2 mailing list is the same as 1003.1's.  Contact Jim Isaak to
  3126. be put on the mailing list.
  3127.  
  3128. [ That address is:
  3129.  
  3130.     James Isaak
  3131.     Chairperson, IEEE/CS P1003
  3132.     Charles River Data Systems
  3133.     983 Concord St.
  3134.     Framingham, MA 01701
  3135.     decvax!frog!jim
  3136.  
  3137. -mod ]
  3138.  
  3139.                 Hal Jespersen
  3140.                 (408) 746-8288
  3141.                 ...{ihnp4|hplabs|seismo|decwrl}!amdahl!hlj
  3142.                 Amdahl Corporation
  3143.                 Mailstop 316
  3144.                 1250 East Arques Avenue
  3145.                 Sunnyvale, CA 94088-3470
  3146.  
  3147. Volume-Number: Volume 7, Number 43
  3148.  
  3149. From news  Thu Oct  9 16:53:25 1986
  3150. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3151. Newsgroups: mod.std.unix
  3152. Subject: Re: Case sensitive file names
  3153. Message-Id: <5971@ut-sally.UUCP>
  3154. References: <5860@ut-sally.UUCP>
  3155. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3156. Date: 9 Oct 86 21:53:08 GMT
  3157. Draft-9: 2.3.folding
  3158.  
  3159. From: seismo!philabs!phri!cooper!cooper!chris (Chris Lent)
  3160. Date: Tue, 7 Oct 86 19:26:42 edt
  3161.  
  3162. Just wondering,
  3163.     Why not set up a few functions to determine how the heck
  3164. each operating system handles filenames?
  3165.  
  3166.     For case sensitivity how about something like:
  3167.         isfsense() 
  3168.     which could be a macro to a constant or a function.
  3169.  
  3170.     Or better how about:
  3171.         isflegal(fname)
  3172.         char *fname;
  3173.     which would tell you if the operating system approves of your file
  3174.     name? Of course this could be done through existing functions
  3175. by opening the file, but this way COULD be implemented to reduce
  3176. file access overhead.
  3177.  
  3178.     But I think a good solution would be to follow FORTRAN-77's
  3179. example with the inquire statement which can get back the fully expanded
  3180. filename of an already open unit-number (file descriptor) or a
  3181. closed file.  I've found all F-77's I've tried to give back the
  3182. full pathnames on files.
  3183.  
  3184.     But I think that a minimum allowable character set for
  3185. filenames might be sufficient.  That is 'A-Z0-9.' would be fine
  3186. for most users I've run into.
  3187.  
  3188. Well that's about it
  3189. Chris Lent
  3190. ihnp4!philabs!phri!cooper!chris
  3191.  
  3192. Volume-Number: Volume 7, Number 44
  3193.  
  3194. From news  Fri Oct 10 15:09:43 1986
  3195. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3196. Newsgroups: mod.std.unix
  3197. Subject: Re: job control
  3198. Message-Id: <5978@ut-sally.UUCP>
  3199. References: <5932@ut-sally.UUCP>
  3200. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3201. Keywords: POSIX Appendix C
  3202. Date: 10 Oct 86 20:09:06 GMT
  3203. Draft-9: job.control
  3204.  
  3205. From: nike!oliveb!felix!peregrine!mike@sally.utexas.edu (Mike Wexler)
  3206. Date: Thu, 9 Oct 86 10:21:55 PDT
  3207. Organization: Peregrine Systems, Inc, Irvine Ca
  3208.  
  3209. >From: pyramid!utzoo!henry@sally.utexas.edu  (Henry Spencer)
  3210. >Date: Sat, 4 Oct 86 03:03:30 PDT
  3211. >
  3212. >     Implementing supervision of multiplexed interaction in user processes  is
  3213. >difficult  in  many  existing Unix implementations, minimal implementations of
  3214. >the existing P1003 standard among them.  The basic problem is that normal user
  3215. >processes  are  definitely aware that their output is going to a terminal, the
  3216. >device-independence of Unix  i/o  notwithstanding.   Screen-oriented  programs
  3217. >doing *ioctl*s are the biggest problem.  A less obvious glitch is that *stdio*
  3218. >adjusts its buffering strategy depending on whether output is to a terminal or
  3219. >not;  this  is  a major nuisance with some existing window systems.  Something
  3220. >like the `pseudo-tty' concept would be very useful:   an  entity  which  looks
  3221. >like  a  terminal from one side, but whose behavior is under user-process con-
  3222. >trol from the other side.  Some existing systems do implement such things, but
  3223. >the lack of standardization largely prevents use of them in portable programs.
  3224.  
  3225. One idea would be to put Ritchie's streams in the standard or an extension
  3226. of the standard so that there is a "clean" way of writing user level window
  3227. managers.  Given this there would probably be many window managers implemented
  3228. and likes shells you wouldn't need a single standard one, but could provide
  3229. several and allow users to write their own.
  3230.  
  3231. [ Does anyone from the /usr/group networks or windowing systems groups
  3232. have any comments on this?  -mod ]
  3233.  
  3234. Volume-Number: Volume 7, Number 45
  3235.  
  3236. From news  Fri Oct 10 15:18:20 1986
  3237. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3238. Newsgroups: mod.std.unix
  3239. Subject: Re: job control
  3240. Message-Id: <5979@ut-sally.UUCP>
  3241. References: <5932@ut-sally.UUCP> <5965@ut-sally.UUCP>
  3242. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3243. Keywords: POSIX Appendix C
  3244. Summary: consider the virtual console paradigm as well
  3245. Date: 10 Oct 86 20:18:00 GMT
  3246. Draft-9: job.control
  3247.  
  3248. From: campbell%maynard.UUCP@harvisr.harvard.edu (Larry Campbell)
  3249. Date: Fri, 10 Oct 86 00:52:48 EDT
  3250. Organization: The Boston Software Works, Inc.
  3251.  
  3252. There's another flavor of terminal I/O multiplexing that Mark Horton
  3253. didn't mention.  It's widely available today; it requires no changes
  3254. to user mode code (in fact, its presence is not detectable by user
  3255. mode code); it does not require bit mapped or graphics terminals; and
  3256. I've found it to be more useful and pleasant than I would have guessed.
  3257.  
  3258. "It" is the "virtual console" feature found in most PC-based UNIX
  3259. implementations.  This does rely on memory-mapped video, but character-
  3260. mapped terminals work as well as bit-mapped ones.  Typically, four to
  3261. ten function keys are used to select four to ten virtual consoles.
  3262. Each virtual console occupies the entire physical screen;  you can
  3263. only see one at a time.  Keyboard input goes to the current (visible)
  3264. virtual console.  Since the video is memory mapped, switching is
  3265. instantaneous.
  3266.  
  3267. A process trying to write to a non-current virtual console will (fill
  3268. up some clists and then) block.  A process trying to read the keyboard
  3269. will block until the user switches to its console and types something.
  3270.  
  3271. This is all completely invisible to user programs;  they think they're
  3272. dealing with a perfectly ordinary 24x80 terminal.  No SIGTSTP, no window
  3273. size ioctls, etc.
  3274.  
  3275. I've used several "true" windowing systems before (Xerox Star, Apple
  3276. Macintosh, Microsoft Windows, Symbolics 3600) and I find I like the
  3277. virtual console paradigm far more than I would have anticipated.  It's
  3278. simple and uncluttered.
  3279.  
  3280. I'm not suggesting that virtual consoles become part of the standard;
  3281. just pointing out a useful alternative design.
  3282. -- 
  3283. Larry Campbell            MCI: LCAMPBELL   The Boston Software Works, Inc.
  3284. ARPA: campbell%maynard.uucp@harvard.ARPA   120 Fulton Street, Boston MA 02109
  3285. UUCP: {alliant,wjh12}!maynard!campbell     (617) 367-6846
  3286.  
  3287. Volume-Number: Volume 7, Number 46
  3288.  
  3289. From news  Fri Oct 10 15:22:56 1986
  3290. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3291. Newsgroups: mod.std.unix
  3292. Subject: IEEE standards
  3293. Message-Id: <5980@ut-sally.UUCP>
  3294. References: <5935@ut-sally.UUCP>
  3295. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3296. Date: 10 Oct 86 20:22:06 GMT
  3297. Draft-9: IEEE.standards
  3298.  
  3299. From: pyramid!nsc!hplabs!hpfcdc!donn
  3300. Cc: frog!jim@sally.utexas.edu
  3301. Date: Fri, 10 Oct 86 08:52:40 pdt
  3302.  
  3303. For posting:
  3304.  
  3305. The most recent copy of the IEEE Newspaper "The Institute" has several
  3306. articles on the IEEE standards process.  (Not particularly related to
  3307. P1003.)  This is effectively "must" reading, as it explains several things
  3308. that need to be understood by the standards-makers (us), and also points
  3309. to some further required reading.
  3310.  
  3311. "The Institute" is distributed to (US domestic??) IEEE members.
  3312.  
  3313. Donn
  3314.  
  3315. Volume-Number: Volume 7, Number 47
  3316.  
  3317. From news  Sat Oct 11 01:24:16 1986
  3318. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3319. Newsgroups: mod.std.unix
  3320. Subject: multiplexing vs windows
  3321. Message-Id: <5986@ut-sally.UUCP>
  3322. References: <5932@ut-sally.UUCP>
  3323. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3324. Date: 11 Oct 86 06:23:59 GMT
  3325. Draft-9: windows
  3326.  
  3327. From: pyramid!utzoo!henry
  3328. Date: Fri, 10 Oct 86 20:38:59 CDT
  3329.  
  3330. The following was sent to me in private mail, with permission to publish.
  3331. He's got an interesting point.
  3332.  
  3333.                 Henry Spencer @ U of Toronto Zoology
  3334.                 {allegra,ihnp4,decvax,pyramid}!utzoo!henry
  3335. -----
  3336. >From: ihnp4!mecc!sewilco
  3337. Subject: Re: Window-based multiplexing
  3338.  
  3339. My opinion is that the multiplexing characteristic of a line should be
  3340. separated from the windowing.  The multiplexing should also not be
  3341. terminal-oriented so it can be used as a multiplexed intersystem line.
  3342.  
  3343. I've heard several people echo my wish to be able to have file transfer
  3344. multiplexed with a terminal session, or have high-priority transfers
  3345. be interleaved with a long low-priority transfer.  And with computer
  3346. ports always in short supply it would be nice to use a $600 multiplexer
  3347. to add a few more terminals and printers (several WY-50 on a table is a
  3348. poor man's windowing system).
  3349.  
  3350. Scot E. Wilcoxon    Minn Ed Comp Corp  {quest,dicome,meccts}!mecc!sewilco
  3351. 45 03 N  93 08 W (612)481-3507                  ihnp4!meccts!mecc!sewilco
  3352. -----
  3353.  
  3354. Volume-Number: Volume 7, Number 48
  3355.  
  3356. From news  Sat Oct 11 20:23:47 1986
  3357. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3358. Newsgroups: mod.std.unix
  3359. Subject: Re: job control
  3360. Message-Id: <5989@ut-sally.UUCP>
  3361. References: <5978@ut-sally.UUCP> <5932@ut-sally.UUCP>
  3362. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3363. Date: 12 Oct 86 01:23:34 GMT
  3364. Draft-9: job.control
  3365.  
  3366. From: guy@sun.com (Guy Harris)
  3367. Date: Sat, 11 Oct 86 02:29:27 PDT
  3368.  
  3369. > > Something like the `pseudo-tty' concept would be very useful:   an  entity
  3370. > > which  looks like  a  terminal from one side, but whose behavior is under
  3371. > > user-process control from the other side.  Some existing systems do
  3372. > > implement such things, but the lack of standardization largely prevents
  3373. > > use of them in portable programs.
  3374.  
  3375. > One idea would be to put Ritchie's streams in the standard or an extension
  3376. > of the standard so that there is a "clean" way of writing user level window
  3377. > managers.  Given this there would probably be many window managers
  3378. > implemented and likes shells you wouldn't need a single standard one, but
  3379. > could provide several and allow users to write their own.
  3380.  
  3381. Streams don't in and of themselves provide a "clean" way of writing
  3382. user-level window managers.  As Henry pointed out, a pseudo-tty is what you
  3383. want here; you have a window manager that simulates a terminal (using a real
  3384. terminal or some other sort of display) and provides a tty-like interface to
  3385. clients using a pseudo-tty.
  3386.  
  3387. Streams might permit a fairly clean implementation of a pseudo-tty, but they
  3388. don't provide the only clean way of writing user-level window managers; any
  3389. sufficiently powerful pseudo-tty mechanism will do that.  Streams might
  3390. provide the cleanest way of providing a sufficiently powerful pseudo-tty
  3391. mechanism.
  3392.  
  3393. Volume-Number: Volume 7, Number 49
  3394.  
  3395. From news  Sat Oct 11 20:27:20 1986
  3396. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3397. Newsgroups: mod.std.unix
  3398. Subject: Re: job control
  3399. Message-Id: <5990@ut-sally.UUCP>
  3400. References: <5986@ut-sally.UUCP> <5932@ut-sally.UUCP>
  3401. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3402. Date: 12 Oct 86 01:27:08 GMT
  3403. Draft-9: job.control
  3404.  
  3405. From: guy@sun.com (Guy Harris)
  3406. Date: Sat, 11 Oct 86 02:49:48 PDT
  3407.  
  3408. > "It" is the "virtual console" feature found in most PC-based UNIX
  3409. > implementations.  This does rely on memory-mapped video, but character-
  3410. > mapped terminals work as well as bit-mapped ones.
  3411.  
  3412. No, you don't need a bit-mapped display to do windowing, but I presume most
  3413. people already knew that.  Convergent Technologies, for instance, has a
  3414. windowing scheme on their PT terminals.  It's not even a "virtual console"
  3415. scheme; you can see parts of several windows, if you want.
  3416.  
  3417. This sort of windowing mechanism doesn't even necessarily require a
  3418. memory-mapped screen; it merely needs a way to redraw a window when it moves
  3419. to the front.  Mark Horton's earlier message describes a window manager for
  3420. dumb terminals; it even permits more than one window on the screen.
  3421.  
  3422. > A process trying to write to a non-current virtual console will (fill
  3423. > up some clists and then) block.  A process trying to read the keyboard
  3424. > will block until the user switches to its console and types something.
  3425.  
  3426. > This is all completely invisible to user programs;  they think they're
  3427. > dealing with a perfectly ordinary 24x80 terminal.  No SIGTSTP, no window
  3428. > size ioctls, etc.
  3429.  
  3430. There's nothing particularly special about all this; other window systems do
  3431. the same thing.  Virtual consoles are just a special case of a window system
  3432. where all windows cover the full screen.
  3433.  
  3434. As for the window size "ioctl", consider this: any program that thinks it's
  3435. always dealing with a "perfectly ordinary 24x80 terminal" is going to be
  3436. quite surprised when run on an Ann Arbor Ambassador with 60 lines.  Programs
  3437. should not make assumptions like that.
  3438.  
  3439. Given that the program will then have to query "termcap" or "terminfo" to
  3440. find the size of the screen, it's not much trouble to have the routine that
  3441. reads in the "termcap" or "terminfo" entry check what the window size
  3442. "ioctl" says and only use the value in the entry if the window size is 0x0
  3443. (i.e., not specified).  That's what Sun's "termcap" code does.
  3444.  
  3445. Volume-Number: Volume 7, Number 50
  3446.  
  3447. From news  Sat Oct 11 20:33:14 1986
  3448. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3449. Newsgroups: mod.std.unix
  3450. Subject: Re: job control
  3451. Message-Id: <5991@ut-sally.UUCP>
  3452. References: <5965@ut-sally.UUCP> <5932@ut-sally.UUCP>
  3453. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3454. Date: 12 Oct 86 01:32:53 GMT
  3455. Draft-9: job.control
  3456.  
  3457. From: guy@sun.com (Guy Harris)
  3458. Date: Sat, 11 Oct 86 03:05:09 PDT
  3459.  
  3460. > (1) True windows, such as a 5620, Sun, UNIX PC, etc.  Each window
  3461. > acts like a terminal.  This is unquestionably the best, but it
  3462. > requires special hardware, and is an area that needs to be
  3463. > standardized.
  3464.  
  3465. At some point, perhaps.  It's unclear whether now is the time to do so.  I
  3466. don't think window systems have been around long enough that people can say
  3467. "this is how to do a window system".  I don't think window systems have
  3468. settled down enough to start standardizing yet.  (How many people would have
  3469. thought of using PostScript as a rendering language for a window system, and
  3470. extending it to handle input events as well and act as an extension
  3471. language, before James Gosling first talked about his work?  Would people
  3472. have missed that entirely when developing a standard?)
  3473.  
  3474. Also, what would the standard specify?  A C-language binding to routines to
  3475. manipulate the screen?  A set of low-level operations to render images
  3476. within a window, a high-level user interface toolkit, something in between,
  3477. all of the above, or none of the above?
  3478.  
  3479. > (3) Berkeley job control.  Henry may think this is ugly, but from a user's
  3480. > point of view, if you can't have a real bitmapped display, this is the
  3481. > next best thing.  I strongly prefer it to (2).
  3482.  
  3483. For what it's worth, I will point out that even though I have access to (1),
  3484. I still use (3).  I haven't analyzed my use of it enough to really say why.
  3485. Some of it may be that it takes a while to pop up a new shell window in my
  3486. environment (time to start the window process that provides the simulated
  3487. terminal and time to start up the Korn shell).  Some of it may be that the
  3488. EMACS key bindings I have let me suspend EMACS but not easily fork off a new
  3489. shell.  Some of it may be that it is occasionally convenient to move a job
  3490. into the background when you discover it'll take a while to complete, or
  3491. move a backgrounded job into the foreground to abort it.
  3492.  
  3493. > I do think that certain things should be standardized:
  3494.  
  3495. > (a) termio, or at least the subset that's commonly used.
  3496.  
  3497. The current proposal before 1003.1 does this; it fixes some botches in
  3498. "termio" as it exists (MIN and TIME are not overloaded with EOF and EOL, for
  3499. instance) and restores a couple of capabilities deleted when the System III
  3500. terminal driver first appeared.
  3501.  
  3502. > (b) an ioctl to find out the current window size, in chars and pixels.
  3503.  
  3504. The current proposal has this, but does not give the window size in pixels.
  3505. The "termio" interface is really not a good portable interface for doing
  3506. graphics, since most terminals can't do graphics.  As such, it's not clear
  3507. why the window size in pixels should be provided by this interface.  A
  3508. program that really cares how big the window is in pixels should probably
  3509. use the local window system primitives for this, since it has to use the
  3510. window system's rendering primitives to draw things anyway.
  3511.  
  3512. Volume-Number: Volume 7, Number 51
  3513.  
  3514. From news  Sat Oct 11 20:35:53 1986
  3515. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3516. Newsgroups: mod.std.unix
  3517. Subject: Job control, windows, streams
  3518. Message-Id: <5992@ut-sally.UUCP>
  3519. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3520. Date: 12 Oct 86 01:35:31 GMT
  3521. Draft-9: job.control
  3522.  
  3523. From: gwyn@brl.arpa (VLD/VMB)
  3524. Date:     Sat, 11 Oct 86 7:06:31 EDT
  3525.  
  3526. The current 1003.1 job control proposal is specifically OPTIONAL for
  3527. POSIX-conforming systems, partly at my insistence two meetings back.
  3528. The idea is to provide a standard for this feature, even though it is
  3529. not universal, simply because many vendors feel pressured to provide
  3530. Berkeley-style job control.  I believe H-P already has this in their
  3531. SVID-compliant system, HP-UX.  Note that the hooks for this are not
  3532. quite the same as in 4BSD, due primarily to System V compatibility
  3533. constraints.
  3534.  
  3535. Several of the recent 1003.1 RFCs and proposals have been aimed at
  3536. those areas where traditional AT&T-supplied UNIX has been perceived
  3537. as sufficiently weak that other sources (mostly Berkeley) have come
  3538. up with features to fill the gap.  These areas include reliable
  3539. signals, extent-based file systems, enhanced terminal handler user
  3540. interface, and Berkeley-style job control.  Practically all such
  3541. ideas have been iteratively discussed and revised before being added
  3542. to the POSIX standard document; some are still not adopted but may be
  3543. approved for POSIX within a meeting or two.  (I must commend the
  3544. committee members and other corporate staff, from H-P and Sun
  3545. particularly, who have invested much time in working out the details
  3546. of such proposals.)
  3547.  
  3548. I hope that the BSD futures planners seriously consider IEEE 1003
  3549. compliance for future releases.  That would greatly help their "VAR"
  3550. customers (i.e. system vendors) and UNIX programmers in general.
  3551. (We have taken quite a bit of trouble to keep BSD systems in mind
  3552. when drafting the 1003.1 POSIX standard.)  AT&T's bone-headed SVR3.0
  3553. licensing restrictions have suddenly made POSIX conformance an
  3554. attractive alternative to SVID compliance in the commercial marketplace,
  3555. and it should be obvious why a neutral industry standard would be well
  3556. received by government agencies, not to mention by AT&T's competitors.
  3557. Support from Berkeley would mean a lot at this stage.
  3558.  
  3559. Streams a la DMR would be terrific; however, please keep in mind that
  3560. the 1003 WG is not tasked with designing an ideal operating system,
  3561. but rather with standardizing a useful interface to a closely related
  3562. family of operating systems.  If we strive for the ideal design before
  3563. publishing a standard, it will be too late to do any good, and vendors
  3564. won't get their systems to conform very soon if ever.  There is room
  3565. for future extensions to the standard (which perhaps could be better
  3566. structured for this purpose), and indeed there are real-time, signals,
  3567. and shell/utility working groups and subcommittees working on some of
  3568. these areas already.
  3569.  
  3570. As far as multiplexing goes, one can't reasonably leave that to user
  3571. mode even with DMR streams; context switching is too expensive.  We've
  3572. been running a version of "mpx" (DMD layer host manager) that uses
  3573. select() to multiplex in user mode, and it is noticeably slower than
  3574. kernel-mode multiplexing.
  3575.  
  3576. Volume-Number: Volume 7, Number 52
  3577.  
  3578. From news  Sat Oct 11 20:38:32 1986
  3579. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  3580. Newsgroups: mod.std.unix
  3581. Subject: mod.std.unix P1003 job control proposal
  3582. Message-Id: <5993@ut-sally.UUCP>
  3583. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  3584. Date: 12 Oct 86 01:38:15 GMT
  3585. Draft-9: job.control
  3586.  
  3587. From: im4u!caip!hplabs!hpda!hpisoa1!davel@sally.utexas.edu (Dave Lennert)
  3588. Date: Thu, 9 Oct 86 14:06:30 pdt
  3589.  
  3590. Attached is the P1003 job control proposal.  The first file contains 
  3591. the text as accepted at the September P1003 meeting in Palo Alto.
  3592. Note that this text sometimes replaces, and sometimes augments,
  3593. existing POSIX text.  The second file contains the problems noticed 
  3594. since then and the proposed resolutions.
  3595.  
  3596.     Dave Lennert                ucbvax!hpda!davel               [UUCP]
  3597.     Hewlett-Packard - 47UX      ihnp4!hplabs!hpda!davel         [UUCP]
  3598.     19447 Pruneridge Ave.       hpda!davel@ucb-vax.ARPA         [ARPA]
  3599.     Cupertino, CA  95014        (408) 447-6325                  [AT&T]
  3600.  
  3601.  
  3602. # This is a shell archive.  Remove anything before this line,
  3603. # then unpack it by saving it in a file and typing "sh file".
  3604. #
  3605. # Wrapped by davel at hpisoa1 on Thu Oct  9 13:23:24 1986
  3606. #
  3607. # This archive contains:
  3608. #    acceptedtext    problems    
  3609. #
  3610.  
  3611. echo x - acceptedtext
  3612. cat >acceptedtext <<'@EOF'
  3613.                                    IEEE
  3614.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3615.  
  3616.        2.3  General Terms
  3617.        Replace or add the following definitions:
  3618.  
  3619.  
  3620.        job control option
  3621.          Job control allows    users to selectively stop (suspend)
  3622.          the execution of processes    and continue (resume) their
  3623.          execution at a later point.  The user typically
  3624.          employs this facility via the interactive interface
  3625.          jointly supplied by the terminal I/O driver and a
  3626.          command interpreter.  Conforming implementations may
  3627.          optionally    support    job control facilities (see
  3628.          Symbolic Constants      2.10).  Portions of the standard
  3629.          operating system interface    which are required only    on
  3630.          implementations which support the job control option
  3631.          are so labelled.
  3632.  
  3633.  
  3634.        process group leader
  3635.          A process group leader is a process whose process ID
  3636.          is    the same as its    process    group ID.  Any process that
  3637.          is    not a process group leader may detach itself from
  3638.          its process group and becomes the process group leader
  3639.          of    a new process group by calling either the setpgrp()
  3640.          or    setpgrp2() function, which can cause a process to
  3641.          become either a session process group leader or a job
  3642.          process group leader, respectively.  Job process group
  3643.          leaders can exist on implementations which    support    the
  3644.          job control option.
  3645.  
  3646.  
  3647.        saved process group ID
  3648.          An    active process has a saved process group ID that is
  3649.          set to the    saved process group ID of the parent
  3650.          process at    the time of creation of    the process (via
  3651.          the fork()    function).  It is reset    to the process
  3652.          group ID of the process when the process successfully
  3653.          calls one of the exec functions.
  3654.  
  3655.  
  3656.        2.10  Symbolic Constants
  3657.        Add the following new constant after the    IEEE1003 constant
  3658.        defintion:
  3659.  
  3660.  
  3661.        IEEE1003job
  3662.          If    this symbol is defined then the    implementation
  3663.          supports the job control option.
  3664.  
  3665. ----------------------------------------------------------------------
  3666.  
  3667.                                    IEEE
  3668.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3669.  
  3670.        3.2.1  Wait for Process Termination
  3671.        Functions: wait(), wait2()
  3672.  
  3673.        3.2.1.1    Synopsis
  3674.        Add the following at the    end of the section:
  3675.  
  3676.          #include <sys/wait.h>
  3677.          int wait2 (stat_loc, options)
  3678.          int *stat_loc;
  3679.          int options;
  3680.  
  3681.        3.2.1.2    Description
  3682.        Add the following at the    end of the section:
  3683.  
  3684.        If the wait2() variant is used, then there are two options
  3685.        available for modifying the behavior of the system call.
  3686.        They may    be combined by oring them together.  The first is
  3687.        WNOHANG which prevents wait2() from suspending the calling
  3688.        process even if there are children to wait for.    In this
  3689.        case, a value of    zero is    returned indicating there are no
  3690.        children    which have stopped or died.  If    the second option
  3691.        WUNTRACED is set, wait2() will also return information when
  3692.        children    of the current process are stopped because they
  3693.        received    a SIGTTIN, SIGTTOU, SIGTSTP, or    SIGSTOP    signal.
  3694.  
  3695.        The wait2() function is provided    if the implementation
  3696.        supports    the job    control    option.
  3697.  
  3698.        3.2.1.3    Returns
  3699.        Add the following at the    end of the section:
  3700.  
  3701.        If wait2() is called, the WNOHANG option    is used, and there
  3702.        are no stopped or terminated children, then a value of zero
  3703.        is returned.  Otherwise,    a value    of -1 is returned and errno
  3704.        shall be    set to indicate    the error.
  3705.  
  3706. ----------------------------------------------------------------------
  3707.  
  3708.                                    IEEE
  3709.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3710.  
  3711.        In section 3.2.2.2 Description of the _exit function replace
  3712.        the paragraph:
  3713.  
  3714.          If    the process is a process group leader, the SIGHUP
  3715.          signal may    be sent    to each    process    that has a process
  3716.          group ID equal to that of the calling process.
  3717.  
  3718.        with:
  3719.  
  3720.          If    the process is a session process group leader, the
  3721.          SIGHUP signal may be sent to each process that has    a
  3722.          process group ID equal to that of the calling process;
  3723.          also, all such processes may have their process group
  3724.          ID    set to zero.
  3725.  
  3726.          If    the implementation supports the    job control option
  3727.          and if the    calling    process    has child processes that
  3728.          are stopped, they will be sent SIGHUP and SIGCONT
  3729.          signals.
  3730.  
  3731. ----------------------------------------------------------------------
  3732.  
  3733.                                    IEEE
  3734.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3735.  
  3736.        3.3.1  Signal Names
  3737.  
  3738.        3.3.1.2    Description
  3739.        Add the following at the    end of the signals list.
  3740.  
  3741.        SIGCLD    +   child process terminated
  3742.  
  3743.        If the implementation supports the job control option then
  3744.        the following are defined:
  3745.  
  3746.        SIGSTOP     #    stop (cannot be caught or    ignored)
  3747.        SIGTSTP     #    stop signal generated from keyboard
  3748.        SIGTTIN     #    background read attempted    from control terminal
  3749.        SIGTTOU     #    background write attempted to control terminal
  3750.        SIGCONT     %+   continue after stop
  3751.  
  3752.       +  Indicates that the    action on SIG_DFL is to    ignore the
  3753.          signal, rather than terminate the process.
  3754.  
  3755.       #  Indicates that the    action on SIG_DFL is to    stop rather
  3756.          than terminate the    process.
  3757.  
  3758.       %  Indicates that the    signal will not    be held    off by a
  3759.          stopped process.
  3760.  
  3761. ----------------------------------------------------------------------
  3762.  
  3763.                                    IEEE
  3764.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3765.  
  3766.        In section 3.3.2.2 Description of the kill() function, add
  3767.        the following paragraph at the end of the Description
  3768.        section.
  3769.  
  3770.        As a single special case    on implementations that    support    the
  3771.        job control option, the continue    signal SIGCONT can be sent
  3772.        to any process that is a    descendant of the current process.
  3773.  
  3774. ----------------------------------------------------------------------
  3775.  
  3776.                                    IEEE
  3777.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3778.  
  3779.        3.3.3  Signal Processing
  3780.  
  3781.        3.3.3.2    Description
  3782.        Replace the SIG_DFL and SIG_IGN discussions with    the
  3783.        following text.    (Note that this    text needs rewording based
  3784.        on the signal working group decisions from Palo Alto, 9/86.
  3785.        Bob Lenk    is planning on merging this text with the proposal
  3786.        he sends    you.  So you should only have to verify    that he    has
  3787.        done this.)
  3788.  
  3789.        SIG_DFL - signal    specific default action
  3790.          For all signals listed in the table in <signal.h>
  3791.          3.3.1, unless otherwise indicated the default action
  3792.          is    either simple abnormal termination or abnormal
  3793.          termination with actions of the receiving process.
  3794.          The result    of abnormal termination    with actions is
  3795.          implementation-dependent.    Abnormal termination with
  3796.          actions may result    in the creation    of a file named
  3797.          core in the receiving process's current directory.
  3798.          Such a core file should contain sufficient    information
  3799.          to    document the state of the process at the time of
  3800.          the signal.
  3801.  
  3802.          For certain indicated signals listed in the table in
  3803.          <signal.h>      3.3.1, the default action is to stop
  3804.          (suspend) the receiving process.  While a process is
  3805.          stopped, any additional signals that are sent to the
  3806.          process will be held off until the    process    is
  3807.          continued.     An exception to this is SIGCONT which
  3808.          always causes the receiving process to continue if    it
  3809.          is    stopped.  When a process is continued, pending
  3810.          signals will be processed.
  3811.  
  3812.          For certain indicated signals listed in the table in
  3813.          <signal.h>      3.3.1, the default action is to ignore
  3814.          the signal.
  3815.  
  3816.          Signals not described <signal.h>    3.3.1 may have
  3817.          other default actions.
  3818.  
  3819.        SIG_IGN - ignore    signal
  3820.          The signal    sig is to be ignored.  The signals SIGKILL
  3821.          and SIGSTOP shall not be ignored.    Ignoring SIGCLD    may
  3822.          cause terminating children    to be ignored by the wait
  3823.          functions     3.2.1.
  3824.  
  3825.        At the end of the "function address - catch signal"
  3826.        discussion, replace the statement:
  3827.  
  3828.        The signal SIGKILL cannot be caught.
  3829.  
  3830.        with:
  3831.  
  3832.        The signals SIGKILL and SIGSTOP cannot be caught.
  3833.  
  3834.        3.3.3.4    Errors
  3835.        Replace:
  3836.  
  3837.        [EINVAL]    The value sig is either    an illegal signal number or
  3838.          SIGKILL.
  3839.  
  3840.        with:
  3841.  
  3842.        [EINVAL]    The value sig is either    an illegal signal number,
  3843.          or    is equal to SIGKILL or SIGSTOP.
  3844.  
  3845. ----------------------------------------------------------------------
  3846.  
  3847.                                    IEEE
  3848.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3849.  
  3850.        Replace all of section 4.3.1 with:
  3851.  
  3852.  
  3853.  
  3854.        4.3.1  Get Process Group    ID
  3855.        Functions: getpgrp(), getpgrp2()
  3856.  
  3857.        4.3.1.1    Synopsis
  3858.  
  3859.          int getpgrp ( )
  3860.  
  3861.          int getpgrp2 (pid)
  3862.          int pid;
  3863.  
  3864.        4.3.1.2    Description
  3865.        The getpgrp() function returns the process group    ID of the
  3866.        calling process.
  3867.  
  3868.        The getpgrp2() function returns the process group ID of the
  3869.        specified process.  If pid is zero, the call applies to the
  3870.        current process.     For this to be    allowed, the real or
  3871.        effective user ID of the    current    process    must match the real
  3872.        or effective user ID of the referenced process, the
  3873.        effective user ID of the    current    process    must be    super-user,
  3874.        or the referenced process must be a descendant of the
  3875.        current process.     The saved set-user ID of the referenced
  3876.        process may be checked in place of its effective    user ID.
  3877.  
  3878.        The getpgrp2() function is provided if the implementation
  3879.        supports    the job    control    option.
  3880.  
  3881.        4.3.1.3    Returns
  3882.        The getpgrp() function returns the process group    ID of the
  3883.        calling process.
  3884.  
  3885.        Upon successful completion, the getpgrp2() function returns
  3886.        the process group ID of the specified process.  Otherwise a
  3887.        value of    -1 is returned and errno is set    to indicate the
  3888.        error.
  3889.  
  3890.        4.3.1.4    Errors
  3891.        If the getpgrp2() function returns -1, the value    stored in
  3892.        errno may be interpreted    as follows:
  3893.  
  3894.        [EPERM]       The effective user ID of the    current    process    is
  3895.            not super-user, the real or effective user ID of
  3896.            the current process does not    match the real or
  3897.            effective user ID (or saved set-user    ID) of the
  3898.            specified process, and the specified    process    is
  3899.            not a descendant of the current process.
  3900.  
  3901.        [ESRCH]       No process can be found corresponding to that
  3902.            specified by    pid.
  3903.  
  3904.        4.3.1.5    References
  3905.        setpgrp()   4.3.2, signal()   3.3.3.
  3906.  
  3907. ----------------------------------------------------------------------
  3908.  
  3909.                                    IEEE
  3910.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  3911.  
  3912.        Replace all of section 4.3.2 with:
  3913.  
  3914.  
  3915.  
  3916.        4.3.2  Set Process Group
  3917.        Functions: setpgrp(), setpgrp2()
  3918.  
  3919.        4.3.2.1    Synopsis
  3920.  
  3921.          int setpgrp ( )
  3922.  
  3923.          int setpgrp2 (pid, pgrp)
  3924.          int pid, pgrp;
  3925.  
  3926.        4.3.2.2    Description
  3927.        The setpgrp() function sets the process group ID    of the
  3928.        calling process to the process ID of the    calling    process    and
  3929.        returns the new process group ID.  The calling process
  3930.        becomes a session process group leader.
  3931.  
  3932.        The setpgrp() function relinquishes the process's
  3933.        controlling terminal unless the process is already the
  3934.        process group leader.
  3935.  
  3936.        The setpgrp2() function sets the    process    group ID of the
  3937.        process specified by pid    to be pgrp.  If    pid is zero, the
  3938.        process group ID    of the calling process will be affected.
  3939.        If the affected process's new process group ID is the same
  3940.        as its process ID then the affected process becomes a job
  3941.        control process group leader.
  3942.  
  3943.        The setpgrp2() function does not    affect the process's
  3944.        controlling terminal.
  3945.  
  3946.        The setpgrp2() function is provided if the implementation
  3947.        supports    the job    control    option.
  3948.  
  3949.        The following condition must be met for the setpgrp2()
  3950.        function    to succeed; otherwise, the error [EINVAL] is
  3951.        returned:
  3952.  
  3953.         The    value of pgrp must be in the range of valid process
  3954.         group ID values, or    it must    be zero    ("no process
  3955.         group").
  3956.  
  3957.        In addition, one    or more    of the following conditions must be
  3958.        met for the setpgrp2() function to succeed; otherwise, the
  3959.        error [EPERM] is    returned:
  3960.  
  3961.         The    effective user ID of the calling process is super-
  3962.         user.
  3963.  
  3964.         The    affected process is a descendant of the    calling
  3965.         process.
  3966.  
  3967.         The    real or    effective user ID of the calling process
  3968.         matches the    real or    effective user ID of the affected
  3969.         process.  The saved    set-user ID of the affected process
  3970.         may    be checked in place of its effective user ID.
  3971.  
  3972.        In addition, one    or more    of the following conditions must be
  3973.        met for the setpgrp2() function to succeed, otherwise, the
  3974.        error [EPERM] is    returned:
  3975.  
  3976.         The    effective user ID of the calling process is super-
  3977.         user.
  3978.  
  3979.         The    value of pgrp matches the saved    process    group ID of
  3980.         the    calling    process.
  3981.  
  3982.         All    processes with a process ID or process group ID
  3983.         that is the    same as    pgrp have the same real    or
  3984.         effective user ID as the real or effective user ID of
  3985.         the    calling    process, or are    descendants of the calling
  3986.         process.  The saved    set-user ID of the related
  3987.         processes may be checked in    place of their effective
  3988.         user ID.
  3989.  
  3990.        4.3.2.3    Returns
  3991.        The setpgrp() function returns the value    of the new process
  3992.        group ID.
  3993.  
  3994.        Upon successful completion, the setpgrp2() function returns
  3995.        a value of 0.  Otherwise, a value of -1 is returned and
  3996.        errno is    set to indicate    the error.
  3997.  
  3998.        4.3.2.4    Errors
  3999.        If the setpgrp2() function returns -1, the value    stored in
  4000.        errno may be interpreted    as follows:
  4001.  
  4002.        [ESRCH]       No process can be found corresponding to that
  4003.            specified by    pid.
  4004.  
  4005.        [EPERM]       The effective user ID of the    calling    process    is
  4006.            not super-user; and the real    or effective user
  4007.            ID of the calling process does not match the
  4008.            real    or effective user ID (or saved set-user    ID)
  4009.            of the specified process; and the specified
  4010.            processes are not descendants of the    calling
  4011.            process.
  4012.  
  4013.        [EPERM]       The effective user ID of the    calling    process    is
  4014.            not super-user; and the value pgrp does not
  4015.            match the saved process group ID of calling
  4016.            process; and    a process exists that is not a
  4017.            descendant of the calling process and whose
  4018.            process ID or process group ID match    pgrp, while
  4019.            neither the real or effective user ID (or saved
  4020.            set-user ID)    of this    process    match either the
  4021.            real    or effective user ID of    the calling
  4022.            process.
  4023.  
  4024.        [EINVAL]       The value for pgrp is outside the range of valid
  4025.            process group ID values and is non-zero.
  4026.  
  4027.        4.3.2.5    References
  4028.        exec   3.1.2, _exit()   3.2.2, fork()   3.1.1, getpid()
  4029.        4.1.1, kill()   3.3.2, signal()     3.3.3.
  4030.  
  4031. ----------------------------------------------------------------------
  4032.  
  4033.                                    IEEE
  4034.        SYSTEM FOR COMPUTER ENVIRONMENTS             Std 1003.1
  4035.  
  4036.        Alter the forthcoming reliable signals proposal,    the
  4037.        sigvector() description,    by adding the following    paragraph:
  4038.  
  4039.        The sv_flags field can be used to modify    the receipt the
  4040.        specified signal.  If sig is SIGCLD and the implementation
  4041.        supports    the job    control    option,    the following flag bit can
  4042.        be set in sv_flags:
  4043.  
  4044.       SV_CLDSTOP   Also generate SIGCLD when children stop
  4045.  
  4046. @EOF
  4047.  
  4048. chmod 664 acceptedtext
  4049.  
  4050. echo x - problems
  4051. cat >problems <<'@EOF'
  4052. There are two omissions in the job control specification that
  4053. have come to light since it was accepted at the P1003 meeting
  4054. in Palo Alto.  There will be forthcoming proposals to correct
  4055. these.
  4056.  
  4057. Omission 1:
  4058.  
  4059. Bob Lenk noticed that, in adding SIGCLD to the required portion of
  4060. POSIX, we neglected to deal with the issue of what happens when
  4061. SIGCLD is set to SIG_IGN.  Specifically, on ATT this causes 
  4062. terminated children to be invisible to wait*() while on BSD there
  4063. is no such side effect.  Bob Lenk feels the best way to handle this
  4064. is to disallow conforming applications from setting SIGCLD to SIG_IGN.
  4065. (There is no advantage to using SIG_IGN over SIG_DFL in the case
  4066. of SIGCLD anyway.)  Bob is planning on submitting a cleanup proposal
  4067. proposing this.
  4068.  
  4069. Omission 2:
  4070.  
  4071. Doug Gwyn pointed out the following omission:
  4072.  
  4073. The changes to section 3.2.1.2 for wait2() did not contain a
  4074. description of the returned status information in the case
  4075. of stopped children.
  4076.  
  4077. I've submitted a proposal to add the following additional text:
  4078.  
  4079. [OLD TEXT FOR CONTEXT:]
  4080.  
  4081. wait2() will also return information when children of the
  4082. current process are stopped because they received a SIGTTIN,
  4083. SIGTTOU, SIGTSTP, or SIGSTOP signal.
  4084.  
  4085. [NEW TEXT:]
  4086.  
  4087. In this case, the status information can also be interpreted
  4088. in the following way:
  4089.  
  4090.     If the child process stopped, the 8 bits of status
  4091.     (corresponding to the octal value 0177400) will contain
  4092.     the number of the signal that caused the process to
  4093.     stop and the low order 8 bits corresponding to the
  4094.     octal value 0377 will be set equal to the octal value
  4095.     0177.
  4096. @EOF
  4097.  
  4098. chmod 664 problems
  4099.  
  4100. exit 0
  4101.  
  4102.  
  4103. Volume-Number: Volume 7, Number 53
  4104.  
  4105. From news  Sat Oct 11 20:45:09 1986
  4106. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  4107. Newsgroups: mod.std.unix
  4108. Subject: Re: mod.std.unix P1003 job control proposal
  4109. Message-Id: <5994@ut-sally.UUCP>
  4110. References: <5993@ut-sally.UUCP>
  4111. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  4112. Date: 12 Oct 86 01:44:47 GMT
  4113. Draft-9: job.control
  4114.  
  4115. From: hplabs!hpda!hpisoa1!davel (Dave Lennert)
  4116. Date: Thu, 09 Oct 86 22:33:31 -0800
  4117.  
  4118. As an addendum to the P1003 job control proposal text I submitted,
  4119. here's a paper describing the 4.2 job control implementation, the
  4120. System V incompatibilities, and how they were resolved.  This was
  4121. the background investigation that went into the P1003 proposal.
  4122.  
  4123. This is the same paper that appears in the Atlanta USENIX proceedings.
  4124. [ June 1986, pp. 459-474.  -mod ]
  4125. It uses the -ms macro package.
  4126.  
  4127.     Dave Lennert                ucbvax!hpda!davel               [UUCP]
  4128.     Hewlett-Packard - 47UX      ihnp4!hplabs!hpda!davel         [UUCP]
  4129.     19447 Pruneridge Ave.       hpda!davel@ucb-vax.ARPA         [ARPA]
  4130.     Cupertino, CA  95014        (408) 447-6325                  [AT&T]
  4131.  
  4132.  
  4133. # This is a shell archive.  Remove anything before this line,
  4134. # then unpack it by saving it in a file and typing "sh file".
  4135. #
  4136. # Wrapped by davel on Thu Oct  9 22:29:34 PDT 1986
  4137. # Contents:  jobpaper.ms
  4138.  
  4139. echo x - jobpaper.ms
  4140. sed 's/^@//' > "jobpaper.ms" <<'@//E*O*F jobpaper.ms//'
  4141. @.de PB
  4142. @.sp 1
  4143. @.RS
  4144. @.nf
  4145. @..
  4146. @.de PE
  4147. @.fi
  4148. @.RE
  4149. @.sp 1
  4150. @..
  4151. @.DA
  4152. @.    \" Put page numbers at bottom center rather than top center
  4153. @.rm CH
  4154. @.ds CF - \\n(PN -
  4155. @.    \" UX - UNIX macro
  4156. @.de UX
  4157. @.ie \\n(UX \s-1UNIX\s0\\$1
  4158. @.el \{\
  4159. \s-1UNIX\s0\\$1\(dg
  4160. @.FS
  4161. \(dg \s-1UNIX\s0 is a trademark of AT&T.
  4162. @.FE
  4163. @.nr UX 1
  4164. @.\}
  4165. @..
  4166. @.TL
  4167. A System V Compatible Implementation of 4.2BSD Job Control
  4168. @.AU
  4169. David C. Lennert
  4170. @.AI
  4171. Hewlett-Packard Company
  4172. Information Technology Group
  4173. hplabs\^!\^hpda\^!\^davel
  4174. @.AB
  4175. This paper gives an overview of how process groups and controlling
  4176. terminals are handled in System V and 4.2BSD and then
  4177. discusses the effect 4.2BSD job control has on these things.
  4178. A modified 4.2BSD interface is discussed which supports 4.2BSD job control
  4179. functionality but in a way which allows AT&T System V compatibility.
  4180. This interface has been implemented in Hewlett-Packard's 
  4181. @.UX
  4182. system, HP-UX.
  4183. @.AE
  4184. @.sp 1
  4185. @.NH
  4186. INTRODUCTION
  4187. @.PP
  4188. The job control functionality first introduced into
  4189. @.UX
  4190. by Jim Kulp of IIASA and later provided by 4.2BSD
  4191. @.UX
  4192. has become a \fIde facto\fP industry standard.
  4193. However, this job control facility, as implemented in 4.2BSD, is incompatible
  4194. in several respects with System V.
  4195. @.PP
  4196. Recently a proposal was submitted to the IEEE P1003 Portable Operating
  4197. System standard committee by Sun Microsystems [Harris86] which attempts
  4198. to define
  4199. 4.2BSD job control functionality in a way compatible with System V.
  4200. Hewlett-Packard Company has been independently developing a similar
  4201. proposal.  HP's proposal is almost identical to Sun's but goes
  4202. beyond it to address many "corner case" areas which strongly affect
  4203. System V compatibility.
  4204. @.PP
  4205. This paper gives an overview of the relevant areas of System V 
  4206. functionality which are affected.  It then overviews how job control
  4207. is implemented in 4.2BSD and how this impacts the System V interface.
  4208. Finally, the HP-UX interface is presented and a similar overview of its
  4209. implementation is given.
  4210. @.PP
  4211. The various overviews cover how job control signals are generated, passed,
  4212. and acknowledged by the tty driver and user processes.  They also explain
  4213. how process groups are established and changed.
  4214. @.sp 1
  4215. @.NH
  4216. FUNDAMENTALS
  4217. @.PP
  4218. In the following discussion the reader is assumed to have an understanding
  4219. of several fundamental concepts found in the
  4220. @.UX
  4221. operating system.  For convenience these concepts are briefly reviewed here.
  4222. @.NH 2
  4223. Process Groups and Controlling Terminals
  4224. @.PP
  4225. Every process has a unique numeric value associated with it called
  4226. its \fIprocess ID\fP.  Every process also has a non-unique numeric value
  4227. associated with it called its \fIprocess group ID\fP.
  4228. A \fIprocess group\fP is a collection of processes having identical numeric
  4229. process group ID's.  Typically, one process in the process group will
  4230. be the \fIprocess group leader\fP.  The process group leader has a process ID
  4231. which is numerically equal to the process group ID associated with all processes
  4232. in the process group.  Typically, the process group leader is the ancestor
  4233. of all other processes in the process group.
  4234. @.PP
  4235. A process can have a \fIcontrolling terminal\fP which is usually the login
  4236. terminal of the user who created the process.  A process can obtain access
  4237. to its controlling terminal by opening the file \fI/dev/tty\fP.
  4238. All processes in the same process group typically share the same controlling
  4239. terminal.  A terminal usually has a process group ID associated with it,
  4240. called the \fItty group ID\fP.  When a user generates a keyboard signal
  4241. (e.g., by typing the interrupt character), the tty driver sends the appropriate
  4242. signal to all processes which are members of the process group indicated by
  4243. the tty group ID.
  4244. In summary,
  4245. usually, but not necessarily, all processes in the same process group share
  4246. the same controlling terminal, and the tty group ID for that terminal is
  4247. equal to the process group ID of the process group.
  4248. @.PP
  4249. For further explanation see [Roch85] and intro(2) in your favorite
  4250. @.UX
  4251. Programmer's Manual.
  4252. @.NH 2
  4253. 4.2BSD Job Control
  4254. @.PP
  4255. 4.2BSD job control allows users to selectively stop (suspend) the
  4256. execution of processes and continue (resume) their execution at any
  4257. later point.  This only easily works for processes which are stopped
  4258. and continued during the same login session.
  4259. @.PP
  4260. The user almost always employs this facility via the interactive interface
  4261. jointly supplied by the system tty driver and a job control shell such as
  4262. csh(1) or ksh(1).
  4263. The tty driver recognizes a user-defined
  4264. \fIsuspend character\fP which causes all current foreground processes to
  4265. stop and the user's job control shell to resume.
  4266. The job control shell provides commands which continue stopped processes
  4267. in either the foreground or background.
  4268. The tty driver will also stop a background process when it attempts to
  4269. read from or write to the users terminal.  This allows the user to finish
  4270. or suspend their foreground task without interruption and continue the
  4271. stopped background process at a more convenient time.
  4272. @.PP
  4273. To enable the system to support this,
  4274. 4.2BSD job control introduces five new signals: SIGSTOP, SIGTSTP, SIGTTIN,
  4275. SIGTTOU, and SIGCONT.  The first four signals cause a process to stop unless
  4276. the signals are being caught or ignored.  SIGCONT always causes a stopped
  4277. process to continue.  (SIGCONT has no effect on processes which are not
  4278. stopped.)  SIGSTOP cannot be caught or ignored.
  4279. @.PP
  4280. The tty driver sends some of these signals to all processes in the tty
  4281. process group under the following conditions:  The driver sends SIGTSTP when
  4282. the user types the suspend or delayed suspend character.  The driver sends
  4283. SIGTTIN (SIGTTOU) when a background process attempts to read from (write to)
  4284. its controlling terminal.
  4285. SIGCONT is usually only sent by a job control shell when
  4286. the user requests that a stopped process be continued.
  4287. Of course, any signal can be sent by a user via the kill(1) command or
  4288. by a program via the kill(2) system call.
  4289. @.PP
  4290. It should be noted that these signals can be added to a
  4291. @.UX
  4292. implementation in a manner which preserves source and object code
  4293. compatibility.  A process is not required to be aware of them.  By
  4294. default the signals do "the right thing."
  4295. @.PP
  4296. For further information see [Joy80] and [UCB83].
  4297. @.sp 1
  4298. @.NH
  4299. AT&T SYSTEM V
  4300. @.NH 2
  4301. Introduction
  4302. @.PP
  4303. System V process groups closely resemble the concept of a login session.
  4304. That is, all processes spawned during the same login session tend to
  4305. belong to the same process group, and keyboard signals are typically
  4306. sent to all processes spawned from the login session.
  4307. @.NH 2
  4308. System V Process Group Handling
  4309. @.PP
  4310. In System V, the only way to alter the process group associated
  4311. with a process (p_pgrp) is via setpgrp(2).  And this can only set the process
  4312. group to equal the process ID (pid) of the process.  When this happens
  4313. the resulting process with pid = p_pgrp is called a process group leader.
  4314. Since a process's pid can never change,
  4315. once a process issues a setpgrp(2) call it irrevocably becomes
  4316. a process group leader.
  4317. @.PP
  4318. The init(1M) process spawns all other processes on the system either
  4319. directly or indirectly.  Before directly spawning a process
  4320. (after the fork(2) but before the exec(2)),
  4321. init calls setpgrp(2).
  4322. Thus all original children (not orphans) of init are forced to (irrevocably)
  4323. be process group leaders.
  4324. @.PP
  4325. When a new process is created, it is assigned a new pid but it inherits
  4326. the process group number of its parent.  Thus child processes are, by
  4327. default, not process group leaders (although they can become a process
  4328. group leader via setpgrp(2)).
  4329. @.PP
  4330. When a process group leader which has a controlling terminal (see below)
  4331. terminates, SIGHUP is sent to all processes in the same
  4332. process group.
  4333. @.PP
  4334. Further, when a process group leader terminates, all processes that
  4335. belong to this process group are altered to belong to no process group
  4336. (their p_pgrp is set to zero).
  4337. More precisely, when any process exits, all processes whose process
  4338. group (p_pgrp) equals the pid of the terminating process will have their
  4339. p_pgrp set to zero; this check succeeds only in the case of a
  4340. terminating process group leader.
  4341. @.NH 2
  4342. System V Controlling Terminals
  4343. @.PP
  4344. A terminal that is currently open by a process may also be a "controlling
  4345. terminal" for a process group.  When certain
  4346. control characters are typed on a controlling terminal, signals are 
  4347. sent by the terminal driver to all processes that belong to the process
  4348. group associated with the terminal.
  4349. @.PP
  4350. When a process becomes a process group leader (via setpgrp(2)) it
  4351. automatically loses its controlling terminal.  After this,
  4352. the first terminal (that is not already a controlling terminal)
  4353. opened by the process
  4354. is assigned to be the controlling terminal for that process.
  4355. Also, the process group associated with that terminal (t_pgrp, also known
  4356. as the tty group ID) is set
  4357. equal to the process group associated with the process group leader
  4358. (p_pgrp).
  4359. All child processes inherit the controlling terminal and
  4360. process group of their parent.
  4361. @.PP
  4362. More precisely, in System V, the process group associated with a 
  4363. terminal (t_pgrp), can be changed in the following ways:
  4364. @.IP (1)
  4365. When a terminal is opened by a process group leader (pid == p_pgrp)
  4366. that does not already have a controlling terminal,
  4367. it becomes the controlling terminal for that process group 
  4368. (t_pgrp is set equal to p_pgrp) if it is not already a controlling
  4369. terminal.
  4370. @.IP (2)
  4371. When a process group leader (pid == p_pgrp) dies, if it has a 
  4372. controlling terminal that is associated with the same process
  4373. group (t_pgrp == p_pgrp), then that terminal is disassociated from that
  4374. process group (t_pgrp is set to zero).
  4375. @.IP (3)
  4376. When the last process to have a terminal open closes that terminal,
  4377. the terminal is disassociated from its process group (t_pgrp
  4378. is set to zero).
  4379. @.NH 2
  4380. System V Typical Scenario
  4381. @.PP
  4382. This is a typical scenario for the birth and death of a process group and
  4383. its controlling terminal.
  4384. @.PP
  4385. The init(1M) process wants to enable a terminal for login.  It calls fork(2)
  4386. to create a new process and then calls
  4387. setpgrp(2) to make the process a process
  4388. group leader which also removes the process's controlling terminal.  It
  4389. then runs the getty(1M) program as the process via exec(2).
  4390. Getty opens the terminal causing it to become getty's controlling terminal
  4391. and be associated with getty's process group (t_pgrp is set to p_pgrp).
  4392. Getty replaces itself with login(1) which replaces itself with a login
  4393. shell, e.g., sh(1).
  4394. Usually no program calls setpgrp(2) and thus all descendent processes
  4395. of the login shell are in the same process group and have the same
  4396. controlling terminal; keyboard signals are sent to all processes launched
  4397. during this session.
  4398. @.PP
  4399. When a logout occurs, the login shell (which is the process group leader) 
  4400. dies and the controlling terminal is freed up (t_pgrp is set to zero) so
  4401. that it can be claimed as a controlling terminal by a subsequent getty 
  4402. respawned by init.
  4403. SIGHUP is sent to all processes in the same process group.
  4404. The process group (p_pgrp) of all descendent processes is then set to zero.
  4405. @.PP
  4406. Note that there may continue to be background processes (previously
  4407. started by the
  4408. now defunct login shell) which continue to execute but
  4409. keyboard signals will no longer be sent to these processes (since
  4410. both t_pgrp and p_pgrp equal zero).
  4411. @.sp 1
  4412. @.NH
  4413. 4.2BSD
  4414. @.NH 2
  4415. Introduction
  4416. @.PP
  4417. 4.2BSD process groups closely resemble the concept of a task within
  4418. a login session, where a task represents a set of processes which
  4419. are affected as a group by job control operations.
  4420. Every time a job control shell (e.g., csh) spawns either a foreground
  4421. or background command, all processes in the pipeline (and their
  4422. descendents) are placed in their own unique process group with the
  4423. first command in the pipeline being the process group leader.
  4424. @.PP
  4425. A task is in the foreground when the process group associated with the
  4426. controlling terminal for the task (t_pgrp) is equal to the process
  4427. group associated with the processes in the task (p_pgrp).  
  4428. Otherwise the task is in the background.
  4429. A job control shell moves a job between the foreground and background
  4430. by adjusting the terminal process group (t_pgrp) of the controlling
  4431. terminal.
  4432. @.PP
  4433. Note that 4.2BSD forms new process groups with process group leaders
  4434. much more often than System V usually does (every command versus
  4435. every login).
  4436. @.NH 2
  4437. 4.2BSD Process Group Handling
  4438. @.PP
  4439. In 4.2BSD, the process group associated with a process (p_pgrp)
  4440. can be altered in two ways.  The first is via setpgrp(2).  4.2BSD's setpgrp(2)
  4441. is analogous to System V's setpgrp(2) except that the former can affect
  4442. processes other than the current process and can cause the affected
  4443. process to adopt a process group other than that process's process ID (pid).
  4444. Thus, unlike System V, a process can cease to be a process group leader.
  4445. @.PP
  4446. In addition to setpgrp(2), a process that is not a member of any
  4447. process group (p_pgrp == 0) will "inherit" or join the process
  4448. group associated with its controlling terminal at the time the
  4449. process is assigned a controlling terminal during open(2).
  4450. If the terminal being opened is not presently the controlling
  4451. terminal for any process group, then the process opening the
  4452. terminal will first be made a process group leader (p_pgrp will
  4453. be set to p_pid) and then the terminal will become the controlling
  4454. terminal for this new process group.  All this is done by the
  4455. tty open code.
  4456. @.PP
  4457. When a new process is created it inherits the process group of its parent.
  4458. @.PP
  4459. Unlike System V init(1M), 4.2BSD init(8) does not call setpgrp(2) when spawning
  4460. other processes.  All processes spawned by init inherit init's process
  4461. group which happens to be zero ("not a member of any process group").
  4462. This is actually crucial for assigning controlling terminals; see below.
  4463. @.NH 2
  4464. 4.2BSD Controlling Terminals
  4465. @.PP
  4466. Unlike System V, a 4.2BSD process does not lose its controlling terminal
  4467. when altering its process group (via setpgrp(2)).
  4468. Also unlike System V, a 4.2BSD process that is a process group leader
  4469. (pid == p_pgrp) but which has no controlling terminal does not receive
  4470. a controlling terminal when opening a new terminal.
  4471. @.PP
  4472. A process can obtain a controlling terminal under 4.2BSD in only the
  4473. following ways:
  4474. @.IP (1)
  4475. A process can inherit a controlling terminal from its parent.
  4476. @.IP (2)
  4477. A process that is not a member of any process group (p_pgrp == 0)
  4478. can open any terminal and that terminal will become its controlling
  4479. terminal (whether or not it is already the controlling terminal for another
  4480. process).
  4481. However, this can happen in one of two ways:
  4482. @.IP
  4483. If the terminal is not already a controlling terminal (t_pgrp == 0)
  4484. then the opening process becomes a process group leader (its p_pgrp is set
  4485. equal to its pid) and the terminal becomes its controlling terminal
  4486. (t_pgrp is set to the new p_pgrp value).
  4487. @.IP
  4488. If the terminal is already a controlling terminal for another process
  4489. (t_pgrp is not zero) then the opening process joins the process group
  4490. already associated with the controlling terminal.  That is, p_pgrp is
  4491. set equal to the current t_pgrp.  Note that the opening process does
  4492. not become a process group leader, i.e., p_pgrp is not equal to its pid.
  4493. @.IP
  4494. Note that this procedure only happens during the first terminal open
  4495. for a process that was either originally spawned by init or whose
  4496. ancestor processes (all the way back to init) never altered their
  4497. process group (p_pgrp) either by opening a terminal or calling setpgrp(2).
  4498. @.PP
  4499. A terminal ceases to be a controlling terminal (t_pgrp is set to zero) under
  4500. 4.2BSD in the following way:
  4501. @.IP (1)
  4502. When the last process to have a terminal open closes that terminal
  4503. then the terminal is disassociated from its process group (t_pgrp
  4504. is set to zero).
  4505. @.PP
  4506. There are two other facilities unique to 4.2BSD which affect access to
  4507. control terminals: the TIOCSPGRP ioctl(2) and vhangup(2).
  4508. @.PP
  4509. The TIOCSPGRP ioctl(2) function changes a terminal's process group (t_pgrp)
  4510. to any desired value.
  4511. It is typically used by csh(1) to control which set of processes (process
  4512. group) is in the foreground.
  4513. @.PP
  4514. The vhangup(2) function is invoked by init after
  4515. forking but before exec'ing getty.  This function removes read and
  4516. write permission for all processes (including the caller)
  4517. that have the controlling terminal
  4518. open (whether or not it is their controlling terminal).  It then sends
  4519. SIGHUP to the process group associated with the terminal (t_pgrp).
  4520. The latter action is similar to the System V functionality that sends
  4521. SIGHUP to a process group on death of the process group leader; 4.2BSD
  4522. does not do this on the death of a process group leader.
  4523. @.NH 2
  4524. 4.2BSD Typical Scenario
  4525. @.PP
  4526. This is a typical scenario for the birth and death of a login, its
  4527. controlling terminal, and process groups associated with a job.
  4528. @.PP
  4529. The init(8) process wants to enable a terminal for login.
  4530. First it creates a new process via fork(2).
  4531. Then it opens the terminal which
  4532. (because the p_pgrp inherited from init is zero)
  4533. causes it to become the controlling
  4534. terminal for this process and either alters the process group (p_pgrp) of
  4535. the process to match the terminal process group (t_pgrp) if non-zero, or
  4536. alters both p_pgrp and t_pgrp to equal the process ID (pid) if t_pgrp is zero.
  4537. At this point the new process has a controlling terminal whose process group
  4538. (t_pgrp) is equal to the process's process group (p_pgrp).  However, the 
  4539. process may not be a process group leader (i.e., p_pgrp may not equal pid).
  4540. @.PP
  4541. Now the new process calls vhangup(2) to remove
  4542. access permissions for the controlling terminal from all processes (as well
  4543. as sending SIGHUP to any processes in the process group previously
  4544. associated with the terminal).
  4545. The new process then reopens the terminal to get a file descriptor with
  4546. read and 
  4547. write permissions since the vhangup(2) removed these permission from the
  4548. file descriptor returned by the previous open.
  4549. The previous file descriptor is not closed until now to prevent losing
  4550. the controlling terminal; (remember that p_pgrp for the new process is
  4551. no longer zero.)
  4552. @.PP
  4553. The new process now replaces itself with getty(8) which replaces itself
  4554. with login(1) which replaces itself with a login shell, e.g., csh(1).
  4555. Csh now begins to manipulate the process group associated with the
  4556. terminal (t_pgrp) via the TIOCSPGRP and TIOCGPGRP ioctl(2) calls and
  4557. the process group associated with its child processes (p_pgrp) via
  4558. setpgrp(2) in order to allow job control.  This happens (briefly) in the
  4559. following way:
  4560. @.PP
  4561. Csh launches a pipeline by making all programs in the pipeline be
  4562. immediate descendents of csh.  (This is different from sh which makes
  4563. all programs in the pipeline except the last be descendents of the
  4564. last program in the pipeline.)
  4565. All programs in the pipeline belong to the same process group (not the
  4566. same as csh's process group) and the first program in the pipeline is
  4567. the process group leader (its pid is equal to the process group for the
  4568. pipeline).
  4569. If the pipeline is being launched in the foreground (or moved to the
  4570. foreground) then the process group associated with the terminal (t_pgrp)
  4571. is set to the process group of the pipeline.
  4572. @.PP
  4573. When a logout occurs, the login shell dies.
  4574. Any pending SIGTTIN, SIGTTOU, and SIGTSTP signals are cleared for all 
  4575. descendent processes.
  4576. All immediate child processes are inherited as orphans by init; if any are
  4577. currently stopped then they are killed (SIGKILL).
  4578. If the exiting process is the last process that has the controlling 
  4579. terminal open then the terminal's process group (t_pgrp) is set to zero,
  4580. otherwise it is left alone.
  4581. Nothing special is done for process group leaders; in fact, login shells
  4582. are frequently not process group leaders.  (SIGHUP is not sent and the
  4583. controlling terminal is not necessarily cleared.)
  4584. @.PP
  4585. Note that there may continue to be processes (previously
  4586. started by the now defunct login shell) which continue to execute.
  4587. And that keyboard signals can still be sent to these processes under some
  4588. circumstances (specifically when the processes were in the foreground
  4589. (p_pgrp == t_pgrp) when the login shell died; this usually only happens
  4590. when the login shell is killed from another terminal via kill(1).)
  4591. Note also that this continues to be true even after a new session logs in
  4592. on the same terminal since the new login shell joins the process group
  4593. which is already associated with the terminal from the prior login.
  4594. @.NH 2
  4595. Job Control Signal Handling
  4596. @.PP
  4597. The following discussions concerning signals and kernel process
  4598. synchronization are similar to ones found in [Thom78], [Ritch79],
  4599. and [Bach79].
  4600. @.NH 3
  4601. Basic Overview
  4602. @.PP
  4603. Usually a process is either running or sleeping waiting for an event to
  4604. occur (e.g., I/O completion).  When a signal is sent to a process (either
  4605. by another process or an I/O driver) what actually occurs is that a flag
  4606. is set for the receiving (or target) process indicating that the signal
  4607. has been sent and the target process performs the actual signal operation
  4608. to itself the next time it runs.  Thus sending a signal amounts to
  4609. requesting the target process to itself perform a particular action.
  4610. If the target process is already running it is interrupted to process
  4611. the signal.  If it is runnable but not currently running then the
  4612. system merely waits for it to become the currently running process at
  4613. which point the signal is acknowledged.  If the target process
  4614. is sleeping then either
  4615. it is moved into a runnable state (if it is sleeping at an "interruptable"
  4616. priority) or it is left sleeping (at an "uninterruptable" priority) and
  4617. the signal is not acknowledged until the slept on event occurs.
  4618. @.PP
  4619. The kernel procedure which sends a signal is psignal() and is executed
  4620. by the sending process or driver.
  4621. Psignal() updates a list of pending signals for the receiving process.
  4622. If the receiving process is the currently running process and it is
  4623. executing in kernel mode then the pending signal is acknowledged
  4624. when the current system call completes.
  4625. (This is the case where the sending process and the receiving process
  4626. are the same.)
  4627. If the receiving process is the currently running process and it is
  4628. executing in user mode then a special event is generated
  4629. which causes the process to
  4630. enter the kernel and acknowledge the pending signal.
  4631. (This is the case where the sending "process" is really an interrupt
  4632. handler which, for example, is servicing an interrupt character
  4633. typed on a user's terminal.)
  4634. If the receiving process is
  4635. sleeping but not holding off signals then it is set running via wakeup();
  4636. the pending signal is acknowledged as soon as the receiving process executes.
  4637. If the receiving process is suspended in a sleep state that holds off
  4638. signals ("sleeping uninterruptably") then it is left sleeping;
  4639. the pending signal will be acknowledged after the waited for event occurs.
  4640. @.PP
  4641. The procedure which tests for a pending signal is issig() and is executed
  4642. by the receiving process.
  4643. Issig() is executed whenever the receiving process changes from kernel
  4644. mode to user mode execution; for example, at the completion of a system call.
  4645. It is also executed whenever the receiving process is awakened from
  4646. being suspended in a sleep state that does not hold off signals ("sleeping
  4647. interruptably").
  4648. @.PP
  4649. The procedure which performs the requested signal operation (e.g.,
  4650. invoking a signal handler or killing the process) is psig() and is
  4651. executed by the receiving process if issig() returns true.
  4652. @.PP
  4653. This basic structure is essentially the same in System V, 4.2BSD, and
  4654. HP-UX.  However, under 4.2BSD-style job control, these general principles
  4655. can work slightly differently:
  4656. @.PP
  4657. When processing stop signals,
  4658. the psignal() function, called by the sending process, actually stops 
  4659. the target process sometimes.  In these cases, the target process
  4660. never realizes that it received the signal or that it stopped.  
  4661. However, in other cases, psignal() performs the usual process of 
  4662. setting the flag (p_sig) requesting
  4663. that the target process stop itself the next time it runs.
  4664. @.PP
  4665. The issig() function, called by the target process, can actually stop the
  4666. target process.
  4667. @.PP
  4668. The psig() function is only called in the case where a user handler
  4669. has been provided for the job control signal.
  4670. @.PP
  4671. A more complete description of job control signal handling is contained
  4672. in the pseudocode below.
  4673. @.NH 3
  4674. psignal()
  4675. @.PP
  4676. To send SIGCONT to a target process:
  4677. @.PB
  4678. sending SIGCONT clears any pending stop signals;
  4679. if the target process is STOPPED but is also SLEEPING (p_wchan != 0)
  4680.     merely continue the process's SLEEP;
  4681.  
  4682. else if the target process is STOPPED and is NOT SLEEPING (p_wchan == 0)
  4683.     set the process RUNNING;
  4684. @.PE
  4685. @.PP
  4686. To send a stop signal (SIGTSTP, SIGTTIN, SIGTTOU, SIGSTOP) to a target process:
  4687. @.PB
  4688. sending a stop signal clears any pending SIGCONT;
  4689.  
  4690. if the target process is RUNNABLE or RUNNING
  4691.     note the pending signal in p_sig;
  4692.  
  4693. else if the target process is SLEEPING NON-interruptably
  4694.     note the pending signal in p_sig;
  4695.  
  4696. else if the target process is SLEEPING interruptably
  4697.      and IS catching the signal
  4698.     note the pending signal in p_sig and
  4699.     wakeup the process from its sleep;
  4700.  
  4701. else if the target process is SLEEPING interruptably
  4702.      and is NOT catching the signal
  4703.     stop the process by setting its state to SSTOP
  4704.     but leave it sleeping on its p_wchan;
  4705.     send SIGCLD to parent (if it expects BSD-style)
  4706. @.PE
  4707. @.PP
  4708. General note: sending a stop signal (other than SIGSTOP) to a child
  4709. of init causes the target process to be killed.
  4710. @.NH 3
  4711. issig()
  4712. @.PP
  4713. Issig() is called in all cases except where the process was
  4714. sleeping interruptably and was not catching the signal. 
  4715. @.PP
  4716. To acknowledge a pending SIGCONT or stop signal:
  4717. @.PB
  4718. if in the middle of a VFORK
  4719.     hold off all stop signals (pretend they don't exist yet)
  4720.  
  4721. else if catching the signal
  4722.     return a request to invoke user signal handler via psig()
  4723.  
  4724. else if SIGCONT
  4725.     do nothing  /* pretend it doesn't exist */
  4726.  
  4727. else /* stop signals */
  4728.     stop the process by setting its state to SSTOP
  4729.     send SIGCLD to parent (if it expects BSD-style)
  4730.     call swtch() to dispatch another process
  4731. @.PE
  4732. @.PP
  4733. General note: sending a stop signal (other than SIGSTOP) to a child
  4734. of init causes the target process to be killed.
  4735. @.NH 3
  4736. psig()
  4737. @.PP
  4738. Psig() is called whenever issig() returns an indication
  4739. that a user handler is defined for a job control signal.
  4740. Psig() merely invokes the user signal handler.
  4741. @.NH 3
  4742. wakeup()
  4743. @.PP
  4744. The fact that a process is sleeping (waiting for an event to occur)
  4745. is indicated by two process state values:  p_wchan is non-zero,
  4746. indicating the event being waited for, and the process state is SSLEEP.
  4747. @.PP
  4748. Wakeup() usually causes all processes waiting (sleeping) on a specified 
  4749. event to be awakened.  When a process is awakened two things
  4750. happen:  The process is removed from the sleep queue (p_wchan is cleared)
  4751. and it is added to the run queue.
  4752. @.PP
  4753. If, however, wakeup() discovers a process whose p_wchan matches the 
  4754. specified event but whose process state is SSTOP (stopped) then
  4755. the process is removed from the sleep queue (indicating that the
  4756. waited for even has happened) but it is not placed on the run queue.
  4757. A subsequent SIGCONT will cause it to be placed on the run queue.
  4758. @.PP
  4759. Thus it is possible to have a process which is both sleeping (p_wchan
  4760. non-zero) and stopped (process state is SSTOP rather than SSLEEP).
  4761. @.NH 3
  4762. Signal Setup via init
  4763. @.PP
  4764. When init(8) launches any process it causes the process to ignore all
  4765. the job control stop signals (SIGTSTP, SIGTTIN, & SIGTTOU).  This allows
  4766. login shells which are not job control shells to automatically ignore
  4767. the signals.  Further, all descendent processes of such a login shell
  4768. will also ignore these signals unless they explicitly enable them.
  4769. @.NH 2
  4770. Foreground/Background Processes
  4771. @.NH 3
  4772. Basic Overview
  4773. @.PP
  4774. 4.2BSD job control supports the notion of a process being in the
  4775. @.I foreground
  4776. or
  4777. @.I background.
  4778. The distinction is a background process is usually forced to stop when
  4779. it attempts to perform I/O (including most control operations) on its
  4780. controlling terminal, while a foreground process is not hindered.
  4781. @.PP
  4782. Specifically, when a background process attempts to read from its controlling
  4783. terminal it is sent the SIGTTIN signal which, by default, causes it to stop.
  4784. When it attempts to write to its controlling terminal and LTOSTOP has been
  4785. enabled for the terminal, then the process is sent the SIGTTOU signal which,
  4786. by default, causes it to stop.
  4787. If, however, a background process has chosen to catch the signal, the 
  4788. specified user handler is invoked.
  4789. If the process is ignoring or masking the stop signal(s), then
  4790. the terminal I/O request returns an I/O error, EIO.
  4791. @.PP
  4792. A background process is one whose process group (p_pgrp) is not equal
  4793. to the process group of its controlling terminal (t_pgrp) (and t_pgrp
  4794. is not zero).  All other processes (including ones doing I/O to terminals
  4795. that are not their controlling terminals) are considered to be in the
  4796. foreground.
  4797. @.NH 3
  4798. Tty Driver Provisions
  4799. @.PP
  4800. To distinguish between foreground and background
  4801. programs the tty driver must perform checks on attempted I/O operations to
  4802. a process's controlling terminal.
  4803. This is done in several places.
  4804. @.PP
  4805. At the beginning of a read/write system call the tty driver checks
  4806. to see if the calling process is in the background.
  4807. If it is, then all processes in the
  4808. process group of the calling process are sent the appropriate
  4809. signal (SIGTTIN or SIGTTOU) unless the signal is masked or ignored
  4810. by the calling process.  In this case the driver returns the EIO error.
  4811. After the tty driver sends the signal, the calling process is put to
  4812. sleep waiting for the \fIlightning bolt event\fP\(dg.
  4813. @.FS
  4814. \(dg The lightning bolt event is a standard
  4815. @.UX
  4816. event which occurs frequently, for example, every second.
  4817. @.FE
  4818. This allows the calling process to receive the signal (and usually stop).
  4819. When the process returns from the sleep (usually by being continued) the
  4820. tty driver repeats the foreground/background check before proceeding with
  4821. the operation.
  4822. @.PP
  4823. When the process is in the foreground, the I/O operation proceeds.
  4824. In the case of a terminal read this usually results in the process being
  4825. put to sleep to wait for input characters to arrive.
  4826. At this point the user could type their suspend character (e.g., ^Z).
  4827. This causes the interrupt portion of the tty driver to send SIGTSTP
  4828. to the controlling terminal's process group (i.e., all processes which
  4829. are in the foreground).  In our scenario this
  4830. would include the process sleeping on terminal input, and this would
  4831. typically cause it to stop.
  4832. @.PP
  4833. When a sleeping process is stopped it is also left sleeping as well.
  4834. If, in this case, tty input characters subsequently arrived then the 
  4835. process would
  4836. be awakened.  However, because it is also stopped, it would not be
  4837. set running; it would merely be "unslept".
  4838. @.PP
  4839. At some later time the process would be continued (e.g., via a csh
  4840. "fg" or "bg" command which sends SIGCONT).
  4841. If the process had not been previously unslept it would merely continue
  4842. its sleeping; it would receive no indication that it had stopped and 
  4843. continued.
  4844. If the process had been previously unslept it would now be set running.
  4845. @.PP
  4846. When the process is set running it resumes execution in the tty driver.
  4847. Because a (potentially substantial) amount of time has elapsed and
  4848. because the process may have been stopped and restarted,
  4849. the tty driver is no longer sure whether this process is still in
  4850. the foreground.
  4851. So before checking if input characters are available, the tty driver
  4852. rechecks whether the process is in the foreground or background.
  4853. This is necessary because, in our
  4854. scenario, the stopped process could have been continued in the background
  4855. (via csh "bg").  To check this the tty driver merely repeats the
  4856. foreground/background check it made at the beginning of the system call.
  4857. @.sp 1
  4858. @.NH
  4859. SYSTEM V INCOMPATIBILITIES AND THEIR RESOLUTIONS
  4860. @.PP
  4861. Job control as implemented in 4.2BSD is incompatible with System V
  4862. semantics in some significant respects.  This section discusses
  4863. each of these incompatibilities and the resolution implemented in HP-UX
  4864. to maintain System V compatibility.
  4865. @.PP
  4866. The system interface needed to support 4.2BSD-style job control,
  4867. tailored for System V compatibility as discussed in this section,
  4868. is presented in the form of manual page excerpts in [Len86].
  4869. @.NH 2
  4870. Setpgrp(2) Changes
  4871. @.PP
  4872. Because the needed semantics of 4.2BSD setpgrp(2) conflict with the
  4873. semantics of System V setpgrp(2), the 4.2BSD setpgrp(2) function was renamed
  4874. to be setpgrp2(2).  (The choice of new name is arbitrary; setpgrp2 was chosen
  4875. in the same spirit as 4.2BSD's wait3(2).)
  4876. @.NH 2
  4877. SIGHUP Changes
  4878. @.PP
  4879. System V semantics state that when a process group leader dies, all processes
  4880. in the same process group are sent the SIGHUP signal which, by default, kills
  4881. all the processes.
  4882. @.PP
  4883. Job control shells execute a command by making all processes in the pipeline
  4884. belong to the same (brand new) process group and by making the first program
  4885. in the pipeline be the process group leader.  Typically, the first program in a
  4886. pipeline terminates before the other programs.  Under System V semantics,
  4887. this would cause the premature death of the remaining pipeline.  Because
  4888. of this, 4.2BSD does not generate SIGHUP on process group leader death.
  4889. @.PP
  4890. In order to support System V semantics and still allow job control to
  4891. function properly, HP-UX makes a distinction between a "System V process
  4892. group leader" and a "job control process group leader".  A System V 
  4893. process group leader is given System V semantics (SIGHUP is generated)
  4894. and a job control process group leader is given 4.2BSD semantics (SIGHUP
  4895. is not generated).
  4896. A process which becomes a process group leader via setpgrp(2) is considered
  4897. to be a System V process group leader.
  4898. A process which becomes a process group leader via setpgrp2(2) is considered
  4899. to be a job control process group leader.
  4900. Since the HP-UX (and System V) init(1M) program calls setpgrp(2) on behalf
  4901. of all processes it spawns, all login shells start out as System V process
  4902. group leaders.  A process must explicitly call setpgrp2(2) to deviate from
  4903. the System V semantics.
  4904. @.NH 2
  4905. SIGCLD Changes
  4906. @.PP
  4907. Under System V, SIGCLD is sent to a process whenever one of its immediate
  4908. child processes dies.
  4909. Under 4.2BSD, SIGCLD (or its variant, SIGCHLD) is also generated
  4910. when a process changes state from running to stopped.
  4911. Since a System V application would not expect to receive SIGCLD
  4912. under these new circumstances and since a job control shell would
  4913. not be able to function properly without such notification, a compatible
  4914. compromise was developed.
  4915. @.PP
  4916. The (parent) process wishing to trap SIGCLD may set a flag when calling
  4917. the HP-UX sigvector(2)\(dg
  4918. @.FS
  4919. \(dg Sigvector(2) is an HP-UX extension proposed to the IEEE P1003 [Head85]
  4920. which supports both the reliable
  4921. signal operations of 4.2BSD sigvec(2) and the conventional signal 
  4922. operations of System V signal(2).  In HP-UX, signal(2) is implemented
  4923. as a library using sigvector(2).
  4924. Note that the changes proposed here to sigvector(2) can be identically
  4925. made to 4.2BSD sigvec(2).
  4926. @.FE
  4927. \|routine to establish a signal handler.  This flag
  4928. will cause SIGCLD to be sent for stopped children, in addition to terminated
  4929. children.
  4930. A System V application using signal(2) will see the System V compatible
  4931. SIGCLD semantics.
  4932. @.NH 2
  4933. Controlling Terminal Changes
  4934. @.PP
  4935. Under System V, whenever a process group leader dies, the controlling terminal
  4936. associated with that process group (if any) is deallocated (disassociated from
  4937. that process group).
  4938. 4.2BSD does not deallocate controlling terminals on process group leader death
  4939. for the following reason:
  4940. Job control shells make the lead process in every pipeline a process
  4941. group leader.  If the controlling terminal for each pipeline were deallocated
  4942. whenever the lead process terminated, then the remaining processes would
  4943. effectively become background processes (assuming they were currently in
  4944. the foreground) and would stop when any of them attempted subsequent I/O to the
  4945. terminal.
  4946. @.PP
  4947. To allow both semantics, controlling terminals are only deallocated when
  4948. a "System V process group leader" dies and not when a "job control process
  4949. group leader" dies.  (See the discussion of SIGHUP changes above.)
  4950. @.PP
  4951. However, this change leads to the following problem:
  4952. In order for a terminal to be allocated as a controlling terminal for a 
  4953. new login, it must be deallocated when the previous login terminates.
  4954. System V relies on process group leader death to deallocate controlling
  4955. terminals (since all login shells are forced to be process group leaders
  4956. by init(1M)).
  4957. This is no longer reliable since login shells could become "job control
  4958. process group leaders".  Further, not all logins are spawned directly
  4959. by init(1M); the 4.2BSD rlogin facility is a prime example.
  4960. 4.2BSD solves this problem by allowing a new login to join the process
  4961. group of the controlling terminal which is still allocated from the 
  4962. previous login.  However this violates System V compatibility.
  4963. @.PP
  4964. The solution chosen was to mark a process that causes a controlling
  4965. terminal to be allocated and to deallocate the controlling terminal
  4966. whenever that process terminates.  This reliably catches logins which
  4967. are spawned either directly or indirectly from init(1M), whether they are
  4968. "System V process group leaders" or not.  Controlling terminals continue
  4969. to be deallocated on death of System V process group leaders using the
  4970. System V semantics.
  4971. @.NH 2
  4972. Security
  4973. @.PP
  4974. Several security holes exist in the 4.2BSD process group altering
  4975. mechanisms.  To plug these holes the following changes were made.
  4976. @.PP
  4977. 4.2BSD setpgrp(2) allows a process to alter the process group associated
  4978. with another process to any value.
  4979. 4.2BSD restricts this operation so that the
  4980. affected process must pass the same security restrictions enforced when
  4981. sending signals, or must be a descendent of the calling process.
  4982. However, this still allows a process to join a process group
  4983. already associated with another user.
  4984. To tighten this security, setpgrp2(2) was further restricted such that if the
  4985. specified new process group value is equal to the process ID (pid) or
  4986. process group ID of any existing processes, then all such processes must
  4987. pass the above security restrictions.
  4988. @.PP
  4989. Similarly, the 4.2BSD TIOCSPGRP ioctl(2) allows a terminal's process group
  4990. to be altered to any value.  This allows a user's terminal to easily become
  4991. an additional "controlling terminal" for another user's process group;
  4992. keyboard signals can be sent to the other user's processes, thus bypassing
  4993. the security enforced by kill(2).
  4994. Because of this, the TIOCSPGRP ioctl(2) was altered to enforce similar
  4995. security restrictions as setpgrp2(2).
  4996. @.PP
  4997. In System V and 4.2BSD, a process can obtain access to its controlling
  4998. terminal by opening the file \fI/dev/tty\fP.  Under System V, processes
  4999. left executing after a user's logout are allowed further access to
  5000. \fI/dev/tty\fP until the terminal it represents is reallocated as a
  5001. controlling terminal for a new login.  More specifically, \fI/dev/tty\fP
  5002. access is allowed whenever the process group ID of the leftover process
  5003. matches the process group ID of the terminal.  These IDs continue to match
  5004. immediately after logout (since both have been zeroed) until the terminal
  5005. is re-enabled for login by getty(1M).  (Note that when the new login
  5006. terminates, \fI/dev/tty\fP access is restored again to these prior processes
  5007. because the controlling terminal's process group ID is re-zeroed.)  Further,
  5008. if a process has its controlling terminal opened directly (not
  5009. via the \fI/dev/tty\fP synonym) then access is not restricted at all after
  5010. logout.
  5011. These System V semantics can constitute security problems.  However, they
  5012. are not explicitly required by the System V Interface Definition [ATT86].
  5013. @.PP
  5014. 4.2BSD does nothing to hamper \fI/dev/tty\fP access for processes remaining
  5015. after logout.  The process group ID for the controlling terminal is not
  5016. altered, and, in fact, it is preserved even into the next login (since
  5017. subsequent logins join the already existing process group associated with the
  5018. terminal, if any).  These semantics also represent security problems.
  5019. However, 4.2BSD does prohibit access to the controlling terminal if it
  5020. is opened directly; this is accomplished when init(8) issues the vhangup(2)
  5021. system call.
  5022. @.PP
  5023. Although preserving the System V semantics for controlling terminal access
  5024. after logout is not deemed necessary or even recommended, it is easy to do
  5025. in the following way.
  5026. Whenever a process that allocated a controlling terminal dies, all processes
  5027. which share this controlling terminal have their process group ID zeroed.
  5028. This is analogous to, and occurs in addition to, the System V behavior of
  5029. zeroing the process group ID for all related processes when their process
  5030. group leader dies.  \fI/dev/tty\fP checks similar to System V can then
  5031. be employed.
  5032. @.NH 2
  5033. TTY Driver Considerations
  5034. @.PP
  5035. For System V compatibility, the suspend and delayed suspend characters
  5036. are defaulted to a disabled value (0377).  This means that job control
  5037. is "inactive" by default when a user logs on.  The user must explicitly
  5038. activate job control by defining either or both of these characters via
  5039. stty(1) or some similar interface.
  5040. @.PP
  5041. There should be no problem allowing 4.2BSD-style job control, as modified
  5042. here, to co-exist with System V's shell layers job control system.
  5043. (See shl(1) and sxt(7) in the System V Release 2 reference manuals.)
  5044. @.sp 1
  5045. @.NH
  5046. HP-UX
  5047. @.NH 2
  5048. Introduction
  5049. @.PP
  5050. HP-UX process groups are used in two major ways.
  5051. @.PP
  5052. System V process groups closely resemble the concept of a login session.
  5053. That is, all processes spawned during the same login session tend to
  5054. belong to the same process group, and keyboard signals are typically
  5055. sent to all processes spawned from the login session.
  5056. @.PP
  5057. Job control process groups closely resemble the concept of a task within
  5058. a login session, where a task represents a set of processes which
  5059. are affected as a group by job control operations.
  5060. Every time a job control shell (e.g., csh) spawns either a foreground
  5061. or background command, all processes in the pipeline (and their
  5062. descendents) are placed in their own unique process group with the
  5063. first command in the pipeline being the process group leader.
  5064. @.PP
  5065. A task is in the foreground when the process group associated with the
  5066. controlling terminal for the task (t_pgrp) is equal to the process
  5067. group associated with the processes in the task (p_pgrp).  
  5068. Otherwise the task is in the background.
  5069. A job control shell moves a job between the foreground and background
  5070. by adjusting the terminal process group (t_pgrp) of the controlling
  5071. terminal.
  5072. @.PP
  5073. Note that a job control shell forms new process groups with process 
  5074. group leaders
  5075. much more often than a non-job control (System V) shell usually does
  5076. (every command versus every login).
  5077. @.NH 2
  5078. HP-UX Process Group Handling
  5079. @.PP
  5080. In HP-UX, the process group associated with a process (p_pgrp)
  5081. can be altered via setpgrp(2) or setpgrp2(2).
  5082. @.PP
  5083. As in System V, setpgrp(2) can only set the process
  5084. group to equal the process ID (pid) of the process.  When this happens,
  5085. the resulting process with pid = p_pgrp is called a System V process group
  5086. leader.
  5087. @.PP
  5088. Setpgrp2(2) is analogous to setpgrp(2) except that it can affect
  5089. processes other than the current process and can cause the affected
  5090. process to adopt a process group other than that process's process ID (pid).
  5091. Setpgrp2(2) also forms job control process groups rather than System V
  5092. process groups.
  5093. Using setpgrp2(2), the calling process, or certain other processes, can either
  5094. become a job control process group leader or can cease to be a process
  5095. group leader.
  5096. @.PP
  5097. Because job control process groups are handled slightly differently
  5098. by HP-UX than System V process groups, HP-UX marks processes
  5099. that are job control process group leaders (i.e., that have
  5100. called setpgrp2(2) without subsequently calling setpgrp(2)).
  5101. @.PP
  5102. The init(1M) process spawns all other processes on the system either
  5103. directly or indirectly.  Before directly spawning a process
  5104. (after the fork(2) but before the exec(2)),
  5105. init calls setpgrp(2).
  5106. Thus all original children (not orphans) of init are forced to
  5107. start out as System V process group leaders.
  5108. @.PP
  5109. When a new process is created, it is assigned a new pid but it inherits
  5110. the process group number of its parent.  Thus child processes are, by
  5111. default, not process group leaders (although they can become a process
  5112. group leader via either setpgrp(2) or setpgrp2(2)).
  5113. @.PP
  5114. When a System V process group leader that has a controlling terminal
  5115. (see below) terminates, SIGHUP is sent to all processes in the same
  5116. process group.
  5117. Further, when a System V process group leader terminates, all processes
  5118. which belong to this process group are altered to belong to no process group
  5119. (their p_pgrp is set to zero).
  5120. @.PP
  5121. Also, whenever any process that allocated a controlling terminal terminates,
  5122. all processes that share this controlling terminal are altered to belong
  5123. to no process group (their p_pgrp is set to zero).
  5124. @.PP
  5125. When any process exits, any pending SIGTTIN, SIGTTOU, and SIGTSTP signals
  5126. are cleared from all descendent processes (not just immediate children).
  5127. @.NH 2
  5128. HP-UX Controlling Terminals
  5129. @.PP
  5130. A terminal that is currently open by a process may also be a "controlling
  5131. terminal" for a process group (collection of processes).  When certain
  5132. control characters are typed on a controlling terminal, signals are 
  5133. sent by the terminal driver to all processes which belong to the process
  5134. group associated with the terminal.  These include the job control suspend
  5135. and delayed suspend characters.
  5136. @.PP
  5137. Controlling terminals also play a role in determining whether a process
  5138. is in the foreground or background.  See FOREGROUND/BACKGROUND PROCESSES
  5139. above.
  5140. @.PP
  5141. When a process becomes a System V process group leader (via setpgrp(2)) it
  5142. automatically loses its controlling terminal.
  5143. (This does not happen for a job control process group leader, i.e. when
  5144. calling setpgrp2(2).)
  5145. After this,
  5146. the first terminal (that is not already a controlling terminal)
  5147. opened by a process that is a (System V or job control) process group leader
  5148. is assigned to be the controlling terminal for that process;
  5149. also the process group associated with that terminal (t_pgrp) is set
  5150. equal to the process group associated with the process group leader
  5151. process (p_pgrp).
  5152. All child processes inherit the controlling terminal and
  5153. process group of their parent.
  5154. @.PP
  5155. More precisely, in HP-UX, the process group associated with a 
  5156. terminal (t_pgrp), can be changed in the following ways:
  5157. @.IP (1)
  5158. When a terminal is opened by a System V or job control
  5159. process group leader (pid == p_pgrp)
  5160. that does not already have a controlling terminal,
  5161. it becomes the controlling terminal for that process group 
  5162. (t_pgrp is set equal to p_pgrp) if it is not already a controlling
  5163. terminal.
  5164. @.IP (2)
  5165. When a System V process group leader (pid == p_pgrp) dies, if it has a 
  5166. controlling terminal that is associated with the same process
  5167. group (t_pgrp == p_pgrp), that terminal is disassociated from that
  5168. process group (t_pgrp is set to zero).
  5169. @.IP (3)
  5170. When any process dies which originally caused a controlling terminal
  5171. to be created (see (1) above),
  5172. if it still has a controlling terminal,
  5173. that terminal is disassociated from its
  5174. process group (t_pgrp is set to zero).
  5175. @.IP (4)
  5176. When the last process to have a terminal open closes that terminal,
  5177. the terminal is disassociated from its process group (t_pgrp
  5178. is set to zero).
  5179. @.IP (5)
  5180. The TIOCSPGRP ioctl(2) call can explicitly change a terminal's
  5181. process group (t_pgrp) to any value within certain security restrictions.
  5182. This is used by a job control shell to change which set of processes
  5183. (process group) is in the foreground.
  5184. @.NH 2
  5185. HP-UX Typical Scenario
  5186. @.PP
  5187. This is a typical scenario for the birth and death of a login, its 
  5188. controlling terminal, and the process groups associated with a job.
  5189. @.PP
  5190. The init(1M) process wants to enable a terminal for login.  It creates a
  5191. new process via fork(2) and calls setpgrp(2) to make it a System V process
  5192. group leader which also removes its controlling terminal.  Init then runs
  5193. the getty(1M) program as the process via exec(2).
  5194. Getty opens the terminal causing the terminal to become getty's controlling
  5195. terminal
  5196. and be associated with getty's process group (t_pgrp is set to p_pgrp).
  5197. As a side effect, this process is now marked as having created a controlling
  5198. terminal; when it dies the controlling terminal will be freed for re-use.
  5199. Getty replaces itself with login(1) which replaces itself with a login
  5200. shell.
  5201. @.PP
  5202. At this point one of two scenarios typically takes place.  The login shell
  5203. is either a job control shell (e.g., csh(1)) or it is not (e.g., sh(1)).
  5204. @.PP
  5205. If the login shell is not a job control shell then things proceed much
  5206. as they do on System V.
  5207. Usually no program calls setpgrp(2) or setpgrp2(2) and thus all 
  5208. descendent processes
  5209. of the login shell are in the same process group and have the same
  5210. controlling terminal; keyboard signals are sent to all processes launched
  5211. during this session.
  5212. @.PP
  5213. If the login shell is a job control shell, then job control operations are
  5214. performed.
  5215. Csh begins to manipulate the process group associated with the
  5216. terminal (t_pgrp) via the TIOCSPGRP and TIOCGPGRP ioctl(2) calls and
  5217. the process group associated with its child processes (p_pgrp) via
  5218. setpgrp2(2) in order to allow job control.  This happens (briefly) in the
  5219. following way:
  5220. @.PP
  5221. Csh launches a pipeline by making all programs in the pipeline be
  5222. immediate descendents of csh.  (This is different from sh which makes
  5223. all programs in the pipeline except the last be descendents of the
  5224. last program in the pipeline.)
  5225. All programs in the pipeline belong to the same process group (not the
  5226. same as csh's process group) and the first program in the pipeline is
  5227. the process group leader (its pid is equal to the process group for the
  5228. pipeline).  This process is specially marked as a job control process
  5229. group leader since it was established via setpgrp2(2); this basically
  5230. prevents SIGHUP from being sent to the pipeline when the lead process dies.
  5231. If the pipeline is being launched in the foreground (or moved to the
  5232. foreground) then the process group associated with the terminal (t_pgrp)
  5233. is set to the process group of the pipeline via the TIOCSPGRP ioctl(2).
  5234. @.PP
  5235. When a logout occurs, the login shell dies.
  5236. Any pending SIGTTIN, SIGTTOU, and SIGTSTP signals are cleared for all 
  5237. descendent processes.
  5238. All immediate child processes are inherited as orphans by init; if any are
  5239. currently stopped then they are killed (SIGKILL).
  5240. Since the login shell (actually the getty before it was overlaid) created
  5241. a controlling terminal, the controlling terminal is now freed (t_pgrp
  5242. is set to zero) so that it can be claimed as a controlling terminal by
  5243. a subsequent getty respawned by init; also, all processes which share
  5244. this controlling terminal have their process group (p_pgrp) set to zero.
  5245. @.PP
  5246. When a logout occurs and
  5247. the login shell is a System V process group leader, SIGHUP is sent
  5248. to all processes in the same process group, and the process group (p_pgrp)
  5249. of all descendent processes is set to zero.
  5250. @.PP
  5251. Note that there may continue to be background processes (previously
  5252. started by the
  5253. now defunct login shell) which continue to execute but
  5254. keyboard signals will no longer be sent to these processes (since
  5255. both t_pgrp and p_pgrp equal zero).
  5256. @.sp 1
  5257. @.NH
  5258. ACKNOWLEDGEMENTS
  5259. @.PP
  5260. The following people from Hewlett-Packard contributed to the interface
  5261. design and implementation of job control for HP-UX:
  5262. Jim Barton,
  5263. Dave Decot,
  5264. Larry Dwyer,
  5265. Jeff Glasson,
  5266. Rita Hanson,
  5267. Stephen Hares,
  5268. Steve Head,
  5269. Bob Lenk,
  5270. John Marvin,
  5271. Dave Mears,
  5272. Peter Notess,
  5273. Arn Schaeffer,
  5274. Eviatar Shafrir.
  5275. @.PP
  5276. Guy Harris from Sun Microsystems made many substantive comments and suggestions
  5277. which contributed to the interface design and to this paper.
  5278. @.sp 3
  5279. @.NH
  5280. REFERENCES
  5281. @.IP [ATT86] 15
  5282. \fISystem V Interface Definition\fP, Issue 2, AT&T, 1986.
  5283. @.IP [Bach84]
  5284. M. J. Bach and S. J. Buroff, "Multiprocessor 
  5285. @.UX
  5286. Operating Systems",
  5287. \fIAT&T Bell Lab. Tech. J.\fP, \fB63,\fP No. 8 (October 1984),
  5288. pp. 1733-1749.
  5289. @.IP [Head85]
  5290. Stephen Head and Donn Terry, "Reliable Signals Proposal",
  5291. IEEE P1003 Proposal #P.042, Hewlett-Packard Co., September 11, 1985.
  5292. @.IP [Joy80]
  5293. William Joy, "An Introduction to the C Shell",
  5294. Computer Science Division, University of California
  5295. at Berkeley, November 1980.
  5296. @.IP [Len86]
  5297. David Lennert, Guy Harris, et. al.,
  5298. "System V Compatible BSD-style Job Control Facilities",
  5299. IEEE P1003 Proposal #P.047, Hewlett-Packard Co. & Sun Microsystems,
  5300. April 9, 1986.
  5301. @.IP [Ritch79]
  5302. Dennis M. Ritchie, "The
  5303. @.UX
  5304. I/O System",
  5305. \fIUNIX Programmer's Manual\fP, Seventh Edition, Volume 2b,
  5306. Bell Telephone Laboratories, Murray Hill, NJ, January 1979.
  5307. @.IP [Roch85]
  5308. Marc J. Rochkind,
  5309. \fIAdvanced
  5310. @.UX
  5311. Programming\fP,
  5312. Englewood Cliffs, N.J.: Prentice-Hall, 1985.
  5313. @.IP [Harris86]
  5314. Guy Harris, "Notes on Signal, Terminal Interface, and User/Group ID
  5315. Handling Proposals", IEEE P1003 Proposal #P.045, Sun Microsystems,
  5316. January 11, 1986.
  5317. @.IP [Thom78]
  5318. K. Thompson, "UNIX Implementation",
  5319. \fIBell System Tech. J.\fP, \fB57,\fP No. 6 (July - August 1978),
  5320. pp. 1931-1946.
  5321. @.IP [UCB83]
  5322. \fIUNIX Programmer's Manual\fP, 4.2 Berkeley Software Distribution, Virtual 
  5323. VAX-11 Version, Computer Science Division, University of California
  5324. at Berkeley, August 1983.
  5325. @.PP
  5326. @.bp
  5327. @.DS C
  5328. APPENDIX
  5329.  
  5330. JOB CONTROL MANUAL PAGE EXCERPTS
  5331. @.DE
  5332. @.PP
  5333. The following pages contain the
  5334. @.UX
  5335. manual pages which are effected by adding a System V compatible
  5336. implementation of 4.2BSD job control.  Note that each manual page
  5337. generally contains only that portion of text which differs from the
  5338. System V manual page of the same name.  Sometimes, unchanged text
  5339. is provided for locality reference.  Changed text lines are flagged
  5340. with change bars.
  5341. @//E*O*F jobpaper.ms//
  5342. chmod u=rw,g=rw,o=r jobpaper.ms
  5343.  
  5344. echo Inspecting for damage in transit...
  5345. temp=/tmp/shar$$; dtemp=/tmp/.shar$$
  5346. trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
  5347. cat > $temp <<\!!!
  5348.    1200   8792  53685 jobpaper.ms
  5349. !!!
  5350. wc  jobpaper.ms | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
  5351. if [ -s $dtemp ]
  5352. then echo "Ouch [diff of wc output]:" ; cat $dtemp
  5353. else echo "No problems found."
  5354. fi
  5355. exit 0
  5356.  
  5357.  
  5358. Volume-Number: Volume 7, Number 54
  5359.  
  5360. From news  Tue Oct 14 11:13:01 1986
  5361. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5362. Newsgroups: mod.std.unix
  5363. Subject: Re: job control
  5364. Message-Id: <6001@ut-sally.UUCP>
  5365. References: <5965@ut-sally.UUCP> <5932@ut-sally.UUCP> <5991@ut-sally.UUCP>
  5366. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5367. Date: 14 Oct 86 16:12:48 GMT
  5368. Draft-9: job.control
  5369.  
  5370. From: cbosgd!cbosgd.ATT.COM!mark@seismo.css.gov (Mark Horton)
  5371. Date: Sun, 12 Oct 86 23:50:46 edt
  5372. Organization: AT&T Medical Information Systems, Columbus
  5373.  
  5374. The virtual screen stuff, such as UNIX or Xenix on a PC have, should be
  5375. considered a poor cousin of a true bitmapped window capability.  Aside
  5376. from losing the ability to watch two windows at once, they are essentially
  5377. the same.  Both are nice, neither is an alternative for anything except
  5378. a personal computer or workstation.
  5379.  
  5380. By the way, another possibility has been suggested: something like System
  5381. V's shell layers, but using scrolling regions in a vt100 or similar terminal
  5382. to lock the terminal into the appropriate window.  You lose the ability to
  5383. see async updates in another window, and you still need ptys and select,
  5384. but you don't need curses, and you shouldn't get the mushy feeling.
  5385. Something would have to be done about ^Z not working in raw mode, so you
  5386. could break out of an rlogin or cu or vi.  One way to do this would be
  5387. something like Berkeley's TIOCSTI, so the program can detect the situation
  5388. (using a multi-char escape sequence), take itself out of raw mode, and
  5389. type the ^Z itself.
  5390.  
  5391. (Henry's complaint about user programs having to be modified is a minor
  5392. one, in my opinion.  A program that isn't screen oriented needs no
  5393. modification.  A program that is screen oriented can use curses, and
  5394. curses can catch the signal and redraw the screen as needed.  The only
  5395. programs that need modification are those that have to be transparently
  5396. able to pass ^Z through, this mostly means remote login programs, and
  5397. they need this kind of capability without job control anyway.)
  5398.  
  5399. >From: guy@sun.com (Guy Harris)
  5400. >
  5401. >> (1) True windows, such as a 5620, Sun, UNIX PC, etc.  Each window
  5402. >> acts like a terminal.  This is unquestionably the best, but it
  5403. >> requires special hardware, and is an area that needs to be
  5404. >> standardized.
  5405. >
  5406. >At some point, perhaps.  It's unclear whether now is the time to do so.
  5407.  
  5408. I did not mean to imply that it should be standardized NOW, although I
  5409. think the field is starting to generate enough examples that it would be
  5410. worthwhile for someone to start looking at it.  We certainly aren't ready
  5411. to put it into P.1003 yet.
  5412.  
  5413. What I meant is that certain common elements should be standardized,
  5414. in particular, the ioctl to get and set the current window size.
  5415. These all look the same, but with different particulars.
  5416.  
  5417. >> (b) an ioctl to find out the current window size, in chars and pixels.
  5418. >
  5419. >The current proposal has this, but does not give the window size in pixels.
  5420. >The "termio" interface is really not a good portable interface for doing
  5421. >graphics, since most terminals can't do graphics.  As such, it's not clear
  5422. >why the window size in pixels should be provided by this interface.
  5423.  
  5424. The reason I mention pixels is that many of the existing ioctls seem to
  5425. bundle the pixel numbers and char numbers into the same ioctl.  Perhaps
  5426. it does make sense to separate them.
  5427.  
  5428. By the way, I think both "get" and "set" operations should be standardized,
  5429. and the standard should state that both ioctls must work on both sides of
  5430. the pty.  (This assumes we can appropriately specify what a "pty" is.)
  5431.  
  5432. The "get" operation can indeed be isolated into tgetnum (termcap) and
  5433. setupterm (terminfo.)  But lack of standardization means that the sources
  5434. to termcap and terminfo have to be cluttered up with umpteen different
  5435. ways to do the same thing.
  5436.  
  5437. The "set" operation is needed for window managers, and also so there can
  5438. be a shell command to set the window size when the system gets it wrong.
  5439. (The system gets it wrong a lot in practice, all you have to do is remote
  5440. login through a link that doesn't pass the window size, such as cu, telnet,
  5441. or 4.2's rlogin.  (4.3 passes the size.))  Sometimes windows get resized,
  5442. too, so it would be useful for the cu/rlogin program to be able to send a
  5443. shell command through when this happens.)
  5444.  
  5445.     Mark
  5446.  
  5447. Volume-Number: Volume 7, Number 55
  5448.  
  5449. From news  Tue Oct 14 11:28:26 1986
  5450. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5451. Newsgroups: mod.std.unix
  5452. Subject: Re: Case sensitive file names
  5453. Message-Id: <6002@ut-sally.UUCP>
  5454. References: <5860@ut-sally.UUCP>
  5455. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5456. Date: 14 Oct 86 16:28:12 GMT
  5457. Draft-9: 2.3.folding
  5458.  
  5459. From: mcvax!axis!philip (Philip Peake)
  5460. Organization: Axis Digital, 135 rue d'Aguesseau, Boulogne, 92100, FRANCE
  5461.  
  5462. >OK, here's a new topic.  File names.
  5463. >
  5464. >UNIX is the only major operating system
  5465. >that treats things like file names, logins, host names, and commands
  5466. >as case sensitive.  The net effect of this is that users get
  5467. >confused, since they have to get the capitalization right every time.
  5468.  
  5469. This is mainly because such users move from restrictive environments
  5470. where they are forced to use a single case. if you look at the problems
  5471. of *NEW* users - those not having been crippled by having already worked
  5472. in a single case environment, the natural method of working is in
  5473. two cases. I have never found anyone incapable of understanding that
  5474. upper and lowwer case letters are different.
  5475.  
  5476. >To avoid confusion, everybody always just uses lower case.
  5477.  
  5478. Maybe you do, but, there are many people who don't.
  5479.  
  5480. >there are few, if any, benefits from a two-case system, and any time
  5481. >anyone tries to do something that isn't pure lower case, it causes
  5482. >confusion for somebody and often breaks some program.
  5483.  
  5484. This is mainly bad software engineering. Taken to its logical conclusion
  5485. one could say that letting users get at programs often breaks them
  5486. (the programs that it, (usually)) so let's ban users.
  5487.  
  5488. >Another problem is that emulations on other operating systems,
  5489. >such as VMS or MS DOS, will become impossible without drastic
  5490. >changes to their file systems.  Given the problems in the above
  5491. >paragraph, plus politics as usual, I think it is unlikely that
  5492. >other systems will be changed to have case sensitive file systems.
  5493. >After all, it's not like it was easiest to make the VMS filesystem
  5494. >case insensitive - that took extra effort on their part.
  5495.  
  5496. It seems to me that this extra effort was needed to circumvent the
  5497. extra effort needed in making their system work correctly with
  5498. all the legal ascii characters - it was designed by a team of
  5499. people who had been mentaly crippled by using such a one-case
  5500. system.
  5501.  
  5502. >I think it's a mistake to move in the direction of requiring other
  5503. >operating systems to become case sensitive.  If anything, motion in
  5504. >the other direction might be of more benefit.
  5505.  
  5506. This seems like a retrograde step.
  5507.  
  5508. >Note: I am NOT suggesting that UNIX should have a case insensitive
  5509. >filesystem that maps everything to UPPER CASE like MS DOS.  There is
  5510. >nothing wrong with mapping everything to lower case, for example.
  5511. >It's also reasonable to leave the case alone, but ignore case in
  5512. >comparisons.  There is also probably a good argument for keeping
  5513. >it case sensitive (after all, there are probably 5 or 6 people out
  5514. >there who really need both makefile and Makefile, or both mail and
  5515. >Mail, for some reason that escapes me at the moment.)
  5516.  
  5517. Here we have a typing error, I think that you really meant 5*10^4 or
  5518. 6*10^4, didn't you Mark ?
  5519.  
  5520. This seems to be a logical extention to the ridiculous proposal
  5521. for command names and options which came from Bell Labs. some time
  5522. ago - all lower case, single letter options etc.
  5523.  
  5524. If you want to use upper and lowwer case for login names, it is a simple
  5525. matter to re-write login to be case insensitive.
  5526.  
  5527. If you want the same for file name handling in the shell, again it is
  5528. fairly simple to add a test for some environment variable, which
  5529. would force upper-lower case equivalence. Exactly what happens then
  5530. if you have both Makefile and makefile (which is another case of bad
  5531. software enginering - that make accepts both) you get both files,
  5532. or maybe an error. That's your problem, but I want to keep the ability
  5533. to use both cases.
  5534.  
  5535. In a more general case, are you suggesting that UNIX is going to be
  5536. forever tied to ASCII - what about internationalisation issues - how
  5537. do you handle non-english alphabets where case may be CRITICALLY
  5538. important.
  5539.  
  5540. I would propose that the current scheme is a good one - allow file names
  5541. to be composed of any characters in the base character set.
  5542.  
  5543. Philip Peake
  5544.  
  5545. Volume-Number: Volume 7, Number 56
  5546.  
  5547. From news  Tue Oct 14 11:43:08 1986
  5548. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5549. Newsgroups: mod.std.unix
  5550. Subject: Re: job control
  5551. Message-Id: <6003@ut-sally.UUCP>
  5552. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5553. Date: 14 Oct 86 16:42:39 GMT
  5554. Draft-9: job.control
  5555.  
  5556. From: shannon@sun.com (Bill Shannon)
  5557. Date: Sun, 12 Oct 86 22:37:40 PDT
  5558.  
  5559. > From: cbosgd!cbosgd.ATT.COM!mark@seismo.css.gov (Mark Horton)
  5560. >
  5561. >    ...
  5562. >
  5563. > (b) an ioctl to find out the current window size, in chars and pixels.
  5564.  
  5565. I've argued this with the people at Berkeley and lost, but I'll try
  5566. again here.  I don't believe there should be an ioctl to find out
  5567. the pixel size of a "window".  This seems to me to be the wrong way
  5568. to retrieve this information.  The pixel size is of no use to programs
  5569. that deal only in characters.  Only programs manipulating windows will
  5570. need to know the pixel size.  Whatever mechanism is used to manipulate
  5571. window should also be used to find out the pixel size of the window.
  5572. (Of course, this may be, but is not required to be, ioctl's.)  The tty
  5573. subsystem, which deals only in characters, should not know anything
  5574. about pixels or windows.
  5575.  
  5576.                     Bill Shannon
  5577.  
  5578. Volume-Number: Volume 7, Number 57
  5579.  
  5580. From news  Tue Oct 14 11:45:25 1986
  5581. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5582. Newsgroups: mod.std.unix
  5583. Subject: Re: job control
  5584. Message-Id: <6004@ut-sally.UUCP>
  5585. References: <5986@ut-sally.UUCP> <5932@ut-sally.UUCP> <5990@ut-sally.UUCP>
  5586. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5587. Keywords: windows virtual consoles termcap terminfo
  5588. Date: 14 Oct 86 16:44:57 GMT
  5589. Draft-9: job.control
  5590.  
  5591. From: campbell%maynard.UUCP@harvisr.harvard.edu (Larry Campbell)
  5592. Date: Sun, 12 Oct 86 11:43:38 EDT
  5593. Organization: The Boston Software Works, Inc.
  5594.  
  5595. In article <5990@ut-sally.UUCP> guy@sun.com (Guy Harris) writes:
  5596.  
  5597. >This sort of windowing mechanism doesn't even necessarily require a
  5598. >memory-mapped screen; it merely needs a way to redraw a window when it moves
  5599. >to the front.  Mark Horton's earlier message describes a window manager for
  5600. >dumb terminals; it even permits more than one window on the screen.
  5601.  
  5602. Of course, but I suspect that redrawing windows over a serial line
  5603. would be tedious -- unless the serial line were running at 56KB or better.
  5604.  
  5605. >As for the window size "ioctl", consider this: any program that thinks it's
  5606. >always dealing with a "perfectly ordinary 24x80 terminal" is going to be
  5607. >quite surprised when run on an Ann Arbor Ambassador with 60 lines.  Programs
  5608. >should not make assumptions like that.
  5609.  
  5610. That was an oversimplification on my part.  Of course programs should
  5611. (and most do) query termcap/terminfo.  However, they can safely assume
  5612. that the window size isn't going to change while they're running, and
  5613. this assumption reduces complexity.
  5614. -- 
  5615. Larry Campbell            MCI: LCAMPBELL   The Boston Software Works, Inc.
  5616. ARPA: campbell%maynard.uucp@harvard.ARPA   120 Fulton Street, Boston MA 02109
  5617. UUCP: {alliant,wjh12}!maynard!campbell     (617) 367-6846
  5618.  
  5619. Volume-Number: Volume 7, Number 58
  5620.  
  5621. From news  Tue Oct 14 13:59:29 1986
  5622. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5623. Newsgroups: mod.std.unix
  5624. Subject: Re: Access to UNIX-Related Standards
  5625. Message-Id: <6008@ut-sally.UUCP>
  5626. References: <5968@ut-sally.UUCP> <5921@ut-sally.UUCP>
  5627. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5628. Date: 14 Oct 86 18:59:09 GMT
  5629. Draft-9: Access.Standards
  5630.  
  5631. From: pyramid!amdahl!amdcad!qubix!wjvax!brett (Brett Galloway)
  5632. Date: Mon, 13 Oct 86 09:39:13 pdt
  5633. Organization: Watkins-Johnson Co., San Jose, Calif.
  5634.  
  5635. In article <5968@ut-sally.UUCP> Hal Jespersen writes:
  5636. >
  5637. >The IEEE P1003.2 "Shell and Utilities" Working Group is developing a
  5638. >proposed standard to complement the 1003.1 POSIX standard.  It will
  5639. >consist of
  5640. >...
  5641. >    programmatic interfaces to the shell (system(), popen()) and
  5642. >    related facilities (regular expressions, file name expansion,
  5643. >    etc.)
  5644. >...
  5645.  
  5646. I think that it would be great to standardize the command set available -- this
  5647. would make writing makefiles and command servers (shell escapes) under other
  5648. applications much more portable.  One feature that I would like to see is an
  5649. alternative interface to system().  System() is great unless the user is doing
  5650. his own child process management.  In that case, he would like to do the fork()
  5651. and exec() himself and not let system() do it for him.  The alternative
  5652. interface should be some new variant of exec() (like execvp()) which sets up
  5653. the call to the appropriate command processor.
  5654.  
  5655. -------------
  5656. Brett Galloway
  5657. {pesnta,twg,ios,qubix,turtlevax,tymix,vecpyr,certes,isi}!wjvax!brett
  5658.  
  5659. Volume-Number: Volume 7, Number 59
  5660.  
  5661. From news  Wed Oct 15 11:15:09 1986
  5662. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5663. Newsgroups: mod.std.unix
  5664. Subject: Re: case sensitive names
  5665. Message-Id: <6011@ut-sally.UUCP>
  5666. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5667. Date: 15 Oct 86 16:14:52 GMT
  5668. Draft-9: 2.3.folding
  5669.  
  5670. From: bzs@bu-cs.bu.edu (Barry Shein)
  5671. Date: Sun, 12 Oct 86 14:02:11 EDT
  5672.  
  5673. Other operating systems use case insensitivity in their file names, why?
  5674.  
  5675.     As I remember it is a holdover of older encoding conventions
  5676.     intended to save disk space. PDP-10s used SIXBIT, RT11 and
  5677.     others used RAD50, in the real old days people used 026's and
  5678.     ttys, all of these had only one case for A..Z. I don't think
  5679.     it was a human factor, it was an economy of a different age.
  5680.     Systems like VMS and CMS continue this due to their heritage.
  5681.  
  5682. At least make user names monocase.
  5683.  
  5684.     Is the convention that upper-case user names imply an
  5685.     upper-case only terminal being discarded? If not, what
  5686.     is the new convention? What else should we redesign?
  5687.  
  5688. At least make file names monocase (a)
  5689.  
  5690.     Please list all software this would affect, besides Make.
  5691.     How many mktemp() calls make use of case? Lock files?
  5692.     Are you *sure* none of these would be affected adversely?
  5693.  
  5694. ...it would make emulators easier (b)
  5695.  
  5696.     As has been noted EUNICE doesn't seem to have too much
  5697.     trouble with exactly this. Any comments/requests from
  5698.     EUNICE developers? HCR? Why are we protecting them if they
  5699.     don't ask for this? My guess is they wouldn't consider it
  5700.     critical and would cause them as many problems as it would
  5701.     solve (they would have to now go and "fix" their software also.)
  5702.  
  5703. At least make flags monocase.
  5704.  
  5705.     Please list all current flags which rely upon case sensitivity
  5706.     and what you would replace them with. Worse, we have lost the
  5707.     thread of this proposal. Is the case fixed in filenames when the
  5708.     kernel interprets them? By the shell? Does the shell now have
  5709.     knowledge about what is a flag? If not, how *do* I pass a data
  5710.     string (such as sed s/foo/goo) in mixed-case where needed? This
  5711.     is often a can of worms in other os's (eg. VMS/DCL) and not what 
  5712.     I would call an improvement. It might require detailed syntactic
  5713.     and semantic knowledge of command formats by the shell(s) as most
  5714.     of these monocase systems have (DCL, EXEC etc.) At best it would
  5715.     require various new or further overloaded quoting conventions
  5716.     (we now have quote, double quote, backslash, ^V and backquote!)
  5717.  
  5718. It would be more ergonomic.
  5719.  
  5720.     Why is having less obviously easier? I thought the freedom
  5721.     UNIX gives in creating things like file names to suit whims
  5722.     to be a plus. Should we adopt NAME.EXT conventions? Why not?
  5723.     Doesn't the structure imposed by .EXT make things "easier" in
  5724.     the same sense? What about very long file names? Is this also
  5725.     a "pain"? Why have so many of the proponents argued about how
  5726.     all this would make it easier ON THE PROGRAMMER? (eg. emulator
  5727.     writers, argv interpreters) Is this the person the system's
  5728.     interface should be optimized for? What about text processors
  5729.     (I mean people)? Do they use the filing system in full case
  5730.     or not? Do we care? I just scanned through our dept secty's
  5731.     directories (she is a very naive user, she started here with
  5732.     UNIX this summer, it also includes a subdir which is the entire
  5733.     tree of her predecessor who was a fairly sophisticated UNIX user.)
  5734.     It is full of mixed case filenames, most for the obvious reasons
  5735.     (PhoneBill, LICENSES (probably to force sorting to the beginning),
  5736.     etc.)
  5737.  
  5738.     Would you please peruse *your* user's directories and report back?
  5739.  
  5740. Where does it stop?
  5741.  
  5742.     What about things like 'r' and 'R' in mail(x)? You may know
  5743.     the difference between a shell and an application program,
  5744.     but do your users have it as clear or will they see these
  5745.     things as gross inconsistencies if not brought into line?
  5746.     What about editors ('q' vs 'Q') and other fundamental software?
  5747.     Who enforces this (the application or the tty driver)?
  5748.  
  5749. The proposal to remove case sensitivity does not analyze the impact on
  5750. the software and the amount of change needed to accomodate this new
  5751. feature. I claim it is ubiquitous, worse, the proposal is ill-defined
  5752. as to exactly where in the software hierarchy this case insensitivity
  5753. is to be implemented. The proposal is pie-in-the-sky and unworkable,
  5754. worse, it is regressive (eg. it actually strives to emulate systems
  5755. designed to be compatible where now outmoded hardware and economies
  5756. were driving forces.)
  5757.  
  5758. Take your UNIX system, change everything to lower case. Add the following
  5759. line to your .login or .profile:
  5760.  
  5761.     stty lcase
  5762.  
  5763. report back to us if you still think this is a good idea.
  5764.  
  5765.     -Barry Shein, Boston University
  5766.  
  5767. Volume-Number: Volume 7, Number 60
  5768.  
  5769. From news  Wed Oct 15 14:24:39 1986
  5770. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5771. Newsgroups: mod.std.unix
  5772. Subject: Re: job control
  5773. Message-Id: <6014@ut-sally.UUCP>
  5774. References: <6001@ut-sally.UUCP> <5965@ut-sally.UUCP> <5932@ut-sally.UUCP> <5991@ut-sally.UUCP>
  5775. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5776. Date: 15 Oct 86 19:24:17 GMT
  5777. Draft-9: job.control
  5778.  
  5779. From: guy@sun.com (Guy Harris)
  5780. Date: Wed, 15 Oct 86 11:18:03 PDT
  5781.  
  5782. > What I meant is that certain common elements should be standardized,
  5783. > in particular, the ioctl to get and set the current window size.
  5784. > These all look the same, but with different particulars.
  5785.  
  5786. This isn't really just a window system issue; the current "termios" proposal
  5787. avoids referring to it as a "window" size.  One could imagine features, such
  5788. as end-of-"page" pauses in the TTY driver, that would use this information
  5789. even on dumb terminals.
  5790.  
  5791. > By the way, I think both "get" and "set" operations should be standardized,
  5792. > and the standard should state that both ioctls must work on both sides of
  5793. > the pty.  (This assumes we can appropriately specify what a "pty" is.)
  5794.  
  5795. The "set" operation is in the "termios" proposal; since "pty"s aren't, it
  5796. doesn't say anything about whether the operation works on both sides or not.
  5797.  
  5798. Volume-Number: Volume 7, Number 61
  5799.  
  5800. From news  Thu Oct 16 10:48:02 1986
  5801. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5802. Newsgroups: mod.std.unix
  5803. Subject: Re: Case sensitive file names
  5804. Message-Id: <6018@ut-sally.UUCP>
  5805. References: <6002@ut-sally.UUCP> <5865@ut-sally.UUCP>
  5806. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5807. Date: 16 Oct 86 15:47:50 GMT
  5808. Draft-9: 2.3.folding
  5809.  
  5810. [ *sigh*  Below you will find two examples of proof by emotion,
  5811. one for case sensitivity, one for case insensitivity.  Now that
  5812. we have one on each side together like this, how about let's
  5813. either use facts and arguments or go on to another subject?
  5814.  
  5815. Below the second example there is a somewhat new point, marked
  5816. by another interjection from the moderator.  -mod ]
  5817.  
  5818. From: seismo!mcvax!gec-mi-at.co.uk!adam
  5819. Date: Thu, 16 Oct 86 09:29:20 -0100
  5820. Organization: Marconi Instruments Ltd., St. Albans, Herts, UK
  5821.  
  5822. >I would like to add a loud "Bravo!" to Mark Horton's message!  The present
  5823. >case sensitivity of the Unix filesystem is a real drag....
  5824.  
  5825. No NO nO NO nO No no! Case sensitivity is a bonus. If you can't handle it,
  5826. it's your problem. I've worked with both case-sensitive, -preserving and
  5827. -insensitive systems, and I prefer them in that order.
  5828.  
  5829.        -Adam.
  5830.  
  5831. From: pyramid!lll-crg!nike!ucbcad!ucbvax!excelan!donp (Don Provan)
  5832. Date: Wed, 15 Oct 86 09:58:48 pdt
  5833.  
  5834. This is a good example of why people coming from other operating
  5835. systems so often dislike UNIX.  Two people pointed out what is
  5836. clearly a bug in UNIX which particularly upsets them.  Many people
  5837. responded that it was a feature.  Hrumph!
  5838.  
  5839. [ Below is the new point.  -mod ]
  5840.  
  5841. If you're so concerned about correctly handling of foreign languages,
  5842. why don't you start by handling English correctly?  In English,
  5843. "Make" and "make" are considered identical.  Capitalization rarely
  5844. has an effect on meaning.  Yet in UNIX, "Makefile" and "makefile" are
  5845. two different files with different "meanings".  Where are your *NEW*
  5846. users that are going to understand this sudden departure from a rule
  5847. of their native tongue?
  5848.  
  5849. [ The point is wrong.  Capitalization is significant in English:
  5850. internet and Internet do not have the same meaning, nor do john and
  5851. John (for readers outside the States, perhaps I should point out that
  5852. john with no capital refers to a toilet).  The distinction applies
  5853. not only to proper names but also in Emphasis and in syntax at the
  5854. beginning of sentences.  -mod ]
  5855.  
  5856. I am not sufficiently versed in foreign languages to understand the
  5857. issues concerning capitalization there.  It sounds like in some cases
  5858. the rules of what letters are equivalent (such as "A" and "a" in
  5859. English) might require tailoring.  If you're going to support foreign
  5860. languages in a meaningful way, i assume you're going to make lots of
  5861. other modifications, too.  For example, "Makefile" would need to have
  5862. a different name, right?  (I suppose the UNIX utilities themselves
  5863. already have names far enough removed from English so that they're no
  5864. problem.  What *does* "ls" stand for, anyway?)
  5865.  
  5866. [ As a moderately good reader of French and Spanish, I believe I can
  5867. state that the same sort of capitalization conventions exist in them as
  5868. in English, but with different details as to when capitalizaition is
  5869. appropriate.  The lexical details also differ:  the capital of ll (a single
  5870. letter in Spanish) is usually Ll, except when it's LL; in French, whether
  5871. an e with an acute accent still has an accent in its capital E form
  5872. depends on whether you're in France, Belgium, Quebec, Louisiana, etc.
  5873.  
  5874. I understand Greek is an interesting language:  there are several kinds
  5875. of lower case forms of some letters, to be used in different places in
  5876. a word (beginning, middle, end).  Similar distinctions exist in Arabic.
  5877.  
  5878. And, as several people have pointed out, case isn't meaningful in
  5879. Chinese, Korean, or Japanese kanji.  Also, the number of bytes used to
  5880. encode a character changes with the language, and multiple languages
  5881. should be supportable on the same system (in Japan, they commonly use
  5882. English, Japanese in romanji, and Japanese in Kanji; in Scandinavian
  5883. countries I suspect they have a lot of English interspersed with the
  5884. national language in technical literature).
  5885.  
  5886. In most European countries, UNIX command names are used unchanged,
  5887. and Makefile does not in fact have a different name.  Would some
  5888. Europeans care to comment?
  5889. -mod ]
  5890.  
  5891. Having done a lot of case insensitive work, i've always felt that the
  5892. UNIX case sensitivity was from laziness.  If i were to be charitable,
  5893. i might go so far as to call it a shortcut.
  5894.  
  5895. [ See Doug Gwyn's previous article for a good explanation of why file
  5896. names are case sensitive (or, rather, byte streams uninterpreted by the
  5897. kernel) in UNIX (see Barry Shein's article for a good explanation of why
  5898. some other systems are case insensitive).  In places where there was a
  5899. reason for case insensitivity (e.g., to match mail standards), it has
  5900. been done.  -mod ]
  5901.  
  5902.   But it's ridiculous to
  5903. say it makes more sense or it makes UNIX easier for new users or it
  5904. allows UNIX to support foreign languages.
  5905.  
  5906. [ "Ridiculous" is not an argument.  -mod ]
  5907.  
  5908.                         don provan
  5909.  
  5910. Volume-Number: Volume 7, Number 62
  5911.  
  5912. From news  Thu Oct 16 11:09:18 1986
  5913. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5914. Newsgroups: mod.std.unix
  5915. Subject: Unix/World article on POSIX
  5916. Message-Id: <6020@ut-sally.UUCP>
  5917. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5918. Date: 16 Oct 86 16:09:01 GMT
  5919. Draft-9: Access.Unix/World
  5920.  
  5921. There's an article in the October Unix/World that explains the intent
  5922. of P1003 pretty clearly.  It's by the committee chair.  In refer format:
  5923.  
  5924. %A Jim Isaak
  5925. %T Standards for the Unix System
  5926. %J Unix/World
  5927. %I Tech Valley Publishing
  5928. %C Mountain View, CA
  5929. %V 3
  5930. %N 10
  5931. %P 34-38
  5932. %D October 1986
  5933.  
  5934. It mentions 1003.1, 1003.2, 1003.3, /usr/group committees, X/OPEN and SVID.
  5935.  
  5936. There are also articles on X3J11 and networking standards in the same issue.
  5937.  
  5938. Volume-Number: Volume 7, Number 63
  5939.  
  5940. From news  Fri Oct 17 10:09:07 1986
  5941. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5942. Newsgroups: mod.std.unix
  5943. Subject: Re: job control
  5944. Message-Id: <6024@ut-sally.UUCP>
  5945. References: <6003@ut-sally.UUCP>
  5946. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5947. Date: 17 Oct 86 15:08:45 GMT
  5948. Draft-9: job.control
  5949.  
  5950. From: bobr%zeus.tek.csnet@RELAY.CS.NET (Robert Reed)
  5951. Organization: CAE Systems Division, Tektronix Inc., Beaverton OR
  5952. Date: 15 Oct 86 12:23:31 PDT (Wed)
  5953.  
  5954. > From: shannon@sun.com (Bill Shannon) 
  5955. > I don't believe there should be an ioctl to find out the pixel size of a
  5956. > "window". ...  The pixel size is of no use to programs that deal only in
  5957. > characters.  Only programs manipulating windows will need to know the pixel
  5958. > size.  ...  The tty subsystem, which deals only in characters, should not
  5959. > know anything about pixels or windows.
  5960.  
  5961. Naive programs should have access to window size as character information,
  5962. but there are programs which do not manipulate windows which need window
  5963. size information in pixels.  My solution would be to provide the size in
  5964. character units but also provide character cell size in pixels with the same
  5965. call (ioctl or whatever).  Programs could use it or ignore it.
  5966.  
  5967. Whether the tty system does know about pixels or not, it should.  If the
  5968. window size information (in character units) is going to be accurate, window
  5969. sizes must be restricted to integrals of character size.  With straight ttys
  5970. this is no problem, but if the system supports font changing, character size
  5971. can vary.  Rather than require one call to find the window size and then
  5972. another call to find out what the units are, this information should be
  5973. consolidated into a single place.
  5974.  
  5975. Volume-Number: Volume 7, Number 64
  5976.  
  5977. From news  Fri Oct 17 10:11:53 1986
  5978. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  5979. Newsgroups: mod.std.unix
  5980. Subject: Re: job control
  5981. Message-Id: <6025@ut-sally.UUCP>
  5982. References: <5986@ut-sally.UUCP> <5932@ut-sally.UUCP> <5990@ut-sally.UUCP> <6004@ut-sally.UUCP>
  5983. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  5984. Date: 17 Oct 86 15:11:29 GMT
  5985. Draft-9: job.control
  5986.  
  5987. From: bobr@zeus.UUCP (Robert Reed)
  5988. Organization: CAE Systems Division, Tektronix Inc., Beaverton OR
  5989.  
  5990. In article <6004@ut-sally.UUCP> Larry Campbell
  5991. <campbell%maynard.UUCP@harvisr.harvard.edu> writes:
  5992. > Of course programs should (and most do) query termcap/terminfo.  However,
  5993. > they can safely assume that the window size isn't going to change while
  5994. > they're running, and this assumption reduces complexity.
  5995.  
  5996. Programs cannot safely assume that window size is not going to change,
  5997. because on most overlapped window management systems it will.  It is just
  5998. too easy to set inappropriate window sizes and then need to adjust them.
  5999. Consider creating a new which is almost the right size (say 75 characters
  6000. wide) and then invoking an editor on a file of 80 character data.  The
  6001. editor will either wrap or truncate the data, and changing the window size
  6002. to compensate will do nothing but frustate the user.  What is needed is
  6003. something like 4.3 BSD's WINCH signal, to advise those applications which
  6004. care about such changes.
  6005. -- 
  6006. Robert Reed, Tektronix CAE Systems Division, bobr@zeus.TEK
  6007.  
  6008. Volume-Number: Volume 7, Number 65
  6009.  
  6010. From news  Fri Oct 17 11:28:54 1986
  6011. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6012. Newsgroups: mod.std.unix
  6013. Subject: case sensitivity
  6014. Message-Id: <6027@ut-sally.UUCP>
  6015. References: <6018@ut-sally.UUCP>
  6016. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6017. Date: 17 Oct 86 16:28:30 GMT
  6018. Draft-9: 2.3.folding
  6019.  
  6020. From: <@SUMEX-AIM.ARPA:MRC@PANDA> (Mark Crispin)
  6021. Date: Thu 16 Oct 86 23:13:06-PDT
  6022. Postal-Address: 1802 Hackett Ave.; Mountain View, CA  94043-4431
  6023. Phone: +1 (415) 968-1052
  6024.  
  6025.      I was hoping that the moderator would stay neutral in this.
  6026. I encourage his subsequent neutrality.
  6027.  
  6028. [ The moderator is neutral.  A statement on editorial policy is
  6029. forthcoming.  If you want to discuss that issue, let's do it in
  6030. that channel and not this.  -mod ]
  6031.  
  6032.      It seems that the two sides in this issue boil down to this:
  6033. . "gee, since we're defining a standard portable operating system
  6034.   that isn't necessarily the present de facto Unix, let's fix
  6035.   this case sensitivity cretinism"
  6036. . "case sensitivity is what makes Unix better than any other
  6037.   operating system, and only a cretin can't understand why this
  6038.   is wonderful"
  6039.  
  6040.      Neither side is being very scientific.  It's reminiscent of
  6041. the "how many angels can dance on the head of a pin" debates.
  6042.  
  6043.      Let's start by discarding the arguments which are bogus.
  6044. The most glaring of these has got to be the international
  6045. compatibility argument.  The only advocates of this argument seem
  6046. to be pro case sensitivity Americans who have seized upon this as
  6047. an argument to shore up their position without really thinking
  6048. over the issue carefully.
  6049.  
  6050. [ Perhaps you could elaborate on why X/OPEN (a group of European
  6051. computer manufacterors), for instance, should not be concerned
  6052. with international compatibility?  -mod ]
  6053.  
  6054.      Unix does not allow arbitrary strings in filenames.  Any
  6055. number of "funny" characters must be within a quoted string.  I
  6056. can't say
  6057.     rm foo.bar;1
  6058. I have to say
  6059.     rm "foo.bar;1"
  6060. Guess what.  A number of foreign keyboards use those "funny"
  6061. characters to be non-English glyphs.
  6062.  
  6063. [ The *shell* interprets certain characters, causing
  6064. them to have to be quoted if they are used in file names.
  6065. The file system is perfectly happy to put just about anything
  6066. but the slash and null characters in filenames.  -mod ]
  6067.  
  6068.      I have yet to hear of any organization in Japan using kanzi
  6069. or hirogana or katakana in filenames.  There are good reasons for
  6070. this!  One is that there isn't a single way of representing
  6071. written Japanese.  In older terminals, the high order bit when
  6072. set indicated katakana (much as DEC VT220's use the high order
  6073. bit for their "international characters").  Modern Japanese
  6074. terminals use the JIS (Japanese Industrial Standard) system of
  6075. ESCAPE followed by two bytes to define a 14 bit character.
  6076. There's a minor portability problem with all those escape
  6077. characters (which, of course, must be displayed in image form).
  6078.  
  6079. [ Perhaps someone from Japan could reply?  -mod ]
  6080.  
  6081.      Some German keyboards use various 7-bit glyphs (I believe
  6082. "@" is umlaut-a) for their umlauts and ess-tset.  Or, there's the
  6083. VT220 system.  I just tried creating a file called Goethestrasse
  6084. (using umlaut-o for "oe" and ess-tset for "ss") on my local Unix
  6085. system using my VT220 clone.  It made "GVthestra_e", the 7-bit
  6086. form.  Dare I mention that in German, only nouns (and the first
  6087. word in a sentence) are capitalized?
  6088.  
  6089. [ What is the "it" that made it?  How did you create it?
  6090. What were the character codes you tried to use for the characters?
  6091. Don't forget the capitalization of sharp s problem:  it's
  6092. one character in lower case but two (SS) in upper case.  -mod ]
  6093.  
  6094.      The point is that Unix does *not* support international
  6095. character sets in filenames.  It supports 7-bit USASCII.  So
  6096. let's leave that issue to rest.
  6097.  
  6098. [ There is strong interest on the part of a number of UNIX vendors
  6099. and users to make UNIX support international character sets in
  6100. a number of areas.  Anything that ties the filesystem or anything
  6101. else in the system to USASCII is not a step in a direction they want.
  6102. The file system at the moment supports uninterpreted strings of
  6103. bytes as file names, with the exception of /, null character,
  6104. names consisting solely of . and .., and those systems that
  6105. too helpfully zero the high order bit (4.3BSD, if I'm not
  6106. mistaken).  -mod ]
  6107.  
  6108.      I haven't yet heard of any serious use of full 8-bit bytes
  6109. for filenames on any other operating system, which, if you are
  6110. serious about supporting international character sets, you must
  6111. do.  There's this small problem of getting 8-bit (as opposed to
  6112. 7-bit) ASCII through various pieces of hardware and networks
  6113. which think that the high order bit is parity...
  6114.  
  6115.      Can we now leave that particular argument to rest?
  6116.  
  6117. [ The Japanese seem to manage the eight bit problem on UNIX,
  6118. as modified both there and by AT&T to support the Japanese
  6119. language.  Most anyone who uses EMACS has the same problem,
  6120. and many of them seem to manage.  -mod ]
  6121.  
  6122.      Nobody has really answered the criticism that case
  6123. sensitivity is poor human engineering.
  6124.  
  6125. [ See Barry Shein's article, <6011@ut-sally.UUCP>.  -mod ]
  6126.  
  6127.   Some people may disagree.
  6128. The same people may also feel that single character switches are
  6129. good human engineering.  Well, a lot of us who haven't been Unix
  6130. junkies for the past 15 years seem to feel otherwise.  The fact
  6131. that there is a controversy over the human engineering aspects of
  6132. a facility should suffice to indicate that there is a problem!
  6133.  
  6134.      Let's discuss these classes of issues.
  6135.  
  6136. [ If you have a survey that shows that most people find case insensitivity
  6137. easier to deal with, please present it.  If not, please refrain from
  6138. proof by character assassination.  -mod ]
  6139.  
  6140. -- Mark --
  6141. -------
  6142.  
  6143. Volume-Number: Volume 7, Number 66
  6144.  
  6145. From news  Fri Oct 17 11:36:21 1986
  6146. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6147. Newsgroups: mod.std.unix
  6148. Subject: Re: Case sensitive file names
  6149. Message-Id: <6029@ut-sally.UUCP>
  6150. References: <6002@ut-sally.UUCP> <5865@ut-sally.UUCP> <6018@ut-sally.UUCP>
  6151. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6152. Date: 17 Oct 86 16:35:48 GMT
  6153. Draft-9: 2.3.folding
  6154.  
  6155. From: cbosgd!cbosgd.ATT.COM!mark@ucbvax.berkeley.edu (Mark Horton)
  6156. Date: Fri, 17 Oct 86 11:20:32 edt
  6157. Organization: AT&T Medical Information Systems, Columbus
  6158.  
  6159. Don Provan raises some interesting questions about foreign languages.
  6160. In general, I think we know how to do a case insensitive comparison
  6161. appropriately, by extending a function (I think it's called strcoll,
  6162. but I don't have my X3J11 draft handy) defined in ANSI C; the function
  6163. is like strcpy, but the destination buffer gets a translation of the
  6164. string that will collate properly when a lexicographic comparison like
  6165. strcmp is used.  If we extend this function to also translate to one
  6166. case (as appropriate) and allow each country to define its own function,
  6167. it's technically possible to ignore case.  Whether it's fast enough for
  6168. the UNIX filesystem is unclear, although this problem is not restricted
  6169. to UNIX.
  6170.  
  6171. I think it would be interesting to hear what other, case-insensitive
  6172. operating systems do about these issues.  What do MS DOS, or VM/CMS,
  6173. or VMS, or whatever, do with their case insensitive file names in
  6174. Europe, or Japan, or whereever?
  6175.  
  6176. If the answer is that file names are restricted to use the same character
  6177. set as in the USA, and that extra letters are disallowed, then we need to
  6178. know how well this is accepted by the users on other systems.  Maybe it's
  6179. good enough.  Do users in other countries often create files whose names
  6180. contain extra letters?  If they try, does the shell get in the way if their
  6181. letter happens to be "|", for example?
  6182.  
  6183. If the answer is that other operating systems have forced other countries
  6184. to put up with Americanisms, and that POSIX is an opportunity to break new
  6185. ground by handling other languages properly, then by all means let's do it
  6186. right.  This might require 8 bit characters in file names, for example.
  6187.  
  6188. Incidently, I've seen it claimed here that UNIX allows arbitrary byte
  6189. streams in file names.  Perhaps this is the intent, but in reality the
  6190. UNIX filesystem is far from a transparent path.  There are lots of
  6191. restrictions, some of which are:
  6192.  
  6193.     The slash character is special.
  6194.     The null character is special.
  6195.     Sequences of more than 14 chars not containing a slash are
  6196.         either illegal or only significant to 14 chars or
  6197.         significant to 256 chars, depending on the version of UNIX.
  6198.     Characters with the 8th bit turned on are not allowed.
  6199.     Since many commands take names beginning with "-" as flags,
  6200.         file names beginning with "-" don't always work.
  6201.     Since the shell treats many of the punctuation characters
  6202.         specially, file names containing space, #, $, &, *, (, ),
  6203.         [, ], ;, ', ", \, |, <, >. and ? do not always work
  6204.         properly.  Even if you quote them, the shell strips
  6205.         off the quotes, so that if multiple layers of shell
  6206.         are involved (for example, uux) it still fails.
  6207.  
  6208. Because some of these problems only affect certain uses of the filesystem
  6209. (whether or not you go through the shell, whether or not you're going
  6210. through a command that takes arguments) it's not unusual for casual users
  6211. to create a file and then have trouble using, renaming, or even removing it.
  6212. I recall that removing a file whose 8th bit has been set is a frequent topic
  6213. on net.unix.
  6214.     
  6215. If the filesystem were really transparent, the designers of /proc would
  6216. not have had to encode process ID's in ASCII digits, they could have
  6217. directly used the binary representation.
  6218.  
  6219. It's for these reasons that I feel that a conservative UNIX user should
  6220. restrict themselves to certain "reasonable" filename conventions; basically
  6221. using only lower case letters, digits, and a few save punctuation characters
  6222. such as . and - in their filenames.  Just because it's possible to put a
  6223. space in a file name doesn't make it a good idea.
  6224.  
  6225.     Mark
  6226.  
  6227. Volume-Number: Volume 7, Number 67
  6228.  
  6229. From news  Fri Oct 17 18:10:05 1986
  6230. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6231. Newsgroups: mod.std.unix
  6232. Subject: Re: Case sensitive file names
  6233. Message-Id: <6036@ut-sally.UUCP>
  6234. References: <6002@ut-sally.UUCP> <5865@ut-sally.UUCP> <6018@ut-sally.UUCP> <6029@ut-sally.UUCP>
  6235. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6236. Date: 17 Oct 86 23:09:37 GMT
  6237. Draft-9: 2.3.folding
  6238.  
  6239. From: mordor!jdb@sally.utexas.edu (John Bruner)
  6240. Reply-To: jdb@s1-c.arpa 
  6241. Date: Fri, 17 Oct 86 14:39:08 PDT
  6242. Organization: S-1 Project, LLNL
  6243.  
  6244. It seems to me that there are three alternatives.  POSIX can specify
  6245. that conforming implementations must be case sensitive, must be case
  6246. insensitive, or may be either case sensitive or case insensitive.
  6247.  
  6248. If a conforming system must be case insensitive, then UNIX doesn't
  6249. conform.  If UNIX is to be included in the set of POSIX-compatible
  6250. systems, then case sensitivity must be permitted.
  6251.  
  6252. If a conforming system may be case sensitive or case insensitive,
  6253. then a lot of programs won't be portable.  Ignore for the moment
  6254. all existing UNIX code and consider new program development.  I
  6255. believe that programmers on one kind of system won't bother
  6256. with the library routines that are used to compare and/or convert
  6257. mixed-case names to monocase.  It doesn't matter what people "ought"
  6258. to do.  A well-known example of this effect is 4.2BSD.  The source
  6259. code is full of variables that should be declared "long" but --
  6260. since on the VAX "long" and "int" are identical -- are not.  In the
  6261. same way, optional case sensitivity will spawn code that only runs
  6262. correctly in the environment where it was written.
  6263.  
  6264. Therefore, I believe that case sensitivity must be retained, and
  6265. it should not be made optional.
  6266.  
  6267. Volume-Number: Volume 7, Number 68
  6268.  
  6269. From news  Fri Oct 17 18:42:55 1986
  6270. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6271. Newsgroups: mod.std.unix
  6272. Subject: Re: Case sensitive file names
  6273. Message-Id: <6037@ut-sally.UUCP>
  6274. References: <6027@ut-sally.UUCP>
  6275. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6276. Date: 17 Oct 86 23:42:36 GMT
  6277. Draft-9: 2.3.folding
  6278.  
  6279. From: rbj@icst-cmr.arpa (Jim Cottrell)
  6280. Date: Fri, 17 Oct 86 16:57:43 EDT
  6281.  
  6282. > Having done a lot of case insensitive work, i've always felt that the
  6283. > UNIX case sensitivity was from laziness.  If i were to be charitable,
  6284. > i might go so far as to call it a shortcut.
  6285.  
  6286. I prefer to call it optimization. Case insensitivity must be enforced.
  6287. By my count, that's at least two instructions per character, plus loop
  6288. control (unless you have something like VAX's `move translated characters').
  6289. That ought to negate any speedup from hashing or name translation caching.
  6290.  
  6291. What is lazy is people refusing to learn the difference.
  6292.  
  6293. [ See previous comments about argument by character assassination.  -mod ]
  6294.  
  6295.     (Root Boy) Jim Cottrell        <rbj@icst-cmr.arpa>
  6296.     YOW!! I'm in a very clever and adorable INSANE ASYLUM!!
  6297.  
  6298.  
  6299. Volume-Number: Volume 7, Number 69
  6300.  
  6301. From news  Fri Oct 17 23:18:19 1986
  6302. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6303. Newsgroups: mod.std.unix
  6304. Subject: Re: mod.std.unix P1003 job control proposal
  6305. Message-Id: <6040@ut-sally.UUCP>
  6306. References: <5993@ut-sally.UUCP>
  6307. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6308. Date: 18 Oct 86 04:18:02 GMT
  6309. Draft-9: job.control
  6310.  
  6311. From: pyramid!utzoo!henry (Henry Spencer)
  6312. Date: Fri, 17 Oct 86 20:18:05 CDT
  6313.  
  6314. Apart from my overall objections to the concept of job control, there is
  6315. one thing seriously wrong with the P1003 job control proposal as posted:
  6316. it assumes that function names are distinct in at least the first 8
  6317. characters, as witness "setpgrp" vs. "setpgrp2" and "getpgrp" vs. "getpgrp2".
  6318. Note that an X3J11-conforming C implementation need distinguish only the
  6319. first 6 characters.  I would suggest revised names for the new primitives,
  6320. perhaps "setjpgrp" and "getjpgrp", with implementations which distinguish
  6321. 8 or more characters providing "setpgrp2" and "getpgrp2" names as well for
  6322. maximum compatibility with existing mistakes.
  6323.  
  6324.                 Henry Spencer @ U of Toronto Zoology
  6325.                 {allegra,ihnp4,decvax,pyramid}!utzoo!henry
  6326.  
  6327. Volume-Number: Volume 7, Number 70
  6328.  
  6329. From news  Sun Oct 19 10:51:13 1986
  6330. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6331. Newsgroups: mod.std.unix
  6332. Subject: case sensitivity in English
  6333. Message-Id: <6048@ut-sally.UUCP>
  6334. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6335. Date: 19 Oct 86 15:50:50 GMT
  6336. Draft-9: 2.3.folding
  6337.  
  6338. From: dan@prophet.bbn.com (Dan Franklin)
  6339. Date:     Fri, 17 Oct 86 9:16:27 EDT
  6340.  
  6341. Jim Balter once pointed out how much difference capitalization can make
  6342. in English: Communists do not believe in a Catholic God, but communists
  6343. may believe in a catholic god...
  6344.  
  6345.     Dan
  6346.  
  6347. Volume-Number: Volume 7, Number 71
  6348.  
  6349. From news  Mon Oct 20 04:13:53 1986
  6350. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6351. Newsgroups: mod.std.unix
  6352. Subject: Re: Case sensitive file names
  6353. Message-Id: <6049@ut-sally.UUCP>
  6354. References: <6002@ut-sally.UUCP> <5865@ut-sally.UUCP> <6018@ut-sally.UUCP> <6029@ut-sally.UUCP> <6036@ut-sally.UUCP>
  6355. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6356. Date: 20 Oct 86 09:13:29 GMT
  6357. Draft-9: 2.3.folding
  6358.  
  6359. From: cbosgd!cbosgd.ATT.COM!mark@ucbvax.berkeley.edu (Mark Horton)
  6360. Date: Sun, 19 Oct 86 23:11:35 edt
  6361. Organization: AT&T Medical Information Systems, Columbus
  6362.  
  6363. >If a conforming system may be case sensitive or case insensitive,
  6364. >then a lot of programs won't be portable.  Ignore for the moment
  6365. >all existing UNIX code and consider new program development.  I
  6366. >believe that programmers on one kind of system won't bother
  6367. >with the library routines that are used to compare and/or convert
  6368. >mixed-case names to monocase.  It doesn't matter what people "ought"
  6369. >to do.  A well-known example of this effect is 4.2BSD.  The source
  6370. >code is full of variables that should be declared "long" but --
  6371. >since on the VAX "long" and "int" are identical -- are not.  In the
  6372. >same way, optional case sensitivity will spawn code that only runs
  6373. >correctly in the environment where it was written.
  6374. >
  6375. >Therefore, I believe that case sensitivity must be retained, and
  6376. >it should not be made optional.
  6377.  
  6378. I'm sorry, but I don't buy this argument.  It seems to be based on
  6379. the assumption that case insensitivity will be implemented by the
  6380. use of subroutines for case-insensitive operations, with a different
  6381. user interface from that available today.  I think such an implementation
  6382. is silly, even if other operating systems may do it that way.
  6383.  
  6384. I'm talking about file names only.  I do not advocate even considering
  6385. making all of the user interfaces in UNIX case insensitive.  While it
  6386. might have once been a good idea to design them that way, I feel it's
  6387. far too late for someone to decree that all the upper and lower case
  6388. keys in, say, vi must be equivalent.
  6389.  
  6390. I think it's a given that existing code won't be rewritten to use new
  6391. interfaces, even if we come up with a wonderful way to do it.  Vi still
  6392. uses raw terminfo, even through curses would have been much easier and
  6393. better.  Also, there are lots of binaries out there that can't even be
  6394. recompiled.  Any solution to this problem must be in the kernel, or possibly
  6395. in libc underneath such subroutines as open, unlink, and chmod, (if you
  6396. have shared libraries or full source to recompile) or it won't work all
  6397. the time.
  6398.  
  6399. The obvious implementation is that the code in the kernel, when mapping a
  6400. filename to an inode number, to do a case-insensitive comparison when
  6401. checking each filename element in a directory.  This would be pretty
  6402. simple to add, although issues such as speed and international variations
  6403. would probably require a clever case-insensitive comparison, possibly
  6404. using a country-specific case mapping table with some flags or other
  6405. hacks to deal with single-multiple glyph mappings like SS to ess-tset.
  6406. There might even be a performance GAIN if creation of a directory entry
  6407. including calculating an appropriate hash function which is also stored
  6408. in the directory and used for initial comparisons.
  6409.  
  6410. I see no need to map everything to lower case when creating the directory
  6411. entry.  Let the entries be in mixed case; this allows more readable names.
  6412. I don't know what to do about sorting (e.g. in the shell or ls) - it might
  6413. be case sensitive or insensitive sorting, and good arguments can probably
  6414. be made for both.
  6415.  
  6416. The behavior I'm concerned about is that, if the user types, say, "mail"
  6417. and there's a command "Mail" in the search path, it should still work.
  6418. If the file "FooBar" exists and the user cats "foobar", because somebody
  6419. read that name over the phone, it should find it.
  6420.  
  6421.     Mark
  6422.  
  6423. Volume-Number: Volume 7, Number 72
  6424.  
  6425. From news  Mon Oct 20 04:23:40 1986
  6426. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6427. Newsgroups: mod.std.unix
  6428. Subject: Re: Case sensitive file names
  6429. Message-Id: <6050@ut-sally.UUCP>
  6430. References: <6002@ut-sally.UUCP> <5865@ut-sally.UUCP> <6018@ut-sally.UUCP>, <6029@ut-sally.UUCP>
  6431. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6432. Date: 20 Oct 86 09:23:21 GMT
  6433. Draft-9: 2.3.folding
  6434.  
  6435. From: pyramid!utzoo!henry (Henry Spencer)
  6436. Date: Mon, 20 Oct 86 04:07:24 CDT
  6437.  
  6438. > If the filesystem were really transparent, the designers of /proc would
  6439. > not have had to encode process ID's in ASCII digits, they could have
  6440. > directly used the binary representation.
  6441.  
  6442. This is rather a red herring, since they wouldn't have done this even if
  6443. it had been trivially possible.  The ASCII representation is a whole lot
  6444. more useful for human beings, and isn't a significant nuisance to programs.
  6445. The extra code needed to do it isn't much (yes, I have read it).
  6446.  
  6447. > It's for these reasons that I feel that a conservative UNIX user should
  6448. > restrict themselves to certain "reasonable" filename conventions...
  6449.  
  6450. Agreed, but that is not the topic of the discussion.  Standards must address
  6451. requirements other than those of conservative human users.  It is a serious
  6452. mistake for a standard to attempt to legislate morality.
  6453.  
  6454.                 Henry Spencer @ U of Toronto Zoology
  6455.                 {allegra,ihnp4,decvax,pyramid}!utzoo!henry
  6456.  
  6457.  
  6458.  
  6459. Volume-Number: Volume 7, Number 73
  6460.  
  6461. From news  Mon Oct 20 04:26:24 1986
  6462. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6463. Newsgroups: mod.std.unix
  6464. Subject: Re: Job Control
  6465. Message-Id: <6051@ut-sally.UUCP>
  6466. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6467. Date: 20 Oct 86 09:26:04 GMT
  6468. Draft-9: job.control
  6469.  
  6470. From: pyramid!allegra!cbosg!osu-eddie!bgsuvax!schaefer (Stephen Schaefer)
  6471. Date: Thu, 16 Oct 86 13:05:33 edt
  6472.  
  6473. I'd like to offer some observations from my experience concerning
  6474. windows.  I am very comfortable using the wm window manager (by Robert
  6475. Jacob, enhanced by Matt Lennon and Tom Truscott).  The present design
  6476. relies heavily on pty's and the 'select' call of 4.[23]BSD.  I use a
  6477. 9600 baud line with a 24*80 screen, which is quite sufficient.  I feel
  6478. no need at all for bit-mapping until I want to draw pictures, or
  6479. preview some typesetting, which has nothing to do with windows.  I'm
  6480. guessing that it takes about half a second to repaint my screen - the
  6481. same amount of time as vi takes to show the next screen full.  Far more
  6482. often, the window simply scrolls.
  6483.     I had a chance to work with a 5620 for a while.  While I was
  6484. directly connected at 9600 baud to a 4.2BSD 11-780, I told it to act
  6485. like a VT100 with a 70*88 screen.  I was more than happy - for
  6486. editing, I used the whole screen, for shell interaction I used a half
  6487. screen to cut down on update time, and because I'm usually working on
  6488. a minimum of two things at once.  Ghosting of the phosphor was far
  6489. more of a problem than speed.  I also used the 5620 with a 3B2, shell
  6490. layers, and a mouse.  Pulling windows around was fun for a while, but
  6491. it never became important to me, the way switching from window to
  6492. window has.  The bit mapping was good for drawing pictures and
  6493. previewing typesetting, but I never saw what it had to do with
  6494. windows.
  6495.     I haven't mentioned job control yet - I use it when it's
  6496. available.  I very often want a process to freeze until I find it
  6497. convenient to get back to it.  I am willing to entertain the
  6498. possibility that windows could take over much of that function, but
  6499. when I suspend, I am usually thinking "suspend", and it would take
  6500. some thought (or re-conditioning) to consider switching windows.  A
  6501. second consideration is that I use GNU emacs, and it significantly
  6502. faster to ^Z and fg than to quit and restart.  I don't understand the
  6503. accusations that ^Z is a "kluge", unless these people are referring to
  6504. the implementation, which I haven't studied.  It was utterly clear,
  6505. from the first time someone showed it to me: hit ^Z, ask to see your
  6506. jobs, now choose how or if to continue them (in foreground or
  6507. background), but be assured that they are still there until you
  6508. dispose of them.  I survive without it when I don't have it, but I use
  6509. it when I do have it.
  6510.     In sum: windows are good for multitasking *me*, and appear to
  6511. depend on pty's and maybe select(2).  Bitmapping is good for pictures,
  6512. but is irrelevant to a purely text environment - which is where I am
  6513. almost entirely.  Job control is good for suspending processes, and is
  6514. nice for avoiding the load time of large programs.  The three are
  6515. independent facilities.  An expensive, full-featured system would have
  6516. all of them.  Less expensive systems could be missing one or more of
  6517. them and still be Un*x.  If I had to choose the most valuable one it
  6518. would be pty's, but that is probably just my taste.
  6519.  
  6520. Volume-Number: Volume 7, Number 74
  6521.  
  6522. From news  Sat Oct 25 20:46:58 1986
  6523. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6524. Newsgroups: mod.std.unix
  6525. Subject: newsgroup constipation
  6526. Message-Id: <6093@ut-sally.UUCP>
  6527. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6528. Date: 26 Oct 86 01:46:41 GMT
  6529. Draft-9: mod.std.unix
  6530.  
  6531. There have been no articles in mod.std.unix since Monday because I've
  6532. been out of town.  I thought I had a guest moderator lined up, but that
  6533. didn't work out.  So there's quite a backlog which I will start funneling
  6534. out to the neworks now.
  6535.  
  6536. Volume-Number: Volume 7, Number 75
  6537.  
  6538. From news  Sat Oct 25 20:52:06 1986
  6539. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6540. Newsgroups: mod.std.unix
  6541. Subject: Re: Case sensitive file names
  6542. Message-Id: <6094@ut-sally.UUCP>
  6543. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6544. Date: 26 Oct 86 01:51:48 GMT
  6545. Draft-9: 2.3.folding
  6546.  
  6547. From: guy@sun.com (Guy Harris)
  6548. Date: Mon, 20 Oct 86 10:49:33 PDT
  6549.  
  6550. Responses to a couple of messages:
  6551.  
  6552. >From Mark Horton:
  6553.  
  6554. > Any solution to this problem must be in the kernel, or possibly
  6555. > in libc underneath such subroutines as open, unlink, and chmod, (if you
  6556. > have shared libraries or full source to recompile) or it won't work all
  6557. > the time.
  6558.  
  6559. Any solution to this problem must be applied to operating systems other than
  6560. UNIX.  As John Bruner pointed out, mandating case-insensitivity will only
  6561. have the effect of removing UNIX from the list of standard-conforming
  6562. systems.  Changing the semantics of file names at this late date is unlikely
  6563. to meet with approval from many UNIX vendors and users.  For one thing, what
  6564. are you going to do about directories that contain files named, say,
  6565. "makefile" and "Makefile" (yes, they exist)?  You may feel that having
  6566. directories like this is a mistake, but declaring them to be a mistake isn't
  6567. going to make them go away.
  6568.  
  6569. There seem to be two issues here:
  6570.  
  6571. 1) Should POSIX mandate case-sensitivity?
  6572.  
  6573. 2) Should UNIX be changed to be case-insensitive if POSIX doesn't mandate
  6574. case-sensitivity?
  6575.  
  6576. These are rather separate issues.  A case can be made that POSIX should not
  6577. mandate case-sensitivity.  Applications must then not depend on
  6578. case-sensitivity.  This will affect programs that create files with names
  6579. other than those provided by the user.  It could also affect programs that
  6580. *read* directories, since they'd have to know that "foobar" and "FoOBaR"
  6581. refer to the same file.
  6582.  
  6583. I see great difficulty in changing UNIX to be case-insensitive, however.  It
  6584. certainly wouldn't pose any great *implementation* difficulties, but I would
  6585. not like to bet that no user or program would be greatly affected.
  6586.  
  6587. >From Mark R. Crispin:
  6588.  
  6589. >     It seems that the two sides in this issue boil down to this:
  6590. > . "gee, since we're defining a standard portable operating system
  6591. >   that isn't necessarily the present de facto Unix, let's fix
  6592. >   this case sensitivity cretinism"
  6593. > . "case sensitivity is what makes Unix better than any other
  6594. >   operating system, and only a cretin can't understand why this
  6595. >   is wonderful"
  6596.  
  6597. Not really.  A POSIX standard that does not *mandate* case-sensitivity need
  6598. not *forbid* it.  And I have seen *no* arguments that "case sensitivity is
  6599. what makes UNIX better than any other operating system."
  6600.  
  6601. >      Let's start by discarding the arguments which are bogus.
  6602. > The most glaring of these has got to be the international
  6603. > compatibility argument.  The only advocates of this argument seem
  6604. > to be pro case sensitivity Americans who have seized upon this as
  6605. > an argument to shore up their position without really thinking
  6606. > over the issue carefully.
  6607.  
  6608. Well, it may seem that way, but it isn't.  I admit to being a United States
  6609. citizen, but I am not unreservedly pro-case-sensitivity.  I see the merits
  6610. to both sides of the argument, but I see more problems with
  6611. case-insensitivity than with case-sensitivity.
  6612.  
  6613. >      Unix does not allow arbitrary strings in filenames.  Any
  6614. > number of "funny" characters must be within a quoted string.  I
  6615. > can't say
  6616. >     rm foo.bar;1
  6617. > I have to say
  6618. >     rm "foo.bar;1"
  6619. > Guess what.  A number of foreign keyboards use those "funny"
  6620. > characters to be non-English glyphs.
  6621.  
  6622. As the moderator pointed out, the shell, not the operating system,
  6623. interprets these funny characters.  Applications need not get file names
  6624. passed as arguments from the shell.  The office automation system we
  6625. developed at CCI had its own shell, which did no parsing of path names
  6626. whatsoever; the only characters it forbade were the slash and the null
  6627. character (because they are not allowed in UNIX filenames) and those
  6628. characters its forms package didn't allow you to type in (because we never
  6629. got around to changing it to do so).  I frequently used file names
  6630. containing blanks within this application, even though it made it
  6631. inconvenient to manipulate those files using commands typed at the UNIX
  6632. shell.
  6633.  
  6634. >      I have yet to hear of any organization in Japan using kanzi
  6635. > or hirogana or katakana in filenames.
  6636.  
  6637. I have a document in front of me from ASCII Corporation in Japan, describing
  6638. changes made to 4.2BSD to support Kanji and Kana.  It says:
  6639.  
  6640.     It is possible to create a file whose name contains Kana and/or
  6641.     Kanji characterss, since the file system and Kanji version of
  6642.     the shell support it.  However, we don't recommend such filenames,
  6643.     becasue it is impossible to handle such files from ASCII terminals.
  6644.  
  6645. The argument used against it would not apply if, for example, no terminals
  6646. attached to the machine were ASCII terminals and the site didn't expect to
  6647. export these files to machines with only ASCII terminals attached.  The
  6648. developers of it may be coming from a more "traditional" UNIX environment,
  6649. where you have many ASCII terminals attached to the machine and where you
  6650. frequently exchange files with other sites not running the same hardware and
  6651. software that you are running.  In an office environment, it may be possible
  6652. to provide everyone with a Kanji/Kana terminal, and it may not be as
  6653. important to worry about exchanging file with some random development
  6654. machine in the United States.
  6655.  
  6656. >   There are good reasons for
  6657. > this!  One is that there isn't a single way of representing
  6658. > written Japanese.  In older terminals, the high order bit when
  6659. > set indicated katakana (much as DEC VT220's use the high order
  6660. > bit for their "international characters").  Modern Japanese
  6661. > terminals use the JIS (Japanese Industrial Standard) system of
  6662. > ESCAPE followed by two bytes to define a 14 bit character.
  6663.  
  6664. The system they describe uses "Shift JIS" code for Kanji, and supports both
  6665. terminals that use this code and the regular JIS code for Kanji; it does
  6666. code conversion between the codes for JIS-Kanji terminals.
  6667.  
  6668. >      Some German keyboards use various 7-bit glyphs (I believe
  6669. > "@" is umlaut-a) for their umlauts and ess-tset.  Or, there's the
  6670. > VT220 system.  I just tried creating a file called Goethestrasse
  6671. > (using umlaut-o for "oe" and ess-tset for "ss") on my local Unix
  6672. > system using my VT220 clone.  It made "GVthestra_e", the 7-bit
  6673. > form.
  6674.  
  6675. The latter sounds like ISO Latin Alphabet No. 1; "umlaut-O" has the hex code
  6676. D6 and capital V has the code 56; 56 hex + 80 hex is D6 hex.  (I believe DEC
  6677. recommended the VT220 code set to ISO for standardization.)
  6678.  
  6679. >   Dare I mention that in German, only nouns (and the first
  6680. > word in a sentence) are capitalized?
  6681.  
  6682. The same is true of English; so what?
  6683.  
  6684. >      The point is that Unix does *not* support international
  6685. > character sets in filenames.  It supports 7-bit USASCII.  So
  6686. > let's leave that issue to rest.
  6687.  
  6688. As the moderator pointed out, this is not the case.  The kernel supports all
  6689. characters except slash and the null character, except for the 4.[23]BSD
  6690. kernel which (too helpfully) refuses to create files with characters in
  6691. their name that have the eighth bit set.  Certain UNIX utilities do not
  6692. handle 8-bit characters; this is not, however, an intrinsic characteristic
  6693. of the UNIX system.  I would ask European and Asian customers what they
  6694. wanted the UNIX system to do about character sets other than 7-bit USASCII
  6695. before I casually dismissed the possibility of supporting them.
  6696.  
  6697. >      I haven't yet heard of any serious use of full 8-bit bytes
  6698. > for filenames on any other operating system, which, if you are
  6699. > serious about supporting international character sets, you must
  6700. > do.  There's this small problem of getting 8-bit (as opposed to
  6701. > 7-bit) ASCII through various pieces of hardware and networks
  6702. > which think that the high order bit is parity...
  6703.  
  6704. Not all such pieces of hardware have this limitation.  The paper from ASCII
  6705. Corporation simply says "Kana and Kanji terminals must be set up to use 8
  6706. bit no parity mode."  If other terminals use a 7-bit encoding of an 8-bit
  6707. data stream, the terminal driver can do code translation transparently to
  6708. the rest of the system.
  6709.  
  6710. The fact that most OSes haven't solved these problems, and don't provide for
  6711. full 8-bit characters in file names, doesn't mean there is no demand for
  6712. full 8-bit characters in file names.  The users in non-English-speaking
  6713. countries may just have learned to get around this problem, and either use
  6714. English-language file names or approximate their native spelling in file
  6715. names.
  6716.  
  6717. Volume-Number: Volume 7, Number 76
  6718.  
  6719. From news  Sat Oct 25 20:57:36 1986
  6720. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6721. Newsgroups: mod.std.unix
  6722. Subject: Case sensitivity in file names
  6723. Message-Id: <6095@ut-sally.UUCP>
  6724. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6725. Date: 26 Oct 86 01:57:22 GMT
  6726. Draft-9: 2.3.folding
  6727.  
  6728. From: seismo!allegra!phri!roy@sally.utexas.edu (Roy Smith)
  6729. Date: Sun, 19 Oct 86 20:51:49 EDT
  6730.  
  6731.     I haven't been following this case-sensitivity discussion too
  6732. closely, so forgive me if this point has already been brought up.  Imbedded
  6733. capitals are useful for separating the components of multi-word filenames
  6734. without wasting valuable characters.  Consider the following:
  6735.  
  6736.     1) UnixCaseDebate
  6737.     2) unixcasedebate
  6738.     3) unix_case_debate (or trivial variations like unix.case.debate)
  6739.  
  6740.     I think most would agree that #2 is much less readable than either
  6741. of the others.  Whether #1 or #3 is easier to read is in the eye of the
  6742. beholder, but consider that the former is a valid filename in 14-character
  6743. systems, while the latter is not.
  6744.  
  6745.     All this aside, it has been stated over and over again that the job
  6746. of a standard is to agree on something which is the most compatible with
  6747. the most existing implementations.  I don't know of any existing Unix
  6748. implementations that have case-insensitive filenames, so why start now?
  6749.  
  6750.     It has already been pointed out by several people that various
  6751. layered Unix products, such as Eunice, have dealt with the problem of
  6752. enforcing (or, if you prefer, "allowing") case sensitivity with an
  6753. underlying OS that doesn't.  On the other side of the coin, application
  6754. programs like Emacs provide case-insensitivity in filenames with a
  6755. case-sensitive OS underneath.  Thus, the argument that having a
  6756. case-insensitive file system makes Unix more portable just doesn't hold
  6757. water.
  6758.  
  6759.     So, what do you have?  An idea that doesn't provide any added
  6760. portability, or any added capability that can't be provided by an
  6761. application, and is incompatible with most (all?) existing implementations.
  6762. Sounds like a bad idea to me.
  6763.  
  6764. Roy Smith, {allegra,philabs,cmcl2,sun}!phri!roy
  6765. System Administrator, Public Health Research Institute
  6766. 455 First Avenue, New York, NY 10016
  6767.     
  6768.  
  6769.  
  6770. Volume-Number: Volume 7, Number 77
  6771.  
  6772. From news  Sat Oct 25 21:00:51 1986
  6773. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6774. Newsgroups: mod.std.unix
  6775. Subject: case sensitive file names
  6776. Message-Id: <6096@ut-sally.UUCP>
  6777. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6778. Date: 26 Oct 86 02:00:37 GMT
  6779. Draft-9: 2.3.folding
  6780.  
  6781. From: @SUMEX-AIM.ARPA:MRC@PANDA  (Mark Crispin)
  6782. Date: Mon 20 Oct 86 05:42:50-PDT
  6783. Postal-Address: 1802 Hackett Ave.; Mountain View, CA  94043-4431
  6784. Phone: +1 (415) 968-1052
  6785.  
  6786.      The XDE Lisp machine file server I use has a file system of the
  6787. sort that Mark Horton describes.  That is, it accepts and preserves
  6788. mixed case in filenames, but in name selection it does a case-independent
  6789. match.
  6790.  
  6791.      I find that on this file server I am much more likely to use a file
  6792. name such as TokyoPaper.FirstDraft.  In fact, this file server encourages
  6793. me to mix case like this freely, since there is no cost in doing so.  I
  6794. can edit "tokyopaper.firstdraft" or "TOKYOPAPER.FIRSTDRAFT" or even
  6795. "tOKYOpAPER.fIRSTdRAFT" and the system is still smart enough to figure
  6796. out I mean TokyoPaper.FirstDraft.
  6797.  
  6798.      On the DEC-20 and Unix file servers, it's single case and hyphens.
  6799. I end up using something like "tokyo-paper.first-draft".
  6800.  
  6801.      These were personal observations.  However, I know for a fact that
  6802. nobody uses mixed case on our Unix-based file server.  The Leaf (Xerox
  6803. Lisp machine file access protocol) server on Unix was modified to coerce
  6804. all filenames to be entirely lowercase on the Unix machine's disk and to
  6805. coerce it back to all uppercase in the other direction.  There were/are
  6806. two reasons:
  6807.  (1) transfers to/from the third file server, a DEC-20, were hopeless
  6808.      otherwise since the Unix system would insist that two identical files
  6809.      were different because the case of the names didn't match
  6810.  (2) the users found the case dependence to be a serious problem.
  6811.  
  6812. -- Mark --
  6813. -------
  6814.  
  6815. Volume-Number: Volume 7, Number 78
  6816.  
  6817. From news  Sat Oct 25 21:05:15 1986
  6818. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6819. Newsgroups: mod.std.unix
  6820. Subject: extern name length
  6821. Message-Id: <6097@ut-sally.UUCP>
  6822. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6823. Date: 26 Oct 86 02:05:01 GMT
  6824. Draft-9: 8.0
  6825.  
  6826. From: gwyn@brl.arpa (VLD/VMB)
  6827. Date:     Mon, 20 Oct 86 9:44:19 EDT
  6828.  
  6829. If it doesn't support 32-character extern name uniqueness, it isn't POSIX.
  6830. 1003.1 imposes requirements on a C implementation beyond those of X3J11.
  6831.  
  6832. I agree, however, that the names ending in "2" are ugly and that better
  6833. names might be chosen for them.
  6834.  
  6835. Volume-Number: Volume 7, Number 79
  6836.  
  6837. From news  Sat Oct 25 21:09:08 1986
  6838. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6839. Newsgroups: mod.std.unix
  6840. Subject: window size
  6841. Message-Id: <6098@ut-sally.UUCP>
  6842. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6843. Date: 26 Oct 86 02:08:53 GMT
  6844. Draft-9: windows
  6845.  
  6846. From: gwyn@brl.arpa (VLD/VMB)
  6847. Date:     Mon, 20 Oct 86 10:00:13 EDT
  6848.  
  6849. Many of us have long outgrown the fixed-size, constant-width font model
  6850. of text characters.  Such ideas as pagination to multiples of N text
  6851. lines are not as useful as they might once have been.  I would hope
  6852. that simplistic models of terminal text do not become more deeply
  6853. embedded in specifications such as POSIX.  Limitations due to
  6854. insufficiently general models are one of the worst problems with
  6855. existing systems; we can do better.
  6856.  
  6857. As to what TIOCGWINSZ should return: for some situations character
  6858. cell array dimensions are appropriate; for others pixel array size
  6859. is appropriate.  It would be best to supply both, with the explanation
  6860. that a "pixel" may just be a character cell for old-fashioned terminal
  6861. devices (in which case both sets of dimensions would have the same
  6862. numerical values).
  6863.  
  6864. Volume-Number: Volume 7, Number 80
  6865.  
  6866. From news  Sat Oct 25 21:13:07 1986
  6867. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6868. Newsgroups: mod.std.unix
  6869. Subject: case mapping
  6870. Message-Id: <6099@ut-sally.UUCP>
  6871. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6872. Date: 26 Oct 86 02:12:50 GMT
  6873. Draft-9: 2.3.folding
  6874.  
  6875. From: gwyn@brl.arpa (VLD/VMB) (Doug Gwyn)
  6876. Date:     Mon, 20 Oct 86 10:33:00 EDT
  6877.  
  6878. The reason strcoll() expands a text string to as much as twice its
  6879. original length for collating purposes, rather than mapping it to
  6880. a lowest-common-denominator form (such as case folding) is because
  6881. it is believed that the former can always be done successfully,
  6882. whereas lowest-common-denominator same-length mapping is known to
  6883. be inadequate.  Note also that the actions of strcoll() depend on
  6884. a dynamically-changeable selection of "locale" information.  So
  6885. strcoll() is a red herring in this debate.
  6886.  
  6887. UNIX variants that clear all but 7 bits in each char of a filename
  6888. are examples of systems that try too hard to be "helpful" based on
  6889. too limited a view of the world.  They should be fixed, as I'm sure
  6890. the Japanese have already suggested.
  6891.  
  6892. Arguments based on characteristics of the shell or of command-line
  6893. option parsing are beside the point; we're talking about what the
  6894. kernel does or should do about filenames.
  6895.  
  6896. The UNIX kernel was deliberately designed to be not much more than
  6897. an I/O multiplexer.  As with limited government, the theory is that
  6898. the kernel should do only those things that cannot be done at the
  6899. application level.  This includes coordination of shared resources
  6900. but NOT enforcement of technically unnecessary ideas about what is
  6901. appropriate for applications to be doing.
  6902.  
  6903. The fact that most UNIX implementations, including systems from
  6904. Berkeley and ATTIS, do not fully adhere to this design philosophy
  6905. is also irrelevant; they should perhaps be fixed.  Certainly a
  6906. standard such as POSIX that establishes a minimum common environment
  6907. has no business imposing limited application models across the board.
  6908. If POSIX is done properly, it should be even more minimalist than
  6909. 8th Edition UNIX.
  6910.  
  6911.  
  6912. Volume-Number: Volume 7, Number 81
  6913.  
  6914. From news  Sat Oct 25 21:20:11 1986
  6915. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6916. Newsgroups: mod.std.unix
  6917. Subject: X3 display committee
  6918. Message-Id: <6100@ut-sally.UUCP>
  6919. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6920. Date: 26 Oct 86 02:19:56 GMT
  6921. Draft-9: X3H3.6
  6922.  
  6923. From: nike!ll-xn!mit-amt!mit-eddie!frog!jim (Jim Isaak, IEEE P1003 Chair)
  6924. Date: Fri, 17 Oct 86 20:33:40 EDT
  6925.  
  6926. For general information, an X3 committee has been formed to deal with
  6927. standards for display management.  This includes windowing controls.
  6928. It is chaired by John Butler of Microsoft.  Datamation reports that they
  6929. are developing a model based on MS/Windows rather than X.WINDOWS or
  6930. Sun's NeW(e)s(t) suggestions.  It is not clear how this might related
  6931. to 1003 and/or other standards.
  6932.  
  6933.  
  6934. Volume-Number: Volume 7, Number 82
  6935.  
  6936. From news  Sat Oct 25 21:23:53 1986
  6937. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6938. Newsgroups: mod.std.unix
  6939. Subject: 8 bit characters
  6940. Message-Id: <6101@ut-sally.UUCP>
  6941. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6942. Date: 26 Oct 86 02:23:39 GMT
  6943. Draft-9: 2.3.folding
  6944.  
  6945. From: nike!ll-xn!mit-amt!mit-eddie!frog!jim (Jim Isaak)
  6946. Date: Mon, 20 Oct 86 16:52:03 EDT
  6947.  
  6948. re: mod.std.unix note of Mark Crispin
  6949.  
  6950. Charles River has been shipping 8 bit "UNIX System V" Derived systems
  6951. for some 5-6 years, and with a substantial user base in Japan and
  6952. China.  It is important, significant, and very useful that the full
  6953. 8 bits is carried throughout the file system.  Since terminals tend
  6954. to display what is input, and since a single site tends to use compatible
  6955. terminals the system does not need to be aware of what character sets
  6956. are being used -- if it's Kanji in its Kanji out .... as long as we
  6957. don't start sneaking in automatic conversions or stripping the 8th bit.
  6958.  
  6959. This alone does not speak to the uppercase/lower case point.  While it
  6960. is clear that we  (both as vendors and the standard) would be foolish to
  6961. not permit at least 8 bit characters, it might still make sense to do
  6962. a conversion of the "a-z" range to "A-Z" ... at least in theory; any
  6963. other abuse of the bit ranges would seem to be un-acceptable. 
  6964.  
  6965. So, the question comes down to "a-z" vs "A-Z"; the answers should look
  6966. forward to a much broader base of users, and to the systems of the
  6967. 1990's.  From a system perspective, every thing I see  coming out
  6968. can support upper and lower case, so there is little incentive for
  6969. case-folding there.  Also, I think the broader range of users (not us
  6970. computer folk) are used to their local conventions for upper and lower
  6971. case, and would want to project these onto a given system.  That probably
  6972. means not folding the cases.
  6973.  
  6974. Volume-Number: Volume 7, Number 83
  6975.  
  6976. From news  Sat Oct 25 21:26:45 1986
  6977. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  6978. Newsgroups: mod.std.unix
  6979. Subject: Re: mod.std.unix P1003 job control proposal
  6980. Message-Id: <6102@ut-sally.UUCP>
  6981. References: <5993@ut-sally.UUCP>
  6982. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  6983. Date: 26 Oct 86 02:26:26 GMT
  6984. Draft-9: job.control
  6985.  
  6986. From: seismo!munnari!yabbie.rmit.oz!rcodi@sally.utexas.edu (Ian Donaldson)
  6987. Date: Tue, 21 Oct 86 10:39:40 EST
  6988.  
  6989. > From: im4u!caip!hplabs!hpda!hpisoa1!davel@sally.utexas.edu (Dave Lennert)
  6990. > Date: Thu, 9 Oct 86 14:06:30 pdt
  6991.  
  6992. >        saved process group ID
  6993. >          An    active process has a saved process group ID that is
  6994. >          set to the    saved process group ID of the parent
  6995. >          process at    the time of creation of    the process (via
  6996. >          the fork()    function).  It is reset    to the process
  6997. >          group ID of the process when the process successfully
  6998. >          calls one of the exec functions.
  6999.  
  7000. What is the significance of the "saved process group ID"?  How is
  7001. it different to the normal process-group-ID?  Who uses it?
  7002.  
  7003. >        In section 3.2.2.2 Description of the _exit function replace
  7004. >        the paragraph:
  7005.  
  7006. >        with:
  7007. >          If    the process is a session process group leader, the
  7008. >          SIGHUP signal may be sent to each process that has    a
  7009.                ^^^ should be replaced by the word "will"
  7010. >          process group ID equal to that of the calling process;
  7011. >          also, all such processes may have their process group
  7012. >          ID    set to zero.
  7013. >          If    the implementation supports the    job control option
  7014. >          and if the    calling    process    has child processes that
  7015. >          are stopped, they will be sent SIGHUP and SIGCONT
  7016. >          signals.
  7017.  
  7018. I disagree with the proposal on the handling of _exit processing for
  7019. job control.  It should be possible to not have to know in advance
  7020. that you wish to log-off and leave something running that you started
  7021. in foreground and later shifted to background.  This is a KEY feature
  7022. of job control.  
  7023.  
  7024. vhangup() will provide clean terminals on a bsd system,
  7025. and we have improved vhangup further to not just turn off READ/WRITE bits,
  7026. but to actually redirect the file references to /dev/null (which has
  7027. the advantage of also dropping DTR reliably). 
  7028. Infinite-loop processes don't cause problems with system-response because
  7029. they are automatically niced (something that is long-needed in UNIX systems).
  7030.  
  7031. I see no mention of a vhangup equivalent in this proposal segment, but
  7032. then again, I haven't seen the whole of P1003 either.
  7033.  
  7034. I find the SIGHUP being sent by exiting processes to sub-proceses
  7035. a plain nuisance, and it does nothing for productivity.  Nohup(1)
  7036. is effectively obsoleted by job control, since the process won't
  7037. receive signals from terminals when they are in background anyway.
  7038.  
  7039. One if the KEY things about job-control is that you don't have
  7040. to "know in advance" what you plan to do.  Nohup(1) requires that 
  7041. you do known in advance, and with the above proposal, nohup(1) IS
  7042. required if you want to leave jobs running when you log-off.
  7043.  
  7044. The SIGHUP and SIGCONT signals are only sent to processes in the
  7045. terminal process group when modem carrier disappears on a BSD system.
  7046. Children of init that are stopped are also sent SIGHUP's and SIGCONT's.
  7047. Children of init that aren't stopped aren't sent anything.
  7048.  
  7049. Ian Donaldson
  7050.  
  7051. Volume-Number: Volume 7, Number 84
  7052.  
  7053. From news  Sat Oct 25 21:30:09 1986
  7054. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7055. Newsgroups: mod.std.unix
  7056. Subject: Re: mod.std.unix P1003 job control proposal (Brett Galloway)
  7057. Message-Id: <6103@ut-sally.UUCP>
  7058. References: <6040@ut-sally.UUCP> <5993@ut-sally.UUCP>
  7059. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7060. Date: 26 Oct 86 02:29:54 GMT
  7061. Draft-9: job.control
  7062.  
  7063. From: pyramid!decwrl!qubix!wjvax!brett
  7064. Date: Mon, 20 Oct 86 11:03:18 pdt
  7065. Organization: Watkins-Johnson Co., San Jose, Calif.
  7066.  
  7067. In article <6040@ut-sally.UUCP> Hentry Spencer writes:
  7068. >From: pyramid!utzoo!henry (Henry Spencer)
  7069. >Date: Fri, 17 Oct 86 20:18:05 CDT
  7070. >
  7071. >Apart from my overall objections to the concept of job control, there is
  7072. >one thing seriously wrong with the P1003 job control proposal as posted:
  7073. >it assumes that function names are distinct in at least the first 8
  7074. >characters, as witness "setpgrp" vs. "setpgrp2" and "getpgrp" vs. "getpgrp2".
  7075. >Note that an X3J11-conforming C implementation need distinguish only the
  7076. >first 6 characters.  I would suggest revised names for the new primitives,
  7077. >perhaps "setjpgrp" and "getjpgrp", with implementations which distinguish
  7078. >8 or more characters providing "setpgrp2" and "getpgrp2" names as well for
  7079. >maximum compatibility with existing mistakes.
  7080.  
  7081. Let's not force all variables to be distinct in the first 6 chars.  The
  7082. proper fix is to force a conforming C compiler to be more discriminating.
  7083. -------------
  7084. Brett Galloway
  7085. {pesnta,twg,ios,qubix,turtlevax,tymix,vecpyr,certes,isi}!wjvax!brett
  7086.  
  7087.  
  7088. Volume-Number: Volume 7, Number 85
  7089.  
  7090. From news  Sat Oct 25 21:34:16 1986
  7091. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7092. Newsgroups: mod.std.unix
  7093. Subject: Re: case sensitivity
  7094. Message-Id: <6104@ut-sally.UUCP>
  7095. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7096. Date: 26 Oct 86 02:34:02 GMT
  7097. Draft-9: 2.3.folding
  7098.  
  7099. From: seismo!bellcore!jgs (Jeff Smits)
  7100. Date: Tue, 21 Oct 86 16:32:57 edt
  7101.  
  7102. One of the nice things about the UNIX system, is that the operating system
  7103. doesn't try to define precise semantics of the  use of its facilities.
  7104. "A path-name is a null-terminated character string starting with an optional
  7105. slash (/), followed by zero or more directory names separated by slashes,
  7106. optional followed by a file-name." (From the System III reference manual)
  7107. That is all the semantics attached to the concept of a path-name.
  7108.  
  7109. By leaving the semantics simple, it makes it easy to support file/path-names
  7110. with international characters in them.  UNIX Pacific offers a source product
  7111. called JAE 1.0 (Japanese Application Environment) based on System V, Release
  7112. 2.1.0.  Included in its features is support for Japanese file-names as
  7113. documented in the Future Directions section of SVID Issue 2.
  7114. The basic concept is that the US ASCII code-set is always present contained
  7115. in the code-set range 001-0177(octal).  The range above 0177 (0x200-0x377 on
  7116. an eight-bit machine) is reserved for international characters.  No changes
  7117. were needed to the core operating system to support this.  Many of the utilities
  7118. function correctly with these code-sets.  This is all because there were no
  7119. additional semantics attached to the meaning of a character in a path-name.
  7120.  
  7121. It is the terminal driver's responsibility to convert the data received from
  7122. an international terminal into this internal representation.
  7123.  
  7124. The important point is that the operating system has no knowledge of the
  7125. code-set the path-names are written in.  The only assumption made about a
  7126. path-name is that the '/' character separates components in a path, and
  7127. the NULL character terminates the path.
  7128.  
  7129. If the standard changed to support case translation, it would be building an
  7130. code-set bias into an operating system implementation.  It would be difficult
  7131. to support the variety of code-sets with that type of conversion being done
  7132. in the operating system.
  7133.  
  7134. Due to international considerations and the fact that current practice
  7135. (both System V and BSD) support case sensitive file-names, I think
  7136. the current P1003 draft is correct with respect to case sensitivity.
  7137.  
  7138.  
  7139.                         Jeff Smits
  7140.                         AT&T Information Systems
  7141.                         ..!attunix!jgs
  7142.                         (201)-522-6263
  7143.                         190 River Rd.
  7144.                         Summit, NJ 07901
  7145.  
  7146. Volume-Number: Volume 7, Number 86
  7147.  
  7148. From news  Sat Oct 25 21:58:00 1986
  7149. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7150. Newsgroups: mod.std.unix,net.unix,net.usenix,net.unix-wizards
  7151. Subject: WeirdNIX
  7152. Message-Id: <6105@ut-sally.UUCP>
  7153. Reply-To: donn@hpfcdc.UUCP
  7154. Followup-To: mod.std.unix
  7155. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7156. Date: 26 Oct 86 02:57:42 GMT
  7157. Draft-9: Weirdnix
  7158.  
  7159. [ This is being crossposted to several newsgroups by request.
  7160. Followups should be to mod.std.unix, i.e., mailed to ut-sally!std-unix,
  7161. or sent as mail replies to Donn Terry at hplabs!hpfcla!donn or
  7162. the paper mail address below.  -mod ]
  7163.  
  7164. From: utah-cs!hplabs!hpfcla!hpfcdc!donn (Donn Terry)
  7165. Date: Mon, 20 Oct 86 16:54:44 mdt
  7166.  
  7167.             WeirdNIX
  7168.  
  7169.     ... or destructive QA of a standard.
  7170.  
  7171. The IEEE P1003 committee is offering prizes for the the best new and
  7172. technically legal interpretation of the POSIX(*) standard which
  7173. nevertheless violates the intuitive intent of the POSIX standard.
  7174.  
  7175. The intent is to find how the standard might be misinterpreted, and then
  7176. to correct the errors that the misinterpretations point out.  Like
  7177. destructive testing of hardware, you stress it until it breaks and then
  7178. fix what broke so you can then stress it further.
  7179.  
  7180. The criteria for judging the misinterpretations are:
  7181.  
  7182. It must be an interpretation of the P1003.1 POSIX Trial Use standard (as
  7183. published by IEEE) which conforms completely to the standard.  For the
  7184. purposes of the contest, Appendices C.5, E.1 and J are included as part
  7185. of the standard, but no other Appendices.
  7186.  
  7187. It must be represented as a detailed description in either pseudo-code
  7188. and or text as how an implementation could behave so as to conform with
  7189. the standard and still do "the wrong thing".  Annotation as to why the
  7190. interpretation is considered legal by the submitter will be of
  7191. significant value in judging.
  7192.  
  7193. Interpretations must be of topics discussed in the standard.  Areas that
  7194. are not covered by the standard are not eligable.  Interpretations which
  7195. use some features of the standard and then take advantage of something upon
  7196. which the standard is silent (and thus should not be) will be of significant
  7197. value.
  7198.  
  7199. If there are similar entries, postmark dates will be used.  If the entry
  7200. is submitted electronically, the postmark date will be the time and date
  7201. of mailing.  In case of a tie, the entry with the earliest postmark will
  7202. be used.
  7203.  
  7204. The winners will be judged by a subset of the IEEE P1003 working group,
  7205. and the members of that group are not eligable for prizes.  Members of
  7206. the working group for the purposes of this contest are those individuals
  7207. who attended either 2 or more of the most recent 4 working group meetings,
  7208. or who attended in Palo Alto.  The decision of the judges is final.
  7209.  
  7210. Prizes will be awarded to the "best" and "most demented" interpretations.
  7211. "Best" is an interpretation that is legal and which is "likely", in that
  7212. one could reasonably make the mistake and implement a system which did
  7213. that.  "Most demented" is a legal interpretation that would not actually
  7214. be implemented because it violates common sense. 
  7215.  
  7216. More than one first prize in each category may be awarded if, in the
  7217. interpretation of the judges, the best submittals are of comparable quality 
  7218. and are distinct problems.  Zero or more second prizes may also be awarded.
  7219.  
  7220. The first prize consists of:
  7221.     + Hewlett-Packard has agreed to donate some HP 16C calculators.
  7222.     + having your name in a place of honor in the acknowledgements
  7223.       section of the P1003.1 final use standard,
  7224.     + a copy of the final use standard (with your name in it!)
  7225.  
  7226. Second prizes (if any) consist of:
  7227.     + special mention in the acknowledgements section of the P1003.1
  7228.       final use standard,
  7229.     + a copy of the final use standard (with your name in it!)
  7230.  
  7231. The winners will be announced at USENIX/UniForum in January.  Deadline for
  7232. arrival of paper submittals is Friday, December 8th.   Submittals arriving
  7233. after that date will be considered only if they are in electronic form so
  7234. they can be judged remotely.  No submittals will be considered after
  7235. January 1, 1986.  Submittals should be sent either by mail (before
  7236. December 8th) or by electronic mail to:
  7237.     
  7238.         Donn Terry
  7239.         co-Chair P1003.1
  7240.         Hewlett-Packard Co.
  7241.         3404 E. Harmony Rd.
  7242.         Ft. Collins, Co. 80525
  7243.  
  7244.         {hplabs!}hpfcla!donn
  7245.  
  7246. The submitters of all interpretations that are considered for prizes 
  7247. (first postmark and legal) will be listed as contributors to the standard.
  7248.  
  7249. Submitting a proposal to the contest releases it to be used by IEEE both
  7250. to improve the standard, and to publish it as it sees fit.
  7251.  
  7252. A sample submittal follows (with thanks to Hal Jespersen).  The exact
  7253. form is not critical, but this submittal, were it eligable, would definitely
  7254. get consideration for a prize.  (In any case, it will be fixed!)
  7255.  
  7256.     Problem:
  7257.         getcwd() can legally return "."
  7258.         
  7259.     Explanation:
  7260.         getcwd() returns a pointer to the pathname of the
  7261.         current working directory.  The definition of
  7262.         pathname allows the dot directory as a valid
  7263.         pathname.  Returning dot from getcwd() is an
  7264.         effective no-op, but legal.
  7265.         
  7266.     Proposed Correction (optional):
  7267.         Add the following as a second sentence in sect 5.2.2.2:
  7268.         "The pathname that is pointed to is a full pathname,
  7269.         expressed relative to the root directory."
  7270.  
  7271. Donn Terry
  7272.  
  7273. Volume-Number: Volume 7, Number 87
  7274.  
  7275. From news  Sat Oct 25 22:08:50 1986
  7276. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7277. Newsgroups: mod.std.unix,net.unix,net.usenix,net.unix-wizards
  7278. Subject: Re: WeirdNIX
  7279. Message-Id: <6106@ut-sally.UUCP>
  7280. References: <6105@ut-sally.UUCP>
  7281. Reply-To: hpfcla!donn@hplabs.UUCP
  7282. Followup-To: mod.std.unix
  7283. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7284. Date: 26 Oct 86 03:08:23 GMT
  7285. Draft-9: Weirdnix
  7286.  
  7287. [ This is crossposted to several newsgroups by requests (it's a followup
  7288. to a similar article).  Further followups should go to mod.std.unix, i.e.,
  7289. be mailed to ut-sally!std-unix.  Replies should go to Donn Terry.
  7290. -mod.std.unix moderator ]
  7291.  
  7292. From: utah-cs!hplabs!hpfcla!hpfcdc!donn (Donn Terry)
  7293. Date: Mon, 20 Oct 86 16:54:44 mdt
  7294.  
  7295. The schedule on this is a little tighter than I'd like it to be, but
  7296. after getting all the approvals, it only leaves about 1.5 months to
  7297. run the contest if we close things off in time to judge at the December
  7298. P1003 meeting.  Thus the fact that electronic topics will be accepted later.
  7299. We can continue the judging via mail afterwards, if there is stuff to judge.
  7300.  
  7301. If the people who had the original idea (who may wish to remain anonymous)
  7302. want credit, let me know.  This idea is sufficiently "unusual" that
  7303. they may not want to take the blame#####credit :-) .
  7304.  
  7305. Please pass this on to your friends.  The more submittals, the better.
  7306.  
  7307. Donn Terry
  7308.  
  7309. Volume-Number: Volume 7, Number 88
  7310.  
  7311. From news  Sat Oct 25 22:19:38 1986
  7312. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7313. Newsgroups: mod.std.unix
  7314. Subject: Re: case sensitive filenames
  7315. Message-Id: <6107@ut-sally.UUCP>
  7316. References: <5860@ut-sally.UUCP>
  7317. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7318. Date: 26 Oct 86 03:19:05 GMT
  7319. Draft-9: 2.3.folding
  7320.  
  7321. From: mckenney@sri-unix.arpa (Paul E. McKenney)
  7322. Date: Thu, 23 Oct 86 17:27:21 pdt
  7323. Organization: SRI, Menlo Park, CA.
  7324.  
  7325. Ok, how about a compromise proposal?
  7326.  
  7327. Keep roughly the same case-sensitivity in the kernel interface that exists
  7328. now.  This means that (for example) 'unlink("abc")' and 'unlink("ABC")' will
  7329. remove two different files.
  7330.  
  7331. Keep the normal shell interface for filenames.  This means that (again, for
  7332. example) 'rm abc' and 'rm ABC' will again remove two different files.
  7333.  
  7334. Make escape completion case insensitive.  (Escape completion is used in some
  7335. versions of BSD 4.x csh, perhaps elsewhere also.  It allows a user to
  7336. type the first part of a filename (or command name) and then hit
  7337. ESC.  The system will complete the filename as best it can.  If it cannot
  7338. unambiguously determine the filename from the part given by the user, it
  7339. will beep after having supplied as much of the filename as it can without
  7340. problems with ambiguity.  There is also usually a feature that allow the
  7341. user to display all filenames that match what he has typed so far --
  7342. control-D serves this function in some variants of BSD 4.2 csh.)
  7343.  
  7344. In other words, if a user types 'rm abc<ESC>' (where <ESC> represents the
  7345. ESC key), and there is a file named 'ABC', and there is no other file that
  7346. matches the pattern '[aA][bB][cC]', the shell (-not- the kernel) will
  7347. backspace over the 'abc' and overwrite it with 'ABC' so that the command
  7348. line will look as if the user had typed 'rm ABC'.  The user may then
  7349. hit RETURN if he wishes to execute the command, or he may further edit
  7350. the command line (using his usual backspace/delete, etc. characters).
  7351.  
  7352. This escape-mapping facility should be supplied in a library routine so that
  7353. application programs can easily act the same way.  It would be nice if such
  7354. a function could work with keywords, hostnames, etc. as well as filenames.
  7355.  
  7356. This proposal has the following advantages:
  7357.  
  7358. o    It does not impact existing software (addition of the case-insensitive
  7359.     ESC does not add any functionality, it just makes it easier on users).
  7360.  
  7361. o    It answers Mark Horton's 'filename-over-the-phone' problem
  7362.     <6049@ut-sally.UUCP> (just tell the user to type 'foobar<ESC>').
  7363.  
  7364. o    It allows users from a case-insensitive environment a helpful tool
  7365.     to ease their transition (let's face it -- if it is different than
  7366.     whatever you are used to, it ain't friendly -- regardless of whether
  7367.     you are used to case sensitivity, case insensitivity, or hieroglyphics).
  7368.  
  7369. o    Removes the need for millions and millions of 'upper()' calls in
  7370.     application code mentioned by Dan Libes <5959@ut-sally.UUCP>
  7371.     (although the additional code to do good escape-completion is far
  7372.     from trivial!).
  7373.  
  7374. o    Removes the need for 'isfsense()' or 'isflegal()' (Chris Lent,
  7375.     <5971@ut-sally.UUCP>) since all implementations could use the same
  7376.     definition of legal characters in a pathname.  Note that 'isflegal()'
  7377.     is still useful for programs that are trying to be portable across
  7378.     different operating systems.
  7379.  
  7380. This proposal leaves the following two issues unresolved:
  7381.  
  7382. o    Whether the eighth bit on characters within a filename should be
  7383.     significant.  The developers of BSD 4.[23] must have had some good
  7384.     reason for making it insignificant, but the only reason that comes
  7385.     to mind is that most terminals cannot easily specify the eighth bit
  7386.     (just like some older terminals cannot easily specify lower case!).
  7387.  
  7388. o    Whether there should be some escaping mechanism to allow slash ("/")
  7389.     and ASCII NUL in a filename.  I cannot think of a reason for allowing
  7390.     this that seems worth the trouble -- any comments?
  7391.  
  7392.  
  7393.             Paul E. McKenney
  7394.             mckenney@sri-unix.arpa
  7395.             {pyramid,rutgers,ucbvax!hplabs}!sri-unix!mckenney
  7396.  
  7397. Volume-Number: Volume 7, Number 89
  7398.  
  7399. From news  Sun Oct 26 22:22:18 1986
  7400. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7401. Newsgroups: mod.std.unix
  7402. Subject: Re: Case sensitive file names: what do other systems do
  7403. Message-Id: <6109@ut-sally.UUCP>
  7404. References: <6029@ut-sally.UUCP>
  7405. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7406. Date: 27 Oct 86 04:21:54 GMT
  7407. Draft-9: 2.3.folding
  7408.  
  7409. From: seismo!mcvax!guido (Guido van Rossum)
  7410. Date: Thu, 23 Oct 86 23:19:13 +0100
  7411.  
  7412. In article <6029@ut-sally.UUCP>, Mark Horton writes:
  7413. >I think it would be interesting to hear what other, case-insensitive
  7414. >operating systems do about these issues.  What do MS DOS, or VM/CMS,
  7415. >or VMS, or whatever, do with their case insensitive file names in
  7416. >Europe, or Japan, or whereever?
  7417.  
  7418. Since you are asking:
  7419.  
  7420. I know quite well what two other case-insensitive systems do.  They take
  7421. extreme positions (while both being case-insensitive!).  To wit:
  7422.  
  7423. MS-DOS:
  7424.  
  7425. - Everything is in upper case (lower case is accepted by system calls
  7426.   but you get upper case back by directory searches etc.).
  7427. - Allows only alphanumerics and a very small set of punctuation
  7428.   characters; the rest are sort of ignored or considered as terminators!
  7429. - This means Germans etc. are in the same position as just after the
  7430.   invention of the telegraph.  (The Dutch don't particularly mind
  7431.   because they use few special characters and never know exactly where
  7432.   an umlaut should go anyway (we don't call it an umlaut, actually, but
  7433.   the Dutch word wouldn't make sense to most readers of this message).)
  7434.  
  7435. Apple Macintosh:
  7436.  
  7437. - The case given when a file was created is retained in the directory
  7438.   listing so it is possible to make a file name stand out by calling it
  7439.   "READ ME" (yes, with spaces!).
  7440. - All characters of the Mac's 8-bit character set are allowed, except
  7441.   the colon, which serves as a pathname delimiter ('/' in Unix).  This is
  7442.   USASCII extended with all sorts of odd characters used in all sorts of
  7443.   foreign languages (as long as they use the latin alphabet as a base).
  7444.   Even chracters that don't have a representation in the commonly used
  7445.   fonts are allowed; even the null character, (although this possibility
  7446.   necessarily disappears in the C interface).
  7447.   There is a mapping between the cases which can be used for various
  7448.   purposes; A and a correspond in this mapping, but accented characters
  7449.   are not the same as their other case counterparts (I believe --
  7450.   someone borrowed my copy of Inside Macintosh).  This mapping is used
  7451.   when files are opened, etc.  There is also a collating sequence for
  7452.   arbitrary strings which can be changed by different countries.
  7453. - Germans, French and Swedes should be perfectly happy with this, unless
  7454.   they happen to be case-sensitivity-freaks.  I don't know about the
  7455.   Japanese, but they could get away quite well if they use a different
  7456.   mapping to character glyphs (which is quite simple to do on the Mac).
  7457.  
  7458. (BTW, I think Apple has also designed decent solutions to other
  7459. internationalization issues -- their date and time notation, and probably
  7460. that for currency also, can be adapted to any of the European countries
  7461. in which they sell computers!)
  7462.  
  7463. Oh, just in case votes are taken: I am *for* case sensitivity.
  7464. John Bruner put it quite well.
  7465.  
  7466.     Guido van Rossum, CWI, Amsterdam <guido@mcvax.uucp>
  7467.  
  7468. Volume-Number: Volume 7, Number 90
  7469.  
  7470. From news  Sun Oct 26 22:26:48 1986
  7471. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7472. Newsgroups: mod.std.unix
  7473. Subject: A convention for -file
  7474. Message-Id: <6110@ut-sally.UUCP>
  7475. References: <6029@ut-sally.UUCP>
  7476. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7477. Date: 27 Oct 86 04:26:31 GMT
  7478. Draft-9: 1003.2.getopt
  7479.  
  7480. From: weemba@brahms.berkeley.edu (Matthew P Wiener)
  7481. Date: Fri, 24 Oct 86 14:27:50 PDT
  7482. Organization: University of California, Berkeley
  7483.  
  7484. In article <6029@ut-sally.UUCP> Mark Horton writes:
  7485. >    Since many commands take names beginning with "-" as flags,
  7486. >        file names beginning with "-" don't always work.
  7487.  
  7488. There's a real easy fix to the current random collection of special
  7489. flags that handle filenames beginning with a dash: always interpret
  7490. two dashes at the beginning of a command line argument as the name for
  7491. the file obtained by eliding the two dashes into one.  Thus
  7492.  
  7493. % rm --xyz ----xyz
  7494.  
  7495. would mean remove -xyz ---xyz, etc.  It's completely unambiguous,
  7496. until some clown comes up with flags needing two dashes.  Similarly
  7497. for ++file with commands using + flags.
  7498.  
  7499. ucbvax!brahms!weemba    Matthew P Wiener/UCB Math Dept/Berkeley CA 94720
  7500.  
  7501. Volume-Number: Volume 7, Number 91
  7502.  
  7503. From news  Sun Oct 26 22:31:29 1986
  7504. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7505. Newsgroups: mod.std.unix
  7506. Subject: Re: job control
  7507. Message-Id: <6111@ut-sally.UUCP>
  7508. References: <6024@ut-sally.UUCP>
  7509. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7510. Date: 27 Oct 86 04:31:05 GMT
  7511. Draft-9: job.control
  7512.  
  7513. From: shannon@sun.com (Bill Shannon)
  7514. Date: Sat, 25 Oct 86 00:19:53 PDT
  7515.  
  7516. > From: bobr%zeus.tek.csnet@RELAY.CS.NET (Robert Reed)
  7517. > Organization: CAE Systems Division, Tektronix Inc., Beaverton OR
  7518. > Date: 15 Oct 86 12:23:31 PDT (Wed)
  7519. > Naive programs should have access to window size as character information,
  7520. > but there are programs which do not manipulate windows which need window
  7521. > size information in pixels.
  7522.  
  7523. I'm still waiting to hear about such programs that aren't dependent on
  7524. the particular window system they are running under.
  7525.  
  7526. > Whether the tty system does know about pixels or not, it should.  If the
  7527. > window size information (in character units) is going to be accurate, window
  7528. > sizes must be restricted to integrals of character size.  With straight ttys
  7529. > this is no problem, but if the system supports font changing, character size
  7530. > can vary.  Rather than require one call to find the window size and then
  7531. > another call to find out what the units are, this information should be
  7532. > consolidated into a single place.
  7533.  
  7534. If you want both at once, the window system can do the consolidation.
  7535.  
  7536. The tty driver should not know about pixels.
  7537.  
  7538.                     Bill Shannon
  7539.  
  7540. Volume-Number: Volume 7, Number 92
  7541.  
  7542. From news  Sun Oct 26 22:36:37 1986
  7543. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7544. Newsgroups: mod.std.unix
  7545. Subject: Re: window size
  7546. Message-Id: <6112@ut-sally.UUCP>
  7547. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7548. Date: 27 Oct 86 04:36:14 GMT
  7549. Draft-9: windows
  7550.  
  7551. From: guy@sun.com (Guy Harris)
  7552. Date: Sun, 26 Oct 86 15:16:30 PST
  7553.  
  7554. > As to what TIOCGWINSZ should return: for some situations character
  7555. > cell array dimensions are appropriate; for others pixel array size
  7556. > is appropriate.
  7557.  
  7558. Bill Shannon's point was that those applications for which pixel array size
  7559. is important are not necessarily going to be talking to a terminal-like
  7560. interface.  It is certainly *possible* to do graphics and window management
  7561. through such an interface; whether this is *desirable* is another matter.
  7562. Until it is established that all implementations will provide access to
  7563. graphics or a window system through the terminal interface, it is
  7564. inappropriate to require the terminal interface to supply data not
  7565. applicable to plain text characters.
  7566.  
  7567. Volume-Number: Volume 7, Number 93
  7568.  
  7569. From news  Mon Oct 27 14:13:35 1986
  7570. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7571. Newsgroups: mod.std.unix
  7572. Subject: Re: Case sensitive file names (8 bit file names)
  7573. Message-Id: <6119@ut-sally.UUCP>
  7574. References: <6002@ut-sally.UUCP> <5865@ut-sally.UUCP> <6018@ut-sally.UUCP> <6029@ut-sally.UUCP>
  7575. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7576. Keywords: international filename eightbit characters
  7577. Summary: The problem is the shell, not the file system.
  7578. Date: 27 Oct 86 20:13:10 GMT
  7579. Draft-9: 2.3.folding
  7580.  
  7581. From: seismo!enea!tut!intrin.uucp!jty (Jyrki Yli-Nokari)
  7582. Date: Mon, 27 Oct 86 20:54:42 -0200
  7583. Organization: Intrinsic Oy, Tampere, Finland
  7584.  
  7585. There seems to be misunderstanding about Unix not accepting 8 bit characters
  7586. in file names.
  7587.  
  7588. I would like to point out that Unix is perfectly happy to include
  7589. ANY 8 bit characters in the file name, EXCEPT slash '/' or null '\0'.
  7590.  
  7591. [ Depends on which system you're referring to:  some really do
  7592. strip the eighth bit in the file system, not in the shell.
  7593. Though there are many shells that also strip that bit,
  7594. as you point out.  -mod ]
  7595.  
  7596. The REAL problem is the shell that strips the 8:th bit off for its
  7597. own purposes.
  7598.  
  7599. At least IBM's AIX and HP's HP-UX have fixed this problem.
  7600.  
  7601. Regardless of the case sensitivity we MUST start from the fact
  7602. that characters are made out of at least eight bits, not seven = USASCII.
  7603.  
  7604. Now that I use 7 bit modified ascii character set,
  7605. the O umlaut in my terminal is really a backslash '\'
  7606. as far as Unix is concerned.
  7607.  
  7608. Try explaning that to a casual end-user, who wants to create a file
  7609. called '\rkki'.
  7610.  
  7611. Volume-Number: Volume 7, Number 94
  7612.  
  7613. From news  Mon Oct 27 15:05:39 1986
  7614. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7615. Newsgroups: mod.std.unix
  7616. Subject: Re: A convention for -file
  7617. Message-Id: <6121@ut-sally.UUCP>
  7618. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7619. Date: 27 Oct 86 21:05:29 GMT
  7620. Draft-9: 1003.2.getopt
  7621.  
  7622. From: guy@sun.com (Guy Harris)
  7623. Date: Mon, 27 Oct 86 12:44:39 PST
  7624.  
  7625. > There's a real easy fix to the current random collection of special
  7626. > flags that handle filenames beginning with a dash:...
  7627.  
  7628. There's another fix, already implemented by all the versions of "getopt"
  7629. running around - an argument of the form "--" means no other arguments are
  7630. to be interpreted as flags, regardless of their form.  Since this one has
  7631. already been implemented by many commands, it is preferable.
  7632.  
  7633. Volume-Number: Volume 7, Number 95
  7634.  
  7635. From news  Mon Oct 27 22:40:47 1986
  7636. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7637. Newsgroups: mod.std.unix
  7638. Subject: missing features from POSIX
  7639. Message-Id: <6128@ut-sally.UUCP>
  7640. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7641. Date: 28 Oct 86 04:40:16 GMT
  7642. Draft-9: 1003.2.getopt 1003.2.popen
  7643.  
  7644. From: utah-cs!cbosgd!cbosgd.ATT.COM!mark (Mark Horton)
  7645. Date: Mon, 27 Oct 86 20:51:58 est
  7646.  
  7647. In comparing various C libraries and standards, I discovered several
  7648. important routines that are in neither POSIX nor X3J11.  I'd like to
  7649. find out why they are missing.  Would you please either answer these,
  7650. ask the appropriate person, or post to mod.std.unix?
  7651.  
  7652. [ Post.  Most of them are higher level than X3J11 or 1003.1 address.  -mod ]
  7653.  
  7654. Some of these functions were explicitly created to enhance portability,
  7655. so it seems surprising to omit them.
  7656.  
  7657. getopt    This function is now present in System V and in 4.3BSD.  Two
  7658.     public domain implementations have been released, one by
  7659.     Toronto and one by AT&T.  AT&T is pushing getopt as a standard
  7660.     way to process arguments.  Yet it's unwise to use it if you
  7661.     can't be reasonably assured that it will work everywhere.
  7662.  
  7663.     I can even imagine that another operating system might support
  7664.     getopt to crack their own native conventions; for example, on
  7665.     MS DOS it might check for options beginning with / (or maybe
  7666.     even with the switch char.)  On a MacIntosh, it might be possible
  7667.     to get options from mouse conventions or a menu (possibly with
  7668.     the use of an additional table for menu labels.)
  7669.  
  7670. curses    Both 4BSD and System V have curses libraries which are largely
  7671.     compatible, making curses the most portable and highest level
  7672.     way to write screen oriented software.  Many curses functions
  7673.     were explicitly included to assist portability.  Yet a system
  7674.     can conform to POSIX and not provide any screen handling support.
  7675.  
  7676.     I would recommend that some appropriate subset of curses be
  7677.     specified by POSIX.  The subset should be the intersection
  7678.     of 4BSD and System V curses (essentially this means 4BSD minus
  7679.     the unportable features) with a dozen or so System V functions
  7680.     that enhance portability included (such as erasechar and cbreak.)
  7681.  
  7682. popen    This is part of standard I/O, but specific to UNIX, it's in
  7683.     every version of UNIX I know of.  Yet it's in neither X3J11
  7684.     nor POSIX.
  7685.  
  7686. I also ran into problems with <memory.h> and memccpy, but these are
  7687. conflicts between SVID and X3J11 which I will direct elsewhere.
  7688.  
  7689.     Mark
  7690.  
  7691. Volume-Number: Volume 7, Number 96
  7692.  
  7693. From news  Tue Oct 28 11:17:29 1986
  7694. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7695. Newsgroups: mod.std.unix
  7696. Subject: Re: A convention for -file
  7697. Message-Id: <6143@ut-sally.UUCP>
  7698. References: <6121@ut-sally.UUCP>
  7699. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7700. Date: 28 Oct 86 17:17:13 GMT
  7701. Draft-9: 1003.2.getopt
  7702.  
  7703. From: weemba@brahms.berkeley.edu (Matthew P Wiener)
  7704. Date: Mon, 27 Oct 86 23:12:03 PST
  7705. Organization: University of California, Berkeley
  7706.  
  7707. In article <6121@ut-sally.UUCP> Guy Harris writes:
  7708. >There's another fix, already implemented by all the versions of "getopt"
  7709. >running around - an argument of the form "--" means no other arguments are
  7710. >to be interpreted as flags, regardless of their form.
  7711.  
  7712. But such breaks on commands that take flags after the argument name, like
  7713. cc, lxref, od.
  7714.  
  7715. >                                Since this one has
  7716. >already been implemented by many commands, it is preferable.
  7717.  
  7718. Huh??  Why bother debating standards then?  I once got the argument that
  7719. integer division should round towards 0, not towards minus infinity, since
  7720. that's how Fortran did it.  I was new to the net then, and I was stunned.
  7721.  
  7722. I do not count appeal to the past or even the present as the definition of
  7723. preferable, although I agree that it can be a major factor.  But I dislike
  7724. it when it is paraded as THE reason for saying its preferable.  Is UNIX
  7725. supposed to turn into an official fossil now?
  7726.  
  7727. I say my suggestion is cleaner and more versatile, thus it is preferable.
  7728. The required reprogramming would not be that complicated--just a minor
  7729. nuisance.
  7730.  
  7731. But if you wish appeals to history, my suggestion is after all the same
  7732. as the ancient doubled quote => single quote within quoted strings con-
  7733. vention from days of yore.  In retrospect, it's perhaps a bit surprising
  7734. that something like this wasn't adopted from the beginning.
  7735.  
  7736. Not that I care.  *I* don't put dashes at the beginning of my file names.
  7737. (Joke, everyone, just a joke.)
  7738.  
  7739. ucbvax!brahms!weemba    Matthew P Wiener/UCB Math Dept/Berkeley CA 94720
  7740.  
  7741. Volume-Number: Volume 7, Number 97
  7742.  
  7743. From news  Tue Oct 28 11:29:44 1986
  7744. From: std-unix%ut-sally.UUCP@sally.utexas.edu (Moderator, John Quarterman)
  7745. Newsgroups: mod.std.unix
  7746. Subject: End of Volume 7
  7747. Message-Id: <6144@ut-sally.UUCP>
  7748. Organization: IEEE P1003 Portable Operating System for Computer Environments Committee
  7749. Date: 28 Oct 86 17:29:30 GMT
  7750. Draft-9: mod.std.unix
  7751.  
  7752. This is the end of Volume 7 of mod.std.unix.  These volumes are
  7753. purely for administrative convenience; this one is ending simply
  7754. because the archive has gotten too bulky for me to look through
  7755. conveniently.  Feel free to continue any discussion in the new
  7756. volume or to start new ones.
  7757.  
  7758. Volume-Number: Volume 7, Number 98
  7759.  
  7760.