7 #if defined(HAVE_MAGIC_H)
15 #define _RPMMG_INTERNAL
30 #if defined(HAVE_MAGIC_H)
36 mg->fn =
_free(mg->fn);
49 if (_rpmmgPool ==
NULL) {
64 #if defined(HAVE_MAGIC_H)
65 mg->flags = (flags ? flags : MAGIC_CHECK);
66 mg->ms = magic_open(flags);
68 xx = magic_load(mg->ms, mg->fn);
71 (fn ? fn :
"(nil)"), magic_error(mg->ms));
76 flags, strerror(
errno));
86 const char *
t =
NULL;
89 fprintf(stderr,
"--> rpmmgFile(%p, %s)\n", mg, (fn ? fn :
"(nil)"));
91 #if defined(HAVE_MAGIC_H)
93 const char * lpath =
NULL;
105 fd =
Fopen(fn,
"r.ufdio");
107 nb =
Fread(b, 1,
sizeof(b), fd);
126 old_ctype =
xstrdup(old_ctype);
130 old_collate =
xstrdup(old_collate);
134 t = magic_file(mg->ms, fn);
146 const char *
msg = magic_error(mg->ms);
147 if (strstr(msg,
"regexec error 17, (match failed)") ==
NULL)
149 (fn ? fn :
"(nil)"), msg);
157 if (t ==
NULL) t =
"";
161 fprintf(stderr,
"<-- rpmmgFile(%p, %s) %s\n", mg, (fn ? fn :
"(nil)"), t);
167 const char *
t =
NULL;
170 fprintf(stderr,
"--> rpmmgBuffer(%p, %p[%d])\n", mg, b, (
int)nb);
171 if (nb == 0) nb = strlen(b);
172 #if defined(HAVE_MAGIC_H)
174 t = magic_buffer(mg->ms, b, nb);
177 const char *
msg = magic_error(mg->ms);
178 if (strstr(msg,
"regexec error 17, (match failed)") ==
NULL)
180 b, (
unsigned)nb, msg);
185 if (t ==
NULL) t =
"";
189 fprintf(stderr,
"<-- rpmmgBuffer(%p, %p[%d]) %s\n", mg, b, (
int)nb, t);
const char * rpmmgFile(rpmmg mg, const char *fn)
Return magic string for a file.
rpmlog(RPMLOG_ERR,"%s\n", buf)
char * xstrdup(const char *str)
FD_t Fopen(const char *path, const char *_fmode)
fopen(3) clone.
static char *size_t nb
fgets(3) analogue that reads \ continuations.
static rpmmg rpmmgGetPool(rpmioPool pool)
Yet Another syslog(3) API clone.
rpmioItem rpmioGetPool(rpmioPool pool, size_t size)
Get unused item from pool, or alloc a new item.
fprintf(stderr,"--> %s(%p,%p,%p) sig %p sigp %p\n", __FUNCTION__, dig, t, rsactx, sig, sigp)
#define setlocale(Category, Locale)
static void rpmmgFini(void *_mg)
The FD_t File Handle data structure.
rpmmg rpmmgLink(rpmmg mg)
Reference a magic wrapper instance.
rpmmg rpmmgNew(const char *fn, int flags)
Create and load a magic wrapper.
size_t Fread(void *buf, size_t size, size_t nmemb, FD_t fd)
fread(3) clone.
const char * rpmmgBuffer(rpmmg mg, const char *b, size_t nb)
Return magic string for a buffer.
int Fclose(FD_t fd)
fclose(3) clone.
int Ferror(FD_t fd)
ferror(3) clone.
urltype urlPath(const char *url, const char **pathp)
Return path component of URL.
rpmioPool rpmioNewPool(const char *name, size_t size, int limit, int flags, char *(*dbg)(void *item), void(*init)(void *item), void(*fini)(void *item))
Create a memory pool.
static void
Print copy of spec file, filling in Group/Description/Summary from specspo.
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
rpmmg rpmmgFree(rpmmg mg)
Destroy a magic wrapper.