Index: tools/checkers/vcc.py
===================================================================
--- tools/checkers/vcc.py	(revision 04c3a21f4ed0a01352f34b0f63daa534d7ea67de)
+++ tools/checkers/vcc.py	(revision 679c3610469a02f55062c989fd636a00457f8334)
@@ -45,4 +45,26 @@
 	print prname + " <ROOT>"
 
+def cygpath(upath):
+	"Convert Unix (Cygwin) path to Windows path"
+	
+	return subprocess.Popen(['cygpath', '--windows', '--absolute', upath], stdout = subprocess.PIPE).communicate()[0].strip()
+
+def preprocess(srcfname, tmpfname, base, options):
+	"Preprocess source using GCC preprocessor"
+	
+	args = ['gcc', '-E']
+	args.extend(options.split())
+	args.extend(['-o', tmpfname, srcfname])
+	
+	cwd = os.getcwd()
+	os.chdir(base)
+	retval = subprocess.Popen(args).wait()
+	os.chdir(cwd)
+	
+	if (retval != 0):
+		return False
+	
+	return True
+
 def vcc(root, job):
 	"Run Vcc on a jobfile"
@@ -80,16 +102,29 @@
 			return False
 		
+		tmpfname = "%s.preproc" % srcfname
+		tmpfqname = os.path.join(base, tmpfname)
+		
 		# Only C files are interesting for us
 		if (arg[2] != "cc"):
 			continue
 		
-		# Run Stanse
+		# Preprocess sources
 		
-		retval = subprocess.Popen(['vcc', srcfqname]).wait()
+		if (not preprocess(srcfname, tmpfname, base, options)):
+			return False
+		
+		# Run Vcc
+		
+		retval = subprocess.Popen(['vcc', cygpath(tmpfqname)]).wait()
+		
+		# Cleanup
+		
+		if (os.path.isfile(tmpfqname)):
+			os.remove(tmpfqname)
 		
 		if (retval != 0):
 			return False
 	
-	return False
+	return True
 
 def main():
