File tree 3 files changed +19
-5
lines changed
3 files changed +19
-5
lines changed Original file line number Diff line number Diff line change @@ -28,11 +28,23 @@ SOFTWARE.
28
28
static vm_t vm ;
29
29
30
30
int main (int argc , char * argv []) {
31
- (void )argc ; (void )argv ;
32
31
33
- load (& vm );
32
+ FILE * in = stdin ;
33
+ if (argc == 2 ) {
34
+ in = fopen (argv [1 ], "r" );
35
+ if (in == NULL ) {
36
+ perror (argv [0 ]);
37
+ exit (EXIT_FAILURE );
38
+ }
39
+ }
40
+
41
+ load (& vm , in );
34
42
run (& vm );
35
43
44
+ if (argc == 2 ) {
45
+ fclose (in );
46
+ }
47
+
36
48
exit (EXIT_SUCCESS );
37
49
}
38
50
Original file line number Diff line number Diff line change @@ -63,14 +63,14 @@ static op_t opcodes[NOPS] = {
63
63
};
64
64
65
65
66
- void load (vm_t * vm ) {
66
+ void load (vm_t * vm , FILE * in ) {
67
67
68
68
char line [96 ]; /* TODO move to const.h */
69
69
int cap = 96 ;
70
70
71
71
memset (vm , '\0' , sizeof (vm_t ));
72
72
73
- while (fgets (line , cap , stdin ) != NULL ) {
73
+ while (fgets (line , cap , in ) != NULL ) {
74
74
75
75
chomp (line );
76
76
Original file line number Diff line number Diff line change @@ -23,10 +23,12 @@ SOFTWARE.
23
23
#ifndef __VM_H
24
24
#define __VM_H
25
25
26
+ #include <stdio.h>
27
+
26
28
#include "const.h"
27
29
#include "types.h"
28
30
29
- void load (vm_t * vm );
31
+ void load (vm_t * vm , FILE * in );
30
32
void run (vm_t * vm );
31
33
32
34
#endif
You can’t perform that action at this time.
0 commit comments