home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 1 / FFMCD01.bin / bbs / libdisks / d600t699 / disk671.lha / JcGraphDemo / JcGraphDemo.lha / Libs / FRQLIB.LZH / Programming.LZH / kd_freq.doc < prev    next >
Encoding:
Text File  |  1991-05-12  |  20.0 KB  |  764 lines

  1. kd_freq.library                            Release 3.00
  2. ---------------                            ------------
  3.                             By:  Khalid Aldoseri
  4.  
  5.  
  6.  
  7. 'kd_freq.library' is a standard Amiga shared library.  Its main function
  8. is to call up a file requester from any program so that the user can select
  9. a file.
  10.  
  11. To open the library, use OpenLibrary() like any other normal Amiga library.
  12.  
  13. The programming package contains the following files:
  14.  
  15.     kd_freq.doc    This file.
  16.     KDBase.h    C include file.
  17.     Glue.asm    C glue code for Manx/Lattice.
  18.     KDBase.i    Asm include file.
  19.     protos.h    Lattice #pragmas
  20.  
  21.  
  22. Look at test.c for the exact opening procedure.  You will need to assemble
  23. and link glue.asm along with your own object files or use the Lattice protos.
  24.  
  25.     e.g.  for Manx:
  26.  
  27.     cc +l test.c
  28.     as glue.asm
  29.     ln test.o glue.o -lc32
  30.  
  31.  
  32.  
  33.                 AutoDocs:
  34. ------------------------------------------------------------------------------
  35. kd_freq.library/NewFReq
  36.  
  37. NAME
  38.  
  39.     NewFReq - bring up a file requester and obtain a file name.
  40.  
  41. SYNOPSIS
  42.  
  43.     result = NewFReq(fr);
  44.       D0             A0
  45.  
  46.     struct FRequest *fr;
  47.     char *result;
  48.  
  49.  
  50. FUNCTION
  51.  
  52.     Accepts a pointer to a FRequest structure and calls up the file
  53.     requester.  The FRequest structure contains several arguments
  54.     that NewFReq() uses.  Specifically a default directory name,
  55.     default file name, and a default pattern (standard AmigaDOS wildcard
  56.     pattern) and returns a selected directory, selected file name, and
  57.     last pattern used in the same entries in struct FRequest that were
  58.     used to call the requester.  The CreateFRequest() call is used to
  59.     allocate and initialize the FRequest structure.
  60.  
  61.     The FRequest structure contains the following:
  62.  
  63.     struct FRequest {
  64.       struct Screen *screen;
  65.       UBYTE *reqtitle;
  66.       UBYTE *filename;
  67.       UBYTE *directory;
  68.       UBYTE *fullname;
  69.       UBYTE *pattern;
  70.       ULONG flags;
  71.       struct ExtraData *extras;
  72.       };
  73.  
  74.     fr->screen    a pointer to a Screen structure.  This defines the
  75.             screen the FR must show up on.  If NULL then it
  76.             defaults to the Workbench screen.
  77.  
  78.     fr->reqtitle    The text that will appear as the title of the FR.
  79.  
  80.     fr->filename    The default filename that will appear in the File
  81.             gadget when the FR comes up.  This will also contain
  82.             the selected filename when the call returns.
  83.  
  84.     fr->directory    The default directory that will appear in the Path
  85.             gadget when the FR comes up.  This will also contain
  86.             the selected directory when the call returns.
  87.  
  88.     fr->fullname    This is a string that is filled in by the NewFReq()
  89.             call if it is successful.  This contains the full
  90.             path to the file, i.e. directory+filename.  It is
  91.             NULL if the FR failed or was cancelled.  The NewFReq()
  92.             call returns either a pointer to this string if
  93.             successful, or NULL.
  94.  
  95.     fr->pattern    The default wildcard pattern that will appear in the
  96.             Show gadget when the FR comes up.  This will also
  97.             contain the last selected Show pattern.
  98.  
  99.     fr->flags    is a set of flags that control the operation of the FR.
  100.             These are described below.
  101.  
  102.     fr->extras    a pointer to a Struct ExtraData, as defined below.
  103.  
  104.  
  105.     File Requester Flags:
  106.     ---------------------
  107.  
  108.     FR_NOINFO    Do not show any file that ends with <.info>.
  109.             The user can change this setting later by
  110.             clicking on the 'I' gadget.
  111.             (automatically set by CreateFRequest() as FR_STDFLAGS)
  112.  
  113.     FR_NORESIZE    Do not allow the user to resize the FR.
  114.  
  115.     FR_NOTITLEBAR    Do not show the close window gadget, the drag
  116.             bar, or the front/back gadgets.  The title still
  117.             gets displayed.  This makes the FR non-movable.
  118.             This also automatically triggers FR_NORESIZE.
  119.             If you don't provide a title the file list will
  120.             resize and fill in the empty space.
  121.  
  122.     FR_AUTOPOSITION    Tells the FR to decide where it wants to come up
  123.             on its own.  (i.e. ignore LeftEdge and TopEdge)
  124.             (automatically set by CreateFRequest() as FR_STDFLAGS)
  125.  
  126.     FR_AUTOSIZE    Tells the FR to decide its size on its own.
  127.             (i.e. ignore Width and Height)
  128.             (automatically set by CreateFRequest() as FR_STDFLAGS)
  129.  
  130.     FR_OKTEXT    Tells the FR that we specified an alternate
  131.             OK text in 'extras->oktext'.
  132.  
  133.     FR_CANCELTEXT    Tells the FR that we specified an alternate
  134.             'Cancel' text in 'extras->canceltext'.
  135.  
  136.     FR_DUALWILD    When you set this flag, the wildcard pattern
  137.             you provide in 'pattern' is fixed and is applied
  138.             to all files in the FR.  The user then gets a
  139.             second wildcard in the Wildcard gadget.  (this
  140.             defauls to #?).  In essence, this allows you
  141.             to specify a pattern that will appply to ALL
  142.             the FR, no matter what the user selects as a
  143.             wildcard.  The user's wildcard is applied to
  144.             a file after it passes from the first wildcard.
  145.  
  146.     FR_FRONTSCREEN    Forces the FR to come up on the front screen.
  147.  
  148.     FR_NOTEXTSHADOW    Turns off the text shadowing in all of the FR.
  149.  
  150.     FR_NEWFONT    Tells the FR to use a different font than the
  151.             standard Topaz 8.  This can be any fixed spacing
  152.             font from 5 to 16 in size.  NO sanity checking is
  153.             done on the font size.  It is up to you to see
  154.             how the font looks like.  The FR will rescale
  155.             everything to suit the new font.  You need to
  156.             provide a pointer to a TextFont structure in
  157.             extras->NewFont.  Make sure you clear FR_SCREENFONT
  158.             if you set this.
  159.  
  160.     FR_SCREENFONT    As above, but uses the current font on the screen
  161.             the FR will show up on.  This always overrides
  162.             FR_NEWFONT.
  163.             (automatically set by CreateFRequest() as FR_STDFLAGS)
  164.  
  165.     FR_REPLACEIMAGES
  166.             Replaces the standard images in the FR with
  167.             the users's own.  The ExtraData struct below
  168.             shows where to place each pointer.  You can
  169.             use any depth of bitplanes as long as they match
  170.             the same width/height as the original gadgets.
  171.             Be creative!  Note that the size of the imagery
  172.             changes with the requested font size.
  173.  
  174.     FR_EXTENDEDSELECT Old flag.. use FR_SELECTLIST instead.
  175.  
  176.     FR_INVERTLOOK    Set this flag for an 'inverted' look for the file
  177.             list.  This is intended for use with 'save' calls
  178.             so that the user gets a visual difference between
  179.             save and load requesters.
  180.  
  181.     FR_HIDEWILD    Set this flag and point extras.Hide to a character
  182.             string of at least 32 bytes.  This should contain
  183.             the default wildcard pattern to Hide.  i.e. any
  184.             file matching this wildcard will not be shown in
  185.             the file list.
  186.             (automatically set by CreateFRequest() as FR_STDFLAGS)
  187.  
  188.     FR_NEWLOOK    If you set this flag the FR will change the
  189.             way it looks to make it match the look of
  190.             Intuition 2.0 and above.  This is automatically
  191.             set if Intuition's version number is 36 or more.
  192.             You should set this flag if you know that you
  193.             are running under 2.0 or above.  The automatic
  194.             enable might be removed in a later version.
  195.  
  196.     FR_NONEWLOOK    Disables the automatic enabling of FR_NEWLOOK.
  197.  
  198.     FR_SELECTLIST    Enable the Select List mode.  Read the section on the
  199.             Select List below.
  200.  
  201.     FR_SLSHOWNAMES    Read the section on Select List below.
  202.  
  203.     FR_KEEPBUFFERS    Enables the Keep Buffer feature.  Read section below
  204.             on 'Keep Buffers'.
  205.  
  206.  
  207.     These flags are defined in KDBase.h.  You can OR any of these flags
  208.     together.  There are no restrictions on which flags can be or'd with
  209.     others.
  210.  
  211.     The ExtraData structure:
  212.     ------------------------
  213.  
  214.     struct ExtraData {
  215.      struct Image    *UpArrow;    /* replacement image for Up Arrow */
  216.      struct Image    *DnArrow;    /* replacement image for Down Arrow */
  217.      struct Image    *DiskNormal;    /* replacement image for Disks */
  218.      struct Image    *DiskSelected;    /* replacement select image for Disks */
  219.      struct Image    *SizeStrip;    /* private... do not use. */
  220.  
  221.      UBYTE        *oktext;    /* text to be used as OK text */
  222.      UBYTE        *canceltext;    /* text to be used as CANCEL text */
  223.      USHORT    LeftEdge,TopEdge,Width,Height;
  224.      struct TextFont *NewFont;    /* New Font to use instead of Topaz 8 */
  225.      struct FileList *ExtendedList;    /* Always set to NULL at first call.  */
  226.                     /* If FR_EXTENDEDSELECT is set, this will */
  227.                     /* return a linked list of FileList structs. */
  228.  
  229.      UBYTE *Hide;            /* Default hide wildcard */
  230.                     /* Must set FR_HIDEWILD for it to be used */
  231.                     /* Will contain a copy of the last wildcard */
  232.                     /* the user set before exiting the FR on exit */
  233.  
  234.      UBYTE *buffer;            /* private storage for temp stuff.. don't touch!!!! */
  235.      ULONG unused[4];        /* future expansion.  Always set to NULL */
  236.  
  237.      };
  238.  
  239.     You can request a specific LeftEdge, TopEdge, Width, and Height
  240.     by giving a non-zero value in any of the above arguments.  However,
  241.     it is recommended that you do not.  The requester will attempt to
  242.     come back up where it was the last time if you don't give it the
  243.     FR_AUTOSIZE and/or FR_AUTOPOSITION flags.  The default values are:
  244.  
  245.         LeftEdge    120
  246.         TopEdge         20
  247.         Width        400
  248.         Height        200
  249.  
  250.     'oktext' is the text that will be shown in the 'OK' gadget.  This
  251.     should be something like "Load" or "Save" or whatever.  The string
  252.     must not be longer than 7 characters or it will be truncated.  Make
  253.     sure that you set the FR_OKTEXT as described above.
  254.  
  255.     'canceltext' is the text that will be shown in the 'Cancel' gadget.
  256.     This should be something like "No!" or whatever.  The string
  257.     must not be longer than 7 characters or it will be truncated.  Make
  258.     sure that you set the FR_CANCELTEXT as described above.
  259.  
  260. RESULT
  261.  
  262.     pointer to fr->fullname if file selected.
  263.  
  264.     NULL if FR cancelled or failed.
  265.  
  266.     fr->directory        selected path
  267.     fr->filename        selected file
  268.     fr->fullname        full path to file (0 length if FR cancelled)
  269.  
  270.     fr->pattern        last show pattern used
  271.     fr->extras->Hide    last hide pattern used
  272.  
  273.     fr->extras->LeftEdge    /
  274.     fr->extras->TopEdge    | The FR's left edge, top edge, width and
  275.     fr->extras->Width    | height when it was closed.
  276.     fr->extras->Height    \
  277.  
  278.  
  279.  
  280. BUGS
  281.  
  282.     None.
  283.  
  284. EXAMPLE
  285.  
  286.  
  287.     #include "KDBase.h"
  288.  
  289.     struct Library *KD_FReqBase, *OpenLibrary();
  290.  
  291.     main()
  292.     {
  293.     struct FRequest *fr, *CreateFRequest();
  294.     char *file, *NewFReq();
  295.  
  296.     if (KD_FReqBase = OpenLibrary(KLIBNAME,KLIBVERSION))
  297.         {
  298.         if (fr = (struct FRequest *) CreateFRequest())
  299.             {
  300.             fr->reqtitle = (UBYTE *) "FR Test";
  301.  
  302.             if (file = (char *)NewFReq(fr))    puts(file);
  303.             else                 puts("Requester Cancelled!");
  304.  
  305.            DeleteFRequest(fr);
  306.             }
  307.  
  308.         CloseLibrary(KD_FReqBase);
  309.         }    
  310.     }
  311.  
  312.  
  313.  
  314.  
  315.                 SELECT LIST
  316.                 -----------
  317.  
  318. The FR can allow the user to select multiple files from multiple directories.
  319. To turn on this mode, you must set the FR_SELECTLIST flag in the NewFReq()
  320. call.
  321.  
  322. When the NewFReq() call returns, you can check whether or not the user
  323. selected multiple files by checking to see if fr->extras->SelectList
  324. contains a value.  If it is not NULL, then it points to a list of filenames
  325. that can be read by using the NextSelectEntry() call described below.
  326.  
  327. This returned list is yours until you free it by either calling NewFReq()
  328. again with the same FRequest structure or free the FRequest structure with
  329. DeleteFRequest().
  330.  
  331. Setting the FR_SLSHOWNAMES makes the 'Path/Name' Select List gadget default
  332. to 'Name' instead of 'Path'.  Read the user doc file, section 'Select List'
  333. for details.
  334.  
  335. The following is an example of how to use the Select List mode:
  336.  
  337. struct FRequester *fr, *CreateFRequest();
  338. UBYTE *name, *NextSelectEntry();
  339.  
  340. if (fr = (struct FRequest *) CreateFRequest())
  341.   {
  342.   fr->reqtitle    = (UBYTE *) "Multiple Select FR Test";
  343.   fr->flags    = FR_STDFLAGS | FR_SELECTLIST;
  344.  
  345.   if (NewFReq(fr))
  346.     {    
  347.     printf("File : %s\n",fr->fullname);
  348.  
  349.     if (fr->extras->SelectList)        /* Check if the user selected a */
  350.     {                /* list of files. */
  351.     printf("\nSelect List:\n\n");
  352.                     /* yes, print them out */
  353.     while (entry = NextSelectEntry(fr))
  354.         {
  355.         printf("%s\n",entry);
  356.         }
  357.     }
  358.     }
  359.  
  360.   DeleteFRequest(fr);
  361.   }
  362.  
  363.  
  364.  
  365. Notes:
  366.  
  367. - The call returns both a normal file name and a list of files.  It is up to
  368.   the calling program to clarify this point to the user.
  369.  
  370. - Check out the test.c file for the full example on how to use this facility.
  371.  
  372. - The FR_User.DOC file contains all the details on how the user can use the
  373.   Select List mode.
  374.  
  375.  
  376.                 KEEP BUFFERS
  377.                  ------------
  378.  
  379. If the FR_KEEPBUFFERS flag is set, then the FR will not clear its directory
  380. buffers and the next call to NewFReq() with the same FRequest struct will
  381. bring up the FR with all the directories intact. This includes all 5 buffers.
  382. The FR will also come up with the current buffer being the last one that was
  383. used.  This means that the FR does not have to re-read the directories again.
  384.  
  385. The DeleteFRequest() call takes care of cleaning up all the buffers associated
  386. with this feature.
  387.  
  388. This needs no work from the programmer.  Just set the FR_KEEPBUFFERS flag and
  389. it will all be handled for you.  Just make sure that you don't mind the memory
  390. that will be used to store these buffers.  Average memory requirements are
  391. around 70 files per 2k of memory.
  392.  
  393. Along with this feature, the FlushFRBuffers() call allows the programmer to
  394. selectively flush out the directory buffers without hurting anything else in
  395. the FRequest structure.
  396.  
  397. ------------------------------------------------------------------------------
  398. kd_freq.library/NextSelectEntry
  399.  
  400. NAME
  401.  
  402.     NextSelectEntry - Get next file name from FR Select List
  403.  
  404. SYNOPSIS
  405.  
  406.     result = NextSelectEntry(fr);
  407.       D0                     A0
  408.  
  409.     struct FRequest *fr;
  410.     UBYTE *result;
  411.  
  412. FUNCTION
  413.  
  414.     Returns the next entry in the Select List file that is created by
  415.     NewFReq() if the user selects multiple files.  The first time this
  416.     call is used, it returns the first file name in the Select List
  417.     or NULL if no select list exists.
  418.  
  419.     It basically returns the file name pointed to by fr->extras->NextEntry
  420.     and updates fr->extras->NextEntry to point at the next entry in the
  421.     list.
  422.  
  423. RESULT
  424.  
  425.     Pointer to a string, NULL if failed or reached end of list.
  426.  
  427. BUGS
  428.  
  429.     None.
  430.  
  431. EXAMPLE
  432.  
  433.     char *filename;
  434.  
  435.     filename = NextSelectEntry();
  436.  
  437.     The NewFReq() description above contains a full example of how to use
  438.     this function.
  439.     
  440. ------------------------------------------------------------------------------
  441. kd_freq.library/CreateFRequest
  442.  
  443. NAME
  444.  
  445.     CreateFRequest - Allocate memory for a FRequest structure.
  446.  
  447. SYNOPSIS
  448.  
  449.     fr = CreateFRequest();
  450.     D0
  451.  
  452.     struct FRequest *fr;
  453.  
  454.  
  455. FUNCTION
  456.  
  457.     Allocates a FRequest structure, an ExtraData struct, a 32 char
  458.     filename string, a 32 string pattern string, and a 128 char
  459.     directory string.  
  460.  
  461.     So, if you get a successful result, you will have the following:
  462.  
  463.     fr            pointer to an initialized FRequest structure
  464.     fr->extras        pointer to a blank ExtraData structure
  465.     fr->filename        pointer to a 32 char string
  466.     fr->directory        pointer to a 128 char string
  467.     fr->fullname        pointer to a 160 char string (read only)
  468.     fr->pattern        pointer to a 32 char string
  469.     fr->flags        contains STD_FLAGS
  470.     fr->extras->Hide    pointer to a 32 char string
  471.  
  472.     It will return a valid pointer to a FRequest only if it can
  473.     allocate all of the above, otherwise it will fail.
  474.  
  475.     It is wiser to use this call to allocate a FRequest struct at the
  476.     start of your program, and deallocate it using DeleteFRequest()
  477.     at the end of your program, allowing you to call the FR easily at
  478.     any time with a simple call.
  479.  
  480. RESULT
  481.  
  482.     Pointer to a FRequest structure, NULL if failed.
  483.  
  484. BUGS
  485.  
  486.     None.
  487.  
  488. EXAMPLE
  489.  
  490.     struct FRequest *fr;
  491.  
  492.     fr = CreateFRequest();
  493.  
  494. ------------------------------------------------------------------------------
  495. kd_freq.library/DeleteFRequest
  496.  
  497. NAME
  498.  
  499.     DeleteFRequest - Deallocate a FRequest structure that was initialized
  500.             with CreateFRequest.
  501.  
  502. SYNOPSIS
  503.  
  504.     void DeleteFRequest(fr);
  505.                         A0
  506.  
  507.     struct FRequest *fr;
  508.  
  509.  
  510. FUNCTION
  511.  
  512.     Frees all memory allocated via CreateFRequest().  It will also
  513.     checks if there is an Extended Select list attached to this
  514.     FRequest structure, and will free its memory if it exists.
  515.  
  516.  
  517. RESULT
  518.  
  519.     None.
  520.  
  521. BUGS
  522.  
  523.     None.
  524.  
  525. EXAMPLE
  526.  
  527.     struct FRequest *fr;
  528.  
  529.     DeleteFRequest(fr);
  530.  
  531.  
  532. ------------------------------------------------------------------------------
  533. kd_freq.library/FlushFRBuffers
  534.  
  535. NAME
  536.  
  537.     FlushFRBuffers - Frees cached directory buffers
  538.  
  539. SYNOPSIS
  540.  
  541.     FlushFRBuffers(fr);
  542.                    A0
  543.  
  544.     struct FRequest *fr;
  545.  
  546. FUNCTION
  547.  
  548.  
  549.     Frees all memory associated with the Keep Buffers features from a
  550.     FRequest struct without affecting any other entry in it.
  551.  
  552.  
  553. RESULT
  554.  
  555.     None.
  556.  
  557. BUGS
  558.  
  559.     None.
  560. ------------------------------------------------------------------------------
  561. kd_freq.library/NewPatMatch
  562.  
  563. NAME
  564.  
  565.     NewPatMatch - do AmigaDOS style wild card filename pattern matching.
  566.  
  567. SYNOPSIS
  568.  
  569.     result = NewPatMatch(pattern,filename);
  570.       D0                    A0       A1
  571.  
  572.     LONG  result
  573.     UBYTE *pattern;
  574.     UBYTE *filename;
  575.  
  576.  
  577. FUNCTION
  578.  
  579.     Accepts a string that is a valid AmigaDOS file name (filename) and
  580.     a valid AmigaDOS wild card pattern and tells you whether the
  581.     filename matches the pattern or not.
  582.  
  583.     Supported wildcards in pattern:
  584.  
  585.     1.  Standard AmigaDOS Wildcards:
  586.     --------------------------------
  587.  
  588.     ?    Matches any single character
  589.     #p    Match any number of occurences of the pattern p
  590.     %    Matches the null string
  591.     ()    Make a group of characters into a single pattern
  592.     |    The OR operator
  593.     '    Disable wildcard interpretation of next character
  594.         (unless it is an extended wildcard as shown below.)
  595.  
  596.     2.  Extended Wildcards:
  597.     -----------------------
  598.  
  599.     These are wildcards not supported by the standard AmigaDOS
  600.     convention, but expand it to make it more versatile.
  601.  
  602.     'd    Matches any single digit.  (0 to 9)
  603.     'a    Matches any single alpha character. (a to z)
  604.     'n    Matches any single alphanumeric character.
  605.  
  606.     For examples of standard wildcard usage, look up any AmigaDOS
  607.     tutorial book.
  608.  
  609.     Examples of extended wildcards:
  610.  
  611.     Pattern        Matching possibilities
  612.     -------        ----------------------
  613.     test'n        test0, test1, test9, testa, testA, testz, testZ
  614.     test'd        test0, test1, test9
  615.     test'a        testa, testA, testz, testZ
  616.     test 'd        test 1, test 2, test 9
  617.     test#'d        test1, test100, test10234
  618.     #'a#'d        a1, ab12, abc1, abc123, adks34234
  619.             (matches any string with some or no alpha characters,
  620.             then some or no digits.)
  621.     #'a'd#'d.c    a1.c, a203.c, 100.c, 1.c, adsdfs931234.c
  622.             (matches any string that starts with some of no alpha
  623.             characters, then at least 1 or more digits, and ends
  624.             with .c)
  625.  
  626. RESULT
  627.  
  628.     result = -1    Syntax error in wildcard pattern.
  629.     result =  0    Filename did not match pattern.
  630.     result =  1    Filename matched pattern.
  631.  
  632. BUGS
  633.  
  634.     None.
  635.  
  636.  
  637. EXAMPLE
  638.  
  639.     LONG result;
  640.  
  641.     result = NewPatMatch("#?.c","test.c");
  642.  
  643.     This will result in:  result == 1
  644.  
  645. ------------------------------------------------------------------------------
  646. kd_freq.library/NewPath
  647.  
  648. NAME
  649.  
  650.     NewPath - expand a file name to its full path.
  651.  
  652. SYNOPSIS
  653.  
  654.     New Path(filename);
  655.                 A0
  656.  
  657.     UBYTE *filename;
  658.  
  659.  
  660. FUNCTION
  661.  
  662.     Accepts a string that a valid AmigaDOS file or directory name and
  663.     expands it to the full path leading to the file/directory name.
  664.  
  665. RESULT
  666.  
  667.     filename - full path
  668.  
  669.     Note:    UBYTE *filename must be least UBYTE [128] in size.
  670.  
  671.         e.g. UBYTE filename[128];
  672.  
  673.     The string is terminated with either a / or a : depending on whether
  674.     it is a valid directory or device.
  675.  
  676.     If the filename is not a valid file name, then 'filename' is truncated
  677.     to 0 length;
  678.  
  679.  
  680. BUGS
  681.  
  682.     None.
  683.  
  684.  
  685. EXAMPLE
  686.  
  687.     UBYTE filename[128] = "dh0:";
  688.  
  689.     NewPath(filename);
  690.  
  691. ------------------------------------------------------------------------------
  692.  
  693. kd_freq.library/FReq --- OBSOLETE CALL! --- 
  694.  
  695. NAME
  696.  
  697.     FReq - bring up a file requester and obtain a file name.
  698.  
  699. SYNOPSIS
  700.  
  701.     result = FReq(screen,reqtitle,filename,directory,pattern,flags,extras);
  702.  
  703.     LONG  result
  704.     struct Screen *screen;
  705.     UBYTE *reqtitle;
  706.     UBYTE *filename;
  707.     UBYTE *directory;
  708.     UBYTE *pattern;
  709.     ULONG flags;
  710.     struct ExtraData *extras;
  711.  
  712.  
  713. FUNCTION
  714.  
  715.     --- OBSOLETE CALL! ---
  716.  
  717. RESULT
  718. ------------------------------------------------------------------------------
  719. kd_freq.library/PatMatch --- OBSOLETE CALL! ---
  720.  
  721. NAME
  722.  
  723.     PatMatch - do AmigaDOS style wild card filename pattern matching.
  724.  
  725. SYNOPSIS
  726.  
  727.     result = PatMatch(pattern,filename);
  728.  
  729.     LONG  result
  730.     UBYTE *pattern;
  731.     UBYTE *filename;
  732.  
  733. FUNCTION
  734.  
  735.     --- OBSOLETE CALL! ---
  736.  
  737. RESULT
  738. ------------------------------------------------------------------------------
  739. kd_freq.library/Path --- OBSOLETE CALL! ---
  740.  
  741. NAME
  742.  
  743.     Path - expand a file name to its full path.
  744.  
  745. SYNOPSIS
  746.  
  747.     Path(filename);
  748.  
  749.     UBYTE *filename;
  750.  
  751. FUNCTION
  752.  
  753.     --- OBSOLETE CALL! ---
  754.  
  755. RESULT
  756. ------------------------------------------------------------------------------
  757. If you have any trouble getting any call to work, don't hesitate to email me
  758. on Compuserve 75166,2531 or leave me a message in the AmigaTech forum on CIS
  759. or mail/fax me at the address at the end of the FR_User.doc file.
  760. ------------------------------------------------------------------------------
  761.             Copyright 1990,1991  Khalid Aldoseri.
  762.                     10 May 1991.
  763. ------------------------------------------------------------------------------
  764.