Lines Matching refs:attr
40 attr->type = attr_type; \
41 attr->data.field = _alloc_zero(ctx, data_type, 1); \
43 if (attr->data.field == NULL) { \
48 attr->data.field[0] = val; \
49 attr->num_values = 1; \
60 attr->type = attr_type; \
61 if (attr->num_values == 0) { \
62 attr->data.field = NULL; \
67 attr->data.field = _alloc_zero(ctx, data_type, attr->num_values); \
68 if (attr->data.field == NULL) { \
73 for (i = 0; i < attr->num_values; i++) { \
75 attr->data.field[i] = val; \
77 if (!dbus_message_iter_next(iter) && i + 1 < attr->num_values) { \
252 sss_sifp_attr *attr)
292 attr->type = SSS_SIFP_ATTR_TYPE_STRING;
293 attr->data.str = _alloc_zero(ctx, char*, 1);
294 if (attr->data.str == NULL) { \
299 attr->data.str[0] = sss_sifp_strdup(ctx, val);
300 if (attr->data.str[0] == NULL) {
301 _free(ctx, attr->data.str);
306 attr->num_values = 1;
323 sss_sifp_attr *attr)
329 attr->num_values = sss_sifp_get_array_length(iter);
366 attr->type = SSS_SIFP_ATTR_TYPE_STRING;
367 if (attr->num_values == 0) {
368 attr->data.str = NULL;
373 attr->data.str = _alloc_zero(ctx, char *, attr->num_values);
374 if (attr->data.str == NULL) {
379 for (i = 0; i < attr->num_values; i++) {
381 attr->data.str[i] = sss_sifp_strdup(ctx, val);
382 if (attr->data.str[i] == NULL) {
388 && i + 1 < attr->num_values) {
397 attr->type = SSS_SIFP_ATTR_TYPE_STRING_DICT;
398 if (attr->num_values == 0) {
399 attr->data.str_dict = NULL;
404 hret = hash_create_ex(10, &(attr->data.str_dict), 0, 0, 0, 0,
412 for (i = 0; i < attr->num_values; i++) {
413 ret = sss_sifp_parse_dict(ctx, &array_iter, attr->data.str_dict);
415 _free(ctx, attr->data.str_dict);
420 && i + 1 < attr->num_values) {
435 if (attr->type == SSS_SIFP_ATTR_TYPE_STRING && attr->data.str != NULL) {
437 attr->data.str[i] != NULL && i < attr->num_values;
439 _free(ctx, attr->data.str[i]);
441 _free(ctx, attr->data.str);
442 } else if (attr->type == SSS_SIFP_ATTR_TYPE_STRING_DICT
443 && attr->data.str_dict != NULL) {
444 hash_destroy(attr->data.str_dict);
445 attr->data.str_dict = NULL;
455 sss_sifp_attr *attr)
467 ret = sss_sifp_parse_basic(ctx, &variant_iter, attr);
474 ret = sss_sifp_parse_array(ctx, &variant_iter, attr);
498 sss_sifp_attr *attr = NULL;
501 attr = _alloc_zero(ctx, sss_sifp_attr, 1);
502 if (attr == NULL) {
507 attr->name = sss_sifp_strdup(ctx, name);
508 if (attr->name == NULL) {
509 _free(ctx, attr);
514 ret = sss_sifp_parse_variant(ctx, iter, attr);
516 _free(ctx, attr->name);
517 _free(ctx, attr);
520 *_attr = attr;