** Do C-language style dequoting. ** ** \a -> alarm ** \b -> backspace ** \t -> tab ** \n -> newline ** \v -> vertical tab ** \f -> form feed ** \r -> carriage return ** \s -> space ** \" -> " ** \' -> ' ** \\ -> backslash ** \NNN -> ascii character NNN in octal */
| 20667 | ** \NNN -> ascii character NNN in octal |
| 20668 | */ |
| 20669 | static void resolve_backslashes(char *z){ |
| 20670 | int i, j; |
| 20671 | char c; |
| 20672 | while( *z && *z!='\\' ) z++; |
| 20673 | for(i=j=0; (c = z[i])!=0; i++, j++){ |
| 20674 | if( c=='\\' && z[i+1]!=0 ){ |
| 20675 | c = z[++i]; |
| 20676 | if( c=='a' ){ |
| 20677 | c = '\a'; |
| 20678 | }else if( c=='b' ){ |
| 20679 | c = '\b'; |
| 20680 | }else if( c=='t' ){ |
| 20681 | c = '\t'; |
| 20682 | }else if( c=='n' ){ |
| 20683 | c = '\n'; |
| 20684 | }else if( c=='v' ){ |
| 20685 | c = '\v'; |
| 20686 | }else if( c=='f' ){ |
| 20687 | c = '\f'; |
| 20688 | }else if( c=='r' ){ |
| 20689 | c = '\r'; |
| 20690 | }else if( c=='"' ){ |
| 20691 | c = '"'; |
| 20692 | }else if( c=='\'' ){ |
| 20693 | c = '\''; |
| 20694 | }else if( c=='\\' ){ |
| 20695 | c = '\\'; |
| 20696 | }else if( c>='0' && c<='7' ){ |
| 20697 | c -= '0'; |
| 20698 | if( z[i+1]>='0' && z[i+1]<='7' ){ |
| 20699 | i++; |
| 20700 | c = (c<<3) + z[i] - '0'; |
| 20701 | if( z[i+1]>='0' && z[i+1]<='7' ){ |
| 20702 | i++; |
| 20703 | c = (c<<3) + z[i] - '0'; |
| 20704 | } |
| 20705 | } |
| 20706 | } |
| 20707 | } |
| 20708 | z[j] = c; |
| 20709 | } |
| 20710 | if( j<i ) z[j] = 0; |
| 20711 | } |
| 20712 | |
| 20713 | /* |
| 20714 | ** Interpret zArg as either an integer or a boolean value. Return 1 or 0 |
no outgoing calls
no test coverage detected