#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
uchar_t *
read_buf_from_file(char *file, uint32_t *size)
{
struct stat stats;
uchar_t *buf;
FILE *fp;
size_t nread;
int rc;
errno = 0;
rc = stat(file, &stats);
if (rc < 0) {
fprintf(stderr, "stat failed with rc %d:\n", rc);
perror(file);
return (NULL);
}
buf = malloc(stats.st_size);
if (buf == NULL) {
fprintf(stderr, "couldn't allocate buffer\n");
return (NULL);
}
errno = 0;
fp = fopen(file, "r");
if (fp == NULL) {
fprintf(stderr, "fopen failed to open file:\n");
perror(file);
free(buf);
return (NULL);
}
errno = 0;
nread = fread(buf, 1, stats.st_size, fp);
if (nread == EOF && errno != 0) {
fprintf(stderr, "fread failed:\n");
perror(file);
free(buf);
return (NULL);
}
(void) fclose(fp);
if (nread == EOF) {
free(buf);
buf = NULL;
}
*size = nread;
return (buf);
}
void
smb_syslog(int pri, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
(void) vfprintf(stderr, fmt, ap);
va_end(ap);
fprintf(stderr, "\n");
}