home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / libraries / quickdos.lha / QuickDOS / QuickDOS.doc < prev    next >
Encoding:
Text File  |  1994-07-27  |  19.0 KB  |  736 lines

  1. TABLE OF CONTENTS
  2.  
  3. quickdos.library/QDClose
  4. quickdos.library/QDCloseAll
  5. quickdos.library/QDDiscard
  6. quickdos.library/QDExamine
  7. quickdos.library/QDExFirst
  8. quickdos.library/QDExNext
  9. quickdos.library/QDFlush
  10. quickdos.library/QDForget
  11. quickdos.library/QDInfo
  12. quickdos.library/QDIoErr
  13. quickdos.library/QDOpen
  14. quickdos.library/QDRead
  15. quickdos.library/QDReallocStep
  16. quickdos.library/QDSeek
  17. quickdos.library/QDSetSize
  18. quickdos.library/QDTell
  19. quickdos.library/QDWrite
  20.  
  21.         QuickDOS V1.00 -- Written by Alexis WILKE (c) 1994
  22.  
  23.     The memory increasement of every system enables a disk speed-up by
  24.     caching files in that memory. Then no time is spent to retreive
  25.     those data from the disk, but a simple copy or better a returned
  26.     pointer on the bufferized file.
  27.  
  28.     QuickDOS© is build for programmers who would like to make their
  29.     programs a little bit quicker not modifing their code too much.
  30.     QuickDOS supports most of important AmigaDOS commands for
  31.     file access (Thoses are listed below.) Even some calls might
  32.     be a little bit different, it can be used exactly the same
  33.     way. This means you might copy the AmigaDOS base pointer to
  34.     replace the missing QuickDOS one.
  35.  
  36.     QuickDOS© must be called from a process and each process
  37.     will have its own OpenLibrary() call. If you do not follow
  38.     those two rules, QuickDOS© will fail.
  39.  
  40.     Like the DOS functions, when a call successed -1 is returned
  41.     else 0, except when specified as different. Anyway the value
  42.     -1 should not be checked while some functions might return a
  43.     pointer rather than -1 (Then check zero!)
  44.     To check a function result you should use the following code:
  45.  
  46.         if(Examine(file, 0L) != 0) {
  47.             /* Hourra! It works! */
  48.             ...
  49.         }
  50.         else {
  51.             /* Ho ch... it fails! */
  52.             ...
  53.         }
  54.  
  55.     A null file handle will usuly generates the error:
  56.  
  57.         ERROR_INVALID_LOCK
  58.  
  59.  
  60.     It is similar to AmigaDOS for the following calls:
  61.  
  62.         QDClose
  63.         QDExamine
  64.         QDIoErr
  65.         QDOpen
  66.         QDRead
  67.         QDSeek
  68.         QDWrite
  69.  
  70.     Those functions actually return D0 and D1 equal but this may
  71.     change in the future. The library pointer must be in A6 in
  72.     order to work properly.
  73.  
  74.  
  75.     An internal device called 'QuickDOS:' is build into QuickDOS
  76.     library to permit any one to read/write files in memory not
  77.     using any physical device (Also no AmigaDOS device.) This
  78.     may be used to share large amount of information between
  79.     several tasks.
  80.  
  81.  
  82.     QuickDOS creates a secondary process to execute the low DOS
  83.     accesses (Open/Close/Read/Write with AmigaDOS.) That process
  84.     has a priority of 5. If you create a program with a higher
  85.     priority, you will not see effective faster loading
  86.     operations. There is actually no way to change the priority
  87.     of that process through QuickDOS.library. Because some
  88.     messages are sent to that process, a free signal is needed
  89.     when a call is done to any of the QuickDOS© function. When
  90.     no signal is available the ERROR_NO_FREE_STORE error occurs.
  91.  
  92.  
  93.     Note: a task which did not open (or which already closed the
  94.     library,) has no right to use it and any call will fail. This
  95.     is the same for an handle. Handles can not be shared between
  96.     tasks (but this does not matter because it is so quick to
  97.     open a file...)
  98.  
  99.     QuickDOS© is a copyright of Alexis WILKE March 1994.
  100.     All rights reserved.
  101.  
  102. quickdos.library/QDClose                             quickdos.library/QDClose
  103.  
  104.    NAME
  105.     QDClose -- Closes a QuickDOS file
  106.  
  107.    SYNOPSIS
  108.     success = QDClose(file)
  109.     D0          D1
  110.  
  111.     long QDClose(struct QDFileHandle *);
  112.  
  113.    FUNCTION
  114.     This function will close a QuickDOS file. This will free the
  115.     handle associated with the file but not the file information.
  116.     To be able to retreive the file information again you will
  117.     have to reopen the file.
  118.     No more access can be done with this file handle.
  119.  
  120.     If you want the file to be completly discarded from memory
  121.     you must use QDDiscard after the closure.
  122.  
  123.     A file opened with MODE_NEWFILE or MODE_READWRITE will be
  124.     written on the disk before to be closed if necessary.
  125.     The AmigaDOS file is closed when no more access is granted
  126.     to a file. Note that the closure may happen at a latter
  127.     time, until the flush take place.
  128.  
  129.     You may call this function with a null handle.
  130.  
  131.     Note: the success of this function does not means that the
  132.     file is successfully written to the disk.
  133.  
  134.    INPUTS
  135.     file - the file handle returned by QDOpen
  136.  
  137.    RETURN
  138.     success - DOSTRUE if the file has been closed. In any case
  139.         you cannot use the file handle any more and
  140.         QuickDOS will take care of the closure at a later
  141.         time.
  142.  
  143.    BUGS
  144.  
  145.    SEE ALSO
  146.     QDCloseAll, QDDiscard, QDForget
  147.  
  148. quickdos.library/QDCloseAll                       quickdos.library/QDCloseAll
  149.  
  150.    NAME
  151.     QDCloseAll -- Closes all QuickDOS file of your task
  152.  
  153.    SYNOPSIS
  154.     success = QDCloseAll()
  155.     D0
  156.  
  157.     long QDCloseAll(void);
  158.  
  159.    FUNCTION
  160.     QuickDOS keep a track of all the opened files for each task.
  161.     Then a task can close all its files at a time. This function
  162.     invalidates all your file handles.
  163.     This function is called by the system when you close the
  164.     library. You also can avoid a call to it or a call to QDClose()
  165.     for each of the opened files.
  166.     Files remains in memory, only file handles are freed.
  167.  
  168.     Note: the success of this function does not means that the
  169.     files are successfully written to the disk.
  170.  
  171.    INPUTS
  172.     None
  173.  
  174.    RETURN
  175.     success - DOSTRUE when nothing went wrong
  176.         In any case you cannot use any of the file handle.
  177.         QuickDOS will take care of the closure at a later
  178.         time.
  179.    BUGS
  180.  
  181.    SEE ALSO
  182.     QDClose, QDDiscard, QDForget
  183.  
  184. quickdos.library/QDDiscard                         quickdos.library/QDDiscard
  185.  
  186.    NAME
  187.     QDDiscard -- Try to discard a file from memory
  188.  
  189.    SYNOPSIS
  190.     success = QDDiscard(name)
  191.     D0            D1
  192.  
  193.     long QDDiscard(char *);
  194.  
  195.    FUNCTION
  196.     Try to discard a file. The given name must be a valid file
  197.     name. This function will be valid only if absolutly no task
  198.     is currently accessing the file.
  199.  
  200.     The file will be freed from memory and also the memory
  201.     will be available to you.
  202.  
  203.     A call to the discard function right after a file closure
  204.     usuly wont be successful.
  205.  
  206.    INPUTS
  207.     name - the file name (C terminated string)
  208.  
  209.    RETURN
  210.     success - DOSTRUE when the file is discarded
  211.  
  212.    BUGS
  213.  
  214.    SEE ALSO
  215.     QDClose, QDCloseAll
  216.  
  217. quickdos.library/QDExamine                         quickdos.library/QDExamine
  218.  
  219.    NAME
  220.     QDExamine -- Examines a file
  221.  
  222.    SYNOPSIS
  223.     fib = QDExamine(file, buffer)
  224.     D0/A0        D1    D2
  225.  
  226.     struct FileInfoBlock * QDExamine(struct QDFileHandle *,
  227.                         struct FileInfoBlock *);
  228.  
  229.    FUNCTION
  230.     This examine is a little bit different from the one of
  231.     AmigaDOS. AmigaDOS will each time read the disk to return
  232.     the file informations, this function make a copy of
  233.     those informations which are in memory. This means you
  234.     may receive old informations if you used QDOF_SHARED
  235.     flag calling QDOpen().
  236.  
  237.     QuickDOS has a copy of the FileInfoBlock in memory. Then,
  238.     if you do not need to modify it, you can ask for the
  239.     QuickDOS buffer pointer giving a null pointer in the
  240.     parameter list. This buffer pointer is no more valid when
  241.     the file is closed.
  242.     Otherwise you must pass a long word aligned pointer.
  243.     If 'buffer' is not long word aligned ERROR_INVALID_LOCK
  244.     occur or null is returned.
  245.  
  246.     The buffer will be actualized if another task open the
  247.     file.
  248.  
  249.    INPUTS
  250.     file - the file handle returned by QDOpen
  251.     buffer - a pointer to a FileInfoBlock structure
  252.         or null to retreive the QuickDOS pointer
  253.  
  254.    RETURN
  255.     fib - a 'like AmigaDOS' file info block
  256.         or null when an error occur
  257.  
  258.    BUGS
  259.     The buffer must be long word aligned. This is keept
  260.     to make sure you will have an AmigaDOS compatible
  261.     function (BPCL oblige.)
  262.  
  263.    SEE ALSO
  264.     QDInfo, QDExNext
  265.  
  266. quickdos.library/QDExNext                           quickdos.library/QDExNext
  267.  
  268.    NAME
  269.     QDExNext -- Search next file
  270.  
  271.    SYNOPSIS
  272.     qdfile = QDExNext(file)
  273.     D0          D1
  274.  
  275.     struct QDFile * QDExNext(struct QDFile *);
  276.  
  277.    FUNCTION
  278.     This function searchs for the next available file which
  279.     stands in memory. To look for the first existing file,
  280.     use null for the file handle.
  281.  
  282.     This is not similar to the AmigaDOS function.
  283.  
  284.     The structure information should be used only for the file name.
  285.     If more information is needed, a call to the proper functions
  286.     should be done (QDOpen() and QDInfo() or QDExamine().)
  287.  
  288.     The end of list is known because this function will return
  289.     zero and an error of type 'ERROR_NO_MORE_ENTRIES' (The error
  290.     code has to be checked with QDIoErr() to ensure the proper
  291.     action.)
  292.  
  293.    INPUTS
  294.     file - the file structure returned by ExFirst() or ExInfo()
  295.  
  296.    RETURN
  297.     qdfile - a QuickDOS file structure
  298.         or null when an error occur
  299.         (reach the end is considered as an error)
  300.  
  301.    BUGS
  302.     No protection against multi-tasking being is provided, then a
  303.     call to this function should be between a Forbid() and Permit()
  304.     calls, without access only to Exec low level functions (Like
  305.     memory allocation or so.)
  306.  
  307.    SEE ALSO
  308.     QDExamine, QDInfo, QDOpen
  309.  
  310. quickdos.library/QDFlush                             quickdos.library/QDFlush
  311.  
  312.    NAME
  313.     QDFlush -- Flushes the contains of the file buffer
  314.  
  315.    SYNOPSIS
  316.     success = QDFlush(file)
  317.     D0          D1
  318.  
  319.     long QDFlush(struct QDFileHandle *);
  320.  
  321.    FUNCTION
  322.     This function flushes the given file. Then the effective modifications
  323.     will be written back on the disk. The smaller buffer than possible
  324.     will be written.
  325.  
  326.     Note: the success of this function does not means the file is
  327.     successfully written on the disk.
  328.  
  329.    INPUTS
  330.     file - the file handle returned by QDOpen
  331.  
  332.    RETURN
  333.     success - DOSTRUE when nothing goes wrong
  334.  
  335.    BUGS
  336.  
  337.    SEE ALSO
  338.  
  339. quickdos.library/QDForget                           quickdos.library/QDForget
  340.  
  341.    NAME
  342.     QDForget -- Closes a file but do not save it.
  343.  
  344.    SYNOPSIS
  345.     success = QDForget(file)
  346.     D0           D1
  347.  
  348.     long QDForget(struct QDFileHandle *);
  349.  
  350.    FUNCTION
  351.     This function is similar to QDClose() in that it close and prohibid
  352.     any further access to the given file. But QDForget() will not make
  353.     the written information effective, which means it will not be
  354.     copied to the AmigaDOS disk. If several tasks was using this
  355.     file, you may anyway have the result on the disk because another
  356.     task saved it.
  357.  
  358.     This function should be used with care, and the usage of 'QuickDOS:'
  359.     device is adviced.
  360.  
  361.     You may call this function with a null pointer.
  362.  
  363.     Note: the file may be forgotten but remains empty on the disk.
  364.     This happen when the file was opened without the QDOF_MEMORY flag.
  365.  
  366.    INPUTS
  367.     file - the file handle returned by QDOpen()
  368.  
  369.    RETURN
  370.     success - DOSTRUE if the file has been closed in any case
  371.         you cannot use the file handle any more and
  372.         QuickDOS will take care of the closure at a later
  373.         time.
  374.  
  375.    BUGS
  376.  
  377.    SEE ALSO
  378.     QDClose, QDCloseAll
  379.  
  380. quickdos.library/QDInfo                               quickdos.library/QDInfo
  381.  
  382.    NAME
  383.     QDInfo -- Returns the QuickDOS file structure
  384.  
  385.    SYNOPSIS
  386.     qdfile = QDInfo(file)
  387.     D0/A0        D1
  388.  
  389.     struct QDFile * QDInfo(struct QDFileHandle *);
  390.  
  391.    FUNCTION
  392.     The function returns the pointer on the QuickDOS file structure.
  393.     That structure can ONLY be READ. This structure will remains
  394.     valid until the file closure.
  395.  
  396.     There are the most important fields:
  397.  
  398.     QDF_Data    is this file data pointer
  399.     QDF_Size    is the size of valid data into the buffer
  400.  
  401.     If the file was opened with QDOF_SHARED flag, it may change
  402.     at anytime.
  403.  
  404.     This function can be used instead of a QDRead() as a really
  405.     quick read function.
  406.  
  407.    INPUTS
  408.     file - the file handle returned by QDOpen
  409.  
  410.    RETURN
  411.     qdfile - the QuickDOS file structure like described in quickdos.i/h
  412.         or null
  413.  
  414.    BUGS
  415.  
  416.    SEE ALSO
  417.     QDExamine
  418.  
  419. quickdos.library/QDIoErr                             quickdos.library/QDIoErr
  420.  
  421.    NAME
  422.     QDIoErr -- Returns the last QuickDOS error for this task
  423.  
  424.    SYNOPSIS
  425.     error = QDIoErr()
  426.     D0
  427.  
  428.     long QDIoErr(void);
  429.  
  430.    FUNCTION
  431.     This function returns the last error which occurs in QuickDOS.
  432.     It can be called several times, the error is not erased after
  433.     the first call.
  434.     A function call, except this one, will always clear the
  435.     current error when no error occur.
  436.  
  437.    INPUTS
  438.     None
  439.  
  440.    RETURN
  441.     error - last error number (Like AmigaDOS)
  442.         or null
  443.  
  444.    BUGS
  445.  
  446.    SEE ALSO
  447.  
  448. quickdos.library/QDOpen                               quickdos.library/QDOpen
  449.  
  450.    NAME
  451.     QDOpen -- Opens a file
  452.  
  453.    SYNOPSIS
  454.     file = QDOpen(name, mode)
  455.     D0          D1    D2
  456.  
  457.     struct QDFileHandle * QDOpen(char *, long);
  458.  
  459.    FUNCTION
  460.     This function opens a file like DOS would do. It creates a new
  461.     file handle and reads the specified file when enough time is
  462.     given for that purpose and the file is opened with one of the
  463.     following modes:
  464.  
  465.         MODE_OLDFILE
  466.         MODE_READWRITE
  467.  
  468.     The file just stands in memory when opened as a new file with
  469.     the mode:
  470.  
  471.         MODE_NEWFILE
  472.  
  473.     This function can also be used like the AmigaDOS function and
  474.     with some flags. The mode include 16 flags in bits 16 to 31.
  475.     If you want your code to remains compatible, no flag can be
  476.     specified, otherwise there is a list:
  477.  
  478.     With MODE_READWRITE or MODE_NEWFILE:
  479.         QDOF_MEMORY    Open the file only in memory.
  480.  
  481.     With MODE_READWRITE or MODE_NEWFILE:
  482.         QDOF_SHARED    Do not keep an AmigaDOS file handle
  483.                 then other tasks can access the file
  484.                 with a read or a write access.
  485.  
  486.     With MODE_READWRITE:
  487.         QDOF_APPEND    Write only behind the already existing
  488.                 data. QuickDOS will forbid any write
  489.                 function in existing data.
  490.  
  491.    INPUTS
  492.     file -     the file handle returned by QDOpen
  493.     buffer -   a pointer to a buffer
  494.     length -   length of the data to be retreived
  495.         (length of the given buffer or less)
  496.  
  497.    RETURN
  498.     file - a new file handle (not AmigaDOS compatible at all)
  499.         or null
  500.  
  501.    BUGS
  502.  
  503.    SEE ALSO
  504.     QDWrite, QDSeek
  505.  
  506. quickdos.library/QDRead                               quickdos.library/QDRead
  507.  
  508.    NAME
  509.     QDRead -- Reads the file contains at current position
  510.  
  511.    SYNOPSIS
  512.     size = QDRead(file, buffer, length)
  513.     D0          D1    D2        D3
  514.  
  515.     long QDRead(struct QDFileHandle *, void *, long);
  516.  
  517.    FUNCTION
  518.     This function copies the file contains into the specified
  519.     buffer. This file must have been opened with any mode
  520.     except NEWFILE. The operation starts at the current position
  521.     and will continue at most up to the end of file.
  522.  
  523.     You may change the current position with the QDSeek()
  524.     function.
  525.  
  526.     The returned value is the size of the effectivly read
  527.     data.
  528.  
  529.    INPUTS
  530.     file -     the file handle returned by QDOpen()
  531.     buffer -   a pointer to a buffer
  532.     length -   length of the data to be retreived
  533.         (length of the given buffer or less)
  534.  
  535.    RETURN
  536.     size - the read size
  537.         null when the end of file has been reached
  538.         or -1 when an error occur (You can check QDIoErr()
  539.         for more informations)
  540.  
  541.    BUGS
  542.  
  543.    SEE ALSO
  544.     QDWrite, QDSeek
  545.  
  546. quickdos.library/QDReallocStep                 quickdos.library/QDReallocStep
  547.  
  548.    NAME
  549.     QDRallocStep -- Modifies the reallocation length
  550.  
  551.    SYNOPSIS
  552.     oldstep = QDRallocStep(step)
  553.     D0               D1
  554.  
  555.     long QDRallocStep(long);
  556.  
  557.    FUNCTION
  558.     The file buffers are enlarged and copied each time the limit of the
  559.     current buffer is reached. This means a lot of wasting time. If you
  560.     are working with large length with QDWrite command, you should
  561.     use a larger value here. The default size is 16Ko.
  562.  
  563.     The size will always be a multiple of 8 and also 8 at least. Use
  564.     the special value 0 to simply know about the current size.
  565.  
  566.     This value is only used with files opened with NEWFILE or READWRITE
  567.     modes.
  568.  
  569.     Note: a too large value will just enable QuickDOS to allocates all
  570.     your memory and generates - not enough memory - errors.
  571.  
  572.    INPUTS
  573.     file -     the file handle returned by QDOpen
  574.  
  575.    RETURN
  576.     oldstep - the step in use before this redefinition
  577.         if zero is returned, an error has occured
  578.  
  579.    BUGS
  580.     This size is shared between all tasks.
  581.  
  582.    SEE ALSO
  583.     QDWrite
  584.  
  585. quickdos.library/QDSeek                               quickdos.library/QDSeek
  586.  
  587.    NAME
  588.     QDSeek -- Defines the file current position
  589.  
  590.    SYNOPSIS
  591.     oldposition = QDSeek(file, position, mode)
  592.     D0             D1    D2         D3
  593.  
  594.     long QDSeek(struct QDFileHandle *, long, long);
  595.  
  596.    FUNCTION
  597.     This function tries to reach the specified position. The modes
  598.     are similar to thoses of AmigaDOS:
  599.  
  600.         OFFSET_BEGINNING
  601.         OFFSET_CURRENT
  602.         OFFSET_END
  603.  
  604.     The returned value is the current position from the beginning of
  605.     the file before the seek action or -1 when an error occured.
  606.  
  607.     If the given position is unreachable, the current position is not
  608.     modified.
  609.  
  610.     You can not write at the beginning of a READWRITE file
  611.     which was opened with the QDOF_APPEND flag.
  612.  
  613.     Note: to know about a seek error, you must check the
  614.     QDIoErr() after each call to QDSeek() to keep a compatibility
  615.     with any AmigaDOS.
  616.  
  617.    INPUTS
  618.     file -     the file handle returned by QDOpen()
  619.     position - the new position to reach
  620.     mode -     the seek mode like in AmigaDOS
  621.  
  622.    RETURN
  623.     oldposition - the previous position
  624.         or -1 when an error occured
  625.  
  626.    BUGS
  627.  
  628.    SEE ALSO
  629.     QDRead, QDTell, QDWrite
  630.  
  631. quickdos.library/QDSetSize                         quickdos.library/QDSetSize
  632.  
  633.    NAME
  634.     QDSetSize -- Defines a new file length
  635.  
  636.    SYNOPSIS
  637.     oldsize = QDSetSize(file, length)
  638.     D0            D1      D2
  639.  
  640.     long SetSize(struct QDFileHandle *, long);
  641.  
  642.    FUNCTION
  643.     This function tries to fix the file size to the given value.
  644.     It returns the previous size. If the new file size is larger,
  645.     then the buffer is filled with zeroes. The current position is
  646.     modified as required to never stand outside of the file buffer.
  647.  
  648.     This function is only valid on files opened with: MODE_NEWFILE
  649.     and MODE_READWRITE.
  650.  
  651.     Note: when a size of zero is returned you should check if
  652.     an error occured. Note that this function is entirely
  653.     different from the one in AmigaDOS.
  654.  
  655.    INPUTS
  656.     file -     the file handle returned by QDOpen()
  657.     length -   the new file size
  658.  
  659.    RETURN
  660.     oldsize - returns the previous size
  661.         or zero when an error occured
  662.  
  663.    BUGS
  664.  
  665.    SEE ALSO
  666.     QDSeek, QDTell
  667.  
  668. quickdos.library/QDTell                               quickdos.library/QDTell
  669.  
  670.    NAME
  671.     QDTell -- Returns the current file length
  672.  
  673.    SYNOPSIS
  674.     size = QDTell(file)
  675.     D0          D1
  676.  
  677.     long QDTell(struct QDFileHandle *);
  678.  
  679.    FUNCTION
  680.     This function returns the size of the specified file. This is
  681.     useful and quicker than a double QDSeek() call.
  682.  
  683.    INPUTS
  684.     file -     the file handle returned by QDOpen
  685.  
  686.    RETURN
  687.     size - the current file size
  688.         or -1 when an error occur (You can check QDIoErr()
  689.         for more informations)
  690.  
  691.    BUGS
  692.  
  693.    SEE ALSO
  694.     QDSeek, QDSetSize
  695.  
  696. quickdos.library/QDWrite                             quickdos.library/QDWrite
  697.  
  698.    NAME
  699.     QDWrite -- Writes a buffer into the file
  700.  
  701.    SYNOPSIS
  702.     size = QDWrite(file, buffer, length)
  703.     D0           D1    D2      D3
  704.  
  705.     long QDWrite(struct QDFileHandle *, void *, long);
  706.  
  707.    FUNCTION
  708.     This function writes the given buffer into the file. The write is
  709.     effective only in memory. To make the write effective on the disk
  710.     a call to QDFlush is needed. QDFlush is automatically called
  711.     when the file is closed.
  712.  
  713.     The buffer is written at the current position and the file
  714.     might be enlarged if requiered. If the size (the returned value)
  715.     is smaller than the length, then a memory error probably occured.
  716.  
  717.     Note: write at the beginning of a file opened with the mode
  718.     MODE_READWRITE and the flag QDOF_APPEND will simulate a
  719.     write command, but the write will not be effective.
  720.  
  721.    INPUTS
  722.     file -     the file handle returned by QDOpen()
  723.     buffer -   a pointer on the buffer to be written
  724.     length -   the size of the data to be written in the file
  725.  
  726.    RETURN
  727.     size - the written size
  728.         or -1 when an error occur (You can check QDIoErr()
  729.         for more informations)
  730.  
  731.    BUGS
  732.  
  733.    SEE ALSO
  734.     QDRead, QDSeek
  735.  
  736.