Enhancing FreeBSD's Libarchive
Contents
About
Libarchive is an archive library for FreeBSD developed by TimKientzle. This project's goal is to enhance it as far as possible. The original project description can be found on the FreeBSD page at Google Summer of Code 2008.
People
Mentor: TimKientzle
Student: AnselmStrauss
Status
September 8
It truly has been a long time I last made updates here ... GSOC finished, despite I reached only a few of my original goals. Well, work will continue, not under Google's lead, and on a free time basis. Most likely, this site won't be updated anymore. Check the source repositories for updates.
July 31
Did some more features on the ZIP writer and testing. Consequently I also had to fix some bugs ... Now turning on the compression support and support for non-regular file entries. Also must keep an eye on the next goal, most likely the PAX frontend.
July 18
Implemented a basic ZIP writer without compression support and CRC computation. Now I must definitely go for some testing ... Last week on Thursday 11th, there was also a meetup at Google Zurich. It was good to see some real faces behind the project, there were also some nice presentations and discussions. What a pity Google didn't let us have a look at their server room ...
July 7
Working on the ZIP writer and dealing with:
- Collecting central directory structure over multiple entries, holding it in memory and appending it at the end of the archive.
- Computing CRC sums over data streams.
- Using file data descriptors (appended to file data) instead of the fields in the file header.
Tired for now, tomorrow is another day ...
June 30
I set up:
- Eclipse + CDT to work with Libarchive
- More P4 things
I bought a PDF of "C in a Nutshell" to refresh my C programming skills and have a good reference. Also I made some exercises with GNU Autotools to understand it better. Also I had a lot to do with my master thesis, so I spend a lot of time there ...
June 05
This week coding also started for me
May 25
Finally found some time again to work on my project. I setup the wiki pages, so now I'm almost ready to go. Our studies will finish May 30, one week after the official coding phase start.
Roadmap
Week/Date |
Google Phase |
My Phase |
1 (26.05.) |
Coding I |
P4 setup |
2 |
Coding I |
Eclipse + Autotools |
3 |
Coding I |
Eclipse + Autotools, Reading code |
4 |
Coding I |
Reading code |
5 |
Coding I |
Blackout (master thesis ... ) |
6 |
Coding I |
Coding ZIP writer |
7 (07.07.) |
Midterm Evaluation |
Coding ZIP writer |
8 |
Coding II |
Testing ZIP writer |
9 |
Coding II |
ZIP writer basic features |
10 |
Coding II |
ZIP writer basic features |
11 |
Coding II |
ZIP writer compression |
12 |
Coding II |
Coding |
13 (18.08.) |
Final Evaluation |
Coding, evaluation stuff |
14 |
Final Evaluation |
Coding |
15 (01.09.) |
Code Submission |
Submitting code |
Goals
ZIP writer
ZIP reader is already there and the ZIP writer can lean it's code on the existing CPIO writer.
Official .ZIP File Format Specification is available from PKWARE. The Info-ZIP software specifies some of the extensions mentioned by PKWARE.
ZIP features that are won't be covered by this project:
- Header compression
- Encryption
- Multi-part archives
Task |
Status |
Simple writer without any features |
DONE |
Compression support |
OPEN |
Central directory |
DONE |
Tests |
PARTIAL |
ZIP64 support |
OPEN |
Correct CRCs |
DONE |
Folder entry support |
DONE |
Unix to DOS time conversion |
DONE |
Storing permissions |
DONE |
PAX frontend
The Open Group Base Specifications Issue 6
ISO writer
Not started yet.
Sophisticated testing
Not started yet.
Todo
Handle paper work with Google
Learn about P4 and setup repository
Setup initial wiki pages
Check in README and TODO file
Write intro mail to FreeBSD hackers
Decide where/how to post news
Look at bug 117909 Tim mentioned
Define more detailed goals
Add a source section
Change news into status section
Add a roadmap
Source Code
FreeBSD CVS - Main source tree (FreeBSD specific)
P4 portable version - Portable version by Tim
P4 project version - Actual project source code, branched from portable version
Resources
Coding
GNU automake (archive.org) and autoconf documentation
Good explanation of endianness by IBM
SOC 2008
FreeBSD
P4Web - Project source code