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); } }
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); } }
void VM_fcloseall (int owner) { int i; for (i = 1; i <= MAX_VM_FILES; i++) { VM_fclose(i, owner); } }