Programming Issues With exacct Files
-
Use the same allocation flags for ea_free_object() and ea_unpack_object().
For string objects, an ea_set_item() results in allocation, and should be followed by ea_free_item(obj, EUP_ALLOC) to free internal storage.
ea_pack_object() and getacct() use zero size. To get size. getacct() should be called twice: first time with NULL buffer to size buffer to be passed in the second call. See Example 3-1 in C Code Examples for Accessing exacct Files.
Applications should skip unknown exacct records in exacct files produced by the system, to be robust in the face of changes to exacct file content.
Use EXC_LOCAL for customized accounting. Application-specific records can be created using EXC_LOCAL. Use libexacct as general tracing or debugging facility.
See <sys/exacct_catalog.h>.
Data id field of ea_catalog_t can be customized.