36#define CHUNK_SIZE 1024
38static unsigned char *
pbuf = NULL;
53 if (*used + material >=
plen)
57 unsigned char *p = realloc(
pbuf, nplen);
67 if (fread(
pbuf + *used, 1, material, fp) < material)
93 startpos = ftello(fp);
103 if (fread(&ctb, 1, 1, fp) < 1)
117 bool partial =
false;
123 if (fread(&b, 1, 1, fp) < 1)
136 material = (b - 192) * 256;
137 if (fread(&b, 1, 1, fp) < 1)
147 material = 1 << (b & 0x1f);
153 unsigned char buf[4];
154 if (fread(buf, 4, 1, fp) < 1)
159 material = (size_t) buf[0] << 24;
160 material |= buf[1] << 16;
161 material |= buf[2] << 8;
175 pbuf[0] = 0x80 | ((ctb >> 2) & 0x0f);
182 if (fread(&b, 1, 1, fp) < 1)
203 for (
int i = 0; i < bytes; i++)
205 if (fread(&b, 1, 1, fp) < 1)
211 material = (material << 8) + b;
bool mutt_file_seek(FILE *fp, LOFF_T offset, int whence)
Wrapper for fseeko with error handling.
void * mutt_mem_malloc(size_t size)
Allocate memory on the heap.
Convenience wrapper for the library headers.
static unsigned char * pbuf
Cached PGP data packet.
void pgp_release_packet(void)
Free the cached PGP packet.
static int read_material(size_t material, size_t *used, FILE *fp)
Read PGP data into a buffer.
#define CHUNK_SIZE
Amount of data to read at once.
unsigned char * pgp_read_packet(FILE *fp, size_t *len)
Read a PGP packet from a file.
static size_t plen
Length of cached packet.