* spelling: accelerometer

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: address

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: anonymous

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: available

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: baby

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: buffer

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: build

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: builds

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: by inclusion

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: byte order

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: camera

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: command

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: consistency

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: constructor

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: continuous

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: continuously

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: correspond

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: decompression

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dedicated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: denominator

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dependencies

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: detector

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dlighting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dragging

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: duplicate

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dynamic

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: empty

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: enable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: endianness

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: examining

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: exceed

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: extension

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: fact

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: fails

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: fixed

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: fluorescent

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: focuspoint

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: focuspoints

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: from

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: happened

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: hierarchy

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: initiate

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: interesting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: internal

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: javascript

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: language

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: libiconv

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: libraries

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: library

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: localization

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: macros

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: member

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: members

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: metadata

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: miscellaneous

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: mnemonic

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: modified

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: multiple

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: multithreaded

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: mysterious

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: photoshop

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: platforms

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: preliminary

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: priority

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: properties

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: qualifier

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: recognition

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: recognized

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: reentrancy

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: remaining

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: remotetest

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: requested

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: sensitivity

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: standardize

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: successful

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: such

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: tags

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: temperature

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: test

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: the

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: these

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: third

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: this

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: transparent

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: underwater

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: uninterpreted

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: using

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: utc - coordinated universal time

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: which

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: with

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
main
Josh Soref 3 years ago committed by GitHub
parent 5e9e31f1a8
commit e56abfa10a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -18,7 +18,7 @@ Coding Guidelines
- All new code that is added must be resistant to integer overflows, thus if you multiply, add, subtract, divide or bitshift integers you must ensure that no overflow can occur. Please keep in mind that signed integer overflow is undefined behavior, thus you must check for overflows before performing the arithmetic operation, otherwise the compiler is free to optimize your check after the overflow away (this has happened already).
- All new code must be resistant to buffer overflows. Thus before you access arrays a range check must be performed.
- Distrust any data that you extract from images or from external sources. E.g. if the metadata of an image gives you an offset of another information inside that file, do not assume that this offset will not result in an out off bounds read.
- New code must not assume the endianes and the word size of the system it is being run on. I.e. don't assume that `sizeof(int) = 8` or that the following will work:
- New code must not assume the endianness and the word size of the system it is being run on. I.e. don't assume that `sizeof(int) = 8` or that the following will work:
```cpp
const uint32_t some_var = get_var();
const uint16_t lower_2_bytes = (const uint16_t*) &some_var;

@ -64,7 +64,7 @@ Once you have a GitHub login:
$ git fetch exiv2_upstream master
$ git checkout -b my-new-feature exiv2_upstream/master --no-track
NB: This is an important step to avoid draging in old commits!
NB: This is an important step to avoid dragging in old commits!
5. Configure the project and check that it builds (if not, please report a bug):

@ -16,7 +16,7 @@ A commit message can look like this:
- Specify concrete ubuntu and mac versions
- Use latest conan version
- Fix the profiles for linux and mac
- Use new version of expat (avilable in conan-center)
- Use new version of expat (available in conan-center)
- Install urllib3 as suggested in python guidelines
- Use virtualenv with python3
```

@ -21,7 +21,7 @@ The following programs are build and installed in /usr/local/bin.
| _**addmoddel**_ | Demonstrates Exiv2 library APIs to add, modify or delete metadata | [addmoddel](#addmoddel) | [addmoddel.cpp](samples/addmoddel.cpp) |
| _**exifcomment**_ | Set Exif.Photo.UserComment in an image | [exifcomment](#exifcomment) | [exifcomment.cpp](samples/exifcomment.cpp) |
| _**exifdata**_ | Prints _**Exif**_ metadata in different formats in an image | [exifdata](#exifdata) | [exifdata.cpp](samples/exifdata.cpp) |
| _**exifprint**_ | Print _**Exif**_ metadata in images<br>Miscelleous other features | [exifprint](#exifprint)| [exifprint.cpp](samples/exifprint.cpp) |
| _**exifprint**_ | Print _**Exif**_ metadata in images<br>Miscellaneous other features | [exifprint](#exifprint)| [exifprint.cpp](samples/exifprint.cpp) |
| _**exifvalue**_ | Prints the value of a single _**Exif**_ tag in a file | [exifvalue](#exifvalue) | [exifvalue.cpp](samples/exifvalue.cpp) |
| _**exiv2**_ | Utility to read and write image metadata, including Exif, IPTC, XMP, image comments, ICC Profile, thumbnails, image previews and many vendor makernote tags.<br>This is the primary test tool used by Team Exiv2 and can exercise almost all code in the library. Due to the extensive capability of this utility, the APIs used are usually less obvious for casual code inspection. | [exiv2 manpage](exiv2.md)<br>[https://exiv2.org/sample.html](https://exiv2.org/sample.html) | |
| _**exiv2json**_ | Extracts data from image in JSON format.<br>This program also contains a parser to recursively parse Xmp metadata into vectors and objects. | [exiv2json](#exiv2json) | [exiv2json.cpp](samples/exiv2json.cpp) |
@ -162,7 +162,7 @@ Option: all | exif | iptc | xmp | filesystem
This program dumps metadata from an image in JSON format. _Code: [exiv2json.cpp](samples/exiv2json.cpp)_
exiv2json has a recursive parser to encode XMP into Vectors and Objects. XMP data is XMP and can contain XMP `Bag` and `Seq` which are converted to JSON Objects and Arrays. Exiv2 presents data in the format: [Family.Group.Tagname](exiv2.md#exiv2_key_syntax). For XMP, results in "flat" output such such as:
exiv2json has a recursive parser to encode XMP into Vectors and Objects. XMP data is XMP and can contain XMP `Bag` and `Seq` which are converted to JSON Objects and Arrays. Exiv2 presents data in the format: [Family.Group.Tagname](exiv2.md#exiv2_key_syntax). For XMP, results in "flat" output such as:
```
$ curl --silent -O https://clanmills.com/Stonehenge.jpg
@ -211,7 +211,7 @@ $
Usage: geotag {-help|-version|-dst|-dryrun|-ascii|-verbose|-adjust value|-tz value|-delta value}+ path+
```
Geotag reads one or more GPX files and adds GPS Tages to images. _Code: [geotag.cpp](samples/geotag.cpp)_
Geotag reads one or more GPX files and adds GPS Tags to images. _Code: [geotag.cpp](samples/geotag.cpp)_
If the path is a directory, geotag will read all the files in the directory. It constructs a time dictionary of position data, then updates every image with GPS Tags.
@ -478,7 +478,7 @@ Test access to preview images
#### remotetest
```
Usage: remotetest remotetest file {--nocurl | --curl}
Usage: remotetest file {--nocurl | --curl}
```
Tester application for testing remote i/o.

@ -6,7 +6,7 @@
| **CI Status:** | | |
|:-- |:-- |:-- |
| [![Basic CI for all platforms on push](https://github.com/Exiv2/exiv2/actions/workflows/on_push_BasicWinLinMac.yml/badge.svg?branch=main)](https://github.com/Exiv2/exiv2/actions/workflows/on_push_BasicWinLinMac.yml) | [![CI for different Linux distributions](https://github.com/Exiv2/exiv2/actions/workflows/nightly_Linux_distributions.yml/badge.svg?branch=main)](https://github.com/Exiv2/exiv2/actions/workflows/nightly_Linux_distributions.yml) | [![Linux Special Builds on PRs](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_linux_special_buils.yml/badge.svg)](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_linux_special_buils.yml) |
| [![Basic CI for all platforms on push](https://github.com/Exiv2/exiv2/actions/workflows/on_push_BasicWinLinMac.yml/badge.svg?branch=main)](https://github.com/Exiv2/exiv2/actions/workflows/on_push_BasicWinLinMac.yml) | [![CI for different Linux distributions](https://github.com/Exiv2/exiv2/actions/workflows/nightly_Linux_distributions.yml/badge.svg?branch=main)](https://github.com/Exiv2/exiv2/actions/workflows/nightly_Linux_distributions.yml) | [![Linux Special Builds on PRs](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_linux_special_builds.yml/badge.svg)](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_linux_special_builds.yml) |
| [![Linux-Ubuntu Matrix on PRs](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_linux_matrix.yml/badge.svg)](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_linux_matrix.yml) | [![Mac Matrix on PRs](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_mac_matrix.yml/badge.svg)](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_mac_matrix.yml) | [![Win Matrix on PRs](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_windows_matrix.yml/badge.svg)](https://github.com/Exiv2/exiv2/actions/workflows/on_PR_windows_matrix.yml) |
<div id="1">
@ -197,7 +197,7 @@ CMake will detect libiconv of all UNIX like systems including Linux, macOS, UNIX
The library libiconv is a GNU library and we do not recommend using libiconv with Exiv2 when building with Visual Studio.
Exiv2 includes the file cmake/FindIconv.cmake which contains a guard to prevent CMake from finding libiconv when you build with Visual Studio. This was added because of issues reported when Visual Studio attempted to link libconv libraries installed by Cygwin, or MinGW or gnuwin32. [https://github.com/Exiv2/exiv2/issues/1250](https://github.com/Exiv2/exiv2/issues/1250)
Exiv2 includes the file cmake/FindIconv.cmake which contains a guard to prevent CMake from finding libiconv when you build with Visual Studio. This was added because of issues reported when Visual Studio attempted to link libiconv libraries installed by Cygwin, or MinGW or gnuwin32. [https://github.com/Exiv2/exiv2/issues/1250](https://github.com/Exiv2/exiv2/issues/1250)
There are build instructions about Visual Studio in libiconv-1.16/INSTALL.window require you to install Cygwin. There is an article here about building libiconv with Visual Studio. [https://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio](https://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio).
@ -654,7 +654,7 @@ You can cross compile Exiv2 on Linux for MinGW. We have used the following meth
$ sudo dnf install mingw64-gcc-c++ mingw64-filesystem mingw64-expat mingw64-zlib cmake make
```
#### 2 Install Dependancies
#### 2 Install Dependencies
You will need to install x86_64 libraries to support the options you wish to use. By default, you will need libz and expat. Your `dnf` command above has installed them for you. If you wish to use features such as `webready` you should install openssl and libcurl as follows:
@ -807,7 +807,7 @@ Access to the bmff code is guarded in two ways. Firstly, you have to build the
EXIV2API bool enableBMFF(bool enable);
```
The return value from `enableBMFF()` is true if the library has been build with bmff support (cmake option -DEXIV2_ANABLE_BMFF=On).
The return value from `enableBMFF()` is true if the library has been build with bmff support (cmake option -DEXIV2_ENABLE_BMFF=On).
Applications may wish to provide a preference setting to enable bmff support and thereby place the responsibility for the use of this code with the user of the application.

@ -38,7 +38,7 @@ Team Exiv2 does not back-port security (or any other fix) to earlier releases of
The version numbering scheme is explained below. The design includes provision for a security release. A _**Dot Release**_ is an updated version of the library with security PRs and other changes. A _**Dot Release**_ offers the same API as its parent. A _**Security Release**_ is an existing release PLUS one or more security PRs. Nothing else is changed from it parent.
Users can register on GitHub.com to receive release notices for RC and GM Releases. Additionally, we inform users when we begin a project to create a new release on FaceBook (https://facebook.com/exiv2) and Discuss Pixls (https://discuss.pixls.us). The announcement of a new release project has a preliminay specification and schedule.
Users can register on GitHub.com to receive release notices for RC and GM Releases. Additionally, we inform users when we begin a project to create a new release on FaceBook (https://facebook.com/exiv2) and Discuss Pixls (https://discuss.pixls.us). The announcement of a new release project has a preliminary specification and schedule.
## Version Numbering Scheme

@ -268,7 +268,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
# Fortran. In the later case the parser tries to guess whether the code is fixed
@ -675,7 +675,7 @@ SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command command input-file, where command is the value of the
# popen()) the command input-file, where command is the value of the
# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
@ -1474,7 +1474,7 @@ EXT_LINKS_IN_WINDOW = NO
FORMULA_FONTSIZE = 10
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
# supported properly for IE 6.0, but are supported on all modern browsers.
#
@ -1486,7 +1486,7 @@ FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# http://www.mathjax.org) which uses client side Javascript for the rendering
# http://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
@ -1556,7 +1556,7 @@ MATHJAX_CODEFILE =
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using Javascript. There
# implemented using a web server instead of a web client using JavaScript. There
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
# setting. When disabled, doxygen will generate a PHP script for searching and
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing

@ -1,5 +1,5 @@
# This module provides function for joining paths
# known from from most languages
# known from most languages
#
# Original license:
# SPDX-License-Identifier: (MIT OR CC0-1.0)

@ -131,7 +131,7 @@ foreach(doc ${DOCS})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${doc} DESTINATION .)
endforeach()
# copy build/log which which is present if built by build.sh
# copy build/log which is present if built by build.sh
if(EXISTS ${PROJECT_SOURCE_DIR}/build/logs/build.txt)
install(FILES ${PROJECT_SOURCE_DIR}/build/logs/build.txt DESTINATION "logs")
endif()

@ -7,7 +7,7 @@
#
# Before to run this script you must set these shell variable :
# $EXIVCoverityToken with token of Exiv2 project given by Coverity SCAN
# $EXIVCoverityEmail with email adress to send SCAN result.
# $EXIVCoverityEmail with email address to send SCAN result.
#
# Coverity Scan bin dir must be appended to PATH variable.
#

@ -61,7 +61,7 @@ E:\Projects\libexpat. The exiv2 solution will have the exiv2 project
exposition) and the expat-static project (from libexpat). The
expat-static project is added as a reference to the exiv2
project. This make Visual Studio generate the correct dependency
heirarchy and compile correctly.
hierarchy and compile correctly.
# Folder Structure #

@ -323,7 +323,7 @@ Build: (11)
0001329 Error during cmake with gcc version parsing
0001310 Provide support for msys/2.0
0001299 exiv2-0.26-trunk.tar.gz changed on download server
0001270 Using libexiv2.a/.lib in multhreaded app segfaults.
0001270 Using libexiv2.a/.lib in multithreaded app segfaults.
0001237 Report CMake/MinGW issues to Kitware
0001188 Provide build support for C++11
0001174 Visual Studio Support Enhancements
@ -643,9 +643,9 @@ Changes from version 0.25 to 0.26
- 0001145: Respect Sony/Minolta lenses with shared LensID such as Tamron SP AF 17-50mm F2.8 XR Di II LD
- 0001144: Sigma 10-20mm f/4-5.6 EX DC is detected as Tamaron
(Simon Harhues)
- 0001142: Manual lens does not get recogniced: Beroflex zoom 500mm
- 0001142: Manual lens does not get recognized: Beroflex zoom 500mm
(Simon Harhues / Niels Kristian Bech Jensen)
- 0001141: Manual lens does not get recogniced: Pentax macro 100mm
- 0001141: Manual lens does not get recognized: Pentax macro 100mm
(Simon Harhues / Niels Kristian Bech Jensen)
- 0001118: Add support for ZEISS Loxia 2/50 lens
(Eugen Neu)
@ -689,7 +689,7 @@ Changes from version 0.25 to 0.26
- 0000922: Add options -pS and -dI to application exiv2
- 0000855: Segfault when accessing focalLength with 0.23
(Tobias E.)
- 0000756: Access to ICC Profile (TAG: 0x8773) data in Exif as uninterpretted binary
- 0000756: Access to ICC Profile (TAG: 0x8773) data in Exif as uninterpreted binary
(Ray NA)
- 0000676: Patch for reading ICC color profiles
(Andreas Huggel)
@ -783,7 +783,7 @@ Changes from version 0.25 to 0.26
* Testing: (6)
- 0001230: Bug Hunt for v0.26
- 0001207: digiKam maintenance tool to synchronize files metadata and database crash in Exiv2 (re-entrancy issue ?)
- 0001207: digiKam maintenance tool to synchronize files metadata and database crash in Exiv2 (reentrancy issue ?)
(Uwe Haider)
- 0001057: Implement target/modifier - (stdin/stdout) for exiv2 options -i (insert) and -e (extract)
- 0001045: Add COPYRIGHT file to test/data/
@ -1192,7 +1192,7 @@ Changes from version 0.23 to 0.24
(Reported by S. Verdoold, patch by Pascal de Bruijn)
- 0000861: Sigma 18-250mm not properly recognised on Pentax
(Reported by S. Verdoold, patch by Pascal de Bruijn)
- 0000862: Video code is failing the test suite (on all plaforms)
- 0000862: Video code is failing the test suite (on all platforms)
(Robin Mills, Abhinav Badola)
- 0000865: Patches for locale and boost issue (Patches by Mario anyc)
- 0000868: Support for two lens for sony mount
@ -1463,7 +1463,7 @@ Changes from version 0.20 to 0.21
(Patch by Matthias Baas)
- Added ExifKey::defaultCount() to access the new count reference
information.
- Fixed zlib uncompression of large PNG metadata buffers.
- Fixed zlib decompression of large PNG metadata buffers.
- Improved determination of MIME type.
- Updated Canon makernote. (Greg Mansfield, Axel Waggershauser)
- Updated Olympus makernote. (Greg Mansfield)
@ -1713,7 +1713,7 @@ Changes from version 0.18 to 0.18.1
support for multiple TIFF tree structures.
* MSVC related
- 0000621: windows librarys are forcing a link to
- 0000621: windows libraries are forcing a link to
..\..\..\zlib-1.2.3\projects\visual6\blah\blah.
(Reported by Peter J. Ersts, fix by Robin Mills)
@ -2051,7 +2051,7 @@ Changes from version 0.12 to 0.13
and insert actions.
* Exiv2 library
- 0000503: [metadata] Tiff generated by photoshop crashes exiv2
- 0000503: [metadata] Tiff generated by Photoshop crashes exiv2
(digikam bug 139658).
- 0000502: [iptc] New TIFF parser: Decode IPTC from Exif.Image.IPTCNAA.
(Reported by Walter Hangartner)
@ -2124,7 +2124,7 @@ Changes from version 0.11 to 0.12
- [exif] Updated Minolta makernote. (Gilles Caulier, Paul Tribick)
* MSVC related
- 0000487: Crash in exiv2.exe (built with VC++ 2005 Express) when examing TIFF
- 0000487: Crash in exiv2.exe (built with VC++ 2005 Express) when examining TIFF
images (Reported with patch by Dimitri Schoolwerth)

@ -70,7 +70,7 @@ set Xmp.xmpDM.videoFrameSize/stDim:unit inch
set Xmp.dc.publisher James Bond
set Xmp.dc.publisher[1]/?ns:role secret agent
# Add a qualifer to an array element of Xmp.dc.creator (added above)
# Add a qualifier to an array element of Xmp.dc.creator (added above)
set Xmp.dc.creator[2]/?ns:role programmer
# Add an array of structures. First set a text property with just the

@ -107,7 +107,7 @@ image are determined.
- Reading other TIFF-like RAW image formats, which are not listed in
the table, may also work.
- Some image formats allow an extra interal type of metadata. Only
- Some image formats allow an extra internal type of metadata. Only
partial support exists for the RAF format.
- Support for BMFF types such as AVIF, CR3, HEIF and HEIC is a build
@ -1008,8 +1008,8 @@ HH:MM:SScHH:MM
```
where HH:MM:SS refers to local time's hour, minutes and seconds and, HH:MM
refers to hours and minutes with c being ahead (+) or behind (-)
Universal Coordinated Time (UCT) as described in ISO 8601 (e.g.,
08:45:15+01:00 is 08:45:15, which is +1 hour different from UCT).
Coordinated Universal Time (UTC) as described in ISO 8601 (e.g.,
08:45:15+01:00 is 08:45:15, which is +1 hour different from UTC).
<div id="date_time_makernotes">
@ -1803,7 +1803,7 @@ tags. See [fixiso](#fi_fixiso).
<div id="return_value">
# 14 RETURN VALUE
`0` if successfull, otherwise a positive integer as error code.
`0` if successful, otherwise a positive integer as error code.
[TOC](#TOC)
@ -1815,7 +1815,7 @@ tags. See [fixiso](#fi_fixiso).
### TZ
This is the timezone to use when adjusting for daylight savings time (DST) and
affects the changing of the the time and date (e.g., when adjusting or
affects the changing of the time and date (e.g., when adjusting or
renaming). See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
for a list of valid values to use. The variable is not set by default for
Windows and an attempt is made to obtain the timezone from the OS. If this

@ -310,7 +310,7 @@ namespace Exiv2 {
/*!
@brief Constructor that accepts the file path on which IO will be
performed. The constructor does not open the file, and
therefore never failes.
therefore never fails.
@param path The full path of a file
*/
explicit FileIo(const std::string& path);
@ -329,7 +329,7 @@ namespace Exiv2 {
//! @name Manipulators
//@{
/*!
@brief Open the file using using the specified mode.
@brief Open the file using the specified mode.
This method can also be used to "reopen" a file which will flush any
unwritten data and reset the IO position to the start. Although
@ -343,7 +343,7 @@ namespace Exiv2 {
*/
int open(const std::string& mode);
/*!
@brief Open the file using using the default access mode of "rb".
@brief Open the file using the default access mode of "rb".
This method can also be used to "reopen" a file which will flush
any unwritten data and reset the IO position to the start.
@return 0 if successful;<BR>
@ -884,7 +884,7 @@ namespace Exiv2 {
*/
DataBuf read(long rcount) override;
/*!
@brief Read data from the the memory blocks. Reading starts at the current
@brief Read data from the memory blocks. Reading starts at the current
IO position and the position is advanced by the number of
bytes read.
If the memory blocks are not populated (!= bMemory), it will connect to server
@ -994,7 +994,7 @@ namespace Exiv2 {
/*!
@brief Constructor that accepts the http URL on which IO will be
performed. The constructor does not open the file, and
therefore never failes.
therefore never fails.
@param url The full path of url
@param blockSize the size of the memory block. The file content is
divided into the memory blocks. These blocks are populated

@ -36,7 +36,7 @@ typedef int pid_t;
#include "exv_conf.h"
////////////////////////////////////////
///// Start of platform marcos /////////
///// Start of platform macros /////////
#if defined(__MINGW32__) || defined(__MINGW64__)
# ifndef __MING__
# define __MING__ 1
@ -79,9 +79,9 @@ typedef int pid_t;
# include <fstream>
# endif
#endif
///// End of platform marcos /////////
///// End of platform macros /////////
///// Path separator marcos /////
///// Path separator macros /////
#ifndef EXV_SEPARATOR_STR
# if defined(WIN32) && !defined(__CYGWIN__)
# define EXV_SEPARATOR_STR "\\"

@ -187,11 +187,11 @@ namespace Exiv2 {
*/
static const char* dataSetDesc(uint16_t number, uint16_t recordId);
/*!
@brief Return the photohsop name of a given dataset.
@brief Return the Photoshop name of a given dataset.
@param number The dataset number
@param recordId The IPTC record Id
@return The name used by photoshop for a dataset or an empty
string if photoshop does not use the dataset.
@return The name used by Photoshop for a dataset or an empty
string if Photoshop does not use the dataset.
*/
static const char* dataSetPsName(uint16_t number, uint16_t recordId);
/*!

@ -156,7 +156,7 @@ namespace Exiv2
typedef typename storage_type<data_type>::value_type value_type;
/*!
* Default contructor, requires begin to be smaller than end,
* Default constructor, requires begin to be smaller than end,
* otherwise an exception is thrown. Also forwards all parameters to
* the constructor of storage_
*/

@ -137,7 +137,7 @@ namespace Exiv2 {
@param key The key string.
@throw Error if the first part of the key is not '<b>Exif</b>' or
the remainin parts of the key cannot be parsed and
the remaining parts of the key cannot be parsed and
converted to a group name and tag name.
*/
explicit ExifKey(const std::string& key);

@ -102,12 +102,12 @@ namespace Exiv2 {
asciiString = 2, //!< Exif ASCII type, 8-bit byte.
unsignedShort = 3, //!< Exif SHORT type, 16-bit (2-byte) unsigned integer.
unsignedLong = 4, //!< Exif LONG type, 32-bit (4-byte) unsigned integer.
unsignedRational = 5, //!< Exif RATIONAL type, two LONGs: numerator and denumerator of a fraction.
unsignedRational = 5, //!< Exif RATIONAL type, two LONGs: numerator and denominator of a fraction.
signedByte = 6, //!< Exif SBYTE type, an 8-bit signed (twos-complement) integer.
undefined = 7, //!< Exif UNDEFINED type, an 8-bit byte that may contain anything.
signedShort = 8, //!< Exif SSHORT type, a 16-bit (2-byte) signed (twos-complement) integer.
signedLong = 9, //!< Exif SLONG type, a 32-bit (4-byte) signed (twos-complement) integer.
signedRational =10, //!< Exif SRATIONAL type, two SLONGs: numerator and denumerator of a fraction.
signedRational =10, //!< Exif SRATIONAL type, two SLONGs: numerator and denominator of a fraction.
tiffFloat =11, //!< TIFF FLOAT type, single precision (4-byte) IEEE format.
tiffDouble =12, //!< TIFF DOUBLE type, double precision (8-byte) IEEE format.
tiffIfd =13, //!< TIFF IFD type, 32-bit (4-byte) unsigned integer.

@ -406,7 +406,7 @@ namespace Exiv2 {
/*!
@brief %Value for string type.
This can be a plain Ascii string or a multipe byte encoded string. It is
This can be a plain Ascii string or a multiple byte encoded string. It is
left to caller to decode and encode the string to and from readable
text if that is required.
*/
@ -472,7 +472,7 @@ namespace Exiv2 {
//@{
UniquePtr clone() const { return UniquePtr(clone_()); }
/*!
@brief Write the ASCII value up to the the first '\\0' character to an
@brief Write the ASCII value up to the first '\\0' character to an
output stream. Any further characters are ignored and not
written to the output stream.
*/
@ -488,7 +488,7 @@ namespace Exiv2 {
/*!
@brief %Value for an Exif comment.
This can be a plain Ascii string or a multipe byte encoded string. The
This can be a plain Ascii string or a multiple byte encoded string. The
comment is expected to be encoded in the character set indicated (default
undefined), but this is not checked. It is left to caller to decode and
encode the string to and from readable text if that is required.

@ -13401,7 +13401,7 @@ msgstr ""
#: src/properties.cpp:277
msgid ""
"References to resources that were incorporated, byinclusion or reference, "
"References to resources that were incorporated, by inclusion or reference, "
"into this resource."
msgstr ""

@ -25,10 +25,10 @@ Thank You to the following who have contributed to this release.
1) Bug and security fixes:
- bmff read-only support (.CR3, .HEIC, .HEIF, .AVIF and JXL/bmff).
- Security process is defined. https://github.com/Exiv2/exiv2/security/policy
- 3 benign ASAN issues. First CVE in 18 months. Patched in 2hrs, Fixed ixed in 24hrs.
- 3 benign ASAN issues. First CVE in 18 months. Patched in 2hrs, Fixed in 24hrs.
- DNG 1.6 and Exif 2.32 support.
- More easyaccess APIs and documentation.
- Localation support on Crowdin.
- Localization support on Crowdin.
- Updated Catalan localisation.
2) Changes to downloadable build bundles:
@ -248,7 +248,7 @@ Build: (11)
0001329 Error during cmake with gcc version parsing
0001310 Provide support for msys/2.0
0001299 exiv2-0.26-trunk.tar.gz changed on download server
0001270 Using libexiv2.a/.lib in multhreaded app segfaults.
0001270 Using libexiv2.a/.lib in multithreaded app segfaults.
0001237 Report CMake/MinGW issues to Kitware
0001188 Provide build support for C++11
0001174 Visual Studio Support Enhancements

@ -50,7 +50,7 @@ void httpcon(const std::string& url, bool useHttp1_0 = false) {
void curlcon(const std::string& url, bool useHttp1_0 = false) {
CURL* curl = curl_easy_init();
if(!curl) {
throw Exiv2::Error(Exiv2::kerErrorMessage, "Uable to init libcurl.");
throw Exiv2::Error(Exiv2::kerErrorMessage, "Unable to init libcurl.");
}
// get the timeout value
@ -73,7 +73,7 @@ void curlcon(const std::string& url, bool useHttp1_0 = false) {
/* Perform the request, res will get the return code */
CURLcode res = curl_easy_perform(curl);
if(res != CURLE_OK) { // error happends
if(res != CURLE_OK) { // error happened
throw Exiv2::Error(Exiv2::kerErrorMessage, curl_easy_strerror(res));
}

@ -164,7 +164,7 @@ bool isArray(std::string& value)
template <class T>
void push(Jzon::Node& node,const std::string& key,T i)
{
#define ABORT_IF_I_EMTPY \
#define ABORT_IF_I_EMPTY \
if (i->value().size() == 0) { \
return; \
}
@ -200,7 +200,7 @@ void push(Jzon::Node& node,const std::string& key,T i)
case Exiv2::unsignedRational:
case Exiv2::signedRational: {
ABORT_IF_I_EMTPY
ABORT_IF_I_EMPTY
Jzon::Array arr;
Exiv2::Rational rat = i->value().toRational();
arr.Add(rat.first );
@ -209,7 +209,7 @@ void push(Jzon::Node& node,const std::string& key,T i)
} break;
case Exiv2::langAlt: {
ABORT_IF_I_EMTPY
ABORT_IF_I_EMPTY
Jzon::Object l ;
const auto& langs = dynamic_cast<const Exiv2::LangAltValue&>(i->value());
for (auto&& lang : langs.value_) {

@ -310,7 +310,7 @@ struct UserData final
std::string exift;
time_t time{0};
Options& options_;
// static public data memembers
// static public data members
};
// XML Parser Callbacks

@ -60,7 +60,7 @@ class Params : public Util::Getopt {
public:
/*!
@brief Call Getopt::getopt() with optstring, to inititate command line
@brief Call Getopt::getopt() with optstring, to initiate command line
argument parsing, perform consistency checks after all command line
arguments are parsed.

@ -187,7 +187,7 @@ try {
xmpData["Xmp.dc.publisher"] = "James Bond"; // creates an unordered array
xmpData["Xmp.dc.publisher[1]/?ns:role"] = "secret agent";
// Add a qualifer to an array element of Xmp.dc.creator (added above)
// Add a qualifier to an array element of Xmp.dc.creator (added above)
tv.read("programmer");
xmpData.add(Exiv2::XmpKey("Xmp.dc.creator[2]/?ns:role"), &tv);

@ -186,7 +186,7 @@ elseif(EXIV2_ENABLE_EXTERNAL_XMP)
target_compile_definitions(exiv2lib PUBLIC EXV_ADOBE_XMPSDK=2016)
endif()
# Use include/exiv2 to build libary code
# Use include/exiv2 to build library code
target_include_directories(exiv2lib PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/exiv2>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>

@ -212,7 +212,7 @@ namespace Action {
}; // class Print
/*!
@brief %Rename a file to its metadate creation timestamp,
@brief %Rename a file to its metadata creation timestamp,
in the specified format.
*/
class Rename : public Task {

@ -2080,7 +2080,7 @@ namespace Exiv2 {
throw Error(kerErrorMessage, "Please set the path of the server script to handle http post data to EXIV2_HTTP_POST environmental variable.");
}
// standadize the path without "/" at the beginning.
// standardize the path without "/" at the beginning.
std::size_t protocolIndex = scriptPath.find("://");
if (protocolIndex == std::string::npos && scriptPath[0] != '/') {
scriptPath = "/" + scriptPath;
@ -2192,7 +2192,7 @@ namespace Exiv2 {
CurlIo::CurlImpl::CurlImpl(const std::string& url, size_t blockSize) : Impl(url, blockSize), curl_(curl_easy_init())
{
if(!curl_) {
throw Error(kerErrorMessage, "Uable to init libcurl.");
throw Error(kerErrorMessage, "Unable to init libcurl.");
}
// The default block size for FTP is much larger than other protocols
@ -2218,7 +2218,7 @@ namespace Exiv2 {
// init curl pointer
curl_ = curl_easy_init();
if(!curl_) {
throw Error(kerErrorMessage, "Uable to init libcurl.");
throw Error(kerErrorMessage, "Unable to init libcurl.");
}
// The default block size for FTP is much larger than other protocols
@ -2245,7 +2245,7 @@ namespace Exiv2 {
/* Perform the request, res will get the return code */
CURLcode res = curl_easy_perform(curl_);
if(res != CURLE_OK) { // error happends
if(res != CURLE_OK) { // error happened
throw Error(kerErrorMessage, curl_easy_strerror(res));
}
// get status

@ -67,7 +67,7 @@
#define TAG_iinf 0x69696e66 /**< "iinf" Item info */
#define TAG_iloc 0x696c6f63 /**< "iloc" Item location */
#define TAG_ispe 0x69737065 /**< "ispe" Image spatial extents */
#define TAG_infe 0x696e6665 /**< "infe" Item Info Extention */
#define TAG_infe 0x696e6665 /**< "infe" Item Info Extension */
#define TAG_ipma 0x69706d61 /**< "ipma" Item Property Association */
#define TAG_cmt1 0x434d5431 /**< "CMT1" ifd0Id */
#define TAG_cmt2 0x434D5432 /**< "CMD2" exifID */
@ -245,7 +245,7 @@ namespace Exiv2
out << std::endl;
}
// The enforce() above checks that restore + buffer_size won't
// exceed pbox_end, and by implication, won't excced LONG_MAX
// exceed pbox_end, and by implication, won't exceed LONG_MAX
return restore + buffer_size;
}

@ -740,8 +740,8 @@ namespace Exiv2 {
{0x000a, "WB_GRGBLevelsDaylight", N_("WB_G RGB Levels Daylight"), N_("WB_G RGB Levels Daylight"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x0012, "WB_GRGBLevelsCloudy", N_("WB_G RGB Levels Cloudy"), N_("WB_G RGB Levels Cloudy"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x001a, "WB_GRGBLevelsTungsten", N_("WB_G RGB Levels Tungsten"), N_("WB_G RGB Levels Tungsten"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x0022, "WB_GRGBLevelsFluorescent", N_("WB_G RGB Levels Flourescent"), N_("WB_G RGB Levels Flourescent"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x002a, "WB_GRGBLevelsFluorHigh", N_("WB_G RGB Levels Flourecent High"), N_("WB_G RGB Levels Flourecent High"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x0022, "WB_GRGBLevelsFluorescent", N_("WB_G RGB Levels Fluorescent"), N_("WB_G RGB Levels Fluorescent"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x002a, "WB_GRGBLevelsFluorHigh", N_("WB_G RGB Levels Fluorescent High"), N_("WB_G RGB Levels Fluorescent High"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x0032, "WB_GRGBLevelsFlash", N_("WB_G RGB Levels Flash"), N_("WB_G RGB Levels Flash"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x003a, "WB_GRGBLevelsUnderwater", N_("WB_G RGB Levels Underwater"), N_("WB_G RGB Levels Underwater"), canonWbId, makerTags, unsignedLong, -1, printValue},
{0x0042, "WB_GRGBLevelsCustom1", N_("WB_G RGB Levels Custom 1"), N_("WB_G RGB Levels Custom 1"), canonWbId, makerTags, unsignedLong, -1, printValue},
@ -849,7 +849,7 @@ namespace Exiv2 {
{0x000d, "WB_RGGBLevelsShade", N_("WB_RGGB Levels Shade"), N_("WB_RGGB Levels Shade"), canonCbId, makerTags, signedShort, -1, printValue},
{0x001a, "WB_RGGBLevelsCloudy", N_("WB_RGGB Levels Cloudy"), N_("WB_RGGB Levels Cloudy"), canonCbId, makerTags, signedShort, -1, printValue},
{0x0011, "WB_RGGBLevelsTungsten", N_("WB_RGGB Levels Tungsten"), N_("WB_RGGB Levels Tungsten"), canonCbId, makerTags, signedShort, -1, printValue},
{0x0015, "WB_RGGBLevelsFlourescent", N_("WB_RGGB Levels Flourecent"), N_("WB_RGGB Levels Flourecent"), canonCbId, makerTags, signedShort, -1, printValue},
{0x0015, "WB_RGGBLevelsFluorescent", N_("WB_RGGB Levels Fluorescent"), N_("WB_RGGB Levels Fluorescent"), canonCbId, makerTags, signedShort, -1, printValue},
{0x0032, "WB_RGGBLevelsFlash", N_("WB_RGGB Levels Flash"), N_("WB_RGGB Levels Flash"), canonCbId, makerTags, signedShort, -1, printValue},
{0x001d, "WB_RGGBLevelsCustomBlackLevels", N_("WB_RGGB Levels Custom Black Levels"), N_("WB_RGGB Levels Custom Black Levels"), canonCbId, makerTags, signedShort, -1, printValue},
{0x0021, "WB_RGGBLevelsKelvin", N_("WB_RGGB Levels Kelvin"), N_("WB_RGGB Levels Kelvin"), canonCbId, makerTags, signedShort, -1, printValue},
@ -1189,7 +1189,7 @@ namespace Exiv2 {
// Canon OneShotAFRelease, tag 0x0001
constexpr TagDetails canonOneShotAFRelease[] = {
{ 0, N_("Focus Priority") },
{ 1, N_("Release Priortiy") }
{ 1, N_("Release Priority") }
};
// Canon AutoAFPointSelEOSiTRAF, tag 0x0001
@ -1230,7 +1230,7 @@ namespace Exiv2 {
// Canon ManualAFPointSelPattern, tag 0x0001
constexpr TagDetails canonManualAFPointSelPattern[] = {
{ 0, N_("Stops at AF Area Edges") },
{ 1, N_("Continous") }
{ 1, N_("Continuous") }
};
// Canon AFPointDisplayDuringFocus, tag 0x0001
@ -2914,7 +2914,7 @@ namespace Exiv2 {
if ( value.typeId() == unsignedShort
&& value.count() > 0) {
// The offset of '5' seems to be ok for most Canons (see Exiftool)
// It might be explained by the fakt, that most Canons have a longest
// It might be explained by the fact, that most Canons have a longest
// exposure of 30s which is 5 EV below 1s
// see also printSi0x0017
std::ostringstream oss;

@ -369,7 +369,7 @@ namespace Exiv2 {
constexpr TagDetails casio2AutoISO[] = {
{ 1, N_("On") },
{ 2, N_("Off") },
{ 7, N_("On (high sensitiviy)") },
{ 7, N_("On (high sensitivity)") },
{ 8, N_("On (anti-shake)") },
{ 10, N_("High Speed") }
};
@ -396,7 +396,7 @@ namespace Exiv2 {
{ 0, N_("Off") },
{ 1, N_("Scenery") },
{ 3, N_("Green") },
{ 5, N_("Unterwater") },
{ 5, N_("Underwater") },
{ 9, N_("Flesh Tones") }
};

@ -226,7 +226,7 @@ namespace Exiv2 {
//! Return the tag id of this component
uint16_t tagId() const { return tag_ & 0x3fff; }
//! Return the type id of thi component
//! Return the type id of this component
TypeId typeId() const { return typeId(tag_); }
//! Return the data location for this component

@ -155,7 +155,7 @@ namespace Exiv2 {
md_st->write(os, &ed);
bool ok = false;
const long st_val = parseLong(os.str(), ok);
// SensivityType out of range or cannot be parsed properly
// SensitivityType out of range or cannot be parsed properly
if (!ok || st_val < 1 || st_val > 7)
break;
// pick up list of ISO tags, and check for at least one of

@ -314,7 +314,7 @@ private:
public:
/*!
@brief Call Getopt::getopt() with optstring, to inititate command line
@brief Call Getopt::getopt() with optstring, to initiate command line
argument parsing, perform consistency checks after all command line
arguments are parsed.

@ -181,7 +181,7 @@ struct IMAGEINFO_T
unsigned long trigCount; //!< trig counter
short manipulType; //!< defines how to interpret manipFactors
short manipFactors[5]; //!< Used average factors
/** Detecor settings - camera type dependent */
/** Detector settings - camera type dependent */
long detectorPars[20]; //!< Currently used detector parameters like
//! used bias, offsets. Usage is camera
//! dependent
@ -205,7 +205,7 @@ struct DISTR_DATA_T
//! FALSE
long curGlobalOffset;
float curGlobalGain; //!< globalOffset/Gain to generate LUT from
//! updated continously when live only
//! updated continuously when live only
#define regulationOn 1
unsigned short regulMethodMask; //!< Method used for o/g calculation
unsigned short visualImage; //!< TRUE (1) for TV (visual)

@ -366,7 +366,7 @@ int Exiv2::http(Exiv2::Dictionary& request,Exiv2::Dictionary& response,std::stri
}
}
// if the bufffer's full and we're still searching - give up!
// if the buffer's full and we're still searching - give up!
// this handles the possibility that there are no headers
if ( bSearching && buff_l-end < 10 ) {
bSearching = false ;

@ -554,7 +554,7 @@ namespace Exiv2 {
std::vector<long> iptcDataSegs;
if (bPrint || option == kpsXMP || option == kpsIccProfile || option == kpsIptcErase) {
// nmonic for markers
// mnemonic for markers
std::string nm[256];
nm[0xd8] = "SOI";
nm[0xd9] = "EOI";

@ -790,7 +790,7 @@ namespace Exiv2 {
{0x0048, "ExposureTime", N_("Exposure Time"),
N_("Exposure time"),
minoltaCs7DId, makerTags, unsignedShort, 1, printValue},
// 0x004A is a dupplicate than 0x002D.
// 0x004A is a duplicate than 0x002D.
{0x004A, "FreeMemoryCardImages", N_("Free Memory Card Images"),
N_("Free memory card images"),
minoltaCs7DId, makerTags, unsignedShort, 1, printValue},
@ -800,7 +800,7 @@ namespace Exiv2 {
{0x0060, "NoiseReduction", N_("Noise Reduction"),
N_("Noise reduction"),
minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue},
// 0x0062 is a dupplicate than 0x005E.
// 0x0062 is a duplicate than 0x005E.
{0x0062, "ImageNumber", N_("Image Number"),
N_("Image number"),
minoltaCs7DId, makerTags, unsignedShort, 1, printValue},

@ -61,7 +61,7 @@ namespace Exiv2 {
};
//! Off, Low, Normal, High, multiple tags
constexpr TagDetails nikonActiveDLighning[] = {
constexpr TagDetails nikonActiveDLighting[] = {
{ 0, N_("Off") },
{ 1, N_("Low") },
{ 3, N_("Normal") },
@ -383,7 +383,7 @@ namespace Exiv2 {
unsigned long focusPoint = value.toLong(1);
switch (focusPoint) {
// Could use array nikonFokuspoints
// Could use array nikonFocuspoints
case 0:
case 1:
case 2:
@ -583,7 +583,7 @@ namespace Exiv2 {
{0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonColorSpace)},
{0x001f, "VRInfo", N_("VR Info"), N_("VR info"), nikon3Id, makerTags, undefined, -1, printValue},
{0x0020, "ImageAuthentication", N_("Image Authentication"), N_("Image authentication"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonOffOn)},
{0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighning)},
{0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighting)},
{0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), nikon3Id, makerTags, undefined, -1, printValue},
{0x0024, "WorldTime", N_("World Time"), N_("World time"), nikon3Id, makerTags, undefined, -1, printValue},
{0x0025, "ISOInfo", N_("ISO Info"), N_("ISO info"), nikon3Id, makerTags, undefined, -1, printValue},
@ -1710,7 +1710,7 @@ namespace Exiv2 {
// What focuspoint did the user select?
if (focuspoint < focuspoints) {
os << nikonFocuspoints[focuspoint];
// TODO: os << position[fokuspoint][combination]
// TODO: os << position[focuspoint][combination]
}
else
os << "(" << focuspoint << ")";
@ -1718,7 +1718,7 @@ namespace Exiv2 {
sep = ',';
}
// What fokuspoints(!) did the camera use? add if differs
// What focuspoints(!) did the camera use? add if differs
if (focusused == 0)
os << sep << " " << _("none");
else if (focusused != 1U<<focuspoint) {
@ -2620,7 +2620,7 @@ fmountlens[] = {
{
const unsigned char vid = static_cast<unsigned>(value.toLong(0));
/* the 'FMntLens' name is added to the annonymous struct for
/* the 'FMntLens' name is added to the anonymous struct for
* fmountlens[]
*
* remember to name the struct when importing/updating the lens info

@ -78,7 +78,7 @@ namespace Exiv2 {
static std::ostream& print0x1015(std::ostream& os, const Value& value, const ExifData*);
//! Print Olympus equipment Lens type
static std::ostream& print0x0201(std::ostream& os, const Value& value, const ExifData*);
//! Print Olympus CamerID
//! Print Olympus CameraID
static std::ostream& print0x0209(std::ostream& os, const Value& value, const ExifData*);
//! Print Olympus equipment Extender
static std::ostream& printEq0x0301(std::ostream& os, const Value& value, const ExifData*);

@ -467,7 +467,7 @@ namespace Exiv2 {
{0x0040, "Saturation", N_("Saturation"), N_("Saturation"), panasonicId, makerTags, unsignedShort, -1, printValue},
{0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), panasonicId, makerTags, unsignedShort, -1, printValue},
{0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)},
{0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperatur in Kelvin"), panasonicId, makerTags, unsignedShort, -1, printValue},
{0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperature in Kelvin"), panasonicId, makerTags, unsignedShort, -1, printValue},
{0x0045, "BracketSettings", N_("Bracket Settings"), N_("Bracket Settings"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBracketSettings)},
{0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), panasonicId, makerTags, unsignedShort, -1, printValue},
{0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), panasonicId, makerTags, unsignedShort, -1, printValue},
@ -601,7 +601,7 @@ namespace Exiv2 {
} // PanasonicMakerNote::print0x0029
// bage age
// baby age
std::ostream& PanasonicMakerNote::print0x0033(std::ostream& os,
const Value& value,
const ExifData*)

@ -63,7 +63,7 @@ namespace Exiv2 {
static std::ostream& printPressure(std::ostream& os, const Value& value, const ExifData*);
//! Print special text values: title, landmark, county and so on
static std::ostream& printPanasonicText(std::ostream& os, const Value& value, const ExifData*);
//! Print accerometer readings
//! Print accelerometer readings
static std::ostream& printAccelerometer(std::ostream& os, const Value& value, const ExifData*);
//! Print roll angle
static std::ostream& printRollAngle(std::ostream& os, const Value& value, const ExifData*);

@ -249,7 +249,7 @@ namespace Exiv2 {
{ 0x109, N_("On, Slow-sync") },
{ 0x10a, N_("On, Slow-sync, Red-eye reduction") },
{ 0x10b, N_("On, Trailing-curtain Sync") },
// exiftool recognises 2 values, the values here correpond with Value 0
// exiftool recognises 2 values, the values here correspond with Value 0
};
//! Focus, tag 0x000d

@ -121,7 +121,7 @@ namespace Exiv2 {
uint32_t headerSize = readPgfHeaderSize(*io_);
readPgfHeaderStructure(*io_, pixelWidth_, pixelHeight_);
// And now, the most interresting, the user data byte array where metadata are stored as small image.
// And now, the most interesting, the user data byte array where metadata are stored as small image.
enforce(headerSize <= std::numeric_limits<uint32_t>::max() - 8, kerCorruptedMetadata);
#if LONG_MAX < UINT_MAX

@ -354,7 +354,7 @@ namespace Exiv2
}
// We look if a comments string exist. Note than we use only 'Description' keyword which
// is dedicaced to store long comments. 'Comment' keyword is ignored.
// is dedicated to store long comments. 'Comment' keyword is ignored.
if (keySize >= 11 && memcmp("Description", key, 11) == 0 && pImage->comment().empty()) {
pImage->setComment(std::string(arr.c_str(), arr.size()));

@ -594,7 +594,7 @@ namespace Exiv2 {
return;
}
if (!strcmp(szChunk, "eXIf")) {
; // do nothing Exif metdata is written following IHDR
; // do nothing Exif metadata is written following IHDR
; // as zTXt chunk with signature Raw profile type exif__
} else if (!strcmp(szChunk, "IHDR")) {
#ifdef EXIV2_DEBUG_MESSAGES

@ -110,7 +110,7 @@ namespace {
static PreviewId getNumLoaders();
protected:
//! Constructor. Sets all image properies to unknown.
//! Constructor. Sets all image properties to unknown.
Loader(PreviewId id, const Image &image);
//! Functions that creates a loader from given parameters
@ -810,7 +810,7 @@ namespace {
// the size_ parameter is originally computed by summing all values inside sizes
// see the constructor of LoaderTiff
// But e.g in malicious files some of thes values could be negative
// But e.g in malicious files some of these values could be negative
// That's why we check again for each step here to really make sure we don't overstep
enforce(Safe::add(idxBuf, size) <= size_, kerCorruptedMetadata);
if (size!=0 && Safe::add(offset, size) <= static_cast<uint32_t>(io.size())){

@ -262,7 +262,7 @@ namespace Exiv2 {
"intended to give human readers a general indication of the steps taken to make the "
"changes from the previous version to this one. The list should be at an abstract "
"level; it is not intended to be an exhaustive keystroke or other detailed history.") },
{ "Ingredients", N_("Ingredients"), "bag ResourceRef", xmpBag, xmpInternal, N_("References to resources that were incorporated, byinclusion or reference, into this resource.") },
{ "Ingredients", N_("Ingredients"), "bag ResourceRef", xmpBag, xmpInternal, N_("References to resources that were incorporated, by inclusion or reference, into this resource.") },
{ "InstanceID", N_("Instance ID"), "URI", xmpText, xmpInternal, N_("An identifier for a specific incarnation of a document, updated each time a file "
"is saved. It should be based on a UUID; see Document and Instance IDs below.") },
{ "ManagedFrom", N_("Managed From"), "ResourceRef", xmpText, xmpInternal, N_("A reference to the document as it was prior to becoming managed. It is set when a "
@ -4161,7 +4161,7 @@ namespace Exiv2 {
@throw Error if the key cannot be decomposed.
*/
void decomposeKey(const std::string& key); //!< Misterious magic
void decomposeKey(const std::string& key); //!< Mysterious magic
// DATA
static constexpr auto familyName_ = "Xmp"; //!< "Xmp"

@ -303,7 +303,7 @@ namespace Exiv2 {
8 4 bytes height Height of thumbnail in pixels.
12 4 bytes widthbytes Padded row bytes as (width * bitspixel + 31) / 32 * 4.
16 4 bytes size Total size as widthbytes * height * planes
20 4 bytes compressedsize Size after compression. Used for consistentcy check.
20 4 bytes compressedsize Size after compression. Used for consistency check.
24 2 bytes bitspixel = 24. Bits per pixel.
26 2 bytes planes = 1. Number of planes.
28 variable data JFIF data in RGB format.

@ -1657,7 +1657,7 @@ namespace Exiv2 {
N_("A string that identifies a specific instance in a semantic mask."),
ifd0Id, dngTags, asciiString, 0, printValue}, // DNG 1.6 tag
{0xcd31, "CalibrationIlluminant3", N_("Calibration Illuminant 3"),
N_("The illuminant used for an optional thrid set of color calibration "
N_("The illuminant used for an optional third set of color calibration "
"tags (ColorMatrix3, CameraCalibration3, ReductionMatrix3). The legal "
"values for this tag are the same as the legal values for the "
"LightSource EXIF tag; CalibrationIlluminant1 and CalibrationIlluminant2 "

@ -844,7 +844,7 @@ namespace Exiv2 {
void TiffEncoder::visitBinaryElement(TiffBinaryElement* object)
{
// Temporarily overwrite byteorder according to that of the binary element
// Temporarily overwrite byte order according to that of the binary element
ByteOrder boOrig = byteOrder_;
if (object->elByteOrder() != invalidByteOrder) byteOrder_ = object->elByteOrder();
encodeTiffComponent(object);

@ -533,7 +533,7 @@ namespace Exiv2 {
static uint32_t updateDirEntry(byte* buf, ByteOrder byteOrder, TiffComponent* pTiffComponent);
/*!
@brief Check if the tag is an image tag of an existing image. Such
tags are copied from the original image and can't be modifed.
tags are copied from the original image and can't be modified.
The condition is true if there is an existing image (as
opposed to a newly created TIFF image) and \em tag, \em group

@ -208,14 +208,14 @@ namespace Exiv2 {
height = Exiv2::getULong(size_buf, littleEndian) + 1;
}
/* Chunk with with animation control data. */
/* Chunk with animation control data. */
#ifdef __CHECK_FOR_ALPHA__ // Maybe in the future
if (equalsWebPTag(chunkId, WEBP_CHUNK_HEADER_ANIM) && !has_alpha) {
has_alpha = true;
}
#endif
/* Chunk with with lossy image data. */
/* Chunk with lossy image data. */
#ifdef __CHECK_FOR_ALPHA__ // Maybe in the future
if (equalsWebPTag(chunkId, WEBP_CHUNK_HEADER_VP8) && !has_alpha) {
has_alpha = true;
@ -238,7 +238,7 @@ namespace Exiv2 {
height = Exiv2::getUShort(size_buf, littleEndian) & 0x3fff;
}
/* Chunk with with lossless image data. */
/* Chunk with lossless image data. */
if (equalsWebPTag(chunkId, WEBP_CHUNK_HEADER_VP8L) && !has_alpha) {
enforce(size >= 5, Exiv2::kerCorruptedMetadata);
if ((payload.read_uint8(4) & WEBP_VP8X_ALPHA_BIT) == WEBP_VP8X_ALPHA_BIT) {

@ -53,7 +53,7 @@ SHELL = /bin/bash
# ******************************************************************************
# Targets
.PHONY: all test testv teste mostlyclean clean distclean maintainer-clean
.PHONY: all test mostlyclean clean distclean maintainer-clean
##
# to save download time for simple build/test, we download video and eps data on demand

@ -70,7 +70,7 @@ set Xmp.xmpDM.videoFrameSize/stDim:unit inch
set Xmp.dc.publisher James Bond
set Xmp.dc.publisher[1]/?ns:role secret agent
# Add a qualifer to an array element of Xmp.dc.creator (added above)
# Add a qualifier to an array element of Xmp.dc.creator (added above)
set Xmp.dc.creator[2]/?ns:role programmer
# Add an array of structures. First set a text property with just the

@ -440,7 +440,7 @@ prepareTest()
bin="$EXIV2_BINDIR/"
fi
# update PATHs to ensure we load the the correct dynamlic library
# update PATHs to ensure we load the correct dynamic library
if [ $PLATFORM == 'mingw' -a $PLATFORM == 'cygwin' ]; then
export PATH="$bin:$PATH"
elif [ 'PLATFORM' == 'Darwin' ]; then

@ -8,7 +8,7 @@ source ./functions.source
nls=$(runTest exiv2 -vVg nls|tail -1)
platform=$(${bin}exiv2${exe} -vVg platform|tail -1)
if [ "$nls" != "enable_nls=1" ]; then
echo "exiv2 not bulid with nls"
echo "exiv2 not build with nls"
exit 0
fi
if [ "$platform" == "platform=windows" ]; then

@ -3,7 +3,7 @@
import system_tests
class Sigma24_105mmRecognization(metaclass=system_tests.CaseMeta):
class Sigma24_105mmRecognition(metaclass=system_tests.CaseMeta):
url = "https://github.com/Exiv2/exiv2/issues/45"

@ -622,7 +622,7 @@ def test_run(self):
t.cancel()
def get_decode_error():
""" Return an error indicating the the decoding of stdout/stderr
""" Return an error indicating the decoding of stdout/stderr
failed.
"""
return "Could not decode the output of the command '{!s}' with "\

@ -24,11 +24,11 @@
using namespace Exiv2;
// The tests corrispond to those in issue https://github.com/Exiv2/exiv2/issues/1481
// The tests correspond to those in issue https://github.com/Exiv2/exiv2/issues/1481
// 1. No language value
TEST(LangAltValueReadTest, noLangugeValBeforeSpace)
TEST(LangAltValueReadTest, noLanguageValBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
@ -45,7 +45,7 @@ TEST(LangAltValueReadTest, noLangugeValBeforeSpace)
}
}
TEST(LangAltValueReadTest, quoteThenNoLangugeValBeforeSpace)
TEST(LangAltValueReadTest, quoteThenNoLanguageValBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);

@ -147,7 +147,7 @@ TEST(MemIo, readLessBytesThanAvailableReturnsRequestedBytes)
ASSERT_EQ(5, io.read(buf2.data(), 5));
}
TEST(MemIo, readSameBytesThanAvailableReturnsRequetedBytes)
TEST(MemIo, readSameBytesThanAvailableReturnsRequestedBytes)
{
std::array<byte, 10> buf1, buf2;
buf1.fill(1);

@ -33,7 +33,7 @@ class slice;
* This namespace contains the helper-function get_test_data. It is intented
* to be used for test with the slice fixture: it returns the appropriate
* data to the constructor of slice. For (const) T==std::vector it returns the
* fixtures meber vec_, for (const) T==int* it returns vec_.data()
* fixtures member vec_, for (const) T==int* it returns vec_.data()
*
* Due to C++98's limitations, this requires a separate traits class, that
* specifies the return type *and* a specialization of get_test_data for each

Loading…
Cancel
Save