home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 316.lha / EtaleFileReader / getdirs.c < prev    next >
C/C++ Source or Header  |  1989-11-30  |  1KB  |  48 lines

  1. /*  getdirs.c  -- (part of efr)  Copyright © 1989 by William F. Hammond  */
  2. /*             -- get user instructions from reader window               */
  3. #ifndef TDM_H
  4. #include "tdm.h"
  5. #endif
  6. /*********************************************************************/
  7. UBYTE getdirs(dstr, skipptr)
  8. UBYTE *dstr;        /*  prompt string pointer            */
  9. WORD *skipptr;  /*  for return info                  */
  10. {
  11. struct IntuiMessage *msg;
  12. static UBYTE smallprompt[] = " Skip N = ";
  13. UBYTE gdch;
  14. ULONG flags;
  15. WORD gskip;
  16. int dsl;
  17. gdch = '\0';
  18. savestyle = SetSoftStyle(rp, (ULONG)FS_NORMAL, enable);
  19. while (gdch == '\0')   /*  this loop enables some input rejection  */
  20.    {
  21.    gskip = 0;
  22.    SetDrMd(rp, (LONG)JAM2);
  23.    Move(rp, 0L, (LONG)maxrowpix);
  24.    ClearScreen(rp);
  25.    SetDrMd(rp, (LONG)(JAM2|INVERSVID));
  26.    dsl = strlen(dstr);
  27.    Text(rp, dstr, (LONG)dsl);
  28.    flags = VANILLAKEY;
  29.    Wait(1L << mw->UserPort->mp_SigBit);
  30.    while(msg = (struct IntuiMessage *)GetMsg(mw->UserPort))
  31.       {
  32.       if(msg->Class == VANILLAKEY) gdch = (UBYTE)msg->Code;
  33.       ReplyMsg(msg);
  34.       }
  35.    if(gdch == CTRL_C) gdch = 'q';   
  36.    if ( (gdch | 0x20) == 's')
  37.       {
  38.       gdch = 's';         /*  simplify further testing  */
  39.       gskip = (WORD)(numget(smallprompt));
  40.       }
  41.    if ((gdch == 's') && (gskip == 0)) gdch = '\0';      /*refuse zero skip*/
  42.    }  /***  loop (gdch == '\0')  ***/
  43. Move(rp, 0L, (LONG)maxrowpix);
  44. ClearScreen(rp);
  45. *skipptr = gskip;
  46. return gdch;
  47. }
  48.