summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libsm/t-float.c
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2002-02-17 21:56:45 +0000
committergshapiro <gshapiro@FreeBSD.org>2002-02-17 21:56:45 +0000
commit8449595fe97f4474b9b9a7e4edee1ef35dcff393 (patch)
treee7a33b132264d449a512ddf4a8685df097669c1d /contrib/sendmail/libsm/t-float.c
parent289b381b31415647269c7520d881017e2dcb27f1 (diff)
downloadFreeBSD-src-8449595fe97f4474b9b9a7e4edee1ef35dcff393.zip
FreeBSD-src-8449595fe97f4474b9b9a7e4edee1ef35dcff393.tar.gz
Import sendmail 8.12.2
Diffstat (limited to 'contrib/sendmail/libsm/t-float.c')
-rw-r--r--contrib/sendmail/libsm/t-float.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/contrib/sendmail/libsm/t-float.c b/contrib/sendmail/libsm/t-float.c
new file mode 100644
index 0000000..f3f059b
--- /dev/null
+++ b/contrib/sendmail/libsm/t-float.c
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
+ * All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ */
+
+#include <sm/gen.h>
+SM_IDSTR(id, "@(#)$Id: t-float.c,v 1.18 2001/09/11 04:04:49 gshapiro Exp $")
+
+#include <sm/limits.h>
+#include <sm/io.h>
+#include <sm/string.h>
+#include <sm/test.h>
+#include <sm/types.h>
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ double d, d2;
+ double ld;
+ char buf[128];
+ char *r;
+
+ /*
+ ** Sendmail uses printf and scanf with doubles,
+ ** so make sure that this works.
+ */
+
+ sm_test_begin(argc, argv, "test floating point stuff");
+
+ d = 1.125;
+ sm_snprintf(buf, sizeof(buf), "%d %.3f %d", 0, d, 1);
+ r = "0 1.125 1";
+ if (!SM_TEST(strcmp(buf, r) == 0))
+ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT,
+ "got %s instead\n", buf);
+
+ d = 1.125;
+ sm_snprintf(buf, sizeof(buf), "%.3f", d);
+ r = "1.125";
+ if (!SM_TEST(strcmp(buf, r) == 0))
+ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT,
+ "got %s instead\n", buf);
+ d2 = 0.0;
+ sm_io_sscanf(buf, "%lf", &d2);
+#if SM_CONF_BROKEN_STRTOD
+ if (d != d2)
+ {
+ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT,
+ "wanted %f, got %f\n", d, d2);
+ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT,
+ "error ignored since SM_CONF_BROKEN_STRTOD is set for this OS\n");
+ }
+#else /* SM_CONF_BROKEN_STRTOD */
+ if (!SM_TEST(d == d2))
+ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT,
+ "wanted %f, got %f\n", d, d2);
+#endif /* SM_CONF_BROKEN_STRTOD */
+
+ ld = 2.5;
+ sm_snprintf(buf, sizeof(buf), "%.3f %.1f", d, ld);
+ r = "1.125 2.5";
+ if (!SM_TEST(strcmp(buf, r) == 0))
+ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT,
+ "got %s instead\n", buf);
+ return sm_test_end();
+}
OpenPOWER on IntegriCloud