Flex / Lex Codificación de cadenas con caracteres escapados

Me referiré a esta pregunta para algunos de los antecedentes:

Expresión regular para un literal de cadena en flex / lex

El problema que tengo es manejar la entrada con caracteres escapados en mi lexer y creo que puede ser un problema relacionado con la codificación de la cadena, pero no estoy seguro.

Así es como manejo los literales de cadena en mi lexer:

\"(\\.|[^\\"])*\"
{                   
    char* text1 = strndup(yytext + 1, strlen(yytext) - 2);
    char* text2 = "text\n";

    printf("value = <%s> <%x>\n", text1, text1);
    printf("value = <%s> <%x>\n", text2, text2);
}

Esto genera lo siguiente:

value = <text\n"> <15a1bb0>
value = <text
> <7ac871>

arece que trata el carácter de nueva línea por separado como una barra invertida seguida de una n.

¿Qué está pasando aquí, cómo proceso el texto para que sea idéntico a la entrada C?

Respuestas a la pregunta(1)

Su respuesta a la pregunta