summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJusung Son <jusung07.son@samsung.com>2019-08-29 10:54:25 +0900
committerJusung Son <jusung07.son@samsung.com>2019-08-29 14:22:56 +0900
commit65ba630ec9dc562f38349c1c748f8afe7882fd2c (patch)
tree0e1e4309cbd8533ec4cfeeed4a13cf0dee992cb7
parent15a63c8284b321f32bb8c210d2ff029014f21de8 (diff)
downloadalarm-manager-65ba630ec9dc562f38349c1c748f8afe7882fd2c.tar.gz
alarm-manager-65ba630ec9dc562f38349c1c748f8afe7882fd2c.tar.bz2
alarm-manager-65ba630ec9dc562f38349c1c748f8afe7882fd2c.zip
Fix bug for time_t overflow
- time_t is long type but dbus arg is integer type Change-Id: Ied5c2cd5b5aa4cd2a64ed2afdc707ec488c5f87f Signed-off-by: Jusung Son <jusung07.son@samsung.com>
-rw-r--r--[-rwxr-xr-x]include/alarm-internal.h10
-rw-r--r--[-rwxr-xr-x]include/alarm.h4
-rw-r--r--lib/alarm-lib-dbus.c51
-rw-r--r--[-rwxr-xr-x]lib/alarm-lib.c94
-rw-r--r--server/alarm-manager-db.c30
-rw-r--r--[-rwxr-xr-x]server/alarm-manager-db.h0
-rw-r--r--[-rwxr-xr-x]server/alarm-manager-dbus.c36
-rw-r--r--[-rwxr-xr-x]server/alarm-manager-dbus.h0
-rw-r--r--[-rwxr-xr-x]server/alarm-manager-util.c0
-rw-r--r--[-rwxr-xr-x]server/alarm-manager-util.h0
-rw-r--r--[-rwxr-xr-x]server/alarm-manager.c92
11 files changed, 180 insertions, 137 deletions
diff --git a/include/alarm-internal.h b/include/alarm-internal.h
index c8f8365..bc7b174 100755..100644
--- a/include/alarm-internal.h
+++ b/include/alarm-internal.h
@@ -92,12 +92,12 @@ bool _remove_from_scheduled_alarm_list(uid_t uid, alarm_id_t alarm_id);
bundle *_send_alarm_get_appsvc_info(alarm_context_t context, alarm_id_t alarm_id, int *error_code);
notification_h _send_alarm_get_noti_info(alarm_context_t context, alarm_id_t alarm_id, int *error_code);
bool _send_alarm_set_rtc_time(alarm_context_t context, alarm_date_t *time, int *error_code);
-bool _send_alarm_set_time_with_propagation_delay(alarm_context_t context, unsigned int new_sec, unsigned int new_nsec, unsigned int req_sec, unsigned int req_nsec, int *error_code);
-bool _send_alarm_set_time_with_propagation_delay_async(alarm_context_t context, unsigned int new_sec, unsigned int new_nsec, unsigned int req_sec, unsigned int req_nsec, alarm_set_time_cb_t result_cb, void *user_data);
+bool _send_alarm_set_time_with_propagation_delay(alarm_context_t context, struct timespec new_time, struct timespec req_time, int *error_code);
+bool _send_alarm_set_time_with_propagation_delay_async(alarm_context_t context, struct timespec new_time, struct timespec req_time, alarm_set_time_cb_t result_cb, void *user_data);
bool _send_alarm_set_timezone(alarm_context_t context, char *tzpath_str, int *error_code);
bool _send_alarm_create_periodic(alarm_context_t context, int interval, int is_ref, int method, alarm_id_t *alarm_id, int *error_code);
-bool _send_alarm_set_time(alarm_context_t context, int new_time, int *error_code);
-bool _send_alarm_set_time_async(alarm_context_t context, int new_time, alarm_set_time_cb_t result_cb, void *user_data);
+bool _send_alarm_set_time(alarm_context_t context, time_t new_time, int *error_code);
+bool _send_alarm_set_time_async(alarm_context_t context, time_t new_time, alarm_set_time_cb_t result_cb, void *user_data);
bool _send_alarm_set_global(alarm_context_t context, int alarm_id, bool global, int *error_code);
bool _send_alarm_get_global(alarm_context_t context, int alarm_id, bool *global, int *error_code);
@@ -190,7 +190,7 @@ int alarm_manager_alarm_get_list_of_ids(GVariant *parameters, uid_t uid, pid_t p
int alarm_manager_alarm_get_appsvc_info(GVariant *parameters, uid_t uid, gchar **b_data);
int alarm_manager_alarm_get_noti_info(GVariant *parameters, uid_t uid, gchar **noti_data);
int alarm_manager_alarm_get_info(GVariant *parameters, uid_t uid, alarm_info_t *alarm_info);
-int alarm_manager_alarm_get_next_duetime(GVariant *parameters, uid_t uid, int *duetime);
+int alarm_manager_alarm_get_next_duetime(GVariant *parameters, uid_t uid, time_t *duetime);
int alarm_manager_alarm_get_all_info(uid_t uid, char **db_path);
int alarm_manager_alarm_set_rtc_time(GVariant *parameters);
int alarm_manager_alarm_set_time(GVariant* parameters);
diff --git a/include/alarm.h b/include/alarm.h
index a81c50a..e6cac64 100755..100644
--- a/include/alarm.h
+++ b/include/alarm.h
@@ -269,7 +269,7 @@ typedef struct {
alarm_mode_t mode; /**< mode of alarm */
int msec;
int alarm_type; /**< alarm type*/
- int reserved_info; /** 1st duetime(UTC epochtime) */
+ time_t reserved_info; /** 1st duetime(UTC epochtime) */
} alarm_info_t;
#define alarm_entry_t alarm_info_t
@@ -1561,6 +1561,7 @@ int alarmmgr_set_rtc_time(alarm_date_t *time);
* @retval #ERR_ALARM_SYSTEM_FAIL System failure
*/
int alarmmgr_set_systime(int new_time);
+int alarmmgr_set_systime64(time_t new_time);
/**
* This function asynchronously changes the system time which tranferred by other module
@@ -1574,6 +1575,7 @@ int alarmmgr_set_systime(int new_time);
* @retval #ERR_ALARM_SYSTEM_FAIL System failure
*/
int alarmmgr_set_systime_async(int new_time, alarm_set_time_cb_t result_cb, void *user_param);
+int alarmmgr_set_systime64_async(time_t new_time, alarm_set_time_cb_t result_cb, void *user_param);
/**
* This function changes the system time and compensates the time using propagation delay.
diff --git a/lib/alarm-lib-dbus.c b/lib/alarm-lib-dbus.c
index 666a9f4..f77b2cc 100644
--- a/lib/alarm-lib-dbus.c
+++ b/lib/alarm-lib-dbus.c
@@ -54,7 +54,7 @@ bool _send_alarm_create_noti(alarm_context_t context, alarm_info_t *alarm_info,
g_variant_store(noti_gv, data);
noti_data = g_base64_encode((guchar *)data, datalen);
- param = g_variant_new("(iiiiiiiiiiiiiis)",
+ param = g_variant_new("(iiiiiiiiiixiixs)",
alarm_info->start.year,
alarm_info->start.month,
alarm_info->start.day,
@@ -65,10 +65,10 @@ bool _send_alarm_create_noti(alarm_context_t context, alarm_info_t *alarm_info,
alarm_info->end.month,
alarm_info->end.day,
alarm_info->mode.u_interval.day_of_week,
- alarm_info->mode.u_interval.interval,
+ (gint64)alarm_info->mode.u_interval.interval,
alarm_info->mode.repeat,
alarm_info->alarm_type,
- alarm_info->reserved_info,
+ (gint64)alarm_info->reserved_info,
(char *)noti_data);
if (noti_data)
@@ -128,7 +128,7 @@ bool _send_alarm_create_appsvc(alarm_context_t context, alarm_info_t *alarm_info
return false;
}
- param = g_variant_new("(iiiiiiiiiiiiiis)",
+ param = g_variant_new("(iiiiiiiiiixiixs)",
alarm_info->start.year,
alarm_info->start.month,
alarm_info->start.day,
@@ -139,10 +139,10 @@ bool _send_alarm_create_appsvc(alarm_context_t context, alarm_info_t *alarm_info
alarm_info->end.month,
alarm_info->end.day,
alarm_info->mode.u_interval.day_of_week,
- alarm_info->mode.u_interval.interval,
+ (gint64)alarm_info->mode.u_interval.interval,
alarm_info->mode.repeat,
alarm_info->alarm_type,
- alarm_info->reserved_info,
+ (gint64)alarm_info->reserved_info,
(char *)b_data);
if (b_data)
@@ -201,7 +201,7 @@ bool _send_alarm_create(alarm_context_t context, alarm_info_t *alarm_info,
return false;
}
- param = g_variant_new("(ssiiiiiiiiiiiiiissi)",
+ param = g_variant_new("(ssiiiiiiiiiiiiixss)",
context.app_service_name,
context.app_service_name_mod,
alarm_info->start.year,
@@ -217,7 +217,7 @@ bool _send_alarm_create(alarm_context_t context, alarm_info_t *alarm_info,
alarm_info->mode.u_interval.day_of_week,
alarm_info->mode.repeat,
alarm_info->alarm_type,
- alarm_info->reserved_info,
+ (gint64)alarm_info->reserved_info,
dst_service_name, dst_service_name_mod);
reply = g_dbus_proxy_call_sync(context.proxy, "alarm_create", param,
@@ -659,7 +659,7 @@ bool _send_alarm_get_info(alarm_context_t context, alarm_id_t alarm_id,
int return_code = -1;
GVariant *param = NULL;
GVariant *reply = NULL;
-
+ gint64 tmp_reserved_info;
param = g_variant_new("(i)", alarm_id);
reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_info", param,
@@ -680,7 +680,7 @@ bool _send_alarm_get_info(alarm_context_t context, alarm_id_t alarm_id,
return false;
}
- g_variant_get(reply, "(iiiiiiiiiiiiii)",
+ g_variant_get(reply, "(iiiiiiiiiiiixi)",
&alarm_info->start.year,
&alarm_info->start.month,
&alarm_info->start.day,
@@ -693,8 +693,9 @@ bool _send_alarm_get_info(alarm_context_t context, alarm_id_t alarm_id,
&alarm_info->mode.u_interval.day_of_week,
&alarm_info->mode.repeat,
&alarm_info->alarm_type,
- &alarm_info->reserved_info,
+ &tmp_reserved_info,
&return_code);
+ alarm_info->reserved_info = (time_t)tmp_reserved_info;
LOGD("alarm_get_info() dbus sync success. return_code[%d].",
return_code);
@@ -718,7 +719,7 @@ bool _send_alarm_get_next_duetime(alarm_context_t context, alarm_id_t alarm_id,
int return_code = -1;
GVariant *param = NULL;
GVariant *reply = NULL;
- int _duetime = 0;
+ gint64 _duetime = 0;
param = g_variant_new("(i)", alarm_id);
@@ -740,7 +741,7 @@ bool _send_alarm_get_next_duetime(alarm_context_t context, alarm_id_t alarm_id,
return false;
}
- g_variant_get(reply, "(ii)", &_duetime, &return_code);
+ g_variant_get(reply, "(xi)", &_duetime, &return_code);
LOGD("alarm_get_next_duetime() dbus sync success. return_code[%d].",
return_code);
@@ -801,14 +802,14 @@ bool _send_alarm_get_all_info(alarm_context_t context, char **db_path, int *erro
return true;
}
-bool _send_alarm_set_time(alarm_context_t context, int new_time, int *error_code)
+bool _send_alarm_set_time(alarm_context_t context, time_t new_time, int *error_code)
{
GError *error = NULL;
int return_code = -1;
GVariant *param = NULL;
GVariant *reply = NULL;
- param = g_variant_new("(i)", new_time);
+ param = g_variant_new("(x)", (gint64)new_time);
reply = g_dbus_proxy_call_sync(context.proxy, "alarm_set_time", param,
G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
@@ -867,7 +868,7 @@ static void _alarm_set_time_cb(GObject *source_object, GAsyncResult *res,
g_free(func_data);
}
-bool _send_alarm_set_time_async(alarm_context_t context, int new_time, alarm_set_time_cb_t result_cb, void *user_data)
+bool _send_alarm_set_time_async(alarm_context_t context, time_t new_time, alarm_set_time_cb_t result_cb, void *user_data)
{
alarm_set_time_data_t *func_data;
GVariant *param;
@@ -881,7 +882,7 @@ bool _send_alarm_set_time_async(alarm_context_t context, int new_time, alarm_set
func_data->user_data = user_data;
func_data->proxy = context.proxy;
- param = g_variant_new("(i)", new_time);
+ param = g_variant_new("(x)", (gint64)new_time);
g_dbus_proxy_call(context.proxy, "alarm_set_time", param,
G_DBUS_CALL_FLAGS_NONE, -1, NULL, _alarm_set_time_cb, func_data);
@@ -889,14 +890,15 @@ bool _send_alarm_set_time_async(alarm_context_t context, int new_time, alarm_set
return true;
}
-bool _send_alarm_set_time_with_propagation_delay(alarm_context_t context, unsigned int new_sec, unsigned int new_nsec, unsigned int req_sec, unsigned int req_nsec, int *error_code)
+bool _send_alarm_set_time_with_propagation_delay(alarm_context_t context, struct timespec new_time, struct timespec req_time, int *error_code)
{
GError *error = NULL;
int return_code = -1;
GVariant *param = NULL;
GVariant *reply = NULL;
- param = g_variant_new("(uuuu)", new_sec, new_nsec, req_sec, req_nsec);
+ param = g_variant_new("(xxxx)", (gint64)new_time.tv_sec, (gint64)new_time.tv_nsec,
+ (gint64)req_time.tv_sec, (gint64)req_time.tv_nsec);
reply = g_dbus_proxy_call_sync(context.proxy, "alarm_set_time_with_propagation_delay", param,
G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
@@ -960,7 +962,7 @@ static void _alarm_set_time_with_delay_cb(GObject *source_object, GAsyncResult *
g_free(func_data);
}
-bool _send_alarm_set_time_with_propagation_delay_async(alarm_context_t context, unsigned int new_sec, unsigned int new_nsec, unsigned int req_sec, unsigned int req_nsec, alarm_set_time_cb_t result_cb, void *user_data)
+bool _send_alarm_set_time_with_propagation_delay_async(alarm_context_t context, struct timespec new_time, struct timespec req_time, alarm_set_time_cb_t result_cb, void *user_data)
{
alarm_set_time_data_t *func_data;
GVariant *param = NULL;
@@ -974,7 +976,8 @@ bool _send_alarm_set_time_with_propagation_delay_async(alarm_context_t context,
func_data->user_data = user_data;
func_data->proxy = context.proxy;
- param = g_variant_new("(uuuu)", new_sec, new_nsec, req_sec, req_nsec);
+ param = g_variant_new("(xxxx)", (gint64)new_time.tv_sec, (gint64)new_time.tv_nsec,
+ (gint64)req_time.tv_sec, (gint64)req_time.tv_nsec);
g_dbus_proxy_call(context.proxy, "alarm_set_time_with_propagation_delay", param,
G_DBUS_CALL_FLAGS_NONE, -1, NULL, _alarm_set_time_with_delay_cb, func_data);
@@ -1122,7 +1125,7 @@ bool _send_alarm_update(alarm_context_t context, alarm_id_t alarm_id,
GVariant *param = NULL;
GVariant *reply = NULL;
- param = g_variant_new("(iiiiiiiiiiiiiii)",
+ param = g_variant_new("(iiiiiiiiiixiixi)",
alarm_id,
alarm_info->start.year,
alarm_info->start.month,
@@ -1133,10 +1136,10 @@ bool _send_alarm_update(alarm_context_t context, alarm_id_t alarm_id,
alarm_info->end.year,
alarm_info->end.month,
alarm_info->end.day,
- alarm_info->mode.u_interval.interval,
+ (gint64)alarm_info->mode.u_interval.interval,
alarm_info->mode.repeat,
alarm_info->alarm_type,
- alarm_info->reserved_info,
+ (gint64)alarm_info->reserved_info,
update_flag);
reply = g_dbus_proxy_call_sync(context.proxy, "alarm_update", param,
diff --git a/lib/alarm-lib.c b/lib/alarm-lib.c
index 22aa833..068a204 100755..100644
--- a/lib/alarm-lib.c
+++ b/lib/alarm-lib.c
@@ -143,11 +143,11 @@ void _initialize_alarm_info(alarm_info_t *alarm_info, int alarm_type,
alarm_info->msec = precision ? (int)current_time.tv_usec / 1000 : 0;
LOGD("trigger_at_time(%ld), start(%d-%d-%d, %02d:%02d:%02d),\
- repeat(%d), interval(%d), type(%d)",
+ repeat(%d), interval(%ld), type(%d)",
trigger_at_time, alarm_info->start.day, alarm_info->start.month,
alarm_info->start.year, alarm_info->start.hour,
alarm_info->start.min, alarm_info->start.sec,
- alarm_info->mode.repeat, (int)alarm_info->mode.u_interval.interval,
+ alarm_info->mode.repeat, alarm_info->mode.u_interval.interval,
alarm_info->alarm_type);
}
@@ -232,18 +232,16 @@ static void __handle_expiry_method_call(GDBusConnection *conn,
g_variant_get(param, "(ii&s)", &alarm_id, &msec, &package_name);
LOGD("[alarm-lib] : Alarm expired for [%s] : Alarm id [%d]", package_name, alarm_id);
+ if (msec > 0) {
+ gettimeofday(&current_time, NULL);
+ msec = msec - (int)current_time.tv_usec / 1000;
+ }
+
if (alarm_context.alarm_handler != NULL) {
if (msec > 0) {
- gettimeofday(&current_time, NULL);
- msec = msec - (int)current_time.tv_usec / 1000;
- if (msec > 0) {
- alarm_context.handler_id = alarm_id;
- g_timeout_add_full(G_PRIORITY_HIGH, (guint)msec,
- __handle_millisec_accuracy, NULL, NULL);
- } else {
- alarm_context.alarm_handler(alarm_id,
- alarm_context.user_param);
- }
+ alarm_context.handler_id = alarm_id;
+ g_timeout_add_full(G_PRIORITY_HIGH, (guint)msec,
+ __handle_millisec_accuracy, NULL, NULL);
} else {
alarm_context.alarm_handler(alarm_id,
alarm_context.user_param);
@@ -253,14 +251,8 @@ static void __handle_expiry_method_call(GDBusConnection *conn,
info = __find_resultcb(alarm_id);
if (info && info->cb_func) {
if (msec > 0) {
- gettimeofday(&current_time, NULL);
- msec = msec - (int)current_time.tv_usec / 1000;
- if (msec > 0) {
- g_timeout_add_full(G_PRIORITY_HIGH, (guint)msec,
- __handle_millisec_accuracy, info, NULL);
- } else {
- info->cb_func(alarm_id, info->priv_data);
- }
+ g_timeout_add_full(G_PRIORITY_HIGH, (guint)msec,
+ __handle_millisec_accuracy, info, NULL);
} else {
LOGW("[alarm-lib] Call expired callback");
info->cb_func(alarm_id, info->priv_data);
@@ -390,16 +382,20 @@ static void __bus_get_for_async_api(GObject *source_object, GAsyncResult *res,
if (param->type == SET_SYSTIME_WITH_PROPAGATION_DELAY) {
struct timespec new_time;
struct timespec req_time;
- g_variant_get(param->v, "(uuuu)", &new_time.tv_sec, &new_time.tv_nsec,
- &req_time.tv_sec, &req_time.tv_nsec);
+ gint64 new_sec, new_nsec, req_sec, req_nsec;
+ g_variant_get(param->v, "(xxxx)", &new_sec, &new_nsec,
+ &req_sec, &req_nsec);
+ new_time.tv_sec = (time_t)new_sec;
+ new_time.tv_nsec = (long)new_nsec;
+ req_time.tv_sec = (time_t)req_sec;
+ req_time.tv_nsec = (long)new_nsec;
+
_send_alarm_set_time_with_propagation_delay_async(alarm_context,
- new_time.tv_sec, new_time.tv_nsec,
- req_time.tv_sec, req_time.tv_nsec,
- param->result_cb, param->user_param);
+ new_time, req_time, param->result_cb, param->user_param);
} else if (param->type == SET_SYSTIME) {
- int new_time;
- g_variant_get(param->v, "i", &new_time);
- _send_alarm_set_time_async(alarm_context, new_time,
+ gint64 new_time;
+ g_variant_get(param->v, "x", &new_time);
+ _send_alarm_set_time_async(alarm_context, (time_t)new_time,
param->result_cb, param->user_param);
}
@@ -910,11 +906,11 @@ EXPORT_API int alarmmgr_add_alarm_appsvc_with_localtime(alarm_entry_t *alarm, vo
}
alarm_mode_t *mode = &alarm_info->mode;
- LOGW("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%d), type(%d)",
+ LOGW("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%ld), type(%d)",
alarm_info->start.day, alarm_info->start.month, alarm_info->start.year,
alarm_info->start.hour, alarm_info->start.min, alarm_info->start.sec,
alarm_info->end.year, alarm_info->end.month, alarm_info->end.day,
- alarm_info->mode.repeat, (int)alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
+ alarm_info->mode.repeat, alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
/* TODO: This should be changed to > ALARM_REPEAT_MODE_MAX ? */
if (mode->repeat >= ALARM_REPEAT_MODE_MAX)
@@ -968,11 +964,11 @@ EXPORT_API int alarmmgr_add_alarm_with_localtime(alarm_entry_t *alarm,
if (ret < 0)
return ret;
- LOGD("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%d), type(%d)",
+ LOGD("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%ld), type(%d)",
alarm_info->start.day, alarm_info->start.month, alarm_info->start.year,
alarm_info->start.hour, alarm_info->start.min, alarm_info->start.sec,
alarm_info->end.year, alarm_info->end.month, alarm_info->end.day,
- alarm_info->mode.repeat, (int)alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
+ alarm_info->mode.repeat, alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
/* TODO: This should be changed to > ALARM_REPEAT_MODE_MAX ? */
if (mode->repeat >= ALARM_REPEAT_MODE_MAX)
@@ -1045,11 +1041,11 @@ EXPORT_API int alarmmgr_add_alarm_noti_with_localtime(alarm_entry_t *alarm, noti
alarm_mode_t *mode = &alarm_info->mode;
- LOGW("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%d), type(%d)",
+ LOGW("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%ld), type(%d)",
alarm_info->start.day, alarm_info->start.month, alarm_info->start.year,
alarm_info->start.hour, alarm_info->start.min, alarm_info->start.sec,
alarm_info->end.year, alarm_info->end.month, alarm_info->end.day,
- alarm_info->mode.repeat, (int)alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
+ alarm_info->mode.repeat, alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
/* TODO: This should be changed to > ALARM_REPEAT_MODE_MAX ? */
if (mode->repeat >= ALARM_REPEAT_MODE_MAX)
@@ -1528,8 +1524,13 @@ EXPORT_API int alarmmgr_add_reference_periodic_alarm_withcb(int interval,
EXPORT_API int alarmmgr_set_systime(int new_time)
{
+ return alarmmgr_set_systime64((time_t)new_time);
+}
+
+EXPORT_API int alarmmgr_set_systime64(time_t new_time)
+{
int error_code;
- LOGD("[alarm-lib]:alarmmgr_set_systime(%d) is called.", new_time);
+ LOGD("[alarm-lib]:alarmmgr_set_systime(%ld) is called.", new_time);
if (__sub_init() < 0)
return ERR_ALARM_SYSTEM_FAIL;
@@ -1539,15 +1540,20 @@ EXPORT_API int alarmmgr_set_systime(int new_time)
return error_code;
}
- LOGD("[alarm-lib]: successfully set the time(%d) by pid(%d).", new_time, getpid());
+ LOGD("[alarm-lib]: successfully set the time(%ld) by pid(%d).", new_time, getpid());
return ALARMMGR_RESULT_SUCCESS;
}
EXPORT_API int alarmmgr_set_systime_async(int new_time, alarm_set_time_cb_t result_cb, void *user_param)
{
+ return alarmmgr_set_systime64_async((time_t)new_time, result_cb, user_param);
+}
+
+EXPORT_API int alarmmgr_set_systime64_async(time_t new_time, alarm_set_time_cb_t result_cb, void *user_param)
+{
struct alarm_async_param_t *param;
- LOGD("[alarm-lib]:alarmmgr_set_systime(%d) is called.", new_time);
+ LOGD("[alarm-lib]:alarmmgr_set_systime(%ld) is called.", new_time);
if (sub_initialized) {
if (!_send_alarm_set_time_async(alarm_context, new_time,
@@ -1584,7 +1590,7 @@ EXPORT_API int alarmmgr_set_systime_with_propagation_delay(struct timespec new_t
if (__sub_init() < 0)
return ERR_ALARM_SYSTEM_FAIL;
- if (!_send_alarm_set_time_with_propagation_delay(alarm_context, new_time.tv_sec, new_time.tv_nsec, req_time.tv_sec, req_time.tv_nsec, &error_code)) {
+ if (!_send_alarm_set_time_with_propagation_delay(alarm_context, new_time, req_time, &error_code)) {
LOGE("Failed to set time with propagation delay. error: %d", error_code);
return error_code;
}
@@ -1602,8 +1608,7 @@ EXPORT_API int alarmmgr_set_systime_with_propagation_delay_async(struct timespec
if (sub_initialized) {
if (!_send_alarm_set_time_with_propagation_delay_async(alarm_context,
- new_time.tv_sec, new_time.tv_nsec, req_time.tv_sec,
- req_time.tv_nsec, result_cb, user_param))
+ new_time, req_time, result_cb, user_param))
return ERR_ALARM_SYSTEM_FAIL;
} else {
#if !(GLIB_CHECK_VERSION(2, 32, 0))
@@ -1618,8 +1623,9 @@ EXPORT_API int alarmmgr_set_systime_with_propagation_delay_async(struct timespec
return ERR_ALARM_SYSTEM_FAIL;
}
param->type = SET_SYSTIME_WITH_PROPAGATION_DELAY;
- param->v = g_variant_new("(uuuu)", new_time.tv_sec, new_time.tv_nsec,
- req_time.tv_sec, req_time.tv_nsec);
+ param->v = g_variant_new("(xxxx)",
+ (gint64)new_time.tv_sec, (gint64)new_time.tv_nsec,
+ (gint64)req_time.tv_sec, (gint64)req_time.tv_nsec);
param->result_cb = result_cb;
param->user_param = user_param;
g_bus_get(G_BUS_TYPE_SYSTEM, NULL, __bus_get_for_async_api, param);
@@ -1700,11 +1706,11 @@ EXPORT_API int alarmmgr_update_alarm(alarm_id_t alarm_id,
if (ret < 0)
return ret;
- LOGD("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%d), type(%d)",
+ LOGD("start(%d-%d-%d, %02d:%02d:%02d), end(%d-%d-%d), repeat(%d), interval(%ld), type(%d)",
alarm_info->start.day, alarm_info->start.month, alarm_info->start.year,
alarm_info->start.hour, alarm_info->start.min, alarm_info->start.sec,
alarm_info->end.year, alarm_info->end.month, alarm_info->end.day,
- alarm_info->mode.repeat, (int)alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
+ alarm_info->mode.repeat, alarm_info->mode.u_interval.interval, alarm_info->alarm_type);
if (update_flag == ALARM_UPDATE_FLAG_TIME) {
if (!__alarm_validate_date(&alarm_info->start, &error_code)) {
diff --git a/server/alarm-manager-db.c b/server/alarm-manager-db.c
index f2e9c30..a6fa50e 100644
--- a/server/alarm-manager-db.c
+++ b/server/alarm-manager-db.c
@@ -95,11 +95,11 @@ bool _save_alarms(__alarm_info_t *__alarm_info)
app_service_name, app_service_name_mod, bundle, noti_len, noti, year,\
month, day, hour, min, sec, msec, day_of_week, repeat,\
alarm_type, reserved_info, dst_service_name, dst_service_name_mod)\
- values (%d,%d,%d,%d,%d,0,%Q,%Q,%Q,%Q,%Q,%Q,%d,%Q,%d,%d,%d,%d,%d,%d,%d,%d,%d,\
- %d,%d,%Q,%Q)",\
+ values (%d,%lld,%lld,%d,%d,0,%Q,%Q,%Q,%Q,%Q,%Q,%d,%Q,%d,%d,%d,%d,%d,%d,%d,%d,%d,\
+ %d,%lld,%Q,%Q)",\
__alarm_info->alarm_id,
- (int)__alarm_info->start,
- (int)__alarm_info->end,
+ (gint64)__alarm_info->start,
+ (gint64)__alarm_info->end,
__alarm_info->uid,
__alarm_info->global,
CHECK_NULL_STRING(__alarm_info->caller_pkgid),
@@ -120,7 +120,7 @@ bool _save_alarms(__alarm_info_t *__alarm_info)
mode->u_interval.day_of_week,
mode->repeat,
alarm_info->alarm_type,
- alarm_info->reserved_info,
+ (gint64)alarm_info->reserved_info,
CHECK_NULL_STRING(__alarm_info->dst_service_name),
CHECK_NULL_STRING(__alarm_info->dst_service_name_mod));
@@ -143,14 +143,14 @@ bool _update_alarms(__alarm_info_t *__alarm_info)
alarm_date_t *start = &alarm_info->start;
alarm_mode_t *mode = &alarm_info->mode;
- char *query = sqlite3_mprintf("update alarmmgr set start=%d, end=%d,\
+ char *query = sqlite3_mprintf("update alarmmgr set start=%lld, end=%lld,\
uid=%d, global=%d, is_disabled=0, caller_pkgid=%Q, callee_pkgid=%Q, app_unique_name=%Q, app_service_name=%Q, app_service_name_mod=%Q,\
bundle=%Q, noti_len=%d, noti=%Q, year=%d, month=%d, day=%d, hour=%d, min=%d, sec=%d, msec=%d,\
day_of_week=%d, repeat=%d, alarm_type=%d,\
- reserved_info=%d, dst_service_name=%Q, dst_service_name_mod=%Q\
+ reserved_info=%lld, dst_service_name=%Q, dst_service_name_mod=%Q\
where alarm_id=%d",\
- (int)__alarm_info->start,
- (int)__alarm_info->end,
+ (gint64)__alarm_info->start,
+ (gint64)__alarm_info->end,
__alarm_info->uid,
__alarm_info->global,
CHECK_NULL_STRING(__alarm_info->caller_pkgid),
@@ -171,7 +171,7 @@ bool _update_alarms(__alarm_info_t *__alarm_info)
mode->u_interval.day_of_week,
mode->repeat,
alarm_info->alarm_type,
- alarm_info->reserved_info,
+ (gint64)alarm_info->reserved_info,
CHECK_NULL_STRING(__alarm_info->dst_service_name),
CHECK_NULL_STRING(__alarm_info->dst_service_name_mod),
__alarm_info->alarm_id);
@@ -226,6 +226,7 @@ void _load_alarms_from_db()
char bundle[MAX_BUNDLE_NAME_LEN] = {0,};
int noti_len;
char *noti;
+ gint64 start_64, end_64, reserved_info_64;
if (SQLITE_OK != sqlite3_prepare(alarmmgr_db, query, strlen(query), &stmt, &tail)) {
LOGE("sqlite3_prepare() is failed.");
@@ -245,8 +246,10 @@ void _load_alarms_from_db()
mode = &alarm_info->mode;
__alarm_info->alarm_id = sqlite3_column_int(stmt, col_idx++);
- __alarm_info->start = sqlite3_column_int(stmt, col_idx++);
- __alarm_info->end = sqlite3_column_int(stmt, col_idx++);
+ start_64 = sqlite3_column_int64(stmt, col_idx++);
+ __alarm_info->start = (time_t)start_64;
+ end_64 = sqlite3_column_int64(stmt, col_idx++);
+ __alarm_info->end = (time_t)end_64;
__alarm_info->uid = sqlite3_column_int(stmt, col_idx++);
__alarm_info->global = sqlite3_column_int(stmt, col_idx++);
is_disabled = sqlite3_column_int(stmt, col_idx++);
@@ -278,7 +281,8 @@ void _load_alarms_from_db()
mode->u_interval.day_of_week = sqlite3_column_int(stmt, col_idx++);
mode->repeat = (alarm_repeat_mode_t)sqlite3_column_int(stmt, col_idx++);
alarm_info->alarm_type = sqlite3_column_int(stmt, col_idx++);
- alarm_info->reserved_info = sqlite3_column_int(stmt, col_idx++);
+ reserved_info_64 = sqlite3_column_int64(stmt, col_idx++);
+ alarm_info->reserved_info = (time_t)reserved_info_64;
strncpy(dst_service_name, (const char *)sqlite3_column_text(stmt, col_idx++),
MAX_SERVICE_NAME_LEN - 1);
strncpy(dst_service_name_mod, (const char *)sqlite3_column_text(stmt, col_idx++),
diff --git a/server/alarm-manager-db.h b/server/alarm-manager-db.h
index 59f6902..59f6902 100755..100644
--- a/server/alarm-manager-db.h
+++ b/server/alarm-manager-db.h
diff --git a/server/alarm-manager-dbus.c b/server/alarm-manager-dbus.c
index 6e8f9cd..8e0209d 100755..100644
--- a/server/alarm-manager-dbus.c
+++ b/server/alarm-manager-dbus.c
@@ -62,7 +62,7 @@ static const gchar introspection_xml[] =
" <arg type='i' name='alarm_info_mode_day_of_week' direction='in' />"
" <arg type='i' name='alarm_info_mode_repeat' direction='in' />"
" <arg type='i' name='alarm_info_alarm_type' direction='in' />"
-" <arg type='i' name='alarm_info_reserved_info' direction='in' />"
+" <arg type='x' name='alarm_info_reserved_info' direction='in' />"
" <arg type='s' name='alarm_info_reserved_service_name' direction='in' />"
" <arg type='s' name='alarm_info_reserved_service_name_mod' direction='in' />"
" <arg type='i' name='alarm_id' direction='out' />"
@@ -79,10 +79,10 @@ static const gchar introspection_xml[] =
" <arg type='i' name='alarm_info_end_month' direction='in' />"
" <arg type='i' name='alarm_info_end_day' direction='in' />"
" <arg type='i' name='alarm_info_mode_day_of_week' direction='in' />"
-" <arg type='i' name='alarm_info_mode_interval' direction='in' />"
+" <arg type='x' name='alarm_info_mode_interval' direction='in' />"
" <arg type='i' name='alarm_info_mode_repeat' direction='in' />"
" <arg type='i' name='alarm_info_alarm_type' direction='in' />"
-" <arg type='i' name='alarm_info_reserved_info' direction='in' />"
+" <arg type='x' name='alarm_info_reserved_info' direction='in' />"
" <arg type='s' name='alarm_info_bundle_data' direction='in' />"
" <arg type='i' name='alarm_id' direction='out' />"
" <arg type='i' name='return_code' direction='out' />"
@@ -98,10 +98,10 @@ static const gchar introspection_xml[] =
" <arg type='i' name='alarm_info_end_month' direction='in' />"
" <arg type='i' name='alarm_info_end_day' direction='in' />"
" <arg type='i' name='alarm_info_mode_day_of_week' direction='in' />"
-" <arg type='i' name='alarm_info_mode_interval' direction='in' />"
+" <arg type='x' name='alarm_info_mode_interval' direction='in' />"
" <arg type='i' name='alarm_info_mode_repeat' direction='in' />"
" <arg type='i' name='alarm_info_alarm_type' direction='in' />"
-" <arg type='i' name='alarm_info_reserved_info' direction='in' />"
+" <arg type='x' name='alarm_info_reserved_info' direction='in' />"
" <arg type='s' name='alarm_info_noti_data' direction='in' />"
" <arg type='i' name='alarm_id' direction='out' />"
" <arg type='i' name='return_code' direction='out' />"
@@ -124,10 +124,10 @@ static const gchar introspection_xml[] =
" <arg type='i' name='alarm_info_end_year' direction='in' />"
" <arg type='i' name='alarm_info_end_month' direction='in' />"
" <arg type='i' name='alarm_info_end_day' direction='in' />"
-" <arg type='i' name='alarm_info_mode_day_of_week' direction='in' />"
+" <arg type='x' name='alarm_info_mode_interval' direction='in' />"
" <arg type='i' name='alarm_info_mode_repeat' direction='in' />"
" <arg type='i' name='alarm_info_alarm_type' direction='in' />"
-" <arg type='i' name='alarm_info_reserved_info' direction='in' />"
+" <arg type='x' name='alarm_info_reserved_info' direction='in' />"
" <arg type='i' name='update_flag' direction='in' />"
" <arg type='i' name='return_code' direction='out' />"
" </method>"
@@ -165,7 +165,7 @@ static const gchar introspection_xml[] =
" <arg type='i' name='alarm_info_mode_day_of_week' direction='out' />"
" <arg type='i' name='alarm_info_mode_repeat' direction='out' />"
" <arg type='i' name='alarm_info_alarm_type' direction='out' />"
-" <arg type='i' name='alarm_info_reserved_info' direction='out' />"
+" <arg type='x' name='alarm_info_reserved_info' direction='out' />"
" <arg type='i' name='return_code' direction='out' />"
" </method>"
" <method name='alarm_set_rtc_time'>"
@@ -179,7 +179,7 @@ static const gchar introspection_xml[] =
" </method>"
" <method name='alarm_get_next_duetime'>"
" <arg type='i' name='alarm_id' direction='in' />"
-" <arg type='i' name='duetime' direction='out' />"
+" <arg type='x' name='duetime' direction='out' />"
" <arg type='i' name='return_code' direction='out' />"
" </method>"
" <method name='alarm_get_all_info'>"
@@ -187,14 +187,14 @@ static const gchar introspection_xml[] =
" <arg type='i' name='return_code' direction='out' />"
" </method>"
" <method name='alarm_set_time'>"
-" <arg type='i' name='time' direction='in' />"
+" <arg type='x' name='time' direction='in' />"
" <arg type='i' name='return_code' direction='out' />"
" </method>"
" <method name='alarm_set_time_with_propagation_delay'>"
-" <arg type='u' name='new_sec' direction='in' />"
-" <arg type='u' name='new_nsec' direction='in' />"
-" <arg type='u' name='req_sec' direction='in' />"
-" <arg type='u' name='req_nsec' direction='in' />"
+" <arg type='x' name='new_sec' direction='in' />"
+" <arg type='x' name='new_nsec' direction='in' />"
+" <arg type='x' name='req_sec' direction='in' />"
+" <arg type='x' name='req_nsec' direction='in' />"
" <arg type='i' name='return_code' direction='out' />"
" </method>"
" <method name='alarm_set_timezone'>"
@@ -566,19 +566,19 @@ static void handle_method_call(GDBusConnection *connection,
ret = alarm_manager_alarm_get_info(parameters, uid, &alarm_info);
g_dbus_method_invocation_return_value(
- invoc, g_variant_new("(iiiiiiiiiiiiii)",
+ invoc, g_variant_new("(iiiiiiiiiiiixi)",
alarm_info.start.year, alarm_info.start.month,
alarm_info.start.day, alarm_info.start.hour,
alarm_info.start.min, alarm_info.start.sec,
alarm_info.end.year, alarm_info.end.month,
alarm_info.end.day, alarm_info.mode.u_interval.day_of_week,
alarm_info.mode.repeat, alarm_info.alarm_type,
- alarm_info.reserved_info, ret));
+ (gint64)alarm_info.reserved_info, ret));
} else if (g_strcmp0(method_name, "alarm_get_next_duetime") == 0) {
- int duetime;
+ time_t duetime;
ret = alarm_manager_alarm_get_next_duetime(parameters, uid, &duetime);
- g_dbus_method_invocation_return_value(invoc, g_variant_new("(ii)", duetime, ret));
+ g_dbus_method_invocation_return_value(invoc, g_variant_new("(xi)", (gint64)duetime, ret));
} else if (g_strcmp0(method_name, "alarm_get_all_info") == 0) {
char *db_path = NULL;
diff --git a/server/alarm-manager-dbus.h b/server/alarm-manager-dbus.h
index eb34c17..eb34c17 100755..100644
--- a/server/alarm-manager-dbus.h
+++ b/server/alarm-manager-dbus.h
diff --git a/server/alarm-manager-util.c b/server/alarm-manager-util.c
index 03e6272..03e6272 100755..100644
--- a/server/alarm-manager-util.c
+++ b/server/alarm-manager-util.c
diff --git a/server/alarm-manager-util.h b/server/alarm-manager-util.h
index 5586a18..5586a18 100755..100644
--- a/server/alarm-manager-util.h
+++ b/server/alarm-manager-util.h
diff --git a/server/alarm-manager.c b/server/alarm-manager.c
index f562da7..1e1d7e3 100755..100644
--- a/server/alarm-manager.c
+++ b/server/alarm-manager.c
@@ -1908,7 +1908,7 @@ gboolean __alarm_expired_directly(gpointer user_data)
if (g_scheduled_alarm_list == NULL || g_scheduled_alarm_list->data == NULL)
return false;
- int time_sec = (int)(intptr_t)user_data;
+ time_t time_sec = (time_t)(intptr_t)user_data;
__scheduled_alarm_t *alarm = (__scheduled_alarm_t *)g_scheduled_alarm_list->data;
__alarm_info_t *alarm_info = alarm->__alarm_info;
@@ -1934,7 +1934,7 @@ gboolean __alarm_expired_directly(gpointer user_data)
return false;
}
-void __reschedule_alarms_with_newtime(int cur_time, int new_time, double diff_time)
+void __reschedule_alarms_with_newtime(time_t cur_time, time_t new_time, double diff_time)
{
#ifdef _APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG
char log_message[ALARMMGR_LOG_MESSAGE_SIZE] = {0,};
@@ -1958,7 +1958,7 @@ void __reschedule_alarms_with_newtime(int cur_time, int new_time, double diff_ti
char *timebuf = ctime((const time_t *)&new_time);
if (timebuf) {
timebuf[strlen(timebuf) - 1] = '\0'; /* to avoid newline */
- snprintf(log_message, sizeof(log_message), "Current: %d, New: %d, %s, diff: %f", cur_time, new_time, timebuf, diff_time);
+ snprintf(log_message, sizeof(log_message), "Current: %ld, New: %ld, %s, diff: %f", cur_time, new_time, timebuf, diff_time);
}
__save_module_log("CHANGE TIME", log_message);
#endif
@@ -2080,7 +2080,7 @@ int alarm_manager_alarm_set_rtc_time(GVariant *parameters)
}
#ifdef _APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG
- snprintf(log_message, sizeof(log_message), "wakeup rtc time: %d, %s", (int)rtc_time, ctime(&rtc_time));
+ snprintf(log_message, sizeof(log_message), "wakeup rtc time: %ld, %s", rtc_time, ctime(&rtc_time));
__save_module_log(log_tag, log_message);
#endif
return return_code;
@@ -2096,9 +2096,12 @@ int alarm_manager_alarm_set_time(GVariant* parameters)
{
double diff_time = 0.0;
struct timeval cur_time = {0,};
- int time_sec;
+ gint64 time_sec;
+ time_t new_time;
- g_variant_get(parameters, "(i)", &time_sec);
+ g_variant_get(parameters, "(x)", &time_sec);
+
+ new_time = (time_t)time_sec;
_alarm_disable_timer(); /* Disable the timer to reschedule the alarm before the time is changed. */
@@ -2107,13 +2110,13 @@ int alarm_manager_alarm_set_time(GVariant* parameters)
accrue_msec += (cur_time.tv_usec / 1000); /* Accrue the millisecond to compensate the time */
if (accrue_msec > 500) {
- diff_time = difftime(time_sec, cur_time.tv_sec) - 1;
+ diff_time = difftime(new_time, cur_time.tv_sec) - 1;
accrue_msec -= 1000;
} else {
- diff_time = difftime(time_sec, cur_time.tv_sec);
+ diff_time = difftime(new_time, cur_time.tv_sec);
}
- if (!__set_time(time_sec)) { /* Change both OS time and RTC */
+ if (!__set_time(new_time)) { /* Change both OS time and RTC */
LOGE("Failed to change both OS time and RTC");
_clear_scheduled_alarm_list();
_alarm_schedule();
@@ -2121,10 +2124,10 @@ int alarm_manager_alarm_set_time(GVariant* parameters)
return ERR_ALARM_SYSTEM_FAIL;
}
- LOGD("[TIMESTAMP]Current time(%ld), New time(%d)(%s), diff_time(%f)",
- cur_time.tv_sec, time_sec, ctime((const time_t *)&time_sec), diff_time);
+ LOGD("[TIMESTAMP]Current time(%ld), New time(%ld)(%s), diff_time(%f)",
+ cur_time.tv_sec, new_time, ctime((const time_t *)&new_time), diff_time);
- __reschedule_alarms_with_newtime(cur_time.tv_sec, time_sec, diff_time);
+ __reschedule_alarms_with_newtime(cur_time.tv_sec, new_time, diff_time);
return ALARMMGR_RESULT_SUCCESS;;
}
@@ -2134,11 +2137,17 @@ int alarm_manager_alarm_set_time_with_propagation_delay(GVariant* parameters)
struct timespec cur_time = {0,};
struct timespec delay = {0,};
struct timespec sleep_time = {0,};
- guint real_newtime = 0;
+ time_t real_newtime = 0;
accrue_msec = 0; /* reset accrued msec */
- guint new_sec, new_nsec, req_sec, req_nsec;
+ time_t new_sec, req_sec;
+ long new_nsec, req_nsec;
+ gint64 tmp_new_sec, tmp_req_sec, tmp_new_nsec, tmp_req_nsec;
- g_variant_get(parameters, "(uuuu)", &new_sec, &new_nsec, &req_sec, &req_nsec);
+ g_variant_get(parameters, "(xxxx)", &tmp_new_sec, &tmp_new_nsec, &tmp_req_sec, &tmp_req_nsec);
+ new_sec = (time_t)tmp_new_sec;
+ new_nsec = (long)tmp_new_nsec;
+ req_sec = (time_t)tmp_req_sec;
+ req_nsec = (long)tmp_req_nsec;
_alarm_disable_timer(); /* Disable the timer to reschedule the alarm before the time is changed. */
@@ -2147,7 +2156,7 @@ int alarm_manager_alarm_set_time_with_propagation_delay(GVariant* parameters)
/* Check validation of requested time */
if (req_sec > cur_time.tv_sec || (req_sec == cur_time.tv_sec && req_nsec > cur_time.tv_nsec)) {
- LOGE("The requeted time(%d.%09d) must be equal to or less than current time(%ld.%09ld).",
+ LOGE("The requeted time(%ld.%09ld) must be equal to or less than current time(%ld.%09ld).",
req_sec, req_nsec, cur_time.tv_sec, cur_time.tv_nsec);
return ERR_ALARM_INVALID_PARAM;
}
@@ -2180,9 +2189,9 @@ int alarm_manager_alarm_set_time_with_propagation_delay(GVariant* parameters)
}
diff_time = difftime(real_newtime, cur_time.tv_sec);
- LOGD("[TIMESTAMP]Current time(%ld.%09ld), New time(%d.%09d), Real Newtime(%d), diff_time(%f)",
+ LOGD("[TIMESTAMP]Current time(%ld.%09ld), New time(%ld.%09ld), Real Newtime(%ld), diff_time(%f)",
cur_time.tv_sec, cur_time.tv_nsec, new_sec, new_nsec, real_newtime, diff_time);
- LOGD("Requested(%d.%09d) Delay(%ld.%09ld) Sleep(%09ld)", req_sec, req_nsec, delay.tv_sec, delay.tv_nsec, sleep_time.tv_nsec);
+ LOGD("Requested(%ld.%09ld) Delay(%ld.%09ld) Sleep(%09ld)", req_sec, req_nsec, delay.tv_sec, delay.tv_nsec, sleep_time.tv_nsec);
__reschedule_alarms_with_newtime(cur_time.tv_sec, real_newtime, diff_time);
return ALARMMGR_RESULT_SUCCESS;
}
@@ -2276,17 +2285,22 @@ int alarm_manager_alarm_create_appsvc(GVariant *parameters, uid_t uid, pid_t pid
const char *callee_appid;
int start_year, start_month, start_day, start_hour, start_min, start_sec;
int end_year, end_month, end_day;
- int mode_day_of_week, mode_interval, mode_repeat, alarm_type, reserved_info;
+ int mode_day_of_week, mode_repeat, alarm_type;
+ time_t mode_interval, reserved_info;
+ gint64 tmp_mode_interval, tmp_reserved_info;
char *bundle_data;
*alarm_id = _alarm_id;
if (uid < 0 || pid < 0)
return ERR_ALARM_SYSTEM_FAIL;
- g_variant_get(parameters, "(iiiiiiiiiiiiii&s)",
+ g_variant_get(parameters, "(iiiiiiiiiixiix&s)",
&start_year, &start_month, &start_day, &start_hour, &start_min,
&start_sec, &end_year, &end_month, &end_day, &mode_day_of_week,
- &mode_interval, &mode_repeat, &alarm_type, &reserved_info, &bundle_data);
+ &tmp_mode_interval, &mode_repeat, &alarm_type, &tmp_reserved_info, &bundle_data);
+
+ mode_interval = (time_t)tmp_mode_interval;
+ reserved_info = (time_t)tmp_reserved_info;
b = bundle_decode((bundle_raw *)bundle_data, strlen(bundle_data));
if (b == NULL) {
@@ -2376,17 +2390,22 @@ int alarm_manager_alarm_create_noti(GVariant *parameters, uid_t uid, pid_t pid,
#endif
int start_year, start_month, start_day, start_hour, start_min, start_sec;
int end_year, end_month, end_day;
- int mode_day_of_week, mode_interval, mode_repeat, alarm_type, reserved_info;
+ int mode_day_of_week, mode_repeat, alarm_type;
+ time_t mode_interval, reserved_info;
+ gint64 tmp_mode_interval, tmp_reserved_info;
char *noti_data;
*alarm_id = _alarm_id;
if (uid < 0 || pid < 0)
return ERR_ALARM_SYSTEM_FAIL;
- g_variant_get(parameters, "(iiiiiiiiiiiiii&s)",
+ g_variant_get(parameters, "(iiiiiiiiiixiix&s)",
&start_year, &start_month, &start_day, &start_hour, &start_min,
&start_sec, &end_year, &end_month, &end_day, &mode_day_of_week,
- &mode_interval, &mode_repeat, &alarm_type, &reserved_info, &noti_data);
+ &tmp_mode_interval, &mode_repeat, &alarm_type, &tmp_reserved_info, &noti_data);
+
+ mode_interval = (time_t)tmp_mode_interval;
+ reserved_info = (time_t)tmp_reserved_info;
alarm_info.start.year = start_year;
alarm_info.start.month = start_month;
@@ -2452,7 +2471,9 @@ int alarm_manager_alarm_create(GVariant *parameters, uid_t uid, pid_t pid, int *
char *app_service_name_mod = NULL;
int start_year, start_month, start_day, start_hour, start_min, start_sec;
int msec, end_year, end_month, end_day;
- int mode_day_of_week, mode_repeat, alarm_type, reserved_info;
+ int mode_day_of_week, mode_repeat, alarm_type;
+ gint64 tmp_reserved_info;
+ time_t reserved_info;
char *reserved_service_name = NULL;
char *reserved_service_name_mod = NULL;
@@ -2460,13 +2481,15 @@ int alarm_manager_alarm_create(GVariant *parameters, uid_t uid, pid_t pid, int *
if (uid < 0 || pid < 0)
return ERR_ALARM_SYSTEM_FAIL;
- g_variant_get(parameters, "(&s&siiiiiiiiiiiiii&s&s)",
+ g_variant_get(parameters, "(&s&siiiiiiiiiiiiix&s&s)",
&app_service_name, &app_service_name_mod,
&start_year, &start_month, &start_day, &start_hour, &start_min,
&start_sec, &msec, &end_year, &end_month, &end_day,
- &mode_day_of_week, &mode_repeat, &alarm_type, &reserved_info,
+ &mode_day_of_week, &mode_repeat, &alarm_type, &tmp_reserved_info,
&reserved_service_name, &reserved_service_name_mod);
+ reserved_info = (time_t)tmp_reserved_info;
+
alarm_info.start.year = start_year;
alarm_info.start.month = start_month;
alarm_info.start.day = start_day;
@@ -2723,17 +2746,22 @@ int alarm_manager_alarm_update(GVariant *parameters, uid_t uid, pid_t pid)
int alarm_id;
int start_year, start_month, start_day, start_hour, start_min, start_sec;
int end_year, end_month, end_day;
- int mode_interval, mode_repeat, alarm_type, reserved_info, update_flag;
+ int mode_repeat, alarm_type, update_flag;
+ time_t mode_interval, reserved_info;
+ gint64 tmp_mode_interval, tmp_reserved_info;
if (uid < 0 || pid < 0)
return ERR_ALARM_SYSTEM_FAIL;
- g_variant_get(parameters, "(iiiiiiiiiiiiiii)",
+ g_variant_get(parameters, "(iiiiiiiiiixiixi)",
&alarm_id, &start_year, &start_month, &start_day, &start_hour,
&start_min, &start_sec, &end_year, &end_month, &end_day,
- &mode_interval, &mode_repeat, &alarm_type, &reserved_info,
+ &tmp_mode_interval, &mode_repeat, &alarm_type, &tmp_reserved_info,
&update_flag);
+ mode_interval = (time_t)tmp_mode_interval;
+ reserved_info = (time_t)tmp_reserved_info;
+
return_code = __check_modifiable(uid, pid, alarm_id);
if (return_code != ALARMMGR_RESULT_SUCCESS)
return return_code;
@@ -2974,7 +3002,7 @@ int alarm_manager_alarm_get_info(GVariant *parameters, uid_t uid, alarm_info_t *
return ALARMMGR_RESULT_SUCCESS;
}
-int alarm_manager_alarm_get_next_duetime(GVariant *parameters, uid_t uid, int *duetime)
+int alarm_manager_alarm_get_next_duetime(GVariant *parameters, uid_t uid, time_t *duetime)
{
GSList *gs_iter = NULL;
__alarm_info_t *entry = NULL;
@@ -3003,7 +3031,7 @@ int alarm_manager_alarm_get_next_duetime(GVariant *parameters, uid_t uid, int *d
_alarm_set_next_duetime(find_item);
LOGD("Next duetime : %s", ctime(&(find_item->due_time)));
- *duetime = (int)(find_item->due_time);
+ *duetime = find_item->due_time;
return ALARMMGR_RESULT_SUCCESS;
}