/*this function starts the first pass procedure*/ void SecondPass(char* fileName) { CmdQueue layoutQueue; Cmd tempRecord; printf("\nBegining second pass...\n"); CalculateAddressesForLabels(_labels,IC); UpdateEntryLabels(&Linkage_List,_labels); layoutQueue=CreateCmdQueue(); while(IsCmdQueueEmpty(computerLanguage)==FALSE) { tempRecord=RetrieveRecord(computerLanguage); AddItemToLayout(tempRecord,layoutQueue); } layoutQueue=KindOfSort_CmdQ(layoutQueue); if(WasThereCompilingError()==TRUE) ErrorHandler(FatalError," cannot proceed!\n"); WriteObjFile(fileName,layoutQueue,IC,DC); WriteExtAndEntFiles(fileName,&Linkage_List); printf("\nCompilation was successful, files were created.\n"); }
int R3Model:: WriteFile(const char *filename) const { // Parse input filename extension const char *extension; if (!(extension = strrchr(filename, '.'))) { printf("Filename %s has no extension (e.g., .obj)\n", filename); return 0; } // Write file of appropriate type if (!strncmp(extension, ".obj", 4)) { if (!WriteObjFile(filename)) return 0; } else { RNFail("Unable to write file %s (unrecognized extension: %s)\n", filename, extension); return 0; } // Return success return 1; }