#pragma option
This commit is contained in:
parent
f1da832ae9
commit
b7692fda79
@ -1050,7 +1050,8 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
strlcpy(codepage,option_value(ptr),MAXCODEPAGE); /* set name of codepage */
|
if (codepage)
|
||||||
|
strlcpy(codepage,option_value(ptr),MAXCODEPAGE); /* set name of codepage */
|
||||||
break;
|
break;
|
||||||
case 'D': /* set active directory */
|
case 'D': /* set active directory */
|
||||||
ptr=option_value(ptr);
|
ptr=option_value(ptr);
|
||||||
@ -1082,7 +1083,8 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
} /* switch */
|
} /* switch */
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
strlcpy(ename,option_value(ptr),_MAX_PATH); /* set name of error file */
|
if (ename)
|
||||||
|
strlcpy(ename,option_value(ptr),_MAX_PATH); /* set name of error file */
|
||||||
break;
|
break;
|
||||||
#if defined __WIN32__ || defined _WIN32 || defined _Windows
|
#if defined __WIN32__ || defined _WIN32 || defined _Windows
|
||||||
case 'H':
|
case 'H':
|
||||||
@ -1108,7 +1110,8 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
sc_listing=TRUE; /* skip second pass & code generation */
|
sc_listing=TRUE; /* skip second pass & code generation */
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
strlcpy(oname,option_value(ptr),_MAX_PATH); /* set name of (binary) output file */
|
if (oname)
|
||||||
|
strlcpy(oname,option_value(ptr),_MAX_PATH); /* set name of (binary) output file */
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
pc_optimize=*option_value(ptr) - '0';
|
pc_optimize=*option_value(ptr) - '0';
|
||||||
@ -1116,13 +1119,16 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
about();
|
about();
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
strlcpy(pname,option_value(ptr),_MAX_PATH); /* set name of implicit include file */
|
if (pname)
|
||||||
|
strlcpy(pname,option_value(ptr),_MAX_PATH); /* set name of implicit include file */
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
pc_recursion=toggle_option(ptr,pc_recursion);
|
pc_recursion=toggle_option(ptr,pc_recursion);
|
||||||
break;
|
break;
|
||||||
#if !defined SC_LIGHT
|
#if !defined SC_LIGHT
|
||||||
case 'r':
|
case 'r':
|
||||||
|
if (!rname)
|
||||||
|
break;
|
||||||
strlcpy(rname,option_value(ptr),_MAX_PATH); /* set name of report file */
|
strlcpy(rname,option_value(ptr),_MAX_PATH); /* set name of report file */
|
||||||
sc_makereport=TRUE;
|
sc_makereport=TRUE;
|
||||||
if (strlen(rname)>0) {
|
if (strlen(rname)>0) {
|
||||||
@ -1230,7 +1236,7 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
strlcpy(str,argv[arg],i+1); /* str holds symbol name */
|
strlcpy(str,argv[arg],i+1); /* str holds symbol name */
|
||||||
i=atoi(ptr+1);
|
i=atoi(ptr+1);
|
||||||
add_builtin_constant(str,i,sGLOBAL,0);
|
add_builtin_constant(str,i,sGLOBAL,0);
|
||||||
} else {
|
} else if (oname) {
|
||||||
strlcpy(str,argv[arg],sizeof(str)-2); /* -2 because default extension is ".p" */
|
strlcpy(str,argv[arg],sizeof(str)-2); /* -2 because default extension is ".p" */
|
||||||
set_extension(str,".p",FALSE);
|
set_extension(str,".p",FALSE);
|
||||||
insert_sourcefile(str);
|
insert_sourcefile(str);
|
||||||
@ -1261,6 +1267,11 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
} /* for */
|
} /* for */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void parsesingleoption(char *argv)
|
||||||
|
{
|
||||||
|
parseoptions(1, &argv, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
#if !defined SC_LIGHT
|
#if !defined SC_LIGHT
|
||||||
static void parserespf(char *filename,char *oname,char *ename,char *pname,
|
static void parserespf(char *filename,char *oname,char *ename,char *pname,
|
||||||
char *rname,char *codepage)
|
char *rname,char *codepage)
|
||||||
|
@ -945,6 +945,8 @@ enum {
|
|||||||
* Global variables: iflevel, ifstack (altered)
|
* Global variables: iflevel, ifstack (altered)
|
||||||
* lptr (altered)
|
* lptr (altered)
|
||||||
*/
|
*/
|
||||||
|
void parsesingleoption(char *argv);
|
||||||
|
|
||||||
static int command(void)
|
static int command(void)
|
||||||
{
|
{
|
||||||
int tok,ret;
|
int tok,ret;
|
||||||
@ -1268,6 +1270,16 @@ static int command(void)
|
|||||||
sym=findconst("__compat",NULL);
|
sym=findconst("__compat",NULL);
|
||||||
assert(sym!=NULL);
|
assert(sym!=NULL);
|
||||||
sym->addr=pc_compat;
|
sym->addr=pc_compat;
|
||||||
|
} else if (strcmp(str,"option")==0) {
|
||||||
|
char name[sNAMEMAX+1];
|
||||||
|
int i;
|
||||||
|
/* first gather all information, start with the tag name */
|
||||||
|
while (*lptr<=' ' && *lptr!='\0')
|
||||||
|
lptr++;
|
||||||
|
for (i=0; i<sizeof name && *lptr>' '; i++,lptr++)
|
||||||
|
name[i]=*lptr;
|
||||||
|
name[i]='\0';
|
||||||
|
parsesingleoption(name);
|
||||||
} else {
|
} else {
|
||||||
error(207); /* unknown #pragma */
|
error(207); /* unknown #pragma */
|
||||||
} /* if */
|
} /* if */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user