Beispiel #1
0
int fzp_printf(struct fzp *fzp, const char *format, ...)
{
	static char buf[4096];
	int ret=-1;
	va_list ap;
	va_start(ap, format);
	vsnprintf(buf, sizeof(buf), format, ap);

	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			ret=fprintf(fzp->fp, "%s", buf);
			break;
		case FZP_COMPRESSED:
			ret=gzprintf(fzp->zp, "%s", buf);
			break;
		default:
			unknown_type(fzp->type, __func__);
			break;
	}
	else
		not_open(__func__);
	va_end(ap);
	return ret;
}
Beispiel #2
0
static struct fzp *fzp_do_open(const char *path, const char *mode,
	enum fzp_type type)
{
	struct fzp *fzp=NULL;

	if(!(fzp=fzp_alloc())) goto error;
	fzp->type=type;
	switch(type)
	{
		case FZP_FILE:
			if(!(fzp->fp=open_fp(path, mode)))
				goto error;
			return fzp;
		case FZP_COMPRESSED:
			if(!(fzp->zp=open_zp(path, mode)))
				goto error;
			return fzp;
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
error:
	fzp_close(&fzp);
	return NULL;
}
Beispiel #3
0
void fzp_ERR_print_errors_fp(struct fzp *fzp)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			ERR_print_errors_fp(fzp->fp);
			break;
		case FZP_COMPRESSED:
			logp("ERR_print_errors_zp() does not exist in %s\n",
				__func__);
			break;
		default:
			unknown_type(fzp->type, __func__);
			break;
	}
}
Beispiel #4
0
char *fzp_gets(struct fzp *fzp, char *s, int size)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return fgets(s, size, fzp->fp);
		case FZP_COMPRESSED:
			return gzgets(fzp->zp, s, size);
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	return NULL;
}
Beispiel #5
0
int fzp_truncate(const char *path, enum fzp_type type, off_t length,
	int compression)
{
	switch(type)
	{
		case FZP_FILE:
			return truncate(path, length);
		case FZP_COMPRESSED:
			return gztruncate(path, length, compression);
		default:
			unknown_type(type, __func__);
			goto error;
	}
error:
	return -1;
}
Beispiel #6
0
int fzp_flush(struct fzp *fzp)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return fflush(fzp->fp);
		case FZP_COMPRESSED:
			return gzflush(fzp->zp, Z_FINISH);
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	return EOF;
}
Beispiel #7
0
off_t fzp_tell(struct fzp *fzp)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return ftello(fzp->fp);
		case FZP_COMPRESSED:
			return gztell(fzp->zp);
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	return -1;
}
Beispiel #8
0
size_t fzp_write(struct fzp *fzp, const void *ptr, size_t nmemb)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return fwrite(ptr, 1, nmemb, fzp->fp);
		case FZP_COMPRESSED:
			return gzwrite(fzp->zp, ptr, (unsigned)nmemb);
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	return 0;
}
Beispiel #9
0
extern int fzp_fileno(struct fzp *fzp)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return fileno(fzp->fp);
		case FZP_COMPRESSED:
			logp("gzfileno() does not exist in %s\n", __func__);
			goto error;
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	return -1;
}
Beispiel #10
0
int fzp_eof(struct fzp *fzp)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return feof(fzp->fp);
		case FZP_COMPRESSED:
			return gzeof(fzp->zp);
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	// Non-zero means end of file. Should be OK to use -1 here.
	return -1;
}
Beispiel #11
0
X509 *fzp_PEM_read_X509(struct fzp *fzp)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return PEM_read_X509(fzp->fp, NULL, NULL, NULL);
		case FZP_COMPRESSED:
			logp("PEM_read_X509() does not exist in %s\n",
				__func__);
			goto error;
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	return NULL;
}
Beispiel #12
0
void fzp_setlinebuf(struct fzp *fzp)
{
#ifndef HAVE_WIN32
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			setlinebuf(fzp->fp);
			return;
		case FZP_COMPRESSED:
			logp("gzsetlinebuf() does not exist in %s\n", __func__);
			return;
		default:
			unknown_type(fzp->type, __func__);
			return;
	}
	not_open(__func__);
#endif
}
Beispiel #13
0
int fzp_seek(struct fzp *fzp, off_t offset, int whence)
{
	if(fzp) switch(fzp->type)
	{
		case FZP_FILE:
			return fseeko(fzp->fp, offset, whence);
		case FZP_COMPRESSED:
			// Notice that gzseek returns the new offset.
			if(gzseek(fzp->zp, offset, whence)==offset)
				return 0;
			goto error;
		default:
			unknown_type(fzp->type, __func__);
			goto error;
	}
	not_open(__func__);
error:
	return -1;
}
Beispiel #14
0
int fzp_close(struct fzp **fzp)
{
	int ret=-1;
	if(!fzp || !*fzp) return 0;
	switch((*fzp)->type)
	{
		case FZP_FILE:
			ret=close_fp(&((*fzp)->fp));
			break;
		case FZP_COMPRESSED:
			ret=close_zp(&((*fzp)->zp));
			break;
		default:
			unknown_type((*fzp)->type, __func__);
			break;
	}
	fzp_free(fzp);
	return ret;
}
Beispiel #15
0
/* Return true if it's an unknown ODD message.  cursor is a tal ptr. */
bool is_unknown_msg_discardable(const u8 *cursor)
{
	enum wire_type t = fromwire_peektype(cursor);
	return unknown_type(t) && (t & 1);
}