We need to be removing things from the static interface, not adding to it. During my first attempt to implement user management in libsepol, I added a few functions that work with a context_struct. Some are new functions that I wrote to convert a record to a context_struct, others I pulled out of services.c to organize into context.c. They were prefixed sepol_ctx_struct_*. This patch: - deletes those functions from the static interface, and puts them in a private header. Those are the first of (hopefully more to come) functions to be drawn from the static interface (as described by published headers) back into libsepol where they belong. - removes the sepol_ prefix, which I use to indicate whether a function is exported or not - changes "ctx_struct" to "context" for consistency with other code that uses a context_struct (context_cpy, etc..) - removes unnecessary relay function from services.c, and use the right function directly. - renames the create() function to _from_record(), which describes more accurately what is going on. - replaces all inclusion of with the internal "context.h", which draws in the other header ======= Note: A possible point of confusion - the internal context functions are now all prefixed context_*. The record ones are prefixed (sepol_context_*). They both represent a context, but the record is exported via the shared interface. The internal structure is only exported via the static interface.