On Thursday 24 June 2010 02:30:45 Josh Triplett wrote:
> In trying to debug a semantic patch, I noticed that spatch failed to
> find some header files included with "..." rather than <...>.
> 
> For example, in Xlib, modules/im/ximcp/imCallbk.c has:
> 
> #include "Xlibint.h"
> #include "Xlcint.h"
> #include "Ximint.h"
> #include "XlcPubI.h"
> 
> These files all exist in directories I've specified with the -I option,
> and I've passed -all_includes.  However, spatch says:
> 
> TYPE: header modules/im/ximcp/Xlibint.h not found
> TYPE: header modules/im/ximcp/Xlcint.h not found
> TYPE: header modules/im/ximcp/Ximint.h not found
> TYPE: header modules/im/ximcp/XlcPubI.h not found
> 
> If I change those includes to use <> rather than "", spatch stops
> complaining.  However, both <> and "" should search the include path; ""
> just searches the directory of the file containing the #include "..."
> first.

The following patch should fix it.

--- coccinelle-0.2.3rc3/cocci.ml        2010-06-19 04:32:04.000000000 +0200
+++ coccinelle-release/cocci.ml 2010-06-24 10:30:18.000000000 +0200
@@ -582,14 +582,18 @@
                let relpath = Common.join "/" xs in
                let f = Filename.concat dir (relpath) in
              (* for our tests, all the files are flat in the current dir *)
-               if not (Sys.file_exists f) && !Flag_cocci.relax_include_path
-               then
-                 let attempt2 = Filename.concat dir (Common.last xs) in
-                 if not (Sys.file_exists f) && all_includes
+               if (Sys.file_exists f) then
+                 Some f
+               else
+                 if !Flag_cocci.relax_include_path
                  then
+                   let attempt2 = Filename.concat dir (Common.last xs) in
+                     if not (Sys.file_exists f) && all_includes
+                     then
+                       interpret_include_path relpath
+                     else Some attempt2
+                 else
                    interpret_include_path relpath
-                 else Some attempt2
-               else Some f
 
             | Ast_c.NonLocal xs ->
                let relpath = Common.join "/" xs in

> 
> - Josh Triplett
> _______________________________________________
> Cocci mailing list
> [email protected]
> http://lists.diku.dk/mailman/listinfo/cocci
> (Web access from inside DIKUs LAN only)
> 

-- 
Nicolas Palix
Tel: (+33) 1 44 27 87 25
Tel: (+33) 6 81 07 91 72
Web: http://www.diku.dk/~npalix/
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to