[comp.sys.atari.st.tech] creat, open, read & write

ericco@ssl.berkeley.edu (Eric C. Olson) (01/31/91)

Can anyone figure out why the a is not equal to b in the following
program?  And why the length of "test" is 3?  I'm using LaserC.
In other words how do I really get into binary mode (no translations).

Thanks in advance,
Eric

#include <fcntl.h>

/*
	test contains:
	00000000  000d 0a                                  ...
*/
main()
{
	char	*name = "test";
	int	fd;
	short	a = 10, b;

	unlink(name);
	fd = creat(name, O_BINARY);
	if (fd > 0) {
		write(fd, &a, sizeof(a));
		close(fd);
		fd = open(name, O_RDONLY | O_BINARY);
		if (fd > 0) {
			read(fd, &b, sizeof(b));
			printf("a %d, b %d\n", a, b);
		} else {
			printf("couldn't reopen '%s'\n", name);
		}
	} else {
		printf("couldn't open '%s'\n", name);
	}
}
--
Eric
ericco@ssl.berkeley.edu