1*a3cefe7fSPierre Pronchery 2*a3cefe7fSPierre Proncherylibpkgconf `fragment` module 3*a3cefe7fSPierre Pronchery============================ 4*a3cefe7fSPierre Pronchery 5*a3cefe7fSPierre ProncheryThe `fragment` module provides low-level management and rendering of fragment lists. A 6*a3cefe7fSPierre Pronchery`fragment list` contains various `fragments` of text (such as ``-I /usr/include``) in a matter 7*a3cefe7fSPierre Proncherywhich is composable, mergeable and reorderable. 8*a3cefe7fSPierre Pronchery 9*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_fragment_add(const pkgconf_client_t *client, pkgconf_list_t *list, const char *string, unsigned int flags) 10*a3cefe7fSPierre Pronchery 11*a3cefe7fSPierre Pronchery Adds a `fragment` of text to a `fragment list`, possibly modifying the fragment if a sysroot is set. 12*a3cefe7fSPierre Pronchery 13*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The pkgconf client being accessed. 14*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The fragment list. 15*a3cefe7fSPierre Pronchery :param char* string: The string of text to add as a fragment to the fragment list. 16*a3cefe7fSPierre Pronchery :param uint flags: Parsing-related flags for the package. 17*a3cefe7fSPierre Pronchery :return: nothing 18*a3cefe7fSPierre Pronchery 19*a3cefe7fSPierre Pronchery.. c:function:: bool pkgconf_fragment_has_system_dir(const pkgconf_client_t *client, const pkgconf_fragment_t *frag) 20*a3cefe7fSPierre Pronchery 21*a3cefe7fSPierre Pronchery Checks if a `fragment` contains a `system path`. System paths are detected at compile time and optionally overridden by 22*a3cefe7fSPierre Pronchery the ``PKG_CONFIG_SYSTEM_INCLUDE_PATH`` and ``PKG_CONFIG_SYSTEM_LIBRARY_PATH`` environment variables. 23*a3cefe7fSPierre Pronchery 24*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The pkgconf client object the fragment belongs to. 25*a3cefe7fSPierre Pronchery :param pkgconf_fragment_t* frag: The fragment being checked. 26*a3cefe7fSPierre Pronchery :return: true if the fragment contains a system path, else false 27*a3cefe7fSPierre Pronchery :rtype: bool 28*a3cefe7fSPierre Pronchery 29*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_fragment_copy(const pkgconf_client_t *client, pkgconf_list_t *list, const pkgconf_fragment_t *base, bool is_private) 30*a3cefe7fSPierre Pronchery 31*a3cefe7fSPierre Pronchery Copies a `fragment` to another `fragment list`, possibly removing a previous copy of the `fragment` 32*a3cefe7fSPierre Pronchery in a process known as `mergeback`. 33*a3cefe7fSPierre Pronchery 34*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The pkgconf client being accessed. 35*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The list the fragment is being added to. 36*a3cefe7fSPierre Pronchery :param pkgconf_fragment_t* base: The fragment being copied. 37*a3cefe7fSPierre Pronchery :param bool is_private: Whether the fragment list is a `private` fragment list (static linking). 38*a3cefe7fSPierre Pronchery :return: nothing 39*a3cefe7fSPierre Pronchery 40*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_fragment_copy_list(const pkgconf_client_t *client, pkgconf_list_t *list, const pkgconf_list_t *base) 41*a3cefe7fSPierre Pronchery 42*a3cefe7fSPierre Pronchery Copies a `fragment list` to another `fragment list`, possibly removing a previous copy of the fragments 43*a3cefe7fSPierre Pronchery in a process known as `mergeback`. 44*a3cefe7fSPierre Pronchery 45*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The pkgconf client being accessed. 46*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The list the fragments are being added to. 47*a3cefe7fSPierre Pronchery :param pkgconf_list_t* base: The list the fragments are being copied from. 48*a3cefe7fSPierre Pronchery :return: nothing 49*a3cefe7fSPierre Pronchery 50*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_fragment_filter(const pkgconf_client_t *client, pkgconf_list_t *dest, pkgconf_list_t *src, pkgconf_fragment_filter_func_t filter_func) 51*a3cefe7fSPierre Pronchery 52*a3cefe7fSPierre Pronchery Copies a `fragment list` to another `fragment list` which match a user-specified filtering function. 53*a3cefe7fSPierre Pronchery 54*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The pkgconf client being accessed. 55*a3cefe7fSPierre Pronchery :param pkgconf_list_t* dest: The destination list. 56*a3cefe7fSPierre Pronchery :param pkgconf_list_t* src: The source list. 57*a3cefe7fSPierre Pronchery :param pkgconf_fragment_filter_func_t filter_func: The filter function to use. 58*a3cefe7fSPierre Pronchery :param void* data: Optional data to pass to the filter function. 59*a3cefe7fSPierre Pronchery :return: nothing 60*a3cefe7fSPierre Pronchery 61*a3cefe7fSPierre Pronchery.. c:function:: size_t pkgconf_fragment_render_len(const pkgconf_list_t *list, bool escape, const pkgconf_fragment_render_ops_t *ops) 62*a3cefe7fSPierre Pronchery 63*a3cefe7fSPierre Pronchery Calculates the required memory to store a `fragment list` when rendered as a string. 64*a3cefe7fSPierre Pronchery 65*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The `fragment list` being rendered. 66*a3cefe7fSPierre Pronchery :param bool escape: Whether or not to escape special shell characters (deprecated). 67*a3cefe7fSPierre Pronchery :param pkgconf_fragment_render_ops_t* ops: An optional ops structure to use for custom renderers, else ``NULL``. 68*a3cefe7fSPierre Pronchery :return: the amount of bytes required to represent the `fragment list` when rendered 69*a3cefe7fSPierre Pronchery :rtype: size_t 70*a3cefe7fSPierre Pronchery 71*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_fragment_render_buf(const pkgconf_list_t *list, char *buf, size_t buflen, bool escape, const pkgconf_fragment_render_ops_t *ops) 72*a3cefe7fSPierre Pronchery 73*a3cefe7fSPierre Pronchery Renders a `fragment list` into a buffer. 74*a3cefe7fSPierre Pronchery 75*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The `fragment list` being rendered. 76*a3cefe7fSPierre Pronchery :param char* buf: The buffer to render the fragment list into. 77*a3cefe7fSPierre Pronchery :param size_t buflen: The length of the buffer. 78*a3cefe7fSPierre Pronchery :param bool escape: Whether or not to escape special shell characters (deprecated). 79*a3cefe7fSPierre Pronchery :param pkgconf_fragment_render_ops_t* ops: An optional ops structure to use for custom renderers, else ``NULL``. 80*a3cefe7fSPierre Pronchery :return: nothing 81*a3cefe7fSPierre Pronchery 82*a3cefe7fSPierre Pronchery.. c:function:: char *pkgconf_fragment_render(const pkgconf_list_t *list) 83*a3cefe7fSPierre Pronchery 84*a3cefe7fSPierre Pronchery Allocate memory and render a `fragment list` into it. 85*a3cefe7fSPierre Pronchery 86*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The `fragment list` being rendered. 87*a3cefe7fSPierre Pronchery :param bool escape: Whether or not to escape special shell characters (deprecated). 88*a3cefe7fSPierre Pronchery :param pkgconf_fragment_render_ops_t* ops: An optional ops structure to use for custom renderers, else ``NULL``. 89*a3cefe7fSPierre Pronchery :return: An allocated string containing the rendered `fragment list`. 90*a3cefe7fSPierre Pronchery :rtype: char * 91*a3cefe7fSPierre Pronchery 92*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_fragment_delete(pkgconf_list_t *list, pkgconf_fragment_t *node) 93*a3cefe7fSPierre Pronchery 94*a3cefe7fSPierre Pronchery Delete a `fragment node` from a `fragment list`. 95*a3cefe7fSPierre Pronchery 96*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The `fragment list` to delete from. 97*a3cefe7fSPierre Pronchery :param pkgconf_fragment_t* node: The `fragment node` to delete. 98*a3cefe7fSPierre Pronchery :return: nothing 99*a3cefe7fSPierre Pronchery 100*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_fragment_free(pkgconf_list_t *list) 101*a3cefe7fSPierre Pronchery 102*a3cefe7fSPierre Pronchery Delete an entire `fragment list`. 103*a3cefe7fSPierre Pronchery 104*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The `fragment list` to delete. 105*a3cefe7fSPierre Pronchery :return: nothing 106*a3cefe7fSPierre Pronchery 107*a3cefe7fSPierre Pronchery.. c:function:: bool pkgconf_fragment_parse(const pkgconf_client_t *client, pkgconf_list_t *list, pkgconf_list_t *vars, const char *value) 108*a3cefe7fSPierre Pronchery 109*a3cefe7fSPierre Pronchery Parse a string into a `fragment list`. 110*a3cefe7fSPierre Pronchery 111*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The pkgconf client being accessed. 112*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The `fragment list` to add the fragment entries to. 113*a3cefe7fSPierre Pronchery :param pkgconf_list_t* vars: A list of variables to use for variable substitution. 114*a3cefe7fSPierre Pronchery :param uint flags: Any parsing flags to be aware of. 115*a3cefe7fSPierre Pronchery :param char* value: The string to parse into fragments. 116*a3cefe7fSPierre Pronchery :return: true on success, false on parse error 117