Replace the heynoti with vconf for power off.
authorSung-jae Park <nicesj.park@samsung.com>
Wed, 13 Mar 2013 04:14:19 +0000 (04:14 +0000)
committerSung-jae Park <nicesj.park@samsung.com>
Wed, 13 Mar 2013 04:14:19 +0000 (04:14 +0000)
Permit smack rule of dbus for Read/eXec on data-provider-master

Change-Id: I8ac594ea64d0324ad96d0fe72e7efa6075439b24

data-provider-master.manifest
src/setting.c

index 4bdb04c..b3b7af7 100644 (file)
@@ -11,6 +11,9 @@
                <request>
                        <smack request="sys-assert::core" type="rwxat" />
                </request>
+               <permit>
+                       <smack permit="dbus" type="rx" />
+               </permit>
        </define>
        <request>
                <domain name="_" />
index d60807d..7ac5700 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <vconf.h>
 #include <dlog.h>
-#include <heynoti.h>
 
 #include <Eina.h>
 
 
 int errno;
 
-static struct {
-       int heyfd;
-} s_info = {
-       .heyfd = -1,
-};
-
 static void lcd_state_cb(keynode_t *node, void *user_data)
 {
        if (!node)
@@ -67,14 +60,24 @@ HAPI int setting_is_lcd_off(void)
        return state == VCONFKEY_PM_STATE_LCDOFF || state == VCONFKEY_PM_STATE_SLEEP;
 }
 
-static void power_off_cb(void *data)
+static void power_off_cb(keynode_t *node, void *user_data)
 {
-       CRITICAL_LOG("Terminated(heynoti)\n");
+       int val;
+       CRITICAL_LOG("Terminated(vconf)\n");
 
-       if (creat("/tmp/.stop.provider", 0644) < 0)
-               ErrPrint("Failed to create .stop.provider [%s]\n", strerror(errno));
+       if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) != 0) {
+               ErrPrint("Failed to get power off status (%d)\n", val);
+               return;
+       }
 
-       exit(0);
+       if (val == VCONFKEY_SYSMAN_POWER_OFF_DIRECT || val == VCONFKEY_SYSMAN_POWER_OFF_RESTART) {
+               if (creat("/tmp/.stop.provider", 0644) < 0)
+                       ErrPrint("Failed to create .stop.provider [%s]\n", strerror(errno));
+
+               exit(0);
+       } else {
+               ErrPrint("Unknown power state: %d\n", val);
+       }
 }
 
 HAPI int setting_init(void)
@@ -85,19 +88,9 @@ HAPI int setting_init(void)
        if (ret < 0)
                ErrPrint("Failed to add vconf for lock state\n");
 
-       s_info.heyfd = heynoti_init();
-       if (s_info.heyfd < 0) {
-               CRITICAL_LOG("Failed to set poweroff heynoti [%d]\n", s_info.heyfd);
-               return 0;
-       }
-
-       ret = heynoti_subscribe(s_info.heyfd, "power_off_start", power_off_cb, NULL);
-       if (ret < 0)
-               CRITICAL_LOG("Failed to subscribe heynoti for power off [%d]\n", ret);
-
-       ret = heynoti_attach_handler(s_info.heyfd);
+       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, power_off_cb, NULL);
        if (ret < 0)
-               CRITICAL_LOG("Failed to attach heynoti handler [%d]\n", ret);
+               ErrPrint("Failed to add vconf for power state\n");
 
        return ret;
 }
@@ -106,6 +99,7 @@ HAPI int setting_fini(void)
 {
        int ret;
        ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE, lcd_state_cb);
+       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, power_off_cb);
        return ret;
 }