home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * ARP interface (ARPLOAD, ARPSAVE)
- */
-
- #include "defs.h"
-
- void
- do_arpinsfile()
- {
- char file[64];
- char dir[64];
-
- splitpath(Ep->Name, file, dir);
- if (arpreq("INSERTFILE", file, dir, NULL)) {
- fixfile(file,dir);
- av[0] = (ubyte *)"i";
- av[1] = (ubyte *)file;
- do_edit();
- }
- }
-
- void
- do_arpload()
- {
- char file[64];
- char dir[64];
-
- splitpath(Ep->Name, file, dir);
- if (arpreq("NEWFILE", file, dir, NULL)) {
- fixfile(file,dir);
- av[0] = (ubyte *)"n";
- av[1] = (ubyte *)file;
- do_edit();
- }
- }
-
- void
- do_arpsave()
- {
- char file[64];
- char dir[64];
-
- splitpath(Ep->Name, file, dir);
- if (arpreq("SAVEAS", file, dir, NULL)) {
- fixfile(file,dir);
- av[1] = (ubyte *)file;
- do_saveas();
- }
- }
-
- fixfile(file,dir)
- register char *file,*dir;
- {
- register char *ptr;
- register short len = strlen(dir);
- char hasdev = 0;
-
- /*
- * do we need to add a slash to the directory spec?
- */
-
- if (len && dir[len-1] != '/' && dir[len-1] != ':') {
- dir[len++] = '/';
- dir[len] = 0;
- }
-
- /*
- * Is file spec really a full path spec?
- */
-
- for (ptr = file; *ptr; ++ptr) {
- if (ptr[0] == ':')
- hasdev = 1;
- }
- if (!hasdev) {
- movmem(file,file+len,strlen(file)+1);
- movmem(dir,file,len);
- }
- }
-
- /*
- * Search backwards for first ':' or '/' and split path there.
- * This subroutine may appear to be coded incorrectly to a novice
- * programmer. It isn't.
- */
-
- splitpath(name, file, dir)
- register char *name;
- char *file, *dir;
- {
- register short i;
- for (i = strlen(name); i > 0; --i) {
- if (name[i] == ':' || name[i] == '/')
- break;
- }
- ++i;
- strcpy(file, name + i);
- bmov(name, dir, i);
- dir[i] = 0;
- }
-
- #asm
-
- ; arpreq(hail,file,dir,window)
-
- FAR DATA
- FAR CODE
-
- public _arpreq
- public _LVOOldOpenLibrary
- public _LVOCloseLibrary
- public _SysBase
-
- _LVOFileRequest equ -294
-
- arp_name_text dc.b 'arp.library',0
-
- fs ds.l 1 ;hailing text
- ds.l 1 ;file name
- ds.l 1 ;directory
- ds.l 1 ;window requesting
- ds.w 1 ;LONG Align, idiots! set to 0
- ds.l 1 ;func for wildcards
- ds.l 1 ;func to call w/intuimessages
-
- _arpreq:
- lea.l fs,A0
- movem.l 4(sp),D0-D3 ;setup fields
- movem.l D0-D3,(A0)
- clr.w fs+16
- move.l _SysBase,A6
-
- lea.l arp_name_text,a1 ;open library
- jsr _LVOOldOpenLibrary(a6)
- tst.l d0
- beq.s done
- move.l d0,a6
- lea.l fs,a0
- jsr _LVOFileRequest(A6) ;call requestor
- move.l D0,-(sp) ;return value
- move.l A6,A1 ;CloseLibrary(arpbase)
- move.l _SysBase,A6
- jsr _LVOCloseLibrary(A6)
- move.l (sp)+,D0 ;return value
- done rts
-
- #endasm
-
-
-