File:  [ELWIX - Embedded LightWeight unIX -] / libaitio / example / test_bufio.c
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Thu Feb 2 21:32:42 2012 UTC (12 years, 4 months ago) by misho
Branches: MAIN
CVS tags: io7_3, io7_2, io7_1, io7_0, io6_9, io6_8, io6_7, io6_6, io6_5, io6_4, io6_3, io6_2, io6_1, io6_0, io5_9, io5_8, io5_7, io5_6, io5_5, io5_4, io5_3, io5_2, io5_1, io5_0, io4_1, io4_0, io3_9, io3_8, io3_7, io3_6, io3_5, io3_4, io3_3, io3_2, io3_1, io2_8, io2_7, io2_6, io2_5, io2_4, IO7_2, IO7_1, IO7_0, IO6_9, IO6_8, IO6_7, IO6_6, IO6_5, IO6_4, IO6_3, IO6_2, IO6_1, IO6_0, IO5_9, IO5_8, IO5_7, IO5_6, IO5_5, IO5_4, IO5_3, IO5_2, IO5_1, IO5_0, IO4_1, IO4_0, IO3_9, IO3_8, IO3_7, IO3_6, IO3_5, IO3_4, IO3_3, IO3_2, IO3_1, IO3_0, IO2_7, IO2_6, IO2_5, IO2_4, IO2_3, HEAD
version 2.3
added feature for bufio

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <aitio.h>


int
main(int argc, char **argv)
{
	FILE *f;
	char b[BUFSIZ];
	void *p = NULL;

	f = io_fd2buf(io_dumbFile("xxx", 0644, 12345), "r+");
	fclose(f);

	if (argc < 2)
		f = io_fmapopen(NULL, 0, 0, PROT_READ | PROT_WRITE, 0, 2000);
	else
		f = io_fmapopen(argv[1], O_RDWR, 0, PROT_READ | PROT_WRITE, MAP_SHARED, 0);
	if (!f) {
		printf("Error:: #%d - %s\n", io_GetErrno(), io_GetError());
		return 1;
	}

	fwrite("123456789", 10, 1, f);
	fseek(f, 0, SEEK_SET);
	memset(b, 0, sizeof b);
	fread(b, sizeof b, 1, f);
	printf("b=%s\n", b);
//	fread(b, sizeof b, 1, f);
	fwrite("***", 4, 1, f);
	fwrite("*|\n", 3, 1, f);
	fseek(f, 100, SEEK_CUR);
	fwrite("oOo", 3, 1, f);
	fseek(f, -10, SEEK_END);
	fwrite("123456789", 10, 1, f);
	fseek(f, -10, SEEK_END);
	memset(b, 0, sizeof b);
	fread(b, sizeof b, 1, f);
	printf("2.b=%s\n", b);

	fclose(f);

	// part 2
	
	f = io_fmemopen(&p, 100);
	if (!f) {
		printf("Error:: #%d - %s\n", io_GetErrno(), io_GetError());
		return 2;
	}

	fwrite("123456789", 10, 1, f);
	fseek(f, 0, SEEK_SET);
	memset(b, 0, sizeof b);
	fread(b, sizeof b, 1, f);
	printf("b=%s\n", b);
//	fread(b, sizeof b, 1, f);
	fwrite("***", 4, 1, f);
	fwrite("*|\n", 3, 1, f);
	fseek(f, 100, SEEK_CUR);
	fwrite("oOo", 3, 1, f);
	fseek(f, -10, SEEK_END);
	fwrite("123456789", 10, 1, f);
	fseek(f, -10, SEEK_END);
	memset(b, 0, sizeof b);
	fread(b, sizeof b, 1, f);
	printf("2.b=%s\n", b);

	fclose(f);

	// part 3

	p = malloc(10000);
	f = io_fmemopen(&p, 10000);
	if (!f) {
		printf("Error:: #%d - %s\n", io_GetErrno(), io_GetError());
		return 3;
	}

	fwrite("123456789", 10, 1, f);
	fseek(f, 0, SEEK_SET);
	memset(b, 0, sizeof b);
	fread(b, sizeof b, 1, f);
	printf("b=%s\n", b);
//	fread(b, sizeof b, 1, f);
	fwrite("***", 4, 1, f);
	fwrite("*|\n", 3, 1, f);
	fseek(f, 100, SEEK_CUR);
	fwrite("oOo", 3, 1, f);
	fseek(f, -10, SEEK_END);
	fwrite("123456789", 10, 1, f);
	fseek(f, -10, SEEK_END);
	memset(b, 0, sizeof b);
	fread(b, sizeof b, 1, f);
	printf("2.b=%s\n", b);

	fclose(f);
	free(p);

	return 0;
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>