diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-11-17 14:49:02 +0100 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-11-17 14:55:13 +0100 |
commit | f110c93c3a788f53c3515ede62997230c4a1d063 (patch) | |
tree | 57ab7831aaf87c72f2d5034dfc84ff053583c307 | |
download | lua-file-magic-f110c93c3a788f53c3515ede62997230c4a1d063.tar.bz2 lua-file-magic-f110c93c3a788f53c3515ede62997230c4a1d063.tar.xz |
Initial commit
We have constants and api defined
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile | 20 | ||||
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | magic.c | 99 |
4 files changed, 123 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9d22eb4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.o +*.so diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ba78215 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ + +VERSION = 0.1 +GIT_REV := $(shell test -d .git && git describe || echo exported) +ifneq ($(GIT_REV), exported) +FULL_VERSION := $(GIT_REV) +FULL_VERSION := $(patsubst v%,%,$(FULL_VERSION)) +else +FULL_VERSION := $(VERSION) +endif + + +OBJS = magic.o +LIBS = -lmagic + +CFLAGS ?= -g +CFLAGS += -fPIC + +magic.so: $(OBJS) + $(CC) $(LDFLAGS) -o $@ -fPIC -shared $^ $(LIBS) + @@ -0,0 +1,2 @@ +Lua binding to libmagic + @@ -0,0 +1,99 @@ +/* Copyright Natanael Copa 2011 + +LGPL + +*/ + +#include <lua.h> +#include <lualib.h> +#include <lauxlib.h> + +#include <magic.h> + +#define MODULE_NAME "magic" +#define MODULE_VERSION "0.1" +#define MAGIC_META "magic" + +struct magic_constmap { + const char *name; + int value; +} constmap[] = { + { "NONE", MAGIC_NONE }, + { "DEBUG", MAGIC_DEBUG }, + { "SYMLINK", MAGIC_SYMLINK }, + { "COMPRESS", MAGIC_COMPRESS }, + { "DEVICES", MAGIC_DEVICES }, + { "MIME_TYPE", MAGIC_MIME_TYPE }, + { "CONTINUE", MAGIC_CONTINUE }, + { "CHECK", MAGIC_CHECK }, + { "PRESERVE_ATIME", MAGIC_PRESERVE_ATIME }, + { "RAW", MAGIC_RAW }, + { "ERROR", MAGIC_ERROR }, + { "MIME_ENCODING", MAGIC_MIME_ENCODING }, + { "APPLE", MAGIC_APPLE }, + { "NO_CHECK_COMPRESS", MAGIC_NO_CHECK_COMPRESS }, + { "NO_CHECK_TAR", MAGIC_NO_CHECK_TAR }, + { "NO_CHECK_SOFT", MAGIC_NO_CHECK_SOFT }, + { "NO_CHECK_APPTYPE", MAGIC_NO_CHECK_APPTYPE }, + { "NO_CHECK_ELF", MAGIC_NO_CHECK_ELF }, + { "NO_CHECK_TEXT", MAGIC_NO_CHECK_TEXT }, + { "NO_CHECK_CDF", MAGIC_NO_CHECK_CDF }, + { "NO_CHECK_TOKENS", MAGIC_NO_CHECK_TOKENS }, + { "NO_CHECK_ENCODING", MAGIC_NO_CHECK_ENCODING }, + { "NO_CHECK_BUILTIN", MAGIC_NO_CHECK_BUILTIN }, + { "NO_CHECK_TEXT", MAGIC_NO_CHECK_TEXT }, + { "NO_CHECK_FORTRAN", MAGIC_NO_CHECK_FORTRAN }, + { "NO_CHECK_TROFF", MAGIC_NO_CHECK_TROFF }, + { NULL, 0}, +}; + +static void init_consts(lua_State *L) +{ + int i; + for (i = 0; constmap[i].name != NULL; i++) { + lua_pushstring(L, constmap[i].name); + lua_pushnumber(L, constmap[i].value); + lua_settable(L, -3); + } +} + +static int Ptodo(lua_State *L) +{ + printf("todo\n"); + return 0; +} + +static const luaL_reg Pmagic_methods[] = { + {"open", Ptodo}, + {"close", Ptodo}, + {"getpath", Ptodo}, + {"file", Ptodo}, + {"descriptor", Ptodo}, + {"buffer", Ptodo}, + {"error", Ptodo}, + {"setflags", Ptodo}, + {"load", Ptodo}, + {"compile", Ptodo}, + {"check", Ptodo}, + {"list", Ptodo}, + {"errno", Ptodo}, + {NULL, NULL} +}; + +static const luaL_reg Pmeta_methods[] = { + {"__gc", Ptodo}, + {NULL, NULL}, +}; + +LUALIB_API int luaopen_magic(lua_State *L) +{ + luaL_openlib(L, MODULE_NAME, Pmagic_methods, 0); + lua_pushliteral(L, "version"); + lua_pushliteral(L, MODULE_VERSION); + lua_settable(L, -3); + + init_consts(L); + + +} + |