1*b2baa501Srillig /* $NetBSD: msg_339.c,v 1.4 2023/03/28 14:44:35 rillig Exp $ */ 2746e9c89Srillig # 3 "msg_339.c" 3746e9c89Srillig 4746e9c89Srillig // Test for message: option '%c' should be listed in the options string [339] 5746e9c89Srillig 6*b2baa501Srillig /* lint1-extra-flags: -X 351 */ 7*b2baa501Srillig 8746e9c89Srillig int getopt(int, char *const *, const char *); 9746e9c89Srillig extern char *optarg; 10746e9c89Srillig 11746e9c89Srillig int main(int argc,char ** argv)12746e9c89Srilligmain(int argc, char **argv) 13746e9c89Srillig { 14746e9c89Srillig int o; 15746e9c89Srillig 16ec42194bSrillig /* expect+2: warning: option 'c' should be handled in the switch [338] */ 17ec42194bSrillig /* expect+1: warning: option 'd' should be handled in the switch [338] */ 18ec42194bSrillig while ((o = getopt(argc, argv, "a:bc:d")) != -1) { 19746e9c89Srillig switch (o) { 20746e9c89Srillig case 'a': 21746e9c89Srillig break; 22746e9c89Srillig case 'b': 23746e9c89Srillig /* 24746e9c89Srillig * The following while loop must not finish the check 25746e9c89Srillig * for the getopt options. 26746e9c89Srillig */ 27746e9c89Srillig while (optarg[0] != '\0') 28746e9c89Srillig optarg++; 29746e9c89Srillig break; 30ec42194bSrillig case 'e': 31ec42194bSrillig /* expect-1: warning: option 'e' should be listed in the options string [339] */ 32746e9c89Srillig break; 33ec42194bSrillig case 'f': 34ec42194bSrillig /* expect-1: warning: option 'f' should be listed in the options string [339] */ 35746e9c89Srillig /* 36746e9c89Srillig * The case labels in nested switch statements are 37746e9c89Srillig * ignored by the check for getopt options. 38746e9c89Srillig */ 39746e9c89Srillig switch (optarg[0]) { 40746e9c89Srillig case 'X': 41746e9c89Srillig break; 42746e9c89Srillig } 43746e9c89Srillig break; 44746e9c89Srillig case '?': 45746e9c89Srillig default: 46746e9c89Srillig break; 47746e9c89Srillig } 48746e9c89Srillig } 49746e9c89Srillig 50746e9c89Srillig return 0; 51746e9c89Srillig } 52