V10/cmd/cbt/btcreat.c

Compare this file to the similar file:
Show the results in this format:

#include "stdio.h"
#include "cbt.h"
#define error(x, y) {fprintf(stderr, x, y); exit(1); }

int iflag, rflag;
char node[NDSZ];
char buf[FNAMELEN];
extern char *malloc();

main(argc, argv)
char **argv;
{	int i, fd;
	hdr *b;
	char *p;
	for(i = 1; i < argc; i++) {
		if(argv[i][0] == '-') {
			for(p = argv[i] + 1; *p; p++)
				if(*p == 'i')
					iflag = 1;
				else if(*p == 'r')
					rflag = 1;
				else
					error("unknown flag %c\n", *p);
			if(i >= argc - 1)
				error("file name?", 0);
			continue;
		}
		if(!iflag) {
			sprintf(buf, "%s.F", argv[i]);
			if((fd = creat(buf, 0666)) < 0) {
				perror(buf);
				exit(1);
			}
			close(fd);
		}
		sprintf(buf, "%s.T", argv[i]);
		if((fd = creat(buf, 0666)) < 0) {
			perror(buf);
			if(!iflag) {
				sprintf(buf, "%s.F", argv[i]);
				unlink(buf);
			}
			exit(1);
		}
		b = (hdr *)node;
		b->kcnt = 0;
		if(iflag)
			b->htype |= INDEX;
		if(rflag)
			b->htype |= READONLY;
		nfree(b) = NDSZ - sizeof(hdr) - sizeof(trailer);
		if(write(fd, node, NDSZ) != NDSZ)
			perror("failed");
		close(fd);
	}
	exit(0);
}