/*Copyright (C) 1992, 1994 by Thomas Glen Smith. All Rights Reserved.*/ /* aplloae APL2 V1.0.0 ************************************************* * Called from aplload and aplcpy to load a workspace file into memory. * ***********************************************************************/ #define INCLUDES APLCB+APLMEM+IO+STDIO+STAT #include "includes.h" int aplloae(wrk,cp,cpend) char *wrk; /* Pointer to entire command text. */ char *cp; /* Pointer to char after command verb. */ char *cpend; /* Pointer to end of command text. */ { Aplclear; Aplmsg; Aplparfn; Endoper; Execmsg; extern int aplerr; extern char *aplfile; #if ! APL_DOS extern int errno; #endif struct stat buf; char *newfile,*s; int fp,i,ret=0; newfile = aplparfn(cp,cpend); if (newfile == NULL) { if (aplfile == NULL) { i = strlen(wrk); execmsg(wrk, i, i, "load from where?"); return(ret); /* unable to load */ } newfile = aplfile; /* default file to )LOAD from */ } if (stat(newfile,&buf)) { fp = -1; /* indicate no file */ i = 100; /* File doesn't exist. */ } else { fp = open(newfile, S_IREAD); i = 102; /* File can't be opened. */ } errno = 0; if (fp != -1) { aplclear(); /* clear workspace */ i = aplloaf(fp); /* go read file. */ fp = close(fp); /* close file */ if (fp == -1 && i == 0) i = 104; /* unable to close */ if (i) fp = -1; /* indicate error */ } if (fp == -1) { aplerr = i; /* File doesn't exist or can't be opened. */ execmsg(newfile,strlen(newfile),0,aplmsg(aplerr)); if (aplfile != newfile) free (newfile); } else { if (aplfile != NULL && aplfile != newfile) free(aplfile); aplfile = newfile; ret = 1; /* successfully loaded */ } return(ret); }