1 /*
2  *  Copyright (C) 2019 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #include "PlatformPosix.h"
10 
11 #include "filesystem/SpecialProtocol.h"
12 
13 #include <cstdlib>
14 #include <time.h>
15 
16 std::atomic_flag CPlatformPosix::ms_signalFlag;
17 
Init()18 bool CPlatformPosix::Init()
19 {
20 
21   if (!CPlatform::Init())
22     return false;
23 
24   // Initialize to "set" state
25   ms_signalFlag.test_and_set();
26 
27   // Initialize timezone information variables
28   tzset();
29 
30   // set special://envhome
31   if (getenv("HOME"))
32   {
33     CSpecialProtocol::SetEnvHomePath(getenv("HOME"));
34   }
35   else
36   {
37     fprintf(stderr, "The HOME environment variable is not set!\n");
38     return false;
39   }
40 
41   return true;
42 }
43 
TestQuitFlag()44 bool CPlatformPosix::TestQuitFlag()
45 {
46   // Keep set, return true when it was cleared before
47   return !ms_signalFlag.test_and_set();
48 }
49 
RequestQuit()50 void CPlatformPosix::RequestQuit()
51 {
52   ms_signalFlag.clear();
53 }
54