aboutsummaryrefslogtreecommitdiffstats
path: root/code/tools/lcc/cpp/unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'code/tools/lcc/cpp/unix.c')
-rw-r--r--code/tools/lcc/cpp/unix.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/code/tools/lcc/cpp/unix.c b/code/tools/lcc/cpp/unix.c
index 749736c..f58b51e 100644
--- a/code/tools/lcc/cpp/unix.c
+++ b/code/tools/lcc/cpp/unix.c
@@ -29,15 +29,7 @@ setup(int argc, char **argv)
includelist[i].deleted = 1;
break;
case 'I':
- for (i=NINCLUDE-2; i>=0; i--) {
- if (includelist[i].file==NULL) {
- includelist[i].always = 1;
- includelist[i].file = optarg;
- break;
- }
- }
- if (i<0)
- error(FATAL, "Too many -I directives");
+ appendDirToIncludeList( optarg );
break;
case 'D':
case 'U':
@@ -66,11 +58,7 @@ setup(int argc, char **argv)
fp = "<stdin>";
fd = 0;
if (optind<argc) {
- if ((fp = strrchr(argv[optind], '/')) != NULL) {
- int len = fp - argv[optind];
- dp = (char*)newstring((uchar*)argv[optind], len+1, 0);
- dp[len] = '\0';
- }
+ dp = basepath( argv[optind] );
fp = (char*)newstring((uchar*)argv[optind], strlen(argv[optind]), 0);
if ((fd = open(fp, 0)) <= 0)
error(FATAL, "Can't open input file %s", fp);
@@ -89,6 +77,18 @@ setup(int argc, char **argv)
}
+char *basepath( char *fname )
+{
+ char *dp = ".";
+ char *p;
+ if ((p = strrchr(fname, '/')) != NULL) {
+ int dlen = p - fname;
+ dp = (char*)newstring((uchar*)fname, dlen+1, 0);
+ dp[dlen] = '\0';
+ }
+
+ return dp;
+}
/* memmove is defined here because some vendors don't provide it at
all and others do a terrible job (like calling malloc) */