Lines Matching full:profiles
39 /** Initialize the profiles information in the context in an asynchronous way
41 * Load the profile information from disk, fill the dictionary of loaded profiles and fill
46 * @param[in,out] profiles The context for the profiles information.
58 IFAPI_PROFILES *profiles, in ifapi_profiles_initialize_async() argument
66 check_not_null(profiles); in ifapi_profiles_initialize_async()
69 memset(profiles, 0, sizeof(*profiles)); in ifapi_profiles_initialize_async()
71 profiles->default_name = strdup(defaultprofile); in ifapi_profiles_initialize_async()
72 check_oom(profiles->default_name); in ifapi_profiles_initialize_async()
74 r = ifapi_io_dirfiles(profilesdir, &profiles->filenames, &profiles->num_profiles); in ifapi_profiles_initialize_async()
75 return_if_error(r, "Reading profiles from profiles dir"); in ifapi_profiles_initialize_async()
77 profiles->profiles = calloc(profiles->num_profiles, sizeof(profiles->profiles[0])); in ifapi_profiles_initialize_async()
78 check_oom(profiles->profiles); in ifapi_profiles_initialize_async()
83 for (i = 0; i < profiles->num_profiles; ) { in ifapi_profiles_initialize_async()
84 char *ext = strstr(profiles->filenames[i], PROFILES_EXTENSION); in ifapi_profiles_initialize_async()
87 strncmp(profiles->filenames[i], PROFILES_PREFIX, strlen(PROFILES_PREFIX)) == 0) in ifapi_profiles_initialize_async()
89 LOG_TRACE("Using file %s in profiles directory", profiles->filenames[i]); in ifapi_profiles_initialize_async()
91 profiles->profiles[i].name = strndup(profiles->filenames[i], in ifapi_profiles_initialize_async()
92 ext - profiles->filenames[i]); in ifapi_profiles_initialize_async()
93 check_oom(profiles->profiles[i].name); in ifapi_profiles_initialize_async()
95 tmp = profiles->filenames[i]; in ifapi_profiles_initialize_async()
96 r = ifapi_asprintf(&profiles->filenames[i], "%s/%s", profilesdir, tmp); in ifapi_profiles_initialize_async()
100 profiles->profiles[i].name, profiles->filenames[i], tmp); in ifapi_profiles_initialize_async()
106 LOG_TRACE("Skipping file %s in profiles directory", profiles->filenames[i]); in ifapi_profiles_initialize_async()
107 free(profiles->filenames[i]); in ifapi_profiles_initialize_async()
108 profiles->num_profiles -= 1; in ifapi_profiles_initialize_async()
109 for (j = i; j < profiles->num_profiles; j++) { in ifapi_profiles_initialize_async()
110 profiles->filenames[j] = profiles->filenames[j + 1]; in ifapi_profiles_initialize_async()
115 if (profiles->num_profiles == 0) { in ifapi_profiles_initialize_async()
121 profiles->profiles = reallocarray(profiles->profiles, profiles->num_profiles, in ifapi_profiles_initialize_async()
122 sizeof(profiles->profiles[0])); in ifapi_profiles_initialize_async()
123 profiles->filenames = reallocarray(profiles->filenames, profiles->num_profiles, in ifapi_profiles_initialize_async()
124 sizeof(profiles->filenames[0])); in ifapi_profiles_initialize_async()
126 profiles->profiles = realloc(profiles->profiles, profiles->num_profiles * in ifapi_profiles_initialize_async()
127 sizeof(profiles->profiles[0])); in ifapi_profiles_initialize_async()
128 profiles->filenames = realloc(profiles->filenames, profiles->num_profiles * in ifapi_profiles_initialize_async()
129 sizeof(profiles->filenames[0])); in ifapi_profiles_initialize_async()
133 r = ifapi_io_read_async(io, profiles->filenames[profiles->profiles_idx]); in ifapi_profiles_initialize_async()
134 return_if_error2(r, "Reading profile %s", profiles->filenames[profiles->profiles_idx]); in ifapi_profiles_initialize_async()
139 /** Initialize the profiles information in the context in an asynchronous way
143 * @param[in,out] profiles The context for the profiles information.
155 IFAPI_PROFILES *profiles, in ifapi_profiles_initialize_finish() argument
162 check_not_null(profiles); in ifapi_profiles_initialize_finish()
171 LOG_ERROR("Failed to parse profile %s", profiles->filenames[profiles->profiles_idx]); in ifapi_profiles_initialize_finish()
176 &profiles->profiles[profiles->profiles_idx].profile); in ifapi_profiles_initialize_finish()
179 profiles->filenames[profiles->profiles_idx]); in ifapi_profiles_initialize_finish()
181 r = ifapi_profile_checkpcrs(&profiles->profiles[profiles->profiles_idx].profile.pcr_selection); in ifapi_profiles_initialize_finish()
183 profiles->filenames[profiles->profiles_idx]); in ifapi_profiles_initialize_finish()
185 profiles->profiles_idx += 1; in ifapi_profiles_initialize_finish()
187 if (profiles->profiles_idx < profiles->num_profiles) { in ifapi_profiles_initialize_finish()
188 r = ifapi_io_read_async(io, profiles->filenames[profiles->profiles_idx]); in ifapi_profiles_initialize_finish()
189 return_if_error2(r, "Reading profile %s", profiles->filenames[profiles->profiles_idx]); in ifapi_profiles_initialize_finish()
195 for (i = 0; i < profiles->num_profiles; i++) { in ifapi_profiles_initialize_finish()
196 if (strcmp(profiles->default_name, profiles->profiles[i].name) == 0) { in ifapi_profiles_initialize_finish()
197 profiles->default_profile = profiles->profiles[i].profile; in ifapi_profiles_initialize_finish()
201 if (i == profiles->num_profiles) { in ifapi_profiles_initialize_finish()
202 LOG_ERROR("Default profile %s not in the list of loaded profiles", in ifapi_profiles_initialize_finish()
203 profiles->default_name); in ifapi_profiles_initialize_finish()
207 for (i = 0; i < profiles->num_profiles; i++) { in ifapi_profiles_initialize_finish()
208 free(profiles->filenames[i]); in ifapi_profiles_initialize_finish()
210 SAFE_FREE(profiles->filenames); in ifapi_profiles_initialize_finish()
222 * @param[in] profiles The profiles context
231 const IFAPI_PROFILES *profiles, in ifapi_profiles_get() argument
235 check_not_null(profiles); in ifapi_profiles_get()
243 *profile = &profiles->default_profile; in ifapi_profiles_get()
260 for (size_t i = 0; i < profiles->num_profiles; i++) { in ifapi_profiles_get()
261 if (len == strlen(profiles->profiles[i].name) && in ifapi_profiles_get()
262 strncmp(name, profiles->profiles[i].name, len) == 0) { in ifapi_profiles_get()
263 *profile = &profiles->profiles[i].profile; in ifapi_profiles_get()
267 LOG_ERROR("Profile %s not in the list of loaded profiles", name); in ifapi_profiles_get()
271 /** Sanitizes and frees internal data structures of loaded profiles' information.
273 * @param[in,out] profiles The context for the profiles information.
277 IFAPI_PROFILES *profiles) in ifapi_profiles_finalize() argument
280 if (!profiles) { in ifapi_profiles_finalize()
285 SAFE_FREE(profiles->default_name); in ifapi_profiles_finalize()
287 for (i = 0; i < profiles->num_profiles; i++) { in ifapi_profiles_finalize()
288 IFAPI_PROFILE_ENTRY * entry = &profiles->profiles[i]; in ifapi_profiles_finalize()
289 SAFE_FREE(profiles->profiles[i].name); in ifapi_profiles_finalize()
305 SAFE_FREE(profiles->profiles); in ifapi_profiles_finalize()
307 memset(profiles, 0, sizeof(*profiles)); in ifapi_profiles_finalize()