projects
/
henge
/
apc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
test complete
[henge/apc.git]
/
src
/
apc.c
diff --git
a/src/apc.c
b/src/apc.c
index
a4ae543
..
5bd6d73
100644
(file)
--- a/
src/apc.c
+++ b/
src/apc.c
@@
-17,23
+17,30
@@
#include <string.h> //strndupa
/* Posix */
#include <stdlib.h> //exit
#include <string.h> //strndupa
/* Posix */
#include <stdlib.h> //exit
-#include <unistd.h> //getopt
+#include <unistd.h> //getopt
, sysconf
/* Internal */
#include "parser.tab.h" //bison
/* Internal */
#include "parser.tab.h" //bison
+#define DEFAULT_PAGESIZE 4096
const char* cargs['Z'] = {0};
const char* cargs['Z'] = {0};
-
+long sys_pagesize;
+
int main(int, char*[]);
int main(int, char*[]);
-extern //bison
-int yyparse(void);
extern //lexer.c
int lexer_init(void);
extern //lexer.c
int lexer_init(void);
-
-extern //apc/parser.tab.c
-YYSTYPE yylval;
-extern //lexer.c
-int lexer(void);
+extern //scanner.c
+int scanner_init(void);
+extern //scanner.c
+void scanner_quit(void);
+extern //scanner.c
+int scanner_scanpath(char const*);
+extern //ir.c
+int ir_init(void);
+extern //ir.c
+int ir_linker(void);
+extern //ir.c
+int ir_condenser(void);
/* Main entry from terminal
parses the command line and kicks off recursive scanning
/* Main entry from terminal
parses the command line and kicks off recursive scanning
@@
-53,13
+60,12
@@
int main
"\t\t-o\tOutput filename \t\t[a.asspak]\n" \
"\t\t-h\tPrint this help\n"
#define DONE -1
"\t\t-o\tOutput filename \t\t[a.asspak]\n" \
"\t\t-h\tPrint this help\n"
#define DONE -1
+#define SCANPATH (cargs['d'] ? cargs['d'] : "./")
{ int opt;
getopt:
switch (opt = getopt(argc, argv, OPTS))
{ int opt;
getopt:
switch (opt = getopt(argc, argv, OPTS))
- { case DONE:
- break;
- case 'd' :
+ { case 'd' :
case 'o' :
if (strnlen(optarg, MAXSTR) != MAXSTR)
{ cargs[opt] = optarg;
case 'o' :
if (strnlen(optarg, MAXSTR) != MAXSTR)
{ cargs[opt] = optarg;
@@
-73,12
+79,20
@@
int main
printf(USAGE);
printf(USAGE_LONG);
exit(EXIT_SUCCESS);
printf(USAGE);
printf(USAGE_LONG);
exit(EXIT_SUCCESS);
+ case DONE:
+ break;
}
}
- if (lexer_init())
- { perror("lexer");
+ if ((sys_pagesize = sysconf(_SC_PAGESIZE)) == 0)
+ sys_pagesize = DEFAULT_PAGESIZE;
+ if (ir_init())
+ { perror("init");
+ exit(EXIT_FAILURE);
+ }
+ if (scanner_scanpath(SCANPATH))
+ { perror("scanner");
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
- yyparse();
+ ir_linker();
+ ir_condenser();
exit(EXIT_SUCCESS);
}
exit(EXIT_SUCCESS);
}
-