mirror of https://github.com/jeelabs/esp-link.git
commit
ecafbf7485
@ -1,13 +0,0 @@ |
||||
CFLAGS=-I../../lib/heatshrink -I.. -std=gnu99 -DESPFS_HEATSHRINK
|
||||
|
||||
espfstest: main.o espfs.o heatshrink_decoder.o |
||||
$(CC) -o $@ $^
|
||||
|
||||
espfs.o: ../espfs.c |
||||
$(CC) $(CFLAGS) -c $^ -o $@
|
||||
|
||||
heatshrink_decoder.o: ../heatshrink_decoder.c |
||||
$(CC) $(CFLAGS) -c $^ -o $@
|
||||
|
||||
clean: |
||||
rm -f *.o espfstest
|
@ -1,67 +0,0 @@ |
||||
/*
|
||||
Simple and stupid file decompressor for an espfs image. Mostly used as a testbed for espfs.c and
|
||||
the decompressors: code compiled natively is way easier to debug using gdb et all :) |
||||
*/ |
||||
#include <stdio.h> |
||||
#include <stdint.h> |
||||
#include <sys/mman.h> |
||||
#include <sys/types.h> |
||||
#include <sys/stat.h> |
||||
#include <fcntl.h> |
||||
#include <stdlib.h> |
||||
#include <unistd.h> |
||||
|
||||
|
||||
#include "espfs.h" |
||||
|
||||
char *espFsData; |
||||
|
||||
int main(int argc, char **argv) { |
||||
int f, out; |
||||
int len; |
||||
char buff[128]; |
||||
EspFsFile *ef; |
||||
off_t size; |
||||
EspFsInitResult ir; |
||||
|
||||
if (argc!=3) { |
||||
printf("Usage: %s espfs-image file\nExpands file from the espfs-image archive.\n", argv[0]); |
||||
exit(0); |
||||
} |
||||
|
||||
f=open(argv[1], O_RDONLY); |
||||
if (f<=0) { |
||||
perror(argv[1]); |
||||
exit(1); |
||||
} |
||||
size=lseek(f, 0, SEEK_END); |
||||
espFsData=mmap(NULL, size, PROT_READ, MAP_SHARED, f, 0); |
||||
if (espFsData==MAP_FAILED) { |
||||
perror("mmap"); |
||||
exit(1); |
||||
} |
||||
|
||||
ir=espFsInit(espFsData); |
||||
if (ir != ESPFS_INIT_RESULT_OK) { |
||||
printf("Couldn't init espfs filesystem (code %d)\n", ir); |
||||
exit(1); |
||||
} |
||||
|
||||
ef=espFsOpen(argv[2]); |
||||
if (ef==NULL) { |
||||
printf("Couldn't find %s in image.\n", argv[2]); |
||||
exit(1); |
||||
} |
||||
|
||||
out=open(argv[2], O_WRONLY|O_CREAT|O_TRUNC, 0644); |
||||
if (out<=0) { |
||||
perror(argv[2]); |
||||
exit(1); |
||||
} |
||||
|
||||
while ((len=espFsRead(ef, buff, 128))!=0) { |
||||
write(out, buff, len); |
||||
} |
||||
espFsClose(ef); |
||||
//munmap, close, ... I can't be bothered.
|
||||
} |
Loading…
Reference in new issue