projects
/
henge
/
apc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
removed debug messages
[henge/apc.git]
/
src
/
scanner.c
diff --git
a/src/scanner.c
b/src/scanner.c
index
6dcbc9d
..
d9aa426
100644
(file)
--- a/
src/scanner.c
+++ b/
src/scanner.c
@@
-20,6
+20,7
@@
#include <unistd.h> //chdir
#include <dirent.h> //opendir
#include <unistr.h> //unicode strings
#include <unistd.h> //chdir
#include <dirent.h> //opendir
#include <unistr.h> //unicode strings
+#include <string.h> //strlen
/* Internal */
#include "parser.tab.h"
/* Public */
/* Internal */
#include "parser.tab.h"
/* Public */
@@
-30,11
+31,12
@@
int scanner_scandir(DIR*);
yypstate* apc_pstate;
yycstate* apc_cstate;
/* Private */
yypstate* apc_pstate;
yycstate* apc_cstate;
/* Private */
-extern //lexer.c
-int lexer_lexfile(uint8_t const*);
extern //lexer.rl
extern //lexer.rl
-int lexer_lexstring(uint8_t const*, int);
-#define PUSHTOK(T,L) yypush_parse(apc_pstate, T, L, apc_cstate)
+int lexer_lexfile(uint8_t*);
+extern //lexer.rl
+int lexer_lexdir(uint8_t*);
+extern //lexer.rl
+void lexer_closedir(void);
/* Init
Establishes yy states
/* Init
Establishes yy states
@@
-45,7
+47,7
@@
int scanner_init
scanner_quit();
apc_pstate = yypstate_new();
apc_cstate = yycstate_new();
scanner_quit();
apc_pstate = yypstate_new();
apc_cstate = yycstate_new();
- return (apc_pstate
!= NULL && apc_cstate !
= NULL);
+ return (apc_pstate
== NULL || apc_cstate =
= NULL);
}
/* Quit
}
/* Quit
@@
-68,7
+70,9
@@
int scanner_scanpath
{ DIR* dirp;
errno = 0;
if ((dirp = opendir(pathname)) == NULL || errno)
{ DIR* dirp;
errno = 0;
if ((dirp = opendir(pathname)) == NULL || errno)
- return -1;
+ { fprintf(stderr, "Path %s could not be accessed\n", pathname);
+ return -1;
+ }
if (chdir(pathname))
return -1;
return scanner_scandir(dirp);
if (chdir(pathname))
return -1;
return scanner_scandir(dirp);
@@
-92,25
+96,20
@@
int scanner_scandir
goto scan_next_dirent;
switch (direntp->d_type)
{ case DT_REG:
goto scan_next_dirent;
switch (direntp->d_type)
{ case DT_REG:
- printf("lexfile %s\n",direntp->d_name);
- //lexer_lexfile((uint8_t*)direntp->d_name);
+ lexer_lexfile((uint8_t*)direntp->d_name);
goto scan_next_dirent;
case DT_DIR:
goto scan_next_dirent;
case DT_DIR:
- //lexer_lexstring((uint8_t*)direntp->d_name); //lex the dirname
- printf("lexdir %s\n",direntp->d_name);
+ lexer_lexdir((uint8_t*)direntp->d_name); //lex the dirname
if (chdir(direntp->d_name)) //change to the specified dir
goto libfail;
errno = 0;
if ((cdirp = opendir(".")) == NULL || errno) //open it
goto libfail;
if (chdir(direntp->d_name)) //change to the specified dir
goto libfail;
errno = 0;
if ((cdirp = opendir(".")) == NULL || errno) //open it
goto libfail;
- //PUSHTOK(CLOPEN, 0); //push "Open Directory" token
- printf("Scanner entered [%s]\n",direntp->d_name);
if(scanner_scandir(cdirp)) //scan the directory
goto libfail;
if (chdir("..")) //return to the parent dir
goto libfail;
if(scanner_scandir(cdirp)) //scan the directory
goto libfail;
if (chdir("..")) //return to the parent dir
goto libfail;
- //PUSHTOK(CLCLOSE, 0); //push "Close Directory" token
- printf("Scanner returned\n");
+ lexer_closedir(); //push "Close Directory" token
goto scan_next_dirent; //continue scan
case DT_UNKNOWN:
warnx("unknown file %s: ignoring", direntp->d_name);
goto scan_next_dirent; //continue scan
case DT_UNKNOWN:
warnx("unknown file %s: ignoring", direntp->d_name);