squashfs-tools-ng icon indicating copy to clipboard operation
squashfs-tools-ng copied to clipboard

Document how to use the library

Open probonopd opened this issue 1 year ago • 2 comments

I am trying to write extract_diricon.c that does the following:

  • Extracts the file .DirIcon from a zstd compressed squashfs file (resolving symlinks inside the squashfs file)
  • The squashfs file starts at an offset of bytes, specified with -o

Example: ./extract_diricon -o 12345 my.squashfs should extract the file .DirIcon.

I figure I need to compile with gcc -o extract_diricon extract_diricon.c -I/usr/include/sqfs -L/usr/lib/x86_64-linux-gnu -lsquashfs. But how would I have to code the above?

Thank you very much for your help.

(Use case: AppImage files contain a squashfs image that contains an icon, and I want to write a tiny helper to extract this icon, so that file managers can natively show the correct icons for AppImages.)

probonopd avatar Aug 13 '24 15:08 probonopd

Hi @probonopd ,

in the extras directory, there some are example programs. Specifically extract_one.c does recursive path resolution and unpacks a single file from an image.

As for the offset, currently you'd have to create a wrapper object around sqfs_file_t that applies it.

A "compiled" version of the Doxygen reference manual is currently hosted here: https://infraroot.at/projects/squashfs-tools-ng/doxydoc/index.html

I hope this helps.

AgentD avatar Aug 19 '24 12:08 AgentD

Thanks for your hint @AgentD. Unfortunately I could not make the offset work yet.

In particular, the sqfs_file_t structure does not have a fd member that can be directly accessed (for seeking).

In case you could show me how to do this properly, I'd be super happy. Thank you very much!

probonopd avatar Aug 25 '24 10:08 probonopd