home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / mint / ksh_v04a / change.log < prev    next >
Encoding:
Text File  |  1991-02-23  |  8.0 KB  |  202 lines

  1. This is a very quick readme for my port of ksh to mint.
  2.  
  3. Changes for V04.0a
  4.  
  5. 1) fixed a problem introduced in V4, causing the pattern matching
  6. routines in the variable substitution ( ie ${name%%.c} etc. ) not to
  7. work correctly.
  8.  
  9. 2) the same pattern routines now work on a copy of the variable, rather
  10. than on the original. ( this was an old feature of this version of the
  11. shell )
  12.  
  13. Changes for V04.0
  14.  
  15. 1) relink without symbol table, removes 15K from executable.
  16.  
  17. 2) a few more changes to the wait code in job.c, a program that
  18. immediately went into a pause ( eg. sleep ) was missed. I should have
  19. just settled down and rewritten the job control code, neither init nor
  20. bash seem to have the same problems with really fast exits, bummer.
  21.  
  22. 3) time ... now correctly returns the elapsed time of a process. This
  23. was a bug in times.c in the mint lib.
  24.  
  25. 4) the old getopts function didn't work ( at all, as far as I can tell
  26. ). I've replaced this with code from the mint library, since both
  27. routines derive from work by Doug Gwin. This getopts routine correctly
  28. works in parsing it's parameters. ( But see bugs file . ) However it does
  29. enforce the System V syntax, ie. options may not be grouped :-(
  30.  
  31. 5) the tilde character '~', is now correctly interpreted in the SHELL
  32. environment variable. This used not to be the case. However, if a
  33. different program needs to find the shell, it may not understand ~ as
  34. meaning $HOME, so it is probably best to give an explicit path.
  35.  
  36. 6) The history file mechanism is begining to take shape. $HISTFILE now
  37. specifies the history save file. $HISTSIZE is not implemnted, yet. This
  38. file is opened and closed at every command, now on my system using the
  39. ICD disk cache I get such a negligable performance degradation that this
  40. seems quite reasonable. Let me know if it causes too many problems. The
  41. impetus for this level of file access is mgr, with multiple shells
  42. running I needed to close the file between writes, otherwise only the
  43. last shell run could access the history file.
  44.  
  45. 7) Fixed a memory allocation bug in the typeset command, one of mine I'm
  46. afraid.
  47.  
  48. 8) This version no longer changes the / to \ in most of the environment,
  49. now only the PATH is changed. The command line still has all /s replaced
  50. with \ unless the unixpath option is set, or the unixpath command used.
  51.  
  52. 9) Slight change to the version number format in KSH_VERSION, this now
  53. matches my release numbers.
  54.  
  55. Changes for V03
  56.  
  57. in no particular order;
  58.  
  59. 1) $PPID is now set to equal the process id of the parent process.
  60.  
  61. 2) if the parent process id == 0 ( ie. if ksh has been run as init.prg ),
  62. ksh runs as though it was a login shell, executing ~/profile.ksh.
  63.  
  64. 3) on exit, the login shell will look for the LOGOUT variable, and if set
  65. will try to execute the the file named. This means that,
  66.  
  67.     LOGOUT='~/logout.ksh'
  68. has the same effect as
  69.     trap ". ~/logout.ksh; exit" EXIT
  70.  
  71. 4) the ulimit command now works as expected, ulimit can be used to set up
  72. the child process limit's in a similar way to limit.ttp.
  73.  
  74. options are
  75.     ulimit [-dmt] [limit]
  76. where
  77.     -d : set the limit on the maximum Malloc'd memory for a process
  78.     -m : set the total maximum memory allowed for a process
  79.     -t : set the mamximum amount of CPU time allowed for a process
  80.  
  81. 5) shell scripts now work. Any file with a .ksh extension is assumed to be
  82. a shell script and if executed will be run in a spawned sub-shell. This
  83. does need the SHELL environment variable to be correctly set, eg to the
  84. name of the current shell ( use / rather than \ in the name ). Whilst I
  85. have spotted a few bombs when testing this, these have always been the
  86. result of bugs in the shell script, on all of the correct shell scripts
  87. I've tried, this has worked fine.
  88.  
  89. 6) CDPATH is now implemented. This gives a search path for the cd command,
  90. first the current directory is searched for the subdirectory, if this
  91. fails, then every directory in the CDPATH environment variable is also
  92. searched for this subdirectory. CDPATH is a semi-colon separated list.
  93. to use just type;
  94.     CDPATH="d:/usr;e:/mint"
  95. etc.
  96.  
  97. 7) the cursor key's now scroll through the history list, and along the
  98. current line. Insert runs a complete command, and clr/home runs a list
  99. command, rather like gulam ( but not quite as smart yet ). Undo does a
  100. kill-line.
  101.  
  102. 8) unixpath can now be used as a prefix to a command. This command will be
  103. executed without the normal unix_to_dos command line conversions. this is
  104. useful for programms such as zoo or sed that like to see /'s on their
  105. command line rather than \'s.
  106.  
  107. 9) OK, there was still a bug spotting the termination of processes. If
  108. there were any stopped jobs my tests for a running process failed and
  109. ksh went into a wait/sleep loop. This is now fixed - for the last time I
  110. hope :-).
  111.  
  112. 10) I've added the extra ksh variable formatting commands to typeset,
  113. ie.
  114.  
  115.     -l    Lowercase variable
  116.     -u    Uppercase variable
  117. eg.
  118.     81 $ typeset -u name
  119.     82 $ name="Guy Gascoigne"
  120.     83 $ echo $name
  121.     GUY GASCOIGNE
  122.  
  123.     -L    Left justify var.
  124.     -R    right justify var.
  125.     -Z    right justify and pad with leading zeros.
  126.  
  127.     if one of these options is followed by a number, the number is
  128. interpreted as a field width. The next example left-justifies the value
  129. of the variable last in a field of 10 characters:
  130.  
  131.     84 $ typeset -L10 last
  132.     85 $ last="Gascoigne-Piggford"
  133.     86 $ echo $last
  134.     Gascoigne-
  135.  
  136. Changes for V02
  137.  
  138. 1) maketemp fails to create tempory files, was hardcoded to /tmp. Now
  139. changed to use TEMP environment variable. Change to io.c.
  140.  
  141. 2) now exits if not run from within MiNT. Whilst it never crashed when
  142. Mint wasn't running, it never ran properly, the screen handling lacked
  143. line feeds, and no external commands worked correctly. It would be nice to
  144. get this version to be fully TOS compatable, this will involve more
  145. changes to the MiNT library. change to main.c
  146.  
  147. 3) added $MINT_VERSION which equals the version number of the currently
  148. running mint. Set to be readonly. change to main.c
  149.  
  150. 4) Some general tidying up of the search code in exec.c. The bit that
  151. checks for the file extensions ( .prg, .ttp, .tos, .app, .ksh ) was really
  152. messy. Added an extension check to partially completed path names, before
  153. this, /bin/ls would only try /bin/ls and not attemp to add any extensions,
  154. this has now been changed, and command without an extension, will get
  155. tested for with all the extensions before retuning false.
  156.  
  157. 5) The important one. The termination of child processes is now always
  158. noticed by the shell. No more pipes hanging, no more really fast programs
  159. hanging on their return. Thank you ersmith for pointing me in the right
  160. direction :-).
  161.  
  162. Known bugs.
  163.  
  164. 1) most shell scripts work fine if they are called by typing
  165.     ksh script.ksh
  166.  
  167. if you just type script.ksh, it will crash, whilst I have a feeling that I
  168. know what is wrong, I havn't proved it yet :-).
  169.  
  170. A few added features, for this MiNT Version.
  171.  
  172. 1) ksh only accepts unix style pathnames, but it automatically converts
  173. every / in a programs command line to a \. Now this is just right for most
  174. progs, however there had to be an exception. Zoo sometimes wants / or //
  175. on it's parameter line. To get around this, I've added an extra set
  176. option. set -o unixpath will pass the unix style commandline through to
  177. the sub program. set +o unixpath reset this. Whilst this is a bit of a
  178. frig, it does the job, and can always be changed later.
  179.  
  180. 2) shell scripts are denoted by the extension .ksh.
  181.  
  182. 3) file name extensions do not need to be typed for program execution. ksh
  183. now hunts through all the possible executable file name extensions to find
  184. the  program. As far as I know this is fine.
  185.  
  186. 4) On startup ksh will only look for profile.ksh ( in the Home directory )
  187. if passed the -L flag, for login, other wise only the file pointed to by
  188. $ENV will be executed.
  189.  
  190. 5) I've changed the seperator character within the PATH variable from ':'
  191. to ';' to avoid clashes with drive labels.
  192.  
  193. eg. use
  194.     export PATH="/bin;/etc"
  195. instead of
  196.     export PATH="/bin:/etc"
  197.  
  198.  
  199. Please report any bug to ggascoigne@cix
  200.  
  201. Guy Gascoigne - Piggford
  202.