summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libsm/t-fget.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libsm/t-fget.c')
-rw-r--r--contrib/sendmail/libsm/t-fget.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/contrib/sendmail/libsm/t-fget.c b/contrib/sendmail/libsm/t-fget.c
new file mode 100644
index 0000000..434debf
--- /dev/null
+++ b/contrib/sendmail/libsm/t-fget.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2013 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-fget.c,v 1.1 2013/03/12 15:24:50 ca Exp $")
+
+#include <sm/io.h>
+#include <sm/string.h>
+#include <sm/test.h>
+#include <errno.h>
+
+void
+check(char *msg, int l)
+{
+ SM_FILE_T *wfp, *rfp;
+ char buf[256];
+ size_t n;
+ int r, i;
+ static char fn[] = "tfget";
+
+ wfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT, fn,
+ SM_IO_WRONLY_B, NULL);
+ SM_TEST(wfp != NULL);
+ for (i = 0; i < l; i++)
+ {
+ r = sm_io_putc(wfp, SM_TIME_DEFAULT, msg[i]);
+ SM_TEST(r >= 0);
+ }
+ r = sm_io_close(wfp, SM_TIME_DEFAULT);
+ SM_TEST(r == 0);
+
+ rfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT, fn,
+ SM_IO_RDONLY_B, NULL);
+ SM_TEST(rfp != NULL);
+ n = sizeof(buf);
+ r = sm_io_fgets(rfp, SM_TIME_DEFAULT, buf, n);
+ if (l == 0)
+ {
+ SM_TEST(r == -1);
+ SM_TEST(errno == 0);
+ }
+ else
+ {
+ SM_TEST(r == l);
+ if (r != l)
+ fprintf(stderr, "buf='%s', in='%s', r=%d, l=%d\n",
+ buf, msg, r, l);
+ }
+ SM_TEST(memcmp(buf, msg, l) == 0);
+ r = sm_io_close(rfp, SM_TIME_DEFAULT);
+ SM_TEST(r == 0);
+}
+
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ char res[256];
+ int l;
+
+ sm_test_begin(argc, argv, "test fget");
+
+ check("", strlen(""));
+ check("\n", strlen("\n"));
+ check("test\n", strlen("test\n"));
+
+ l = snprintf(res, sizeof(res), "%c%s\n", '\0', "test ing");
+ check(res, l);
+
+ l = snprintf(res, sizeof(res), "%c%s%c\n", '\0', "test ing", '\0');
+ check(res, l);
+
+ l = snprintf(res, sizeof(res), "%c%s%c%s\n",
+ '\0', "test ing", '\0', "eol");
+ check(res, l);
+
+ return sm_test_end();
+}
OpenPOWER on IntegriCloud