diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2009-04-13 15:10:01 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2009-04-13 15:10:01 +0000 |
commit | eb4a870be600f3f8704737278ef75c7d050f7172 (patch) | |
tree | 835c65ea2d5d349e7ec5472f1f9c08a9ffccc388 /contrib/lar/lar.h | |
parent | 725b3862ca1c6b0a960cf48a9e310eb11c0a087d (diff) |
contrib/lar:
- add lua binding for lar library
- introduce mmap() support for lua
Diffstat (limited to 'contrib/lar/lar.h')
-rw-r--r-- | contrib/lar/lar.h | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/contrib/lar/lar.h b/contrib/lar/lar.h index 04245ce632..fcbd94d103 100644 --- a/contrib/lar/lar.h +++ b/contrib/lar/lar.h @@ -1,3 +1,22 @@ +/* + * lar - Lua Archive Library + * + * Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #ifndef __LAR_H #define __LAR_H @@ -13,6 +32,7 @@ #include <sys/mman.h> #include <sys/stat.h> +#include "md5.h" #define LAR_DIE(s) \ do { \ @@ -27,6 +47,9 @@ #define LAR_FNAME_BUFFER 1024 #define LAR_FNAME(s) char s[LAR_FNAME_BUFFER] +#define LAR_TYPE_REGULAR 0x0000 +#define LAR_TYPE_FILELIST 0xFFFF + #ifdef __WIN32__ #define LAR_DIRSEP '\\' #else @@ -35,12 +58,12 @@ struct lar_index_item { - uint32_t noffset; - uint32_t nlength; - uint32_t foffset; - uint32_t flength; + uint32_t offset; + uint32_t length; uint16_t type; uint16_t flags; + char id[16]; + char *filename; struct lar_index_item *next; }; @@ -55,6 +78,7 @@ struct lar_member_item { struct lar_archive_handle { int fd; + int has_filenames; off_t length; char filename[LAR_FNAME_BUFFER]; struct lar_index_item *index; @@ -64,14 +88,16 @@ typedef struct lar_index_item lar_index; typedef struct lar_member_item lar_member; typedef struct lar_archive_handle lar_archive; - -int lar_read32( int fd, uint32_t *val ); -int lar_read16( int fd, uint16_t *val ); +/* +static int lar_read_filenames( lar_archive *ar ); +static int lar_read32( int fd, uint32_t *val ); +static int lar_read16( int fd, uint16_t *val ); +static void lar_md5( char *md5, const char *data, int len ); +*/ lar_index * lar_get_index( lar_archive *ar ); -uint32_t lar_get_filename( lar_archive *ar, - lar_index *idx_ptr, char *filename ); +lar_member * lar_mmap_member( lar_archive *ar, lar_index *idx_ptr ); lar_member * lar_open_member( lar_archive *ar, const char *name ); @@ -81,7 +107,7 @@ lar_archive * lar_open( const char *filename ); int lar_close( lar_archive *ar ); -lar_archive * lar_find_archive( const char *package, const char *path ); +lar_archive * lar_find_archive( const char *package, const char *path, int pkg); lar_member * lar_find_member( lar_archive *ar, const char *package ); |