94 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			94 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | /// | ||
|  | /// Use resource_size function on resource object | ||
|  | /// instead of explicit computation. | ||
|  | /// | ||
|  | //  Confidence: High | ||
|  | //  Copyright: (C) 2009, 2010 Nicolas Palix, DIKU.  GPLv2. | ||
|  | //  Copyright: (C) 2009, 2010 Julia Lawall, DIKU.  GPLv2. | ||
|  | //  Copyright: (C) 2009, 2010 Gilles Muller, INRIA/LiP6.  GPLv2. | ||
|  | //  URL: http://coccinelle.lip6.fr/ | ||
|  | //  Options: | ||
|  | // | ||
|  | //  Keywords: resource_size | ||
|  | //  Version min: 2.6.27 resource_size | ||
|  | // | ||
|  | 
 | ||
|  | virtual context | ||
|  | virtual patch | ||
|  | virtual org | ||
|  | virtual report | ||
|  | 
 | ||
|  | //---------------------------------------------------------- | ||
|  | //  For context mode | ||
|  | //---------------------------------------------------------- | ||
|  | 
 | ||
|  | @r_context depends on context && !patch && !org@ | ||
|  | struct resource *res; | ||
|  | @@ | ||
|  | 
 | ||
|  | * (res->end - res->start) + 1 | ||
|  | 
 | ||
|  | //---------------------------------------------------------- | ||
|  | //  For patch mode | ||
|  | //---------------------------------------------------------- | ||
|  | 
 | ||
|  | @r_patch depends on !context && patch && !org@ | ||
|  | struct resource *res; | ||
|  | @@ | ||
|  | 
 | ||
|  | - (res->end - res->start) + 1 | ||
|  | + resource_size(res) | ||
|  | 
 | ||
|  | //---------------------------------------------------------- | ||
|  | //  For org mode | ||
|  | //---------------------------------------------------------- | ||
|  | 
 | ||
|  | 
 | ||
|  | @r_org depends on !context && !patch && (org || report)@ | ||
|  | struct resource *res; | ||
|  | position p; | ||
|  | @@ | ||
|  | 
 | ||
|  |  (res->end@p - res->start) + 1 | ||
|  | 
 | ||
|  | @rbad_org depends on !context && !patch && (org || report)@ | ||
|  | struct resource *res; | ||
|  | position p != r_org.p; | ||
|  | @@ | ||
|  | 
 | ||
|  |  res->end@p - res->start | ||
|  | 
 | ||
|  | @script:python depends on org@ | ||
|  | p << r_org.p; | ||
|  | x << r_org.res; | ||
|  | @@ | ||
|  | 
 | ||
|  | msg="ERROR with %s" % (x) | ||
|  | msg_safe=msg.replace("[","@(").replace("]",")") | ||
|  | coccilib.org.print_todo(p[0], msg_safe) | ||
|  | 
 | ||
|  | @script:python depends on report@ | ||
|  | p << r_org.p; | ||
|  | x << r_org.res; | ||
|  | @@ | ||
|  | 
 | ||
|  | msg="ERROR: Missing resource_size with %s" % (x) | ||
|  | coccilib.report.print_report(p[0], msg) | ||
|  | 
 | ||
|  | @script:python depends on org@ | ||
|  | p << rbad_org.p; | ||
|  | x << rbad_org.res; | ||
|  | @@ | ||
|  | 
 | ||
|  | msg="WARNING with %s" % (x) | ||
|  | msg_safe=msg.replace("[","@(").replace("]",")") | ||
|  | coccilib.org.print_todo(p[0], msg_safe) | ||
|  | 
 | ||
|  | @script:python depends on report@ | ||
|  | p << rbad_org.p; | ||
|  | x << rbad_org.res; | ||
|  | @@ | ||
|  | 
 | ||
|  | msg="WARNING: Suspicious code. resource_size is maybe missing with %s" % (x) | ||
|  | coccilib.report.print_report(p[0], msg) |