mirror of
https://github.com/fail0verflow/switch-coreboot.git
synced 2025-05-04 01:39:18 -04:00
file struct for pathname and compression, so that directories can be correctly recursed. file-by-file: util/lar/lar.c: make error messages more verbose pass a pointer to the file structure instead of the name parse the name here with lar_process_name util/lar/lib.c: change handle_directory to use a path name and respect nocompress change add_files to use pre-processed names use sensible defaults for new file members when listing or extracting free pathname if allocated util/lar/lib.h: add new members to struct file change prototypes of add_files and lar_add_file util/lar/stream.c: change lar_add_file to use pathname and compression from struct file Signed-off-by: Myles Watson <mylesgw@gmail.com> Acked-by: Peter Stuge <peter@stuge.se> git-svn-id: svn://coreboot.org/repository/coreboot-v3@623 f3766cd6-281f-0410-b1cd-43a5c92072e9
96 lines
2.9 KiB
C
96 lines
2.9 KiB
C
/*
|
|
* lar - lightweight archiver
|
|
*
|
|
* Copyright (C) 2006-2007 coresystems GmbH
|
|
* (Written by Stefan Reinauer <stepan@coresystems.de> for coresystems GmbH)
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef __LAR_LIB_H
|
|
#define __LAR_LIB_H
|
|
|
|
/* data types */
|
|
|
|
struct file {
|
|
char *name;
|
|
char *pathname;
|
|
enum compalgo algo;
|
|
struct file *next;
|
|
};
|
|
|
|
enum {
|
|
NONE,
|
|
ADD,
|
|
CREATE,
|
|
LIST,
|
|
EXTRACT,
|
|
ZEROFILL,
|
|
} larmodes;
|
|
|
|
/* prototypes for lar.c functions */
|
|
int verbose(void);
|
|
int elfparse(void);
|
|
long get_larsize(void);
|
|
char *get_bootblock(void);
|
|
|
|
/* prototypes for lib.c functions */
|
|
int mkdirp_below(const char *parent, const char *dirpath, mode_t mode);
|
|
|
|
int add_files(const char *name, const char *pathname_in,
|
|
const enum compalgo algo_in);
|
|
int add_file_or_directory(const char *name);
|
|
|
|
struct file *get_files(void);
|
|
void free_files(void);
|
|
|
|
/* Prototypes for ELF functions */
|
|
int iself(char *filebuf);
|
|
|
|
/* Prototypes for in-memory LAR operations */
|
|
int lar_process_name(char *name, char **pfilename, char **ppathname,
|
|
enum compalgo *thisalgo);
|
|
int lar_compress(char *ptr, int size, char *temp, enum compalgo *thisalgo);
|
|
int hlen(char *name);
|
|
int maxsize(struct lar *lar, char *name);
|
|
int lar_add_entry(struct lar *lar, char *pathname, void *data,
|
|
u32 complen, u32 reallen, u32 loadaddress, u32 entry,
|
|
enum compalgo thisalgo);
|
|
/* Prototypes for the LAR I/O functions */
|
|
char *mapfile(char *filename, u32 *size);
|
|
struct lar * lar_new_archive(const char *archive, unsigned int size);
|
|
struct lar * lar_open_archive(const char *archive);
|
|
void lar_close_archive(struct lar *lar);
|
|
|
|
void lar_list_files(struct lar *lar, struct file *files);
|
|
int lar_add_file(struct lar *lar, struct file* file);
|
|
int lar_add_bootblock(struct lar *lar, const char *bootblock);
|
|
int lar_extract_files(struct lar *lar, struct file *files);
|
|
|
|
/* prototypes for extract.c functions */
|
|
int extract_lar(const char *archivename, struct file *files);
|
|
|
|
/* prototypes for list.c functions */
|
|
int list_lar(const char *archivename, struct file *files);
|
|
|
|
/* prototypes for create.c functions */
|
|
int create_lar(const char *archivename, struct file *files);
|
|
|
|
/* prototypes for bootblock.c functions */
|
|
extern char *bootblock_code;
|
|
extern int bootblock_len;
|
|
|
|
int load_bootblock(const char *bootblock);
|
|
int fixup_bootblock(void);
|
|
#endif
|