7b4c7a681c
Break libblkid into 4 libraries: libblkid, libuuid, libutil-linux and libfdisk. This should help in later patch updates. Change-Id: I680d9a7feb031e5c29a603e9c58aff4b65826262
83 lines
1.8 KiB
C
83 lines
1.8 KiB
C
/*
|
|
* Copyright (C) 2009 Karel Zak <kzak@redhat.com>
|
|
*
|
|
* This file may be redistributed under the terms of the
|
|
* GNU Lesser General Public License.
|
|
*/
|
|
|
|
/**
|
|
* SECTION: iter
|
|
* @title: Iterator
|
|
* @short_description: unified iterator
|
|
*
|
|
* The iterator keeps the direction and the last position for access to the
|
|
* internal library tables/lists.
|
|
*
|
|
* It's very unusual to use the same iterator on multiple places in your
|
|
* application or share the same iterator, for this purpose libfdisk does not
|
|
* provide reference counting for this object. It's recommended to initialize
|
|
* the iterator by fdisk_new_iter() at begin of your function and then
|
|
* fdisk_free_iter() before you return from the function.
|
|
*
|
|
* Don't forget to call fdisk_reset_iter() if you want to use the iterator more
|
|
* than once.
|
|
*/
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "fdiskP.h"
|
|
|
|
/**
|
|
* fdisk_new_iter:
|
|
* @direction: FDISK_INTER_{FOR,BACK}WARD direction
|
|
*
|
|
* Returns: newly allocated generic libmount iterator.
|
|
*/
|
|
struct fdisk_iter *fdisk_new_iter(int direction)
|
|
{
|
|
struct fdisk_iter *itr = calloc(1, sizeof(*itr));
|
|
if (!itr)
|
|
return NULL;
|
|
itr->direction = direction;
|
|
return itr;
|
|
}
|
|
|
|
/**
|
|
* fdisk_free_iter:
|
|
* @itr: iterator pointer
|
|
*
|
|
* Deallocates the iterator.
|
|
*/
|
|
void fdisk_free_iter(struct fdisk_iter *itr)
|
|
{
|
|
free(itr);
|
|
}
|
|
|
|
/**
|
|
* fdisk_reset_iter:
|
|
* @itr: iterator pointer
|
|
* @direction: FDISK_INTER_{FOR,BACK}WARD or -1 to keep the direction unchanged
|
|
*
|
|
* Resets the iterator.
|
|
*/
|
|
void fdisk_reset_iter(struct fdisk_iter *itr, int direction)
|
|
{
|
|
if (direction == -1)
|
|
direction = itr->direction;
|
|
|
|
memset(itr, 0, sizeof(*itr));
|
|
itr->direction = direction;
|
|
}
|
|
|
|
/**
|
|
* fdisk_iter_get_direction:
|
|
* @itr: iterator pointer
|
|
*
|
|
* Returns: FDISK_INTER_{FOR,BACK}WARD
|
|
*/
|
|
int fdisk_iter_get_direction(struct fdisk_iter *itr)
|
|
{
|
|
return itr->direction;
|
|
}
|