1 /* { dg-do compile } */
2 
3 int sigemptyset (int *);
4 int sigaddset(int, int);
5 int sigprocmask ();
6 struct jobstats
7 {
8   int j_jobslots;
9 };
10 struct jobstats js;
11 int *jobs;
12 
13 typedef int sh_job_map_func_t (int *, int, int, int);
14 
15 static void
map_over_jobs(sh_job_map_func_t func)16 map_over_jobs (sh_job_map_func_t func)
17 {
18   int i;
19   int set, oset;
20   if (js.j_jobslots)
21     return;
22   sigemptyset (&set);
23   sigaddset (set, 17);
24   sigemptyset (&oset);
25   sigprocmask (0, set, oset);
26   for (i = 0; js.j_jobslots; i++)
27     if (jobs[i])
28       func (jobs, 0, 0, 0);
29   sigprocmask (oset, ((void *) 0));
30 }
31 
32 int
print_job(int * job,int format,int state,int job_index)33 print_job (int *job, int format, int state, int job_index)
34 {
35   map_over_jobs (print_job);
36 }
37 
38 void
list_running_jobs(void)39 list_running_jobs (void)
40 {
41   map_over_jobs (print_job);
42 }
43 
44