Beispiel #1
0
static void DoSave(System *sys)
{
    VMFILE *fp;
    
    /* check for a program name on the command line */
    if (!SetProgramName(sys)) {
        VM_printf("expecting a file name\n");
        return;
    }
    
    /* save the program */
    if (!(fp = VM_fopen(programName, "w")))
        VM_printf("error saving '%s'\n", programName);
    else {
        VMVALUE lineNumber;
        VM_printf("Saving '%s'\n", programName);
        BufSeekN(0);
        while (BufGetLine(&lineNumber, sys->lineBuf)) {
            char buf[32];
            sprintf(buf, "%d ", lineNumber);
            VM_fputs(buf, fp);
            VM_fputs(sys->lineBuf, fp);
        }
        VM_fclose(fp);
    }
}
Beispiel #2
0
static void DoLoad(System *sys)
{
    VMFILE *fp;
    
    /* check for a program name on the command line */
    if (!SetProgramName(sys)) {
        VM_printf("expecting a file name\n");
        return;
    }
    
    /* load the program */
    if (!(fp = VM_fopen(programName, "r")))
        VM_printf("error loading '%s'\n", programName);
    else {
        VM_printf("Loading '%s'\n", programName);
        BufInit();
        while (VM_fgets(sys->lineBuf, sizeof(sys->lineBuf), fp) != NULL) {
            int len = strlen(sys->lineBuf);
            VMVALUE lineNumber;
            char *token;
            sys->linePtr = sys->lineBuf;
            if ((token = NextToken(sys)) != NULL) {
                if (ParseNumber(token, &lineNumber))
                    BufAddLineN(lineNumber, sys->linePtr);
                else
                    VM_printf("expecting a line number: %s\n", token);
            }
        }
        VM_fclose(fp);
    }
}
Beispiel #3
0
void VM_fcloseall (int owner)
{
	int i;
	for (i = 1; i <= MAX_VM_FILES; i++)
	{
		VM_fclose(i, owner);
	}
}