48 lines
		
	
	
		
			981 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			981 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| commit d2aef8b3967e53fe58178f5af50fef488ee0faed
 | |
| Author: Jens Muecke <jens@nons.de>
 | |
| Date:   Thu Jan 26 00:37:52 2012 +0100
 | |
| 
 | |
|     120-portability
 | |
| 
 | |
| diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c
 | |
| index c01e0b9..2e2f320 100644
 | |
| --- a/copy/xfs_copy.c
 | |
| +++ b/copy/xfs_copy.c
 | |
| @@ -463,6 +463,15 @@ read_ag_header(int fd, xfs_agnumber_t agno, wbuf *buf, ag_header_t *ag,
 | |
|  }
 | |
|  
 | |
|  
 | |
| +static void sig_mask(int type)
 | |
| +{
 | |
| +	sigset_t mask;
 | |
| +	sigemptyset(&mask);
 | |
| +	sigaddset(&mask, SIGCHLD);
 | |
| +	sigprocmask(type, &mask, NULL);
 | |
| +}
 | |
| +
 | |
| +
 | |
|  void
 | |
|  write_wbuf(void)
 | |
|  {
 | |
| @@ -478,9 +487,9 @@ write_wbuf(void)
 | |
|  		if (target[i].state != INACTIVE)
 | |
|  			pthread_mutex_unlock(&targ[i].wait);	/* wake up */
 | |
|  
 | |
| -	sigrelse(SIGCHLD);
 | |
| +	sig_mask(SIG_UNBLOCK);
 | |
|  	pthread_mutex_lock(&mainwait);
 | |
| -	sighold(SIGCHLD);
 | |
| +	sig_mask(SIG_BLOCK);
 | |
|  }
 | |
|  
 | |
|  
 | |
| @@ -847,7 +856,7 @@ main(int argc, char **argv)
 | |
|  	/* set up sigchild signal handler */
 | |
|  
 | |
|  	signal(SIGCHLD, handler);
 | |
| -	sighold(SIGCHLD);
 | |
| +	sig_mask(SIG_BLOCK);
 | |
|  
 | |
|  	/* make children */
 | |
|  
 | 
