#include <xalloc.h>
#include <ctype.h>
-#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
-# define ISASCII(c) 1
-#else
-# define ISASCII(c) isascii (c)
-#endif
-#define ISPRINT(c) (ISASCII (c) && isprint (c))
#if ENABLE_NLS
# include <libintl.h>
# define UCHAR_MAX ((unsigned char) -1)
#endif
+#if HAVE_C_BACKSLASH_A
+# define ALERT_CHAR '\a'
+#else
+# define ALERT_CHAR '\7'
+#endif
+
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
# include <string.h>
#endif
+#if HAVE_WCTYPE_H
+# include <wctype.h>
+#endif
+
#if HAVE_MBRTOWC && HAVE_WCHAR_H
# include <wchar.h>
#else
#define INT_BITS (sizeof (int) * CHAR_BIT)
+#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
+/* Undefine to protect against the definition in wctype.h of solaris2.6. */
+# undef ISASCII
+# define ISASCII(c) 1
+#else
+# define ISASCII(c) isascii (c)
+#endif
+/* Undefine to protect against the definition in wctype.h of solaris2.6. */
+#undef ISPRINT
+#define ISPRINT(c) (ISASCII (c) && isprint (c))
+
struct quoting_options
{
/* Basic quoting style. */
}
break;
-#if HAVE_C_BACKSLASH_A
- case '\a': esc = 'a'; goto c_escape;
-#endif
+ case ALERT_CHAR: esc = 'a'; goto c_escape;
case '\b': esc = 'b'; goto c_escape;
case '\f': esc = 'f'; goto c_escape;
- case '\n': esc = 'n'; goto c_escape;
- case '\r': esc = 'r'; goto c_escape;
- case '\t': esc = 't'; goto c_escape;
+ case '\n': esc = 'n'; goto c_and_shell_escape;
+ case '\r': esc = 'r'; goto c_and_shell_escape;
+ case '\t': esc = 't'; goto c_and_shell_escape;
case '\v': esc = 'v'; goto c_escape;
- case '\\': esc = c; goto c_escape;
+ case '\\': esc = c; goto c_and_shell_escape;
+ c_and_shell_escape:
+ if (quoting_style == shell_quoting_style)
+ goto use_shell_always_quoting_style;
c_escape:
if (backslash_escapes)
{
c = esc;
goto store_escape;
}
- if (quoting_style == shell_quoting_style)
- goto use_shell_always_quoting_style;
break;
case '#': case '~':