+ int i;
+
+ tall_log_ctx = talloc_named_const(ctx, 1, "logging");
+ if (!tall_log_ctx)
+ return -ENOMEM;
+
+ osmo_log_info = talloc_zero(tall_log_ctx, struct log_info);
+ if (!osmo_log_info)
+ return -ENOMEM;
+
+ osmo_log_info->num_cat_user = inf->num_cat;
+ /* total number = number of user cat + library cat */
+ osmo_log_info->num_cat = inf->num_cat + OSMO_NUM_DLIB;
+
+ osmo_log_info->cat = talloc_zero_array(osmo_log_info,
+ struct log_info_cat,
+ osmo_log_info->num_cat);
+ if (!osmo_log_info->cat) {
+ talloc_free(osmo_log_info);
+ osmo_log_info = NULL;
+ return -ENOMEM;
+ }
+
+ /* copy over the user part */
+ for (i = 0; i < inf->num_cat; i++) {
+ memcpy(&osmo_log_info->cat[i], &inf->cat[i],
+ sizeof(struct log_info_cat));
+ }
+
+ /* copy over the library part */