return NULL;
}
-private const uint32_t ar[] = {
- MAGICNO, VERSIONNO
-};
-
private int
check_buffer(struct magic_set *ms, struct magic_map *map, const char *dbname)
{
char *dbname;
int rv = -1;
uint32_t i;
+ union {
+ struct magic m;
+ uint32_t h[2 + MAGIC_SETS];
+ } hdr;
php_stream *stream;
file_error(ms, errno, "cannot open `%s'", dbname);
goto out;
}
+ memset(&hdr, 0, sizeof(hdr));
+ hdr.h[0] = MAGICNO;
+ hdr.h[1] = VERSIONNO;
+ memcpy(hdr.h + 2, map->nmagic, nm);
- if (write(fd, ar, sizeof(ar)) != (ssize_t)sizeof(ar)) {
- file_error(ms, errno, "error writing `%s'", dbname);
- goto out;
- }
-
- if (php_stream_write(stream, (const char *)map->nmagic, nm) != (ssize_t)nm) {
+ if (php_stream_write(stream,(const char *)&hdr, sizeof(hdr)) != (ssize_t)sizeof(hdr)) {
file_error(ms, errno, "error writing `%s'", dbname);
goto out;
}
- assert(nm + sizeof(ar) < m);
-
- if (php_stream_seek(stream,(zend_off_t)sizeof(struct magic), SEEK_SET) != sizeof(struct magic)) {
- file_error(ms, errno, "error seeking `%s'", dbname);
- goto out;
- }
-
for (i = 0; i < MAGIC_SETS; i++) {
len = m * map->nmagic[i];
if (php_stream_write(stream, (const char *)map->magic[i], len) != (ssize_t)len) {
if (stream) {
php_stream_close(stream);
}
-
rv = 0;
out:
efree(dbname);
return file_apprentice(ms, magicfile, FILE_LOAD);
}
-/*
- * Install a set of compiled magic buffers.
- */
-public int
-magic_load_buffers(struct magic_set *ms, void **bufs, size_t *sizes,
- size_t nbufs)
-{
- if (ms == NULL)
- return -1;
- return buffer_apprentice(ms, (struct magic **)bufs, sizes, nbufs);
-}
-
public int
magic_compile(struct magic_set *ms, const char *magicfile)
{