diff options
Diffstat (limited to 'flags.c')
-rw-r--r-- | flags.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -4,8 +4,36 @@ #include "dat.h" #include "fns.h" +Term *setdoublequotes(Term *); + void initflags(void) { flagdoublequotes = DoubleQuotesChars; +} + +Term * +setflag(Rune *flag, Term *value) +{ + if(runestrcmp(flag, L"double_quotes") == 0) + return setdoublequotes(value); + else + return permissionerror(L"modify", L"flag", mkatom(flag)); +} + +Term * +setdoublequotes(Term *value) +{ + if(value->tag != AtomTerm) + return typeerror(L"atom", value); + + if(runestrcmp(value->text, L"chars") == 0) + flagdoublequotes = DoubleQuotesChars; + else if(runestrcmp(value->text, L"codes") == 0) + flagdoublequotes = DoubleQuotesCodes; + else if(runestrcmp(value->text, L"atom") == 0) + flagdoublequotes = DoubleQuotesAtom; + else + return domainerror(L"flag_value", value); + return nil; }
\ No newline at end of file |