home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / dev / e / stderr / stderr.doc < prev    next >
Text File  |  1994-09-11  |  8KB  |  215 lines

  1. StdErr.m
  2. A Standard Error Port for Amiga E by Trey Van Riper (Cheese
  3. Olfactory Workshop).
  4.  
  5. 0. DESCRIPTION
  6.  
  7. StdErr.m provides Amiga E users with an easy-to-use standard
  8. error port for their Amiga E programs.  The module is fairly
  9. intelligent, handling things with a kind of grace and ease
  10. anyone could hope for.  You almost cannot foul the use of
  11. this program module up (almost).
  12.  
  13. 1. HOW TO USE
  14.  
  15. Firstly, you need Amiga E v3.0 or greater (since this IS a
  16. module).  Then, of course, you need an Amiga, and an idea
  17. for a program you want to write.
  18.  
  19. NOTE: For those users using previous version of Amiga E,
  20. there's an archive floating around called StdErrUpd2.lha.
  21. This archive isn't quite as nice as this, but it's as nice
  22. an item as could be created with previous versions of Amiga
  23. E.  You'll need EPP to best use that version of StdErr.
  24.  
  25. At the end of your PROC main(), make sure you call
  26. 'err_Dispose()' so you'll free up anything that StdErr might
  27. have opened up (files, for example).  It's at this time that
  28. Workbench progs will also get their little prompt saying to
  29. press RETURN to close the error window (if appropriate).
  30.  
  31. Then, whenever your program seems to have found an error,
  32. call 'err_WriteF()' (more details coming up).  There is one
  33. minor caveat, though... there are three kinds of errors
  34. StdErr might come up with on its own... "OPEN", "FILE", and
  35. "MEM".  These errors come up as exceptions, so I would
  36. advise against using StdErr in EXCEPT handling, unless you
  37. know what you're doing.  Frankly, I've been using StdErr in
  38. my exceptions without any trouble.. I'm just thinking of
  39. potential problems.
  40.  
  41. Of course, I wasn't satisfied to have StdErr work TOO
  42. simply.. so I gave it so many bells and whistles that you
  43. won't WANT to use anything else.  This module should be
  44. included in every program you write, it's so simple to use.
  45.  
  46. Here's some details:
  47.  
  48. 1.1. PROC err_New(filename=NIL)
  49.  
  50. This PROC allows you to direct errors to a particular file.
  51. If 'filename' is 0, the stderr port is used (CONSOLE:, for
  52. the curious).  If 'filename' := stdout, further error
  53. reports are put to stdout.  If 'filename' is a pointer to
  54. text, the file of that name will be created (if there's an
  55. error), and text will be appended to it.
  56.  
  57. If no arguments are passed to err_New(), 'filename' will be
  58. assumed to be 0.
  59.  
  60. 1.2. PROC err_Name(program_name)
  61.  
  62. This PROC lets you change which name StdErr calls your
  63. program by.  This is used for stderr output to a file, and
  64. for Fault routines (if IoErr() is non-zero, StdErr
  65. automagically prints the associated text for the error).
  66.  
  67. If 'program_name' is omitted, 'StdErr' is assumed.
  68.  
  69. 1.3. PROC err_Dispose()
  70.  
  71. You must use this PROC at the end of your program.. if you
  72. don't, funky ugly things will happen.  I wish I could have
  73. automated this, but I cannot.. you'll have to remember to do
  74. this yourself.  This procedure only needs to be called at
  75. the end of the program, unless you're doing something really
  76. peculiar.  It'll tell WB users how to close the window, and
  77. it will close down open filehandles.
  78.  
  79. 1.4. PROC err_WriteF(format,items)
  80.  
  81. The main PROC... this is the biggie.  You may use this PROC
  82. anytime before err_Dispose().  The 'format' is the same as
  83. any WriteF statement, but 'items' needs to be enclosed in
  84. '[]'s or the statement won't work correctly (eg.
  85. err_WriteF('Big Time Screwup in \s\n',[procname]).  If
  86. IoErr() is set prior to invoking this function, a nice
  87. Fault() will be printed to StdErr automatically.
  88.  
  89. Note that 'items' can be left out (eg,
  90. "err_WriteF(format)"), as can 'format' (eg. err_WriteF()).
  91. Calling err_WriteF() without arguments will essentially make
  92. StdErr test IoErr() for a value, and Fault() the results to
  93. the user... kinda slick, really.
  94.  
  95. 2. REGISTRATION/DISTRIBUTION INFORMATION
  96.  
  97. This code is given freely to the E programming community
  98. (even if, somehow, you manage to find a way to make use of
  99. it on other platforms.. I don't care).  All I ask is that
  100. I'm credited with the routines.. nothing more, nothing less.
  101. I didn't spend a TREMENDOUS amount of time on it, but I DID
  102. spend some time, and concerning some of the meticulous care
  103. I placed in this project, I feel I have at least earned
  104. credit for its creation.
  105.  
  106. So.. I don't care if you're selling your product
  107. commercially, shareware, or just making a freeware project,
  108. feel free to use this as long as I'm credited.
  109.  
  110. I WILL limit distribution of this in one way: it may not be
  111. altered.  Feel free to spread this module literally all over
  112. the world, but do NOT alter the documentation or the
  113. routines themselves as you pass them on.  If you want to
  114. create your own stderr module, feel free to take credit for
  115. it, but I only want to take credit for my own work.  If your
  116. work is based strongly on my own, feel free to credit me,
  117. but clearly indicate where you've made alterations, and
  118. spread a separate version (claiming responsibility for your
  119. alterations).
  120.  
  121. 3. WORD TO THE UNWISE
  122.  
  123. If you decide to use these routines, have a care to the user
  124. you're about to assault.  Some folks want to be able to
  125. redirect information to a file or something.. they don't
  126. take very well to someone writing a program that writes to a
  127. stderr port for such frivolous reasons as 'Well, I had this
  128. really k00l ANSI file I wanted to dump on the screen, and I
  129. didn't want anyone to redirect it.'
  130.  
  131. Standard error ports are intended to be just that.. 'error'
  132. ports.  You're trying to give information regarding an
  133. error.. something most people want to be able to see in
  134. something like a separate filehandle on the console.
  135. Fortunately, most Amiga E programmers I've seen seem to
  136. really respect that, so I don't mind providing something
  137. like this for them.  But when Amiga E finally starts to hit
  138. it big, I really don't want folks to use StdErr to do stupid
  139. pranks.  Be kind.  Be gentle.  Be a pal.  Be a PROGRAMMER!
  140.  
  141. 4. ACKNOWLEDGMENTS
  142.  
  143. I'd like to thank Barry Wills for providing EE (a very nice
  144. editor, especially the folding.. I look forward to being
  145. able to use it more reliably on my poor ol' 68000), and for
  146. complementing me on this small project.
  147.  
  148. I'd also like to thank Wouter van [Insert Long Name Here]
  149. for writing Amiga E.  Now that E is Object Oriented, I feel
  150. much happier about using this new Object Oriented Standard
  151. Error port (basically, it frees up yet another variable name
  152. I can use to my own demented ends).  This man has done a
  153. FINE job on an excellent programming language I can only
  154. begin to tap.
  155.  
  156. 5. COMMENTS/HOSTILITY/LETTERS OF ADORATION/TERMS OF ENDEARMENT
  157.  
  158. Currently, I'm available at the following E-mail address, in
  159. order of preference/reliability:
  160.  
  161. jvanriper@uncavx.unca.edu
  162. vanriper@cs.unca.edu
  163. jvanripe@nox.cs.du.edu
  164.  
  165. I can also be written to via snail-mail:
  166.  
  167. Trey Van Riper
  168. 19-A Dortch Ave.
  169. Asheville, NC 28801
  170. USA
  171.  
  172. You may correspond in English (my best language), French,
  173. American Sign Language, Esperanto, and Latin (note, any
  174. language other than English may get unpredictable
  175. results/responses from me, as my vocabulary is rather weak
  176. in everything except English.. also, if you somehow manage
  177. to communicate to me in ASL, I'll be rather surprised..
  178. especially if it's via mail).  Sorry other languages aren't
  179. supported, but I can only learn so many at a time.
  180.  
  181. The above information should be good until around the summer
  182. of 1995, at which time things may become rather
  183. unpredictable for me (I'll have earned my degree in music,
  184. and may have moved on to find work somewhere.. I may also
  185. have learned some other language).
  186.  
  187. 6. HISTORY
  188.  
  189. (Note: ignoring versions of StdErr for Amiga E v2.(whatever))
  190.  
  191. StdErr 3.0:
  192.  
  193. * Initial release.
  194.  
  195. -- Known Bugs:
  196.  
  197. Ugly looking internal errors.
  198.  
  199. StdErr 3.1:
  200.  
  201. * Started using $VER: string (duh).
  202. * Cleaned up the internal error scheme quite a bit.  StdErr
  203.   now will attempt to give as much information as possible
  204.   as to why it didn't work.. which may not help the user
  205.   figure out what s/he did wrong, but it's a start.  So far,
  206.   the only way I've been able to test this is to try to
  207.   make StdErr open a file that has been locked.
  208.  
  209. -- Known Bugs:
  210.  
  211. StdErr will not print anything anywhere if it has been told
  212. to direct output to a file that has been locked (devices
  213. that have been write-protected/locked are okay, but files
  214. that are locked will not do).  I have yet to figure out why.
  215.