/*
* Copyright (c) 2002, 2004 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/generic.h"
SM_IDSTR(id, "@(#)$Id: t-stdio-4.c,v 1.7 2006/07/16 02:07:39 ca Exp $")
#include "sm/io.h"
#include "sm/test.h"
#include <stdio.h>
#define SM_N_CHARS 65536
static void
testputc(sm_file_T *fp)
{
int i;
uchar c, r;
for (i = 0; i < SM_N_CHARS; i++)
{
c = (uchar) i;
r = sm_putc(fp, c);
SM_TEST(c == r);
}
}
static void
testgetc(sm_file_T *fp)
{
int i;
uchar c, r;
for (i = 0; i < SM_N_CHARS; i++)
{
c = (uchar) i;
r = sm_getc(fp);
SM_TEST(c == r);
}
}
static void
testget(sm_file_T *fp)
{
int i;
uchar c, r;
sm_ret_T res;
for (i = SM_N_CHARS - 1; i >= 0; i -= 253)
{
res = sm_io_seek(fp, (long) i, SM_IO_SEEK_SET);
SM_TEST(res == SM_SUCCESS);
c = (uchar) i;
r = sm_getc(fp);
SM_TEST(c == r);
}
}
int
main(int argc, char *argv[])
{
sm_ret_T res;
sm_file_T *fp;
sm_test_begin(argc, argv, "test sm_io_putc");
res = sm_io_open(SmStStdio, "foo", SM_IO_WRONLY, &fp, SM_IO_WHAT_END);
SM_TEST(res == SM_SUCCESS);
SM_TEST(fp != NULL);
if (fp != NULL)
{
testputc(fp);
res = sm_io_close(fp, SM_IO_CF_NONE);
SM_TEST(res == SM_SUCCESS);
res = sm_io_open(SmStStdio, "foo", SM_IO_RDONLY, &fp, SM_IO_WHAT_END);
SM_TEST(res == SM_SUCCESS);
SM_TEST(fp != NULL);
if (fp != NULL)
{
testgetc(fp);
testget(fp);
res = sm_io_close(fp, SM_IO_CF_NONE);
SM_TEST(res == SM_SUCCESS);
}
}
return sm_test_end();
}
syntax highlighted by Code2HTML, v. 0.9.1