diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/ccerror.h | 14 | ||||
-rwxr-xr-x | src/factory-reset-util.c | 389 | ||||
-rw-r--r-- | src/factory-reset-util.h | 51 | ||||
-rw-r--r--[-rwxr-xr-x] | src/factory-reset.c | 312 | ||||
-rwxr-xr-x | src/resetCCMode.c | 72 | ||||
-rw-r--r-- | src/rstsmack.c | 2 |
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, <) == 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); |