home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / wp_dtp / xdme1821.lha / XDME / filereq.c < prev    next >
C/C++ Source or Header  |  1993-03-25  |  15KB  |  710 lines

  1. /******************************************************************************
  2.  
  3.     MODUL
  4.     filereq.c
  5.  
  6.     DESCRIPTION
  7.     All routines that handle file-requesters. We try to open ASL and
  8.     if that's not possible, REQTOOLS.
  9.  
  10.     NOTES
  11.  
  12.     BUGS
  13.  
  14.     TODO
  15.  
  16.     EXAMPLES
  17.  
  18.     SEE ALSO
  19.  
  20.     INDEX
  21.  
  22.     HISTORY
  23.     28. Nov 1992    ada created
  24.  
  25. ******************************************************************************/
  26.  
  27. /**************************************
  28.         Includes
  29. **************************************/
  30. #include "defs.h"
  31.  
  32.  
  33. /**************************************
  34.         Globale Variable
  35. **************************************/
  36. Prototype void do_pattern    (void);
  37. Prototype void do_aslload    (void);
  38. Prototype int  aslsave         (void);
  39. Prototype void do_aslinsfile (void);
  40. Prototype void do_aslfont    (void);
  41. Prototype void do_reqload    (void);
  42. Prototype int  reqsave         (void);
  43. Prototype void do_reqinsfile (void);
  44. Prototype void do_reqfont    (void);
  45. Prototype void splitpath     (char *, char *, char *);
  46. Prototype void fixdirname    (char *);
  47.  
  48. Prototype struct FileRequester     * FReq;
  49. Prototype struct ReqToolsBase     * ReqToolsBase;
  50. Prototype struct rtFileRequester * RFReq;
  51.  
  52. struct FileRequester   * FReq;      /* File-Req. structure */
  53. struct rtFileRequester * RFReq;
  54. struct ReqToolsBase    * ReqToolsBase;
  55.  
  56.  
  57. /**************************************
  58.       Interne Defines & Strukturen
  59. **************************************/
  60.  
  61.  
  62. /**************************************
  63.         Interne Variable
  64. **************************************/
  65. static char pattern[64] = "";
  66. static char file[108];
  67. static char dir[PATHSIZE];
  68.  
  69.  
  70. /**************************************
  71.        Interne Prototypes
  72. **************************************/
  73.  
  74.  
  75.  
  76.  
  77. void do_pattern (void)
  78. {
  79.     strncpy (pattern, av[1], 63);
  80.     pattern[63] = 0;
  81. }
  82.  
  83.  
  84. void do_aslload (void)
  85. {
  86.     BPTR oldlock;
  87.     BOOL ret;
  88.  
  89.     oldlock = CurrentDir (Ep->dirlock);
  90.  
  91.     splitpath (Ep->name, file, dir);
  92.  
  93.     if (!stricmp (file, "unnamed"))
  94.     *file = 0;
  95.  
  96.     fixdirname (dir);
  97.  
  98.     if (AslBase)
  99.     {               /* If we have asl.library & requester */
  100.     if (!FReq)
  101.         FReq = AllocAslRequest (ASL_FileRequest, NULL);
  102.  
  103.     if (!FReq)
  104.     {
  105.         error ("aslload:\nCannot open FReq\nOut of memory");
  106.         return;
  107.     }
  108.  
  109.     ret = AslRequestTags ((APTR)FReq,
  110.         ASL_Hail,    "XDME Load New File",
  111.         ASL_OKText,    "Load",
  112.         ASL_Window,    Ep->win,
  113.         ASL_FuncFlags,    FILF_NEWIDCMP | FILF_PATGAD,
  114.         ASL_Dir,    dir,
  115.         ASL_File,    file,
  116.         ASL_Pattern,    pattern,
  117.         ASL_LeftEdge,    Ep->config.aslleft + Ep->win->LeftEdge,     /* use config coords */
  118.         ASL_TopEdge,    Ep->config.asltop + Ep->win->TopEdge,
  119.         ASL_Width,    Ep->config.aslwidth,
  120.         ASL_Height,    Ep->config.aslheight,
  121.         TAG_DONE
  122.     );
  123.  
  124.     Ep->config.asltop    = FReq->rf_TopEdge - Ep->win->TopEdge;     /* save coords */
  125.     Ep->config.aslleft   = FReq->rf_LeftEdge - Ep->win->LeftEdge;
  126.     Ep->config.aslwidth  = FReq->rf_Width;
  127.     Ep->config.aslheight = FReq->rf_Height;
  128.  
  129.     if (ret)
  130.     {
  131.         BPTR newlock;
  132.  
  133.         if (newlock = Lock (FReq->rf_Dir, SHARED_LOCK))
  134.         {
  135.         UnLock (CurrentDir (oldlock));
  136.  
  137.         Ep->dirlock = (long)newlock;
  138.  
  139.         strcpy (pattern, FReq->rf_Pat);
  140.  
  141.         av[0] = (UBYTE *)"n";
  142.         av[1] = (UBYTE *) FReq->rf_File;
  143.  
  144.         do_edit ();
  145.         }
  146.     } else
  147.     {
  148.         CurrentDir (oldlock);
  149.     }
  150.     } else
  151.     {           /* no asl.library? try reqtools */
  152.     do_reqload ();
  153.     }
  154. } /* do_aslload */
  155.  
  156.  
  157. int aslsave (void)
  158. {
  159.     BPTR oldlock = CurrentDir (Ep->dirlock);
  160.     BOOL ret;
  161.  
  162.     splitpath (Ep->name, file, dir);
  163.  
  164.     if (!stricmp (file, "unnamed"))
  165.     *file = 0;
  166.  
  167.     fixdirname (dir);
  168.  
  169.     if (AslBase)
  170.     {
  171.     if (!FReq)
  172.         FReq = AllocAslRequest (ASL_FileRequest, NULL);
  173.  
  174.     if (!FReq)
  175.     {
  176.         error ("aslload:\nCannot open Asl-Requester\nOut of memory");
  177.         return (FALSE);
  178.     }
  179.  
  180. loop:
  181.     ret = AslRequestTags( (APTR)FReq,
  182.         ASL_Hail,    "XDME Save File",
  183.         ASL_OKText,    "Save",
  184.         ASL_Window,    Ep->win,
  185.         ASL_FuncFlags,    FILF_NEWIDCMP | FILF_SAVE,
  186.         ASL_Dir,    dir,
  187.         ASL_File,    file,
  188.         ASL_LeftEdge,    Ep->config.aslleft + Ep->win->LeftEdge,     /* use config coords */
  189.         ASL_TopEdge,    Ep->config.asltop + Ep->win->TopEdge,
  190.         ASL_Width,    Ep->config.aslwidth,
  191.         ASL_Height,    Ep->config.aslheight,
  192.         TAG_DONE
  193.     );
  194.  
  195.     Ep->config.asltop    = FReq->rf_TopEdge - Ep->win->TopEdge;     /* save coords */
  196.     Ep->config.aslleft   = FReq->rf_LeftEdge - Ep->win->LeftEdge;
  197.     Ep->config.aslwidth  = FReq->rf_Width;
  198.     Ep->config.aslheight = FReq->rf_Height;
  199.  
  200.     if (ret)
  201.     {
  202.         BPTR tmp_lock;
  203.  
  204.         if (!stricmp (FReq->rf_File, "unnamed"))
  205.         {
  206.         error ("arpsave:\nCannot save file as\n`unnamed'");
  207.         *file = 0;
  208.         goto loop;
  209.         }
  210.  
  211.         CurrentDir (oldlock);
  212.  
  213.         strcpy (file, FReq->rf_File);
  214.         strcpy (dir, FReq->rf_Dir);
  215.         strcpy (pattern, FReq->rf_Pat);
  216.  
  217.         AddPart (dir, file, PATHSIZE);
  218.  
  219.         av[1] = (UBYTE *)dir;
  220.  
  221.         if (tmp_lock = Lock (dir, ACCESS_READ))
  222.         {
  223.         UnLock (tmp_lock);
  224.  
  225.         if (!getyn ("XDME Warning",
  226.             "The file\n`%s'\ndoes already exist."
  227.             "Do you want to overwrite it ?",
  228.             "Yes|No", dir) )
  229.             return (FALSE);
  230.         }
  231.  
  232.         return (do_saveas ());
  233.     } else
  234.     {
  235.         CurrentDir (oldlock);
  236.     }
  237.     } else
  238.     {
  239.     return (do_reqsave ());
  240.     }
  241.  
  242.     return (FALSE);
  243. } /* aslsave */
  244.  
  245.  
  246. void do_aslinsfile (void)
  247. {
  248.     BPTR oldlock = CurrentDir (Ep->dirlock);
  249.     BOOL ret;
  250.  
  251.     splitpath (Ep->name, file, dir);
  252.  
  253.     if (!stricmp (file, "unnamed"))
  254.     *file = 0;
  255.  
  256.     fixdirname (dir);
  257.  
  258.     if (AslBase)
  259.     {
  260.     if (!FReq)
  261.         FReq = AllocAslRequest (ASL_FileRequest, NULL);
  262.  
  263.     if (!FReq)
  264.     {
  265.         error ("aslload:\nCannot open FReq\nOut of memory");
  266.         return;
  267.     }
  268.  
  269.     ret = AslRequestTags ((APTR)FReq,
  270.         ASL_Hail,    "XDME Insert File",
  271.         ASL_OKText,    "Insert",
  272.         ASL_Window,    Ep->win,
  273.         ASL_FuncFlags,    FILF_NEWIDCMP | FILF_PATGAD,
  274.         ASL_Dir,    dir,
  275.         ASL_File,    file,
  276.         ASL_Pattern,    pattern,
  277.         ASL_LeftEdge,    Ep->config.aslleft + Ep->win->LeftEdge,     /* use config coords */
  278.         ASL_TopEdge,    Ep->config.asltop + Ep->win->TopEdge,
  279.         ASL_Width,    Ep->config.aslwidth,
  280.         ASL_Height,    Ep->config.aslheight,
  281.         TAG_DONE );
  282.  
  283.     Ep->config.asltop    = FReq->rf_TopEdge - Ep->win->TopEdge;     /* save coords */
  284.     Ep->config.aslleft   = FReq->rf_LeftEdge - Ep->win->LeftEdge;
  285.     Ep->config.aslwidth  = FReq->rf_Width;
  286.     Ep->config.aslheight = FReq->rf_Height;
  287.  
  288.     if (ret)
  289.     {
  290.         CurrentDir (oldlock);
  291.  
  292.         /* Fields are READ-ONLY */
  293.         strcpy (file, FReq->rf_File);
  294.         strcpy (dir, FReq->rf_Dir);
  295.         strcpy (pattern, FReq->rf_Pat);
  296.  
  297.         AddPart (dir, file, PATHSIZE);
  298.  
  299.         av[0] = (UBYTE *)"i";
  300.         av[1] = (UBYTE *)dir;
  301.  
  302.         do_edit ();
  303.     } else
  304.         CurrentDir (oldlock);
  305.     } else
  306.     {
  307.     do_reqinsfile ();
  308.     }
  309. } /* do_aslinsfile */
  310.  
  311.  
  312. void do_aslfont (void)
  313. {
  314.     if (AslBase)
  315.     {
  316.     struct FontRequester *fontreq;
  317.  
  318. #ifdef _DCC
  319.     ULONG fwin = (ULONG)Ep->win;  /* put ASL on correct screen */
  320. #endif
  321.  
  322.     struct TagItem FontTags[] =
  323.     {   /* DICE 2.06.37 allows us to initialize this here... */
  324. #ifdef _DCC
  325.         ASL_Window,     fwin,
  326.         ASL_LeftEdge,   Ep->config.aslleft + Ep->win->LeftEdge,    /* use config coords */
  327.         ASL_TopEdge,    Ep->config.asltop + Ep->win->TopEdge,
  328. #else
  329.         ASL_Window,     0L,
  330.         ASL_LeftEdge,   0L,
  331.         ASL_TopEdge,    0L,
  332. #endif
  333.         ASL_Hail,        (ULONG)"XDME fixed width font",
  334.         ASL_FuncFlags,  FILF_NEWIDCMP | FONF_FIXEDWIDTH,
  335.         /* Removed Min & MaxHeight since I cannot figure out what the
  336.            user may want */
  337.         TAG_DONE
  338.     };
  339.  
  340. #ifndef _DCC
  341.     FontTags[0].ti_Data = (ULONG)Ep->win;
  342.     FontTags[1].ti_Data = Ep->aslleft + Ep->win->LeftEdge;
  343.     FontTags[2].ti_Data = Ep->asltop + Ep->win->TopEdge;
  344. #endif
  345.  
  346.     if (fontreq = (struct FontRequester *)
  347.                 AllocAslRequest (ASL_FontRequest,FontTags) )
  348.     {
  349.  
  350.         if (AslRequest (fontreq, NULL))
  351.         {
  352.  
  353.         /*  Since we have GetFont() already, just pass
  354.          *   the name and size from fontreq's TextAttr to it.
  355.          *
  356.          *  What follows mimics SETFONT (in cmnd3.c)
  357.          */
  358.  
  359.         FONT * font = (FONT *)GetFont( fontreq->fo_Attr.ta_Name,
  360.                          (short) fontreq->fo_Attr.ta_YSize );
  361.         ED * ep = Ep;
  362.  
  363.         if (font)
  364.         {
  365.             if (ep->font)
  366.             CloseFont (ep->font);
  367.  
  368.             ep->font = font;
  369.  
  370.             SetFont (ep->win->RPort, font);
  371.             SetRast (ep->win->RPort, 0);
  372.  
  373.             RefreshWindowFrame (ep->win);
  374.  
  375.             set_window_params ();
  376.  
  377.             text_adjust (TRUE);
  378.         } else
  379.         {
  380.             error ("aslfont:\nUnable to find font\n%s/%ld", fontreq->fo_Attr.ta_Name,
  381.                fontreq->fo_Attr.ta_YSize);
  382.         }
  383.         }
  384.  
  385.         FreeAslRequest (fontreq);
  386.     } else
  387.     {
  388.         error ("reqfont:\nOut of memory");
  389.     }
  390.     } else
  391.     {
  392.     do_reqfont ();
  393.     }
  394. } /* do_aslfont */
  395.  
  396.  
  397. /*  this little kludge gets a DIR: string for the ASL requester
  398.  */
  399.  
  400. void fixdirname (char * dir)
  401. {
  402.     if (!strlen (dir))
  403.     {              /* if no DIR; KLUDGE ALERT! */
  404.     if (NameFromLock (Ep->dirlock, dir, PATHSIZE)!=DOSTRUE)
  405.     {
  406.         dir[0] = 0; /* assumes NameFromLock doesn't clean up on err(??) */
  407.     }
  408.     }
  409. } /* fixdirname */
  410.  
  411.  
  412. /*
  413.  *  Search backwards for first ':' or '/' and split path there.
  414.  *  This subroutine may appear to be coded incorrectly to a novice
  415.  *  programmer.  It isn't [now].
  416.  */
  417.  
  418. void splitpath (char * name, char * file, char * dir)
  419. {
  420.     int i;
  421.  
  422.     strcpy (file, FilePart (name));
  423.  
  424.     i = PathPart (name) - name;
  425.  
  426.     movmem (name, dir, i);
  427.     dir[i] = 0;
  428. } /* splitpath */
  429.  
  430.  
  431. /*
  432.  *  The REQ interface uses the reqtools.library if it exists, else tries to
  433.  *  use the ARP interfafce.
  434.  */
  435.  
  436. void do_reqload (void)
  437. {
  438.     BPTR oldlock = CurrentDir (Ep->dirlock);
  439.  
  440.     splitpath (Ep->name, file, dir);
  441.  
  442.     if (!stricmp (file, "unnamed"))
  443.     *file = 0;
  444.  
  445.     fixdirname (dir);
  446.  
  447.     if (ReqToolsBase)
  448.     {             /* If we have req.library & requester */
  449.     if (!RFReq)
  450.         RFReq = rtAllocRequestA (RT_FILEREQ, NULL);
  451.  
  452.     if (!RFReq)
  453.     {
  454.         error ("reqload:\ncannot open ReqTools-requester\nOut of memory");
  455.         return;
  456.     }
  457.  
  458.     rtChangeReqAttr (RFReq, RTFI_Dir, dir, TAG_DONE);
  459.  
  460.     if (rtFileRequest (RFReq, file, "XDME Load New File",
  461.         RTFI_OkText,    "Load",
  462.         RT_Window,    Ep->win,
  463.         RT_ReqPos,    REQPOS_TOPLEFTSCR,
  464.         RT_LeftOffset,    Ep->config.aslleft,
  465.         RT_TopOffset,    Ep->config.asltop,
  466.         RTFI_Height,    Ep->config.aslheight,
  467.         TAG_DONE ))
  468.         {
  469.         BPTR newlock;
  470.  
  471.         if (newlock = Lock (RFReq->Dir, SHARED_LOCK))
  472.         {
  473.         UnLock (CurrentDir (oldlock));
  474.  
  475.         Ep->dirlock = (long)newlock;
  476.  
  477.         strcpy (dir, RFReq->Dir);
  478.         AddPart (dir, file, PATHSIZE);
  479.  
  480.         av[0] = (UBYTE *)"n";
  481.         av[1] = (UBYTE *) file;
  482.  
  483.         do_edit ();
  484.         }
  485.     } else
  486.         CurrentDir (oldlock);
  487.     } else
  488.     {           /* no req.library? Gulp */
  489.     if (AslBase)
  490.         error ("reqload:\nNo ReqTools.Library\nTry ARPLOAD");
  491.     else
  492.         error ("For filerequester,\nI need REQ- or ASL.LIBRARY !");
  493.     }
  494. } /* do_reqload */
  495.  
  496.  
  497. int reqsave (void)
  498. {
  499.     BPTR oldlock = CurrentDir(Ep->dirlock);
  500.  
  501.     splitpath (Ep->name, file, dir);
  502.  
  503.     if (!stricmp (file, "unnamed"))
  504.     *file = 0;
  505.  
  506.     fixdirname (dir);
  507.  
  508.     if (ReqToolsBase)
  509.     {             /* If we have req.library & requester */
  510.     if (!RFReq)
  511.         RFReq = rtAllocRequestA (RT_FILEREQ, NULL);
  512.  
  513.     if (!RFReq)
  514.     {
  515.         error ("reqload:\ncannot open ReqTools-requester\nOut of memory");
  516.         return;
  517.     }
  518.  
  519.     rtChangeReqAttr (RFReq, RTFI_Dir, dir, TAG_DONE);
  520.  
  521. loop:
  522.     if (rtFileRequest (RFReq, file, "XDME Save File",
  523.         RTFI_OkText,    "Save",
  524.         RT_Window,    Ep->win,
  525.         RTFI_Flags,    FREQF_SAVE,
  526.         RT_ReqPos,    REQPOS_TOPLEFTSCR,
  527.         RT_LeftOffset,    Ep->config.aslleft,
  528.         RT_TopOffset,    Ep->config.asltop,
  529.         RTFI_Height,    Ep->config.aslheight,
  530.         TAG_DONE ))
  531.     {
  532.         BPTR tmp_lock;
  533.  
  534.         if (!stricmp (file, "unnamed"))
  535.         {
  536.         error ("arpsave:\nCannot save file as\n`unnamed'");
  537.         goto loop;
  538.         }
  539.  
  540.         CurrentDir (oldlock);
  541.  
  542.         strcpy (dir, RFReq->Dir);
  543.         AddPart (dir, file, PATHSIZE);
  544.  
  545.         av[1] = (UBYTE *)file;
  546.  
  547.         if (tmp_lock = Lock (dir, ACCESS_READ))
  548.         {
  549.         UnLock (tmp_lock);
  550.  
  551.         if (!getyn ("XDME Warning",
  552.             "The file\n`%s'\ndoes already exist."
  553.             "Do you want to overwrite it ?",
  554.             "Yes|No", dir) )
  555.             return (FALSE);
  556.         }
  557.  
  558.         return (do_saveas ());
  559.     } else
  560.     {
  561.         CurrentDir (oldlock);
  562.     }
  563.     } else
  564.     {
  565.     if (AslBase)
  566.         error ("reqsave:\nNo ReqTools.Library\nTry ARPSAVE");
  567.     else
  568.         error ("For filerequester,\nI need REQ- or ASL.LIBRARY !");
  569.     }
  570.  
  571.     return (FALSE);
  572. } /* reqsave */
  573.  
  574.  
  575. void do_reqinsfile (void)
  576. {
  577.     BPTR oldlock = CurrentDir (Ep->dirlock);
  578.  
  579.     splitpath (Ep->name, file, dir);
  580.  
  581.     if (!stricmp (file, "unnamed"))
  582.     *file = 0;
  583.  
  584.     fixdirname (dir);
  585.  
  586.     if (ReqToolsBase)
  587.     {             /* If we have req.library & requester */
  588.     if (!RFReq)
  589.         RFReq = rtAllocRequestA (RT_FILEREQ, NULL);
  590.  
  591.     if (!RFReq)
  592.     {
  593.         error ("reqload:\ncannot open ReqTools-requester\nOut of memory");
  594.         return;
  595.     }
  596.  
  597.     rtChangeReqAttr (RFReq, RTFI_Dir, dir, TAG_DONE);
  598.  
  599.     if (rtFileRequest (RFReq, file, "XDME Insert File",
  600.         RTFI_OkText,    "Load",
  601.         RT_ReqPos,    REQPOS_TOPLEFTSCR,
  602.         RT_Window,    Ep->win,
  603.         RT_LeftOffset,    Ep->config.aslleft,
  604.         RT_TopOffset,    Ep->config.asltop,
  605.         RTFI_Height,    Ep->config.aslheight,
  606.         TAG_DONE ))
  607.     {
  608.  
  609.         CurrentDir (oldlock);
  610.  
  611.         strcpy (dir, RFReq->Dir);
  612.         AddPart (dir, file, PATHSIZE);
  613.  
  614.         av[0] = (UBYTE *)"i";
  615.         av[1] = (UBYTE *)file;
  616.  
  617.         do_edit ();
  618.     } else
  619.         CurrentDir (oldlock);
  620.     } else
  621.     {
  622.     if (AslBase)
  623.         error ("reqinsfile:\nNo ReqTools.Library\nTry ARPINSFILE");
  624.     else
  625.         error ("For filerequester,\nI need REQ- or ASL.LIBRARY !");
  626.     }
  627. } /* do_reqinsfile */
  628.  
  629.  
  630. void do_reqfont (void)
  631. {
  632.     if (ReqToolsBase)
  633.     {
  634.     struct rtFontRequester *fontreq;
  635.  
  636. #ifdef _DCC
  637.     struct Window *fwin = Ep->win;    /* put ASL on correct screen */
  638. #endif
  639.  
  640.     struct TagItem FontTags[] =
  641.     {   /* DICE 2.06.37 allows us to initialize this here... */
  642. #ifdef _DCC
  643.         RT_Window,        fwin,
  644. #else
  645.         RT_Window,        NULL,
  646. #endif
  647.         RTFO_MinHeight, 6,
  648.         RTFO_MaxHeight, 24,
  649.         RTFO_Flags,     FREQF_FIXEDWIDTH, /* | FILF_NEWIDCMP */
  650.         TAG_DONE };
  651.  
  652. #ifndef _DCC
  653.         FontTags[0].ti_Data = (ULONG)Ep->win;
  654. #endif
  655.  
  656.     if (fontreq = rtAllocRequestA (RT_FONTREQ, NULL))
  657.     {
  658.         if (rtFontRequestA (fontreq, "XDME fixed width font", FontTags))
  659.         {
  660.  
  661.         /*  Since we have GetFont() already, just pass
  662.          *   the name and size from fontreq's TextAttr to it.
  663.          *
  664.          *  What follows mimics SETFONT (in cmnd3.c)
  665.          */
  666.  
  667.         FONT * font = (FONT *)GetFont (fontreq->Attr.ta_Name,
  668.                          (short) fontreq->Attr.ta_YSize );
  669.         ED   * ep   = Ep;
  670.  
  671.         if (font)
  672.         {
  673.             if (ep->font)
  674.             CloseFont (ep->font);
  675.  
  676.             ep->font = font;
  677.  
  678.             SetFont (ep->win->RPort, font);
  679.             SetRast (ep->win->RPort, 0);
  680.  
  681.             RefreshWindowFrame (ep->win);
  682.             set_window_params ();
  683.  
  684.             text_adjust (TRUE);
  685.         } else
  686.         {
  687.             error ("aslfont:\nUnable to find font\n%s/%ld", fontreq->Attr.ta_Name,
  688.                fontreq->Attr.ta_YSize);
  689.         }
  690.         }
  691.  
  692.         rtFreeRequest (fontreq);
  693.     } else
  694.     {
  695.         error ("reqfont:\nOut of memory");
  696.     }
  697.     } else
  698.     {
  699.     if (AslBase)
  700.         error ("reqfont:\nNo ReqTools.Library\nTry ARPFONT");
  701.     else
  702.         error ("Need ASL.LIBRARY or\nREQTOOLS.LIBRARY for\nfont requester !");
  703.     }
  704. } /* do_reqfont */
  705.  
  706.  
  707. /******************************************************************************
  708. *****  ENDE filereq.c
  709. ******************************************************************************/
  710.