summaryrefslogtreecommitdiff
path: root/src/libdatastruct/genset_iter_withcancel.c
blob: 6b70c6872730d3a1122915d02b4aba3d41988002 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* ISC license. */

#include <stdint.h>
#include <errno.h>

#include <skalibs/genset.h>

int genset_iter_withcancel (genset *g, iter_func_ref f, iter_func_ref cancelf, void *stuff)
{
  uint32_t n = genset_iter(g, f, stuff) ;
  if (n < g->max)
  {
    int e = errno ;
    genset_iter_nocancel(g, n, cancelf, stuff) ;
    errno = e ;
    return 0 ;
  }
  return 1 ;
}