diff --git a/src/fileio.c b/src/fileio.c index 96e5cd3..32cfdb2 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1,7 +1,7 @@ #include #include -#define MAX_ASM_LINE_LENGTH 100 +#define MAX_ASM_LINE_LENGTH 30 int isValidFileFormat(char filename[], char expectedExtension[]){ int *pointLoc = strrchr(filename, '.'); @@ -34,23 +34,47 @@ int writeBinaryFile(word instrs[], char outputFile[]){ return(0); } -int readAssemblyFile(char inputFile[]) { +char **readAssemblyFile(char inputFile[]) { if (!isValidFileFormat(filename, "s")){ - return(1); + return(NULL); } - FILE *fp; - char savedLine[MAX_ASM_LINE_LENGTH]; + FILE *fp = fopen(inputFile, "r"); - fp = fopen(inputFile, "r"); + if (fp == NULL){ + return(NULL); + } - if(fp == NULL){ - return(-1); + int lineCount = 0; + char ch; + while ((ch = fgetc(fp)) != EOF) + { + if (ch == '\n' || ch == '\0') + { + count++; + } } - while (fgets(savedLine, MAX_ASM_LINE_LENGTH-1, fp) != NULL) { - //pass line to parser + char **heap = malloc(sizeof(char *) * count); + + rewind(fp); + + for( int i=0; i