This commit is contained in:
kento2 2026-09-09 18:41:42 +02:00
commit aae369b9c8
9 changed files with 334 additions and 0 deletions

32
extension.c Normal file
View file

@ -0,0 +1,32 @@
#include <magic.h>
#include <libowfat/errmsg.h>
#include <libowfat/byte.h>
#include <libowfat/str.h>
#include "pipeshare.h"
#define MAX(a,b) (a>b?a:b)
#define failmagic(...) do { \
carp(__VA_ARGS__,": ",magic_error(magic)); \
return 0; \
} while(0)
int extension(int64 fd,char result[16])
{
magic_t magic=magic_open(MAGIC_EXTENSION);
if(!magic) failmagic("initialize libmagic");
if(magic_load(magic,NULL)<0) failmagic("load magic database");
const char *extensions=magic_descriptor(magic,fd);
if(!extensions) failmagic("get magic data");
size_t l=MAX(str_chr(extensions,'/'),16);
byte_copy(result,l,extensions);
result[l]=0;
magic_close(magic);
if(str_equal(result,"???"))
str_copy(result,"txt");
return 1;
}
#undef failmagic