Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libast/stdio/fcloseall.c
1810 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1985-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* David Korn <[email protected]> *
19
* Phong Vo <[email protected]> *
20
* *
21
***********************************************************************/
22
#pragma prototyped
23
24
#include "stdhdr.h"
25
26
#define MAXLOOP 3
27
28
int
29
fcloseall(void)
30
{
31
Sfpool_t* p;
32
Sfpool_t* next;
33
int n;
34
int nclose;
35
int count;
36
int loop;
37
38
STDIO_INT(0, "fcloseall", int, (void), ())
39
40
for(loop = 0; loop < MAXLOOP; ++loop)
41
{ nclose = count = 0;
42
for(p = &_Sfpool; p; p = next)
43
{ /* find the next legitimate pool */
44
for(next = p->next; next; next = next->next)
45
if(next->n_sf > 0)
46
break;
47
for(n = 0; n < ((p == &_Sfpool) ? p->n_sf : 1); ++n)
48
{ count += 1;
49
if(sfclose(p->sf[n]) >= 0)
50
nclose += 1;
51
}
52
}
53
if(nclose == count)
54
break;
55
}
56
return 0; /* always return 0 per GNU */
57
}
58
59