2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "PlatformPosix.h"
10 #include "application/AppEnvironment.h"
11 #include "application/AppParamParser.h"
12 #include "platform/xbmc.h"
14 #if defined(TARGET_LINUX) || defined(TARGET_FREEBSD)
15 #include "platform/linux/AppParamParserLinux.h"
19 #include "platform/linux/AppParamParserWebOS.h"
28 #include <sys/resource.h>
32 extern "C" void XBMC_POSIX_HandleSignal(int sig
)
34 // Setting an atomic flag is one of the only useful things that is permitted by POSIX
36 CPlatformPosix::RequestQuit();
41 int main(int argc
, char* argv
[])
45 rlim
.rlim_cur
= rlim
.rlim_max
= RLIM_INFINITY
;
46 if (setrlimit(RLIMIT_CORE
, &rlim
) == -1)
47 fprintf(stderr
, "Failed to set core size limit (%s).\n", strerror(errno
));
50 // Set up global SIGINT/SIGTERM handler
51 struct sigaction signalHandler
;
52 std::memset(&signalHandler
, 0, sizeof(signalHandler
));
53 signalHandler
.sa_handler
= &XBMC_POSIX_HandleSignal
;
54 signalHandler
.sa_flags
= SA_RESTART
;
55 sigaction(SIGINT
, &signalHandler
, nullptr);
56 sigaction(SIGTERM
, &signalHandler
, nullptr);
58 setlocale(LC_NUMERIC
, "C");
61 CAppParamParserWebOS appParamParser
;
62 #elif defined(TARGET_LINUX) || defined(TARGET_FREEBSD)
63 CAppParamParserLinux appParamParser
;
65 CAppParamParser appParamParser
;
67 appParamParser
.Parse(argv
, argc
);
69 CAppEnvironment::SetUp(appParamParser
.GetAppParams());
70 int status
= XBMC_Run(true);
71 CAppEnvironment::TearDown();