DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T c

⟦106386165⟧ TextFile

    Length: 1566 (0x61e)
    Types: TextFile
    Names: »cvcopy.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Crystal/cvcopy.c« 

TextFile

/*	cvcopy.c
 *		copy initialization code into the crystal file
 ************************************************************************/

#include	<stdio.h>
#include	<filehdr.h>
#include	<ldfcn.h>
#include	<fcntl.h>
#include	<sys/stat.h>

#include	"cvmisc.h"
#include	"cvinit.h"

extern char *malloc();

static char crynam[] = "crystal";

main(argc,argv)
int argc;
char *argv[];
{
	auto int r, w;
	auto char *abuff;
	auto unsigned length, rlen;
	auto long where,offset;
	auto FILE *stream;
	auto LDFILE *ldptr;
	auto struct stat cstat;

	ldptr = NULL;
	if ((ldptr = ldopen(crynam,ldptr)) == NULL ) {
		perror(argv[0]);
		exit(1);
	}
	if (ldnsseek(ldptr,".data") == FAILURE) {
		perror(argv[0]);
		exit(1);
	}
	if ( (r = open(path,O_RDWR)) == EOF) {
		perror(argv[0]);
		exit(1);
	}
	if ( (w = open(crynam,O_RDWR)) == EOF) {
		perror(argv[0]);
		exit(1);
	}
	stream = IOPTR(ldptr);
	offset = ftell(stream);
	if ((where = lseek(w,offset,0)) == (long)-1 ) {
		perror(argv[0]);
		exit(1);
	}
	if (fstat(r,&cstat)) {
		perror(argv[0]);
		exit(1);
	}
	length = cstat.st_size;
	if ((abuff = malloc(length)) == NULL ) {
		perror(argv[0]);
		exit(1);
	}
	if ((rlen = read(r,abuff,length)) == EOF || rlen != length) {
		perror(argv[0]);
		exit(1);
	}
	if (write(w,abuff,length) == EOF) {
		perror(argv[0]);
		exit(1);
	}
	free(abuff);

	if (close(r)) {
		perror(argv[0]);
		exit(1);
	}
	if (close(w)) {
		perror(argv[0]);
		exit(1);
	}
	if (ldclose(ldptr) == FAILURE) {
		perror(argv[0]);
		exit(1);
	}
	if (unlink(path) == EOF) {
		perror(argv[0]);
		exit(1);
	}
	return;
}