mirror of https://github.com/gnss-sdr/gnss-sdr
59 lines
1.3 KiB
C
59 lines
1.3 KiB
C
// SPDX-FileCopyrightText: 2017 Google Inc.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
#include "internal/filesystem.h"
|
|
#include <errno.h>
|
|
#include <fcntl.h>
|
|
#include <stdlib.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/types.h>
|
|
|
|
#if defined(CPU_FEATURES_MOCK_FILESYSTEM)
|
|
// Implementation will be provided by test/filesystem_for_testing.cc.
|
|
#elif defined(_MSC_VER)
|
|
#include <io.h>
|
|
int CpuFeatures_OpenFile(const char* filename)
|
|
{
|
|
int fd = -1;
|
|
_sopen_s(&fd, filename, _O_RDONLY, _SH_DENYWR, _S_IREAD);
|
|
return fd;
|
|
}
|
|
|
|
void CpuFeatures_CloseFile(int file_descriptor) { _close(file_descriptor); }
|
|
|
|
int CpuFeatures_ReadFile(int file_descriptor, void* buffer,
|
|
size_t buffer_size)
|
|
{
|
|
return _read(file_descriptor, buffer, (unsigned int)buffer_size);
|
|
}
|
|
|
|
#else
|
|
#include <unistd.h>
|
|
|
|
int CpuFeatures_OpenFile(const char* filename)
|
|
{
|
|
int result;
|
|
do
|
|
{
|
|
result = open(filename, O_RDONLY);
|
|
}
|
|
while (result == -1L && errno == EINTR);
|
|
return result;
|
|
}
|
|
|
|
void CpuFeatures_CloseFile(int file_descriptor) { close(file_descriptor); }
|
|
|
|
int CpuFeatures_ReadFile(int file_descriptor, void* buffer,
|
|
size_t buffer_size)
|
|
{
|
|
int result;
|
|
do
|
|
{
|
|
result = read(file_descriptor, buffer, buffer_size);
|
|
}
|
|
while (result == -1L && errno == EINTR);
|
|
return result;
|
|
}
|
|
|
|
#endif
|