### Function

# RB uri_is_descendant

#### Declaration [src]

    gboolean
    rb_uri_is_descendant (
      const char* uri,
      const char* ancestor
    )

#### Description [src]

Checks if `uri` refers to a path beneath `ancestor`, such that removing some number of path segments of `uri` would result in `ancestor`. It doesn’t do any filesystem operations, it just looks at the URIs as strings. The URI strings should be built by looking at a filesystem rather than user input, and must not have path segments that are empty (multiple slashes) or ‘.’ or ‘..’.

Given this input, checking if one URI is a descendant of another is pretty simple. A descendant URI must have the ancestor as a prefix, and if the ancestor ends with a slash, there must be at least one character after that, otherwise the following character must be a slash with at least one character after it.

#### Parameters

`uri`

  Type: `const char*`

  URI to check.

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

`ancestor`

  Type: `const char*`

  A URI to check against.

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

#### Return value

Type: `gboolean`

`TRUE` if `uri` is a descendant of `ancestor`.