190792Sgshapiro/* 2261370Sgshapiro * Copyright (c) 2000-2001 Proofpoint, Inc. and its suppliers. 390792Sgshapiro * All rights reserved. 490792Sgshapiro * 590792Sgshapiro * By using this file, you agree to the terms and conditions set 690792Sgshapiro * forth in the LICENSE file which can be found at the top level of 790792Sgshapiro * the sendmail distribution. 890792Sgshapiro */ 990792Sgshapiro 1090792Sgshapiro#include <sm/gen.h> 11266711SgshapiroSM_IDSTR(id, "@(#)$Id: t-smstdio.c,v 1.12 2013-11-22 20:51:43 ca Exp $") 1290792Sgshapiro 1390792Sgshapiro#include <sm/io.h> 1490792Sgshapiro#include <sm/string.h> 1590792Sgshapiro#include <sm/test.h> 1690792Sgshapiro 1790792Sgshapiroint 1890792Sgshapiromain(argc, argv) 1990792Sgshapiro int argc; 2090792Sgshapiro char **argv; 2190792Sgshapiro{ 2290792Sgshapiro FILE *stream; 2390792Sgshapiro SM_FILE_T *fp; 2490792Sgshapiro char buf[128]; 2590792Sgshapiro size_t n; 2690792Sgshapiro static char testmsg[] = "hello, world\n"; 2790792Sgshapiro 2890792Sgshapiro sm_test_begin(argc, argv, 2990792Sgshapiro "test sm_io_stdioopen, smiostdin, smiostdout"); 3090792Sgshapiro 3190792Sgshapiro stream = fopen("t-smstdio.1", "w"); 3290792Sgshapiro SM_TEST(stream != NULL); 3390792Sgshapiro 3490792Sgshapiro fp = sm_io_stdioopen(stream, "w"); 3590792Sgshapiro SM_TEST(fp != NULL); 3690792Sgshapiro 3790792Sgshapiro (void) sm_io_fprintf(fp, SM_TIME_DEFAULT, "%s", testmsg); 3890792Sgshapiro sm_io_close(fp, SM_TIME_DEFAULT); 3990792Sgshapiro 4090792Sgshapiro#if 0 4190792Sgshapiro /* 4290792Sgshapiro ** stream should now be closed. This is a tricky way to test 4390792Sgshapiro ** if it is still open. Alas, it core dumps on Linux. 4490792Sgshapiro */ 4590792Sgshapiro 4690792Sgshapiro fprintf(stream, "oops! stream is still open!\n"); 4790792Sgshapiro fclose(stream); 4890792Sgshapiro#endif 4990792Sgshapiro 5090792Sgshapiro stream = fopen("t-smstdio.1", "r"); 5190792Sgshapiro SM_TEST(stream != NULL); 5290792Sgshapiro 5390792Sgshapiro fp = sm_io_stdioopen(stream, "r"); 5490792Sgshapiro SM_TEST(fp != NULL); 5590792Sgshapiro 5690792Sgshapiro n = sm_io_read(fp, SM_TIME_DEFAULT, buf, sizeof(buf)); 5790792Sgshapiro if (SM_TEST(n == strlen(testmsg))) 5890792Sgshapiro { 5990792Sgshapiro buf[n] = '\0'; 6090792Sgshapiro SM_TEST(strcmp(buf, testmsg) == 0); 6190792Sgshapiro } 6290792Sgshapiro 6390792Sgshapiro#if 0 6490792Sgshapiro 6590792Sgshapiro /* 6690792Sgshapiro ** Copy smiostdin to smiostdout 6790792Sgshapiro ** gotta think some more about how to test smiostdin and smiostdout 6890792Sgshapiro */ 6990792Sgshapiro 7090792Sgshapiro while ((c = sm_io_getc(smiostdin)) != SM_IO_EOF) 7190792Sgshapiro sm_io_putc(smiostdout, c); 7290792Sgshapiro#endif 7390792Sgshapiro 7490792Sgshapiro return sm_test_end(); 7590792Sgshapiro} 76