bool File::isReadable(const char *file)
{
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later
+
+ return _access_s(file, R_OK) == 0;
+
+#else
+
return access(file, R_OK) == 0;
+
+#endif
+
}
bool File::isWritable(const char *file)
{
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later
+
+ return _access_s(file, W_OK) == 0;
+
+#else
+
return access(file, W_OK) == 0;
+
+#endif
+
}
////////////////////////////////////////////////////////////////////////////////
{
// First try with read / write mode, if that fails, fall back to read only.
-#ifdef _WIN32
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later
+ errno_t err;
if(wcslen((const wchar_t *) fileName) > 0) {
+ if(openReadOnly)
+ err = _wfopen_s(&file, name, L"rb");
+ else {
+ err = _wfopen_s(&file, name, L"rb+");
+
+ if(err == 0)
+ readOnly = false;
+ else
+ err = _wfopen_s(&file, name, L"rb");
+ }
+
+ if(err == 0)
+ return;
+ }
+
+ if(openReadOnly)
+ err = fopen_s(&file, name, "rb");
+ else {
+ err = fopen_s(&file, name, "rb+");
+
+ if(err == 0)
+ readOnly = false;
+ else
+ err = fopen_s(&file, name, "rb");
+ }
+
+ if(err != 0) {
+ debug("Could not open file " + String((const char *) name));
+ }
+
+#else // defined(_MSC_VER) && (_MSC_VER >= 1400)
+# ifdef _WIN32
+
+ if(wcslen((const wchar_t *) fileName) > 0) {
if(openReadOnly)
file = _wfopen(name, L"rb");
else {
if(file)
return;
-
}
-#endif
+# endif // defined(_WIN32)
if(openReadOnly)
file = fopen(name, "rb");
file = fopen(name, "rb");
}
- if(!file)
- {
+ if(!file) {
debug("Could not open file " + String((const char *) name));
}
+
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1400)
+
}
////////////////////////////////////////////////////////////////////////////////
void FileStream::truncate(long length)
{
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later
+
+ ftruncate(_fileno(d->file), length);
+
+#else
+
ftruncate(fileno(d->file), length);
+
+#endif
+
}
TagLib::uint FileStream::bufferSize()
std::string buffer = to8Bit(unicode);
d->CString = new char[buffer.size() + 1];
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later
+
+ strcpy_s(d->CString, buffer.size() + 1, buffer.c_str());
+
+#else
+
strcpy(d->CString, buffer.c_str());
+#endif
+
return d->CString;
}