/*      $NetBSD: msg_356.c,v 1.3 2024/03/25 22:37:43 rillig Exp $       */
# 3 "msg_356.c"

// Test for message: short octal escape '%.*s' followed by digit '%c' [356]

/* lint1-extra-flags: -X 351 */

// When counting backwards in octal, the number before \040 is not \039 but
// \037. This mistake sometimes happens when encoding the bit numbers for
// snprintb(3) format conversions.

char snprintb_fmt[] = "\020"
   "\0040bit32"                // 3-digit octal escapes are fine
   "\0039bit31"
   "\0038bit30"

   "\040bit32"
   /* expect+1: warning: short octal escape '\03' followed by digit '9' [356] */
   "\039bit31"
   /* expect+1: warning: short octal escape '\03' followed by digit '8' [356] */
   "\038bit30"

   "\40bit32"
   /* expect+1: warning: short octal escape '\3' followed by digit '9' [356] */
   "\39bit31"
   /* expect+1: warning: short octal escape '\3' followed by digit '8' [356] */
   "\38bit30"
   "\37bit29"
;

char ok[] = ""
   "\3\70"                     // short octal followed by escaped '8'
   "\3\x38"                    // short octal followed by escaped '8'
   "\3" "8"                    // short octal and '8' are separated
;