summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/ccerror.h14
-rwxr-xr-xsrc/factory-reset-util.c389
-rw-r--r--src/factory-reset-util.h51
-rw-r--r--[-rwxr-xr-x]src/factory-reset.c312
-rwxr-xr-xsrc/resetCCMode.c72
-rw-r--r--src/rstsmack.c2
6 files changed, 23 insertions, 817 deletions
diff --git a/src/ccerror.h b/src/ccerror.h
deleted file mode 100755
index e9d0d6c..0000000
--- a/src/ccerror.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef CC_ERROR_H
-#define CC_ERROR_H
-
-#define CC_ERROR_BASE 500
-#define CC_ERROR_FILE_BASE 100
-#define CC_ERROR_FUNCTION_BASE 20
-#define CC_ERROR_NONE 0
-
-#define CC_ERROR_UTIL_GETCCMODE CC_ERROR_BASE //500
-#define CC_ERROR_UTIL_RESETSBFCCM CC_ERROR_UTIL_GETCCMODE+CC_ERROR_FUNCTION_BASE
-#define CC_ERROR_ZEROISE CC_ERROR_UTIL_GETCCMODE+CC_ERROR_FILE_BASE
-#define CC_ERROR_VERIFY 100 //100
-
-#endif
diff --git a/src/factory-reset-util.c b/src/factory-reset-util.c
deleted file mode 100755
index 7564366..0000000
--- a/src/factory-reset-util.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * Copyright (c) 2000 - 2017 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- * Created by Wonil Choi <wonil22.choi@samsung.com>
- *
- * 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.
- *
- */
-
-#include <stdio.h>
-#include <getopt.h>
-
-#if 0
-#ifndef TELEPHONY_DISABLE
-#include <tapi_common.h>
-#include <TapiCommon.h>
-#include <ITapiModem.h>
-#include <ITapiCfg.h>
-#endif
-#endif
-
-//#include <Ecore_X.h>
-//#include <utilX.h>
-#include <appcore-efl.h>
-
-#include "factory-reset-util.h"
-
-#ifndef FACTORY_RESET_FONT_SIZE
-#define FACTORY_RESET_FONT_SIZE 34 /* default font size */
-#endif
-
-#define FACTORY_RESET_PROCESS_MSG dgettext("factory-reset",\
- "IDS_ST_BODY_PERFORMING_FACTORY_DATA_RESET_PLEASE_WAIT_ING")
-
-static void win_del(void *data, Evas_Object *obj, void *event)
-{
- elm_exit();
-}
-
-static void main_quit_cb(void *data, Evas_Object *obj,
- const char *emission, const char *source)
-{
- elm_exit();
-}
-
-static Evas_Object* create_win(const char *name)
-{
- Evas_Object *eo;
- //Ecore_X_Window xwin;
- int w, h;
-
- w = 200;
- h = 400;
-
- eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
- if (!eo)
- return NULL;
-
- elm_win_title_set(eo, name);
- elm_win_borderless_set(eo, EINA_TRUE);
- evas_object_smart_callback_add(eo, "delete,request", win_del, NULL);
- //ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
- evas_object_resize(eo, w, h);
-
- /* For default color */
- //ea_theme_changeable_ui_enabled_set(EINA_TRUE);
-
-#if 0
- /* Get x-window */
- xwin = elm_win_xwindow_get(eo);
- if (xwin == 0) {
- FR_LOGD("elm_win_xwindow_get() failed\n");
- return eo;
- }
-#endif
-
- /* set notification type */
- //ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_NOTIFICATION);
-
- /* set notification's priority */
- //utilx_set_system_notification_level(ecore_x_display_get(), xwin, UTILX_NOTIFICATION_LEVEL_NORMAL);
-
- return eo;
-}
-
-static Evas_Object* load_edj(Evas_Object *parent, const char *file,
- const char *group)
-{
- Evas_Object *eo;
- int r;
-
- eo = elm_layout_add(parent);
- if (eo) {
- r = elm_layout_file_set(eo, file, group);
- if (!r) {
- evas_object_del(eo);
- return NULL;
- }
-
- evas_object_size_hint_weight_set(eo,
- EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- }
-
- return eo;
-}
-
-#if 0
-static Evas_Object* _create_progressbar(Evas_Object* parent)
-{
- Evas_Object *progressbar;
- Evas_Object *layout = parent;
-
- /* pending_list style */
- progressbar = elm_progressbar_add(layout);
- elm_object_style_set(progressbar, "pending");
- elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
- evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_progressbar_pulse(progressbar, EINA_TRUE);
- elm_object_part_content_set(layout, "pending_pbar", progressbar);
- evas_object_show(progressbar);
-
- return layout;
-}
-#endif
-
-static Evas_Object* _create_label(Evas_Object* parent)
-{
- Evas_Object *label, *layout = parent;
- char mesg[1024];
-
- if (parent == NULL)
- return NULL;
-
- snprintf(mesg, sizeof(mesg),
- "<align=center><font color=#C7C7C7><font_size=%d>%s",
- FACTORY_RESET_FONT_SIZE, FACTORY_RESET_PROCESS_MSG);
-
- label = elm_label_add(layout);
- elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
- evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_part_content_set(layout, "txt_mesg", label);
- elm_object_text_set(label, mesg);
- evas_object_show(label);
-
- return layout;
-}
-
-static int app_create(void *data)
-{
- struct appdata *ad = data;
- Evas_Object *win;
- Evas_Object *ly;
- int r;
-
- /* create window */
- win = create_win(PACKAGE);
- if (win == NULL)
- return -1;
- ad->win = win;
-
- elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
- evas_object_show(win);
-
- /* load edje */
- ly = load_edj(win, EDJ_FILE, GRP_MAIN);
- if (ly == NULL)
- return -1;
- elm_win_resize_object_add(win, ly);
- edje_object_signal_callback_add(elm_layout_edje_get(ly),
- "EXIT", "*", main_quit_cb, NULL);
- ad->ly_main = ly;
-
- /* init internationalization */
- r = appcore_set_i18n(PACKAGE, LOCALEDIR);
- if (r)
- return -1;
-
- //_create_progressbar(ly);
- _create_label(ly);
-
- evas_object_show(ly);
- evas_object_show(win);
-
- return 0;
-}
-
-static int app_terminate(void *data)
-{
- struct appdata *ad = data;
-
- if (ad->ly_main)
- evas_object_del(ad->ly_main);
-
- if (ad->win)
- evas_object_del(ad->win);
-
- return 0;
-}
-
-static int app_pause(void *data)
-{
- return 0;
-}
-
-static int app_resume(void *data)
-{
- return 0;
-}
-
-static int app_reset(bundle *b, void *data)
-{
- struct appdata *ad = data;
-
- if (ad->win)
- elm_win_activate(ad->win);
-
- return 0;
-}
-
-#if 0
-#ifndef TELEPHONY_DISABLE
-#define CP_OFF_TIMEOUT 15
-static Ecore_Timer *timer_id;
-
-static void cp_shutdown_exit(TapiHandle *handle, const char *noti_id,
- void *data, void *user_data)
-{
- tel_deinit(handle);
- ecore_main_loop_quit();
-}
-
-static void tapi_response(TapiHandle *handle, int result,
- void *data, void *user_data)
-{
- if (result != TAPI_API_SUCCESS) {
- tel_deinit(handle);
- ecore_main_loop_quit();
- }
-}
-
-static Eina_Bool timeout_exit(void *data)
-{
- perror("no notification from telephony!!");
- ecore_main_loop_quit();
- return EINA_TRUE;
-}
-
-static int cp_shutdown(void)
-{
- int ret = 0;
- TapiHandle *tapi_handle = 0;
-
- tapi_handle = tel_init(0);
-
- if (tapi_handle == NULL)
- return -1;
-
- FR_LOGD("CP shutdown\n");
-
- ret = tel_register_noti_event(tapi_handle, TAPI_NOTI_MODEM_POWER,
- cp_shutdown_exit, NULL);
- if (ret != TAPI_API_SUCCESS)
- goto out;
-
- ret = tel_process_power_command(tapi_handle, TAPI_PHONE_POWER_OFF,
- tapi_response, NULL);
- if (ret != TAPI_API_SUCCESS)
- goto out;
-
- timer_id = ecore_timer_add(CP_OFF_TIMEOUT, timeout_exit, NULL);
- if (timer_id == NULL)
- ret = -1;
-out:
- if (ret < 0) {
- tel_deinit(tapi_handle);
- return -1;
- }
- return 0;
-}
-
-/* reset modem configs */
-static int cp_resetcfg(int reset_config)
-{
- int ret = 0;
-
- ret = tel_sec_init();
- if (ret != TAPI_SEC_API_SUCCESS)
- return -1;
- /*
- * Full reset: Initialize all configuration data.
- * Factory reset (AT+FACTORST=0,0): except IMEI(or ESN, MEID), RF
- * calibration date, MAC address.
- * Service reset (Settings -> Back up and reset -> Factory data reset):
- * except IMEI(or ESN, MEID), RF calibration date, MAC address, Life
- * time.
- * Custom reset: except IMEI(or ESN, MEID), RF calibration date, MAC
- * address, Life time, connection settings, WAP settings.
- */
- /* we use the Service reset currently. (except verizon) */
- ret = tel_set_cfg_default_configuration(reset_config);
- FR_LOGD("request cp reset with the flag value: %d\n", reset_config);
- tel_sec_deinit();
- return ret;
-}
-#else /* TELEPHONY_DISABLE */
-static int cp_shutdown(void)
-{
- return -1;
-} /* in order to avoid main loop */
-
-static int cp_resetcfg(int reset_config)
-{
- return 0;
-}
-#endif /* TELEPHONY_DISABLE */
-
-#endif
-
-
-int main(int argc, char *argv[])
-{
- struct appdata ad;
- struct appcore_ops ops = {
- .create = app_create,
- .terminate = app_terminate,
- .pause = app_pause,
- .resume = app_resume,
- .reset = app_reset,
- };
- int opt;
- int index = -1;
- struct option options[] = {
- {"displayui", 0, 0, 0},
- {"svcrstcp", 0, 0, 0}, /* modem service reset */
- {"ftrrstcp", 0, 0, 0}, /* modem factory reset */
- {"", 0, 0, 0},
- {"", 0, 0, 0},
- {0, 0, 0, 0}
- };
-
-
- opt = getopt_long(argc, argv, "", options, &index);
- if (opt == -1)
- return 0;
-
- switch (index) {
- case 0:
- memset(&ad, 0x0, sizeof(struct appdata));
- ops.data = &ad;
- return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
- case 1:
- ecore_init();
- //cp_resetcfg(TAPI_CFG_DEFAULT_SERVICE);
- //if ( cp_shutdown() == 0) ecore_main_loop_begin();
- ecore_shutdown();
- break;
- case 2:
- ecore_init();
- //cp_resetcfg(TAPI_CFG_DEFAULT_FACTORY);
- //if ( cp_shutdown() == 0) ecore_main_loop_begin();
- ecore_shutdown();
- break;
- break;
- case 3:
-
- break;
- case 4:
-
- break;
- default:
- ;
- }
-
- return 0;
-}
-
diff --git a/src/factory-reset-util.h b/src/factory-reset-util.h
deleted file mode 100644
index 7a19628..0000000
--- a/src/factory-reset-util.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2000 - 2017 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- * Created by Wonil Choi <wonil22.choi@samsung.com>
- *
- * 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.
- *
- */
-
-#include <Elementary.h>
-
-#if !defined(PACKAGE)
-# define PACKAGE "factory-reset-util"
-#endif
-#undef PACKAGE
-#define PACKAGE "factory-reset-util"
-#if !defined(LOCALEDIR)
-# define LOCALEDIR "/usr/share/locale"
-#endif
-
-#if !defined(EDJDIR)
-# define EDJDIR "/usr/share/edje"
-#endif
-
-#define EDJ_FILE "/usr/share/edje/factory-reset-util.edj"
-#define GRP_MAIN "main"
-
-struct appdata {
- Evas_Object *win;
- Evas_Object *ly_main;
-
- /* add more variables here */
-};
-
-#ifdef DEBUG
-# define FR_LOGD(fmt, arg...) printf(fmt, ##arg)
-#else
-# define FR_LOGD(fmt, arg...)
-#endif
-
diff --git a/src/factory-reset.c b/src/factory-reset.c
index aee4d59..b297454 100755..100644
--- a/src/factory-reset.c
+++ b/src/factory-reset.c
@@ -19,342 +19,74 @@
*/
#include <stdio.h>
-#include <stdlib.h>
#include <unistd.h>
-#include <string.h>
-#include <linux/reboot.h>
-#include <linux/limits.h>
-#include <sys/reboot.h>
-#include <sys/wait.h>
#include <sys/types.h>
-#include <time.h>
-#include <getopt.h>
-#include <dbus/dbus.h>
-#include <glib.h>
-
-//#define _USE_DBUS_OPTION
-
-#ifdef _USE_DBUS_OPTION
-#include <dbus/dbus-glib-lowlevel.h>
-#endif
-
-#define RESET_FLAG_FILE "/opt/.factoryreset"
-static const char RESET_BACKUP_FILE[2][40] = {
- "/usr/system/RestoreDir/opt.tar.gz",
- "/usr/system/RestoreDir/opt.zip"
-};
+#include <sys/wait.h>
+#include <sys/reboot.h>
+static const char *RESET_FLAG_FILE = "/opt/.factoryreset";
static const char *RUN_SCRIPT_FILE = "/usr/bin/run-factory-reset.sh";
-static const char *LOG_FILE = "/opt/.factoryreset.log";
-static const char *LOG_OLD = "/opt/.factoryreset.log.1";
-
-static char *reset_flag;
-void usage()
-{
- printf("Options: \n");
- printf(" -b, --dbus Start with dbus signal message\n");
- printf("\n");
-
- exit(0);
-}
-
-//extern int csc_svc_config_set_pre_config_for_factory_reset( void );
-/*==================================================================================
-* CSC API Code (12/10/11 applied)
- - Include header : #include "csc-dispatch.h"
- - API : int csc_svc_config_set_pre_config_for_factory_reset( void );
- - Return value : 1 (Success), 0 (Failure, 미리 저장해놓은 거래선 코드가 없을 경우 발생)
-====================================================================================*/
-int __system(const char *argv[])
+int run_factory_reset(void)
{
int status;
pid_t cpid;
+ const char *script_cmd[] = {RUN_SCRIPT_FILE, NULL};
cpid = fork();
+ /* error */
if (cpid == -1) {
perror("fork");
return -1;
}
+ /* child */
if (cpid == 0) {
- execvp(argv[0], (char *const *)argv);
+ execvp(script_cmd[0], (char *const *)script_cmd);
_exit(-1);
- } else {
- if (waitpid(cpid, &status, 0) == -1) {
- perror("waitpid failed");
- return -1;
- }
- if (WIFSIGNALED(status)) {
- perror("exit by signal");
- return -1;
- }
- if (!WIFEXITED(status)) {
- perror("exit abnormally");
- return -1;
- }
- if (WIFEXITED(status) && WEXITSTATUS(status)) {
- perror("child return error");
- return -1;
- }
- }
- return 0;
-}
-
-
-
-#ifdef _USE_DBUS_OPTION
-
-#define RESET_DBUS_SERVICE "org.tizen.factoryreset"
-#define RESET_DBUS_INTERFACE RESET_DBUS_SERVICE".start"
-
-static const char granted_caller[6][16] = {
- "setting",
- "cscmgr",
- "wms",
- "bt", /* when the host device is changed */
- "omadmagent",
- "testmode"
-};
-
-static const char list_reset_flags[2][16] = {
- "ftrrstcp",
- "withoutcp"
-};
-
-
-static GMainLoop* loop;
-static DBusConnection *bus_conn = NULL;
-static const char *dbus_obj_path = "/org/tizen/factoryreset";
-
-static void unregistered_func(DBusConnection *connection, void *user_data)
-{
- perror("factory-reset dbus unregistered\n");
-}
-
-static DBusHandlerResult message_func(DBusConnection *connection,
- DBusMessage *message,
- void *user_data)
-{
- /* store the name of factory reset caller. */
-
- char caller_name[NAME_MAX];
- FILE *fp = NULL;
- int i = 0;
-
- if (dbus_message_get_type(message) != DBUS_MESSAGE_TYPE_SIGNAL) {
- perror("Not a dbus-signal\n");
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- if (strncmp(dbus_message_get_interface(message), RESET_DBUS_INTERFACE,
- strlen(RESET_DBUS_INTERFACE)) != 0) {
- printf("Not correct interface: \"%s\"\n",
- dbus_message_get_interface(message));
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- strncpy(caller_name, dbus_message_get_member(message),
- sizeof(caller_name));
- caller_name[NAME_MAX - 1] = '\0';
-
- while (strncmp(granted_caller[i], caller_name,
- strlen(granted_caller[i]))) {
- if ((++i) >= sizeof(granted_caller) / sizeof(granted_caller[0])) {
- printf("Not a granted caller, %s\n", caller_name);
- /* XXX Warning: Comparing granted caller list cannot
- * grant good caller or not. Security is and should be
- * protected by the SMACK rule. This code is only for
- * preventing that a new unknown caller use factory
- * reset without confirmation of the factory reset
- * developer.
- */
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
- }
- fp = fopen(LOG_FILE, "a");
- if (fp != NULL) {
- fprintf(fp, "Requested by %s, %s\n", caller_name,
- dbus_message_get_sender(message));
- fclose(fp);
- }
-
- /* member name of dbus signal message may contains reset flags */
- for (i = 0; i < sizeof(list_reset_flags) / sizeof(list_reset_flags[0]);
- i++) {
- if (strstr(caller_name, list_reset_flags[i])) {
- snprintf(caller_name, NAME_MAX, "--%s",
- list_reset_flags[i]);
- reset_flag = strdup(caller_name);
- break;
- }
}
- g_main_loop_quit(loop);
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-
-static DBusHandlerResult filter_func(DBusConnection *connection,
- DBusMessage *message, void *user_data)
-{
- if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL,
- "Disconnected")) {
- /* Exit cleanly. */
- printf("Disconnected");
+ /* parent */
+ if (waitpid(cpid, &status, 0) == -1) {
+ perror("waitpid failed");
+ return -1;
}
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static DBusObjectPathVTable dbus_vtable = {
- unregistered_func,
- message_func,
- NULL,
-};
-
-static int process_dbus(void)
-{
- int ret;
- DBusError error;
-
- loop = g_main_loop_new(NULL, FALSE);
-
- dbus_error_init(&error);
- bus_conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
- if (!bus_conn) {
- perror("failed to get dbus system bus");
- dbus_error_free(&error);
+ if (WIFSIGNALED(status)) {
+ perror("exit by signal");
return -1;
}
- /* Add message filter to handle Disconnected. */
- dbus_connection_add_filter(bus_conn, (DBusHandleMessageFunction) filter_func,
- NULL, NULL);
-
- ret = dbus_bus_request_name(bus_conn, RESET_DBUS_SERVICE, 0, &error);
-
- /* Should be ret == -1, if error is set */
- if (ret == -1 && dbus_error_is_set(&error)) {
- dbus_error_free(&error);
+ if (!WIFEXITED(status)) {
+ perror("exit abnormally");
return -1;
}
-
- if (!dbus_connection_register_object_path(bus_conn, dbus_obj_path,
- &dbus_vtable, NULL)) {
+ if (WIFEXITED(status) && WEXITSTATUS(status)) {
+ perror("child return error");
return -1;
}
- dbus_connection_setup_with_g_main(bus_conn, NULL);
- g_main_loop_run(loop);
return 0;
}
-
-#endif // _USE_DBUS_OPTION
-
int main(int argc, char **argv)
{
FILE *fp;
- int i = 0, c;
- const char *reset_cmd[] = {RUN_SCRIPT_FILE, NULL, NULL};
- time_t t = time(NULL);
-
- struct tm lt;
- if (localtime_r(&t, &lt) == NULL) {
- perror("localtime_r() error");
- return -1;
- }
- static struct option long_options[] = {
- {"dbus", no_argument, NULL, 'b'},
- {0, 0, 0, 0}
- };
-
-#if 0
- int ret = setuid(0);
- if (ret < 0) {
- perror("wrong permission");
- return -1;
- }
-#endif
-
- /* If there is no factory-reset backup file, don't try to reset. */
- while (!(fp = fopen(RESET_BACKUP_FILE[i++], "r"))) {
- if (i >= sizeof(RESET_BACKUP_FILE) /
- sizeof(RESET_BACKUP_FILE[0])) {
- perror("backup file is not exist");
- return -1;
- }
- }
- if (fp != NULL) fclose(fp);
-
- if (rename(LOG_FILE, LOG_OLD) < 0)
- perror("can't rename the old log file");
-
- while (1) {
-
- int option_index = -1;
- c = getopt_long(argc, argv, "b", long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c) {
- case 'b':
-#ifdef _USE_DBUS_OPTION
- if (process_dbus() < 0) {
- perror("dbus has some errors.");
- return -1;
- }
-#endif
- break;
-
- default:
- usage();
- break;
- }
- }
-
- if (optind < argc)
- usage();
-
-#if 0
+ /* touch /opt/.factoryreset */
fp = fopen(RESET_FLAG_FILE, "w");
if (fp == NULL) {
perror("reset flg file open error");
return -1;
}
fclose(fp);
-#endif
-
- // Factory Reset Run
- reset_cmd[1] = reset_flag;
- __system(reset_cmd);
- // open log file (add local time)
- fp = fopen(LOG_FILE, "a");
- if (fp == NULL) {
- perror("reset log file open error");
- return -2;
- }
-
- // write finish log file
- fprintf(fp, "End Factory Reset\n%d-%02d-%02d %02d:%02d:%02d\n",
- lt.tm_year + 1900, lt.tm_mon + 1, lt.tm_mday,
- lt.tm_hour, lt.tm_min, lt.tm_sec);
- fclose(fp);
+ run_factory_reset();
- // remove reset flag file, sync and reboot
-#if 0
+ /* unlink /opt/.factoryreset */
unlink(RESET_FLAG_FILE);
-#endif
sync();
-#ifdef DEBUG_BINARY
- reboot(LINUX_REBOOT_CMD_RESTART);
-#else
- const char *reboot_cmd[] = {"/usr/sbin/reboot", "debug0x4f4c", NULL};
- __system(reboot_cmd);
-#endif
+ reboot(RB_AUTOBOOT);
return 0;
}
diff --git a/src/resetCCMode.c b/src/resetCCMode.c
deleted file mode 100755
index 2d3e8fe..0000000
--- a/src/resetCCMode.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2000 - 2017 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- * Created by Wonil Choi <wonil22.choi@samsung.com>
- *
- * 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.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <fcntl.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include "ccerror.h"
-
-#define PARAM_CC_ENC_RAW_SIZE 64
-#define PARAM_CC_FLAG_OFFSET 0x800
-
-static const char dev_params[] = {
- "/dev/disk/by-partlabel/param"
-};
-
-int resetSBFCCM(void)
-{
- int ret, fd;
- uint8_t eraw[PARAM_CC_ENC_RAW_SIZE];
-
- memset(eraw, 0, PARAM_CC_ENC_RAW_SIZE);
- if ((fd = open(dev_params, O_WRONLY)) == -1) {
- ret = -CC_ERROR_UTIL_RESETSBFCCM;
- goto open_fail;
- }
-
- if (lseek(fd, -(PARAM_CC_FLAG_OFFSET), SEEK_END) == -1) {
- ret = -(CC_ERROR_UTIL_RESETSBFCCM + 2);
- goto out;
- }
-
- if (write(fd, eraw, PARAM_CC_ENC_RAW_SIZE) != PARAM_CC_ENC_RAW_SIZE) {
- ret = -(CC_ERROR_UTIL_RESETSBFCCM + 3);
- goto out;
- }
-
- ret = CC_ERROR_NONE;
-out:
- close(fd);
-open_fail:
- return ret;
-}
-
-int main(void)
-{
- int ret = resetSBFCCM();
- printf("resetSBFCCM() returns %d\n", ret);
- return ret;
-}
-
diff --git a/src/rstsmack.c b/src/rstsmack.c
index 8513897..1a97c93 100644
--- a/src/rstsmack.c
+++ b/src/rstsmack.c
@@ -95,7 +95,7 @@ static int parse_and_set(const char *srcfile)
linebuf[linebuf_len - 1] = '\0';
else {
LOGINFO("Invalid label length (%u)\n", linebuf_len);
- fclose(fp);
+ fclose(fp);
return -1;
}
LOGINFO("no label, set label: %s, access=\"_\"(floor)\n", linebuf);