22 lines
		
	
	
		
			428 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			22 lines
		
	
	
		
			428 B
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #include "taia.h"
 | ||
|  | 
 | ||
|  | /* XXX: breaks tai encapsulation */ | ||
|  | 
 | ||
|  | void taia_sub(struct taia *t, struct taia *u, struct taia *v) | ||
|  | { | ||
|  |   unsigned long unano = u->nano; | ||
|  |   unsigned long uatto = u->atto; | ||
|  | 
 | ||
|  |   t->sec.x = u->sec.x - v->sec.x; | ||
|  |   t->nano = unano - v->nano; | ||
|  |   t->atto = uatto - v->atto; | ||
|  |   if (t->atto > uatto) { | ||
|  |     t->atto += 1000000000UL; | ||
|  |     --t->nano; | ||
|  |   } | ||
|  |   if (t->nano > unano) { | ||
|  |     t->nano += 1000000000UL; | ||
|  |     --t->sec.x; | ||
|  |   } | ||
|  | } |