CMAKE_MINIMUM_REQUIRED(VERSION 3.9.4)
ADD_SUBDIRECTORY(src/session-bind)
+ADD_SUBDIRECTORY(src/libsysplugin)
%description feature-session-bind
This package provides a mount utils for user sessions.
+%package feature-bootmode
+Summary: Support bootmode state by reading /proc/cmdline
+
+%description feature-bootmode
+This package provides function that gets bootmode
+
%package config-env-headless
Summary: System configuration files for headless images
Requires: %{name} = %{version}-%{release}
%{_userunitdir}/session-bind.service
%{_userunitdir}/basic.target.wants/session-bind.service
+%files feature-bootmode
+%manifest %{name}.manifest
+%license LICENSE.Apache-2.0
+/usr/lib/deviced/bootmode.so
+
%post feature-session-bind
echo ""
echo "------------------------------------------------------------------------"
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(libsysplugin C)
+
+SET(LIBSYSPLUGIN_SRCS
+ reboot_mode.c)
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${LIBSYSPLUGIN_SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "")
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES OUTPUT_NAME bootmode)
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/lib/deviced COMPONENT RuntimeLibraries)
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+
+#define KEY_SILENT_REBOOT "silent_reboot="
+
+int get_reboot_mode(void)
+{
+ FILE *fp;
+ char *line = NULL;
+ char *key, *val;
+ size_t n;
+ int ret = 0;
+
+ fp = fopen("/proc/cmdline", "r");
+ if (!fp)
+ return ret;
+
+ if (getline(&line, &n, fp)) {
+ key = strstr(line, KEY_SILENT_REBOOT);
+ if (key) {
+ val = key + strlen(KEY_SILENT_REBOOT);
+ if (*val == '1')
+ ret = 1;
+ }
+ }
+
+ fclose(fp);
+ free(line);
+
+ return ret;
+}