mirror of
https://github.com/UberGames/ioef.git
synced 2025-05-30 17:01:23 +00:00
* Split off q_platform.h from q_shared.h
* Removed lcc PATH hack and replaced with something slightly less hacky * Removed all platform specific hostfiles from lcc and replaced with bytecode.c (from ankon) * Turned lcc option "-S" on permanently * Improved q3cpp so that it recursively adds include dirs to its list
This commit is contained in:
parent
48683c91a8
commit
87cd6f8a93
15 changed files with 452 additions and 715 deletions
|
@ -108,6 +108,7 @@ void control(Tokenrow *);
|
|||
void dodefine(Tokenrow *);
|
||||
void doadefine(Tokenrow *, int);
|
||||
void doinclude(Tokenrow *);
|
||||
void appendDirToIncludeList( char *dir );
|
||||
void doif(Tokenrow *, enum kwtype);
|
||||
void expand(Tokenrow *, Nlist *);
|
||||
void builtin(Tokenrow *, int);
|
||||
|
@ -140,6 +141,8 @@ void iniths(void);
|
|||
void setobjname(char *);
|
||||
#define rowlen(tokrow) ((tokrow)->lp - (tokrow)->bp)
|
||||
|
||||
char *basepath( char *fname );
|
||||
|
||||
extern char *outp;
|
||||
extern Token nltoken;
|
||||
extern Source *cursource;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "cpp.h"
|
||||
|
@ -6,6 +7,29 @@ Includelist includelist[NINCLUDE];
|
|||
|
||||
extern char *objname;
|
||||
|
||||
void appendDirToIncludeList( char *dir )
|
||||
{
|
||||
int i;
|
||||
|
||||
//avoid adding it more than once
|
||||
for (i=NINCLUDE-2; i>=0; i--) {
|
||||
if (includelist[i].file &&
|
||||
!strcmp (includelist[i].file, dir)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (i=NINCLUDE-2; i>=0; i--) {
|
||||
if (includelist[i].file==NULL) {
|
||||
includelist[i].always = 1;
|
||||
includelist[i].file = dir;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i<0)
|
||||
error(FATAL, "Too many -I directives");
|
||||
}
|
||||
|
||||
void
|
||||
doinclude(Tokenrow *trp)
|
||||
{
|
||||
|
@ -44,6 +68,9 @@ doinclude(Tokenrow *trp)
|
|||
if (trp->tp < trp->lp || len==0)
|
||||
goto syntax;
|
||||
fname[len] = '\0';
|
||||
|
||||
appendDirToIncludeList( basepath( fname ) );
|
||||
|
||||
if (fname[0]=='/') {
|
||||
fd = open(fname, 0);
|
||||
strcpy(iname, fname);
|
||||
|
|
|
@ -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) */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue