Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

32/64 bit support in Exiv2 #1538

Open
clanmills opened this issue Apr 9, 2021 · 1 comment
Open

32/64 bit support in Exiv2 #1538

clanmills opened this issue Apr 9, 2021 · 1 comment

Comments

@clanmills
Copy link
Collaborator

We announced in v0.27 (and the the five dots), that the API for v0.28 (now to be called v1.00) will change. There's a mix of size_t, uint32_t, long, int, uint64_t in the API. Now is the time to fix that.

I suspect the correct way forward is to use uint64_t everywhere.

We don't have to worry much about performance because Exiv2 is very fast. We can open and read the metadata from about 100+ files/second on my 6 year old MacMini.

There are two major interfaces "stripped out" and fixed. DataBuf and BasicIo. Then we examine all the code in the code using these interfaces. We also have an opportunity to modify these APIs and simply the code. For example, we could always "zero" the DataBuf in the constructor. We could throw in read() when there is insufficient data available.

The code in tvisitor for Io and DataBuf is similar to Exiv2. However, I made several very simple additions such as sub-files and class IoSave. The default for Io::seek() in the book is SEEK_CUR. Simple/trivial changes can make the code look much smoother.

@1div0
Copy link
Collaborator

1div0 commented Apr 14, 2021

I guess in 2021 and beyond main focus should be on 64-bit CPU architectures.

PS: Just installed FreeBSD 13.0 AArch64 on RPi3B and testing GitLab Runner for CI/CD. So far so good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants