2021-10-11 19:38:01 -03:00

58 lines
908 B
C
Executable File

/* Copyright (c) 1988 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#pragma ident "@(#)rawput.c 1.5 94/08/01 SMI" /* SVr4.0 1.2 */
/*LINTLIBRARY*/
#include "syn.h"
#include <stdlib.h>
#include <unistd.h>
#include "libelf.h"
#include "decl.h"
#include "error.h"
/* Raw file input/output
* Read pieces of input files.
*/
char *
_elf_read(fd, off, fsz)
int fd;
off_t off;
size_t fsz;
{
char *p;
if (fsz == 0)
return 0;
if (fd == -1)
{
_elf_err = EREQ_NOFD;
return 0;
}
if (lseek(fd, off, 0) != off)
{
_elf_err = EIO_SEEK;
return 0;
}
if ((p = (char *)malloc(fsz)) == 0)
{
_elf_err = EMEM_DATA;
return 0;
}
if (read(fd, p, fsz) != fsz)
{
_elf_err = EIO_READ;
free(p);
return 0;
}
return p;
}