blob: 6a32915f42eab7adbd175bff4a4a18471d81f6d4 [file] [log] [blame]
#if SB_API_VERSION < 16
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include "starboard/directory.h"
int mkdir(const char *path, mode_t mode)
{
if (SbDirectoryCreate(path)){
return 0;
}
return -1;
}
// Reverse implementation of TimeTToWindowsUsec and PosixTimeToWindowsTime for backwards compatibility
// TimeTToWindowsUsec converts to microseconds (*1000000) and then calls PosixTimeToWindowsTime
// PosixTimeToWindows time adds number of microseconds since Jan 1, 1601 (UTC) until Jan 1, 1970 (UTC)
static SB_C_FORCE_INLINE time_t WindowsUsecToTimeT(int64_t time) {
int64_t posix_time = time - 11644473600000000ULL;
posix_time = posix_time / 1000000;
return posix_time;
}
// SbDirectoryCanOpen, SbFileGetPathInfo, SbFileExists, SbFileCanOpen
int stat(const char *path, struct stat *file_info)
{
SbFileInfo out_info;
if (!SbFileGetPathInfo(path, &out_info)){
return -1;
}
file_info -> st_mode = 0;
if (out_info.is_directory){
file_info->st_mode = S_IFDIR;
} else if (out_info.is_symbolic_link){
file_info->st_mode = S_IFLNK;
}
file_info->st_ctime = WindowsUsecToTimeT(out_info.creation_time);
file_info->st_atime = WindowsUsecToTimeT(out_info.last_accessed);
file_info->st_mtime = WindowsUsecToTimeT(out_info.last_modified);
file_info->st_size = out_info.size;
return 0;
}
#endif // SB_API_VERSION < 16