ZIP_NAME_LOCATE(3) Library Functions Manual ZIP_NAME_LOCATE(3)

zip_name_locateget index of file by name

libzip (-lzip)

#include <zip.h>

zip_int64_t
zip_name_locate(zip_t *archive, const char *fname, zip_flags_t flags);

The () function returns the index of the file named fname in archive. If archive does not contain a file with that name, -1 is returned.

If neither ZIP_FL_ENC_RAW nor ZIP_FL_ENC_STRICT are specified, guess the encoding of the name in the ZIP archive and convert it to UTF-8, if necessary, before comparing.

If neither ZIP_FL_ENC_CP437 nor ZIP_FL_ENC_UTF_8 are specified, guess the encoding of fname.

Only CP-437 and UTF-8 are recognized.

The flags are specified by 'ing the following values, or 0 for none of them.

Ignore case distinctions. (Will only work well if the file names are ASCII.) With this flag, () will be slow for archives with many files.
Ignore directory part of file name in archive. With this flag, zip_name_locate() will be slow for archives with many files.
This flag has no effect (its value is 0); it can be used to explicitly denote the absence of encoding flags.
Compare fname against the unmodified names as they are in the ZIP archive, without converting them to UTF-8.
Follow the ZIP specification and expect CP-437 encoded names in the ZIP archive (except if they are explicitly marked as UTF-8). Convert them to UTF-8 before comparing.
fname is encoded as CP-437.
fname is encoded as UTF-8.

: ASCII is a subset of both CP-437 and UTF-8.

zip_name_locate() returns the index of the file named fname or -1, if archive does not contain an entry of that name.

zip_name_locate() fails if:

[]
One of the arguments is invalid.
[]
Required memory could not be allocated.
[]
No entry of the name fname is found in the archive.

libzip(3), zip_get_name(3)

zip_name_locate() was added in libzip 0.6. In libzip 0.11 the return type was changed from int to zip_int64_t. In libzip 0.11 the type of flags was changed from int to zip_flags_t.

Dieter Baron <dillo@nih.at> and Thomas Klausner <tk@giga.or.at>

March 15, 2022 Linux 6.7.4-arch1-1