---
name: "zip_dir_add"
section: "3"
platform: "linux"
package: "libzip"
version: "1.11.4-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/zip_dir_add"
---

# zip\_dir\_add(3)

add directory to zip archive

## NAME

**zip\_dir\_add** – add directory to zip archive

## LIBRARY

libzip (-lzip)

## SYNOPSIS

**#include \<zip.h\>**

*zip\_int64\_t*\

**zip\_dir\_add**(*zip\_t \*archive*, *const char \*name*, *zip\_flags\_t flags*);

## DESCRIPTION

The function **zip\_dir\_add**() adds a directory to a zip archive. The argument *archive* specifies the zip archive to which the directory should be added. *name* is the directory's name in the zip archive.

This function adds an entry to the archive. It does not check whether a directory with that name exists in the file system, nor does it add its contents if it does. The *flags* argument can be any of:

- ZIP\_FL\_ENC\_GUESS

  Guess encoding of *name* (default). (Only CP-437 and UTF-8 are recognized.)

- ZIP\_FL\_ENC\_UTF\_8

  Interpret *name* as UTF-8.

- ZIP\_FL\_ENC\_CP437

  Interpret *name* as code page 437 (CP-437).

## RETURN VALUES

Upon successful completion, the index of the new entry in the archive is returned. Otherwise, -1 is returned and the error code in *archive* is set to indicate the error.

## ERRORS

**zip\_dir\_add**() fails if:

- \[ZIP\_ER\_EXISTS\]

  There is already an entry called *name* in the archive.

- \[ZIP\_ER\_INVAL\]

  *archive* or *name* are NULL, or invalid UTF-8 encoded file names.

- \[ZIP\_ER\_MEMORY\]

  Required memory could not be allocated.

## SEE ALSO

[libzip(3)](/libzip/3.md), [zip\_file\_add(3)](/zip_file_add/3.md)

## HISTORY

**zip\_dir\_add**() was added in libzip 0.11.

## AUTHORS

Dieter Baron ⟨*dillo@nih.at*⟩ and Thomas Klausner ⟨*wiz@gatalith.at*⟩
