1 /* 2 * Copyright (c) 2001 Proofpoint, Inc. and its suppliers. 3 * All rights reserved. 4 * 5 * By using this file, you agree to the terms and conditions set 6 * forth in the LICENSE file which can be found at the top level of 7 * the sendmail distribution. 8 */ 9 10 #include <sm/gen.h> 11 SM_IDSTR(id, "@(#)$Id: t-scanf.c,v 1.6 2013-11-22 20:51:43 ca Exp $") 12 13 #include <sm/limits.h> 14 #include <sm/io.h> 15 #include <sm/string.h> 16 #include <sm/test.h> 17 #include <sm/types.h> 18 19 int 20 main(argc, argv) 21 int argc; 22 char **argv; 23 { 24 int i, d, h; 25 char buf[128]; 26 char *r; 27 28 sm_test_begin(argc, argv, "test scanf point stuff"); 29 #if !SM_CONF_BROKEN_SIZE_T 30 (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, 31 "If tests for \"h == 2\" fail, check whether size_t is signed on your OS.\n\ 32 If that is the case, add -DSM_CONF_BROKEN_SIZE_T to confENVDEF\n\ 33 and start over. Otherwise contact sendmail.org.\n"); 34 #endif /* !SM_CONF_BROKEN_SIZE_T */ 35 36 d = 2; 37 sm_snprintf(buf, sizeof(buf), "%d", d); 38 r = "2"; 39 if (!SM_TEST(strcmp(buf, r) == 0)) 40 (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, 41 "got %s instead\n", buf); 42 43 i = sm_io_sscanf(buf, "%d", &h); 44 SM_TEST(i == 1); 45 SM_TEST(h == 2); 46 47 d = 2; 48 sm_snprintf(buf, sizeof(buf), "%d\n", d); 49 r = "2\n"; 50 if (!SM_TEST(strcmp(buf, r) == 0)) 51 (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, 52 "got %s instead\n", buf); 53 54 i = sm_io_sscanf(buf, "%d", &h); 55 SM_TEST(i == 1); 56 SM_TEST(h == 2); 57 58 return sm_test_end(); 59 } 60