From f71d55d380937eba821b624c10afa2cdbcce2b7c Mon Sep 17 00:00:00 2001 From: Y_Less Date: Sat, 28 Oct 2017 14:53:59 +0200 Subject: [PATCH] Allow `#pragma option -c####`. --- source/compiler/sc1.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/compiler/sc1.c b/source/compiler/sc1.c index d968610..7cd9ba5 100644 --- a/source/compiler/sc1.c +++ b/source/compiler/sc1.c @@ -1053,8 +1053,7 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam #endif break; case 'c': - if (codepage) - strlcpy(codepage,option_value(ptr),MAXCODEPAGE); /* set name of codepage */ + strlcpy(codepage,option_value(ptr),MAXCODEPAGE); /* set name of codepage */ break; case 'D': /* set active directory */ ptr=option_value(ptr); @@ -1272,8 +1271,14 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam void parsesingleoption(char *argv) { + /* argv[0] is the program, which we don't need here */ char *args[2] = { 0, argv }; - parseoptions(2, args, NULL, NULL, NULL, NULL, NULL); + char codepage[MAXCODEPAGE+1] = { 0 }; + codepage[0] = '\0'; + parseoptions(2, args, NULL, NULL, NULL, NULL, codepage); + /* need explicit support for codepages */ + if (codepage[0] && !cp_set(codepage)) + error(108); /* codepage mapping file not found */ } #if !defined SC_LIGHT