### Function

# GLib strlcpy

#### Declaration

    gsize
    g_strlcpy (
      gchar* dest,
      const gchar* src,
      gsize dest_size
    )

#### Description

Portability wrapper that calls `strlcpy()` on systems which have it, and emulates `strlcpy()` otherwise. Copies `src` to `dest`; `dest` is guaranteed to be nul-terminated; `src` must be nul-terminated; `dest_size` is the buffer size, not the number of bytes to copy.

At most `dest_size` - 1 characters will be copied. Always nul-terminates (unless `dest_size` is 0). This function does not allocate memory. Unlike `strncpy()`, this function doesn’t pad `dest` (so it’s often faster). It returns the size of the attempted result, `strlen (src)`, so if `retval` >= `dest_size`, truncation occurred.

Caveat: `strlcpy()` is supposedly more secure than `strcpy()` or `strncpy()`, but if you really want to avoid screwups, `g_strdup()` is an even better idea.

#### Parameters

`dest`

  Type: `gchar*`

  Destination buffer.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`src`

  Type: `const gchar*`

  Source buffer.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`dest_size`

  Type: `gsize`

  Length of `dest` in bytes.

#### Return value

Type: `gsize`

Length of `src`.