Lines Matching refs:iter

410 	struct profile_iterator *iter;
425 if ((iter = malloc(sizeof(struct profile_iterator))) == NULL)
428 iter->magic = PROF_MAGIC_ITERATOR;
429 iter->profile = profile;
430 iter->names = names;
431 iter->flags = flags;
432 iter->file = profile->first_file;
433 iter->done_idx = done_idx;
434 iter->node = 0;
435 iter->num = 0;
436 *ret_iter = iter;
442 struct profile_iterator *iter;
446 iter = *iter_p;
447 if (!iter || iter->magic != PROF_MAGIC_ITERATOR)
449 free(iter);
463 struct profile_iterator *iter = *iter_p;
469 if (!iter || iter->magic != PROF_MAGIC_ITERATOR)
471 if (iter->file && iter->file->magic != PROF_MAGIC_FILE)
473 if (iter->file && iter->file->data->magic != PROF_MAGIC_FILE_DATA)
479 if (iter->file) {
480 retval = k5_mutex_lock(&iter->file->data->lock);
484 if (iter->node && (iter->file->data->upd_serial != iter->file_serial)) {
485 iter->flags &= ~PROFILE_ITER_FINAL_SEEN;
486 skip_num = iter->num;
487 iter->node = 0;
489 if (iter->node && iter->node->magic != PROF_MAGIC_NODE) {
490 if (iter->file)
491 k5_mutex_unlock(&iter->file->data->lock);
495 if (iter->node == 0) {
496 if (iter->file == 0 ||
497 (iter->flags & PROFILE_ITER_FINAL_SEEN)) {
498 if (iter->file)
499 k5_mutex_unlock(&iter->file->data->lock);
509 k5_mutex_unlock(&iter->file->data->lock);
510 if ((retval = profile_update_file(iter->file))) {
513 iter->file = iter->file->next;
514 if (iter->file) {
515 retval = k5_mutex_lock(&iter->file->data->lock);
529 retval = k5_mutex_lock(&iter->file->data->lock);
534 iter->file_serial = iter->file->data->upd_serial;
539 section = iter->file->data->root;
541 for (cpp = iter->names; cpp[iter->done_idx]; cpp++) {
552 iter->flags |= PROFILE_ITER_FINAL_SEEN;
555 k5_mutex_unlock(&iter->file->data->lock);
556 iter->file = iter->file->next;
557 if (iter->file) {
558 retval = k5_mutex_lock(&iter->file->data->lock);
567 iter->name = *cpp;
568 iter->node = section->first_child;
571 * OK, now we know iter->node is set up correctly. Let's do
574 for (p = iter->node; p; p = p->next) {
575 if (iter->name && strcmp(p->name, iter->name))
577 if ((iter->flags & PROFILE_ITER_SECTIONS_ONLY) &&
580 if ((iter->flags & PROFILE_ITER_RELATIONS_ONLY) &&
591 iter->num++;
593 k5_mutex_unlock(&iter->file->data->lock);
594 iter->file = iter->file->next;
595 if (iter->file) {
596 retval = k5_mutex_lock(&iter->file->data->lock);
602 iter->node = 0;
606 k5_mutex_unlock(&iter->file->data->lock);
607 if ((iter->node = p->next) == NULL)
608 iter->file = iter->file->next;