home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d134 / dme.lha / Dme / filereq.c < prev    next >
C/C++ Source or Header  |  1988-03-18  |  2KB  |  104 lines

  1.  
  2. /*
  3.  *  ARP interface (ARPLOAD, ARPSAVE)
  4.  */
  5.  
  6. #include "defs.h"
  7.  
  8. void
  9. do_arpload()
  10. {
  11.     char file[64];
  12.     char dir[64];
  13.  
  14.     strcpy(file, Ep->Name);
  15.     dir[0] = 0;
  16.     if (arpreq("NEWFILE", file, dir, NULL)) {
  17.     fixfile(file,dir);
  18.     av[0] = (ubyte *)"n";
  19.     av[1] = (ubyte *)file;
  20.     do_edit();
  21.     }
  22. }
  23.  
  24. void
  25. do_arpsave()
  26. {
  27.     char file[64];
  28.     char dir[64];
  29.  
  30.     strcpy(file, Ep->Name);
  31.     dir[0] = 0;
  32.  
  33.     if (arpreq("SAVEAS", file, dir, NULL)) {
  34.     fixfile(file,dir);
  35.     av[1] = (ubyte *)file;
  36.     do_saveas();
  37.     }
  38. }
  39.  
  40. fixfile(file,dir)
  41. char *file,*dir;
  42. {
  43.     register char *ptr;
  44.     register short hasdev = 0;
  45.     register short len = strlen(dir);
  46.     for (ptr = file; *ptr; ++ptr) {
  47.     if (ptr[0] == ':')
  48.         hasdev = 1;
  49.     }
  50.     if (!hasdev) {
  51.     movmem(file,file+len,strlen(file)+1);
  52.     movmem(dir,file,len);
  53.     }
  54. }
  55.  
  56. #asm
  57.  
  58.         ;   arpreq(hail,file,dir,window)
  59.  
  60.         FAR DATA
  61.         FAR CODE
  62.  
  63.         public    _arpreq
  64.         public    _LVOOldOpenLibrary
  65.         public    _LVOCloseLibrary
  66.         public    _SysBase
  67.  
  68. _LVOFileRequest equ    -294
  69.  
  70. arp_name_text    dc.b 'arp.library',0
  71.  
  72. fs        ds.l    1   ;hailing text
  73.         ds.l    1   ;file name
  74.         ds.l    1   ;directory
  75.         ds.l    1   ;window requesting
  76.         ds.w    1   ;LONG Align, idiots!  set to 0
  77.         ds.l    1   ;func for wildcards
  78.         ds.l    1   ;func to call w/intuimessages
  79.  
  80. _arpreq:
  81.         lea.l    fs,A0
  82.         movem.l 4(sp),D0-D3             ;setup fields
  83.         movem.l D0-D3,(A0)
  84.         clr.w    fs+16
  85.         move.l    _SysBase,A6
  86.  
  87.         lea.l    arp_name_text,a1    ;open library
  88.         jsr    _LVOOldOpenLibrary(a6)
  89.         tst.l    d0
  90.         beq.s    done
  91.         move.l    d0,a6
  92.         lea.l    fs,a0
  93.         jsr    _LVOFileRequest(A6)     ;call requestor
  94.         move.l    D0,-(sp)                ;return value
  95.         move.l    A6,A1            ;CloseLibrary(arpbase)
  96.         move.l    _SysBase,A6
  97.         jsr    _LVOCloseLibrary(A6)
  98.         move.l    (sp)+,D0                ;return value
  99. done        rts
  100.  
  101. #endasm
  102.  
  103.  
  104.