diff --git a/buildtool.cpp b/buildtool.cpp
index 11d6b7fa990d52b6da5c9660af73142777238d36..d738e03a24c47422765dc8c987bb05abab7f18dd 100644 (file)
--- a/buildtool.cpp
+++ b/buildtool.cpp
*/
bool copyFile(const String &srcFile, const String &destFile);
+ /**
+ * Tests if the file exists and is a regular file
+ */
+ bool isRegularFile(const String &fileName);
+
+ /**
+ * Tests if the file exists and is a directory
+ */
+ bool isDirectory(const String &fileName);
+
/**
* Tests is the modification date of fileA is newer than fileB
*/
}
//# 3 do the data copy
+#ifndef __WIN32__
+
FILE *srcf = fopen(srcNative.c_str(), "rb");
if (!srcf)
{
fclose(destf);
fclose(srcf);
+#else
+
+ if (!CopyFile(srcNative.c_str(), destNative.c_str(), false))
+ {
+ error("copyFile from %s to %s failed",
+ srcNative.c_str(), destNative.c_str());
+ return false;
+ }
+
+#endif /* __WIN32__ */
+
+
+ return true;
+}
+
+
+/**
+ * Tests if the file exists and is a regular file
+ */
+bool MakeBase::isRegularFile(const String &fileName)
+{
+ String native = getNativePath(fileName);
+ struct stat finfo;
+
+ //Exists?
+ if (stat(native.c_str(), &finfo)<0)
+ return false;
+
+
+ //check the file mode
+ if (!S_ISREG(finfo.st_mode))
+ return false;
+
+ return true;
+}
+
+/**
+ * Tests if the file exists and is a directory
+ */
+bool MakeBase::isDirectory(const String &fileName)
+{
+ String native = getNativePath(fileName);
+ struct stat finfo;
+
+ //Exists?
+ if (stat(native.c_str(), &finfo)<0)
+ return false;
+
+
+ //check the file mode
+ if (!S_ISDIR(finfo.st_mode))
+ return false;
return true;
}
String fullDest = parent.resolve(toFileName);
//trace("copy %s to file %s", fullSource.c_str(),
// fullDest.c_str());
+ if (!isRegularFile(fullSource))
+ {
+ error("copy : file %s does not exist", fullSource.c_str());
+ return false;
+ }
if (!isNewerThan(fullSource, fullDest))
{
return true;
String fullDest = parent.resolve(destPath);
//trace("copy %s to new dir : %s", fullSource.c_str(),
// fullDest.c_str());
+ if (!isRegularFile(fullSource))
+ {
+ error("copy : file %s does not exist", fullSource.c_str());
+ return false;
+ }
if (!isNewerThan(fullSource, fullDest))
{
return true;