/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ /* * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define _POSIX_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // for COMMAND_LINE_SIZE #include "system-recovery.h" void sys_power_reboot(void) { reboot(RB_AUTOBOOT); } #define KERNEL_CMDLINE_KEY "tizen.recovery" // looks for tizen.recovery= key in kernel command line char *get_action_from_cmdline(void) { FILE *fp; char cmdline[COMMAND_LINE_SIZE]; int len; fp = fopen("/proc/cmdline", "r"); if (!fp) return NULL; char *p = fgets(cmdline, sizeof cmdline, fp); fclose(fp); if (!p) return NULL; const char *prefix = KERNEL_CMDLINE_KEY "="; p = strstr(cmdline, prefix); if (!p) return NULL; p += strlen(prefix); for (len = 0; *(p + len) != 0 && !isspace(*(p + len)); ++len) ; /* skip */ return strndup(p, len); } int main(void) { config_t cfg; int ret; LOGD("[main] recovery started.\n"); config_init(&cfg); ret = config_read_file(&cfg, SYSTEM_RECOVERY_CONFIG_FILE); if (ret == CONFIG_FALSE) { LOGD("Can't read config file"); return 1; } #ifdef RECOVERY_GUI ret = recovery_gui(&cfg); #else ret = recovery_headless(&cfg); #endif LOGD("[main] recovery finished.\n"); config_destroy(&cfg); return ret; }