switch (state) {
case PRE_KEY:
- if (strchr(COMMENTS, c))
+ if (startswith(p, "export "))
+ p+=6;
+ else if (strchr(COMMENTS, c))
state = COMMENT;
else if (!strchr(WHITESPACE, c)) {
state = KEY;
break;
case PRE_VALUE:
- if (strchr(newline, c)) {
+ if (strchr(newline, c) || strchr(COMMENTS, c)) {
state = PRE_KEY;
key[n_key] = 0;
p++;
fwrite(v, 1, p-v, f);
- if (string_has_cc(p) || chars_intersect(p, WHITESPACE "\'\"\\")) {
+ if (string_has_cc(p) || chars_intersect(p, WHITESPACE "\'\"\\`$")) {
fputc('\"', f);
for (; *p; p++) {
- if (strchr("\'\"\\", *p))
+ if (strchr("\'\"\\`$", *p))
fputc('\\', f);
fputc(*p, f);