int mc_util_get_own_name(char **name);
char* mc_util_get_interface_name(const char *type, const char *name);
int mc_util_make_filter_interface_name(const char *prefix, const char *filter, char **interface_name);
-int mc_util_set_command_availabe(const char *name, const char *command_type, const char *command);
-int mc_util_get_command_availabe(const char *name, const char *command_type, const char *command);
+int mc_util_set_command_available(const char *name, const char *command_type, const char *command);
+int mc_util_get_command_available(const char *name, const char *command_type, const char *command);
+int mc_util_get_request_id(unsigned int *req_id);
+int mc_safe_strtoi(const char *buffer, int *value);
+int mc_safe_strtoull(const char *buffer, unsigned long long *value);
/* for d-bus IPC */
int mc_ipc_get_dbus_connection(GDBusConnection **conn, int *dref_count);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error mc_db_check_server_table_exist [%d]", ret);
mc_retvm_if(exist_server == FALSE, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Error Invalid server_name");
- ret = mc_util_set_command_availabe(mc_client->client_name, MC_COMMAND_PLAYBACKSTATE, NULL);
+ ret = mc_util_set_command_available(mc_client->client_name, MC_COMMAND_PLAYBACKSTATE, NULL);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error mc_util_set_command_availabe [%d]", ret);
message = g_strdup_printf("%s%s%d", mc_client->client_name, MC_STRING_DELIMITER, state);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error mc_db_check_server_table_exist [%d]", ret);
mc_retvm_if(exist_server == FALSE, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Error Invalid server_name");
- ret = mc_util_set_command_availabe(mc_client->client_name, MC_COMMAND_CUSTOM, command);
+ ret = mc_util_set_command_available(mc_client->client_name, MC_COMMAND_CUSTOM, command);
if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("Error mc_util_set_command_availabe [%d]", ret);
return ret;
params = g_strsplit(message, MC_STRING_DELIMITER, 0);
mc_retm_if(params == NULL, "invalid playback state command");
- if (mc_util_get_command_availabe(params[0], MC_COMMAND_PLAYBACKSTATE, NULL) != MEDIA_CONTROLLER_ERROR_NONE) {
+ if (mc_util_get_command_available(params[0], MC_COMMAND_PLAYBACKSTATE, NULL) != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("Error permission denied");
return ;
}
if (params[0])
sender = strdup(params[0]);
- if (mc_util_get_command_availabe(sender, MC_COMMAND_CUSTOM, params[1]) != MEDIA_CONTROLLER_ERROR_NONE) {
+ if (mc_util_get_command_available(sender, MC_COMMAND_CUSTOM, params[1]) != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("Error permission denied");
MC_SAFE_FREE(sender);
g_strfreev(params);
#define MAX_NAME_LENGTH 255
+static GMutex mutex_req_id;
+
static void _mc_util_check_valid_name(const char *name, char **valid_name)
{
char old_word[MAX_NAME_LENGTH] = {0, };
return MEDIA_CONTROLLER_ERROR_NONE;
}
-int mc_util_set_command_availabe(const char *name, const char *command_type, const char *command)
+int mc_util_set_command_available(const char *name, const char *command_type, const char *command)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *message = NULL;
return ret;
}
-int mc_util_get_command_availabe(const char *name, const char *command_type, const char *command)
+int mc_util_get_command_available(const char *name, const char *command_type, const char *command)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *message = NULL;
return ret;
}
+
+int mc_util_get_request_id(unsigned int *req_id)
+{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
+ static unsigned int request_id = 0;
+
+ mc_retvm_if(req_id == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid parameter");
+
+ g_mutex_lock(&mutex_req_id);
+
+ if (request_id + 1 == UINT_MAX) {
+ request_id = 0;
+ }
+ request_id++;
+ *req_id = request_id;
+
+ g_mutex_unlock(&mutex_req_id);
+
+ return ret;
+}
+
+int mc_safe_strtoi(const char *buffer, int *value)
+{
+ char *end = NULL;
+ errno = 0;
+ mc_retvm_if(buffer == NULL || value == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid parameter");
+
+ const long sl = strtol(buffer, &end, 10);
+
+ mc_retvm_if(end == buffer, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "not a decimal number");
+ mc_retvm_if('\0' != *end, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "extra characters at end of input: %s", end);
+ mc_retvm_if((LONG_MIN == sl || LONG_MAX == sl) && (ERANGE == errno), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "out of range of type long");
+ mc_retvm_if(sl > INT_MAX, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "greater than INT_MAX");
+ mc_retvm_if(sl < INT_MIN, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "smaller than INT_MIN");
+
+ *value = (int)sl;
+
+ return MEDIA_CONTROLLER_ERROR_NONE;
+}
+
+int mc_safe_strtoull(const char *buffer, unsigned long long *value)
+{
+ char *end = NULL;
+ errno = 0;
+ mc_retvm_if(buffer == NULL || value == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid parameter");
+
+ const unsigned long long ull = strtoull(buffer, &end, 10);
+
+ mc_retvm_if(end == buffer, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "not a decimal number");
+ mc_retvm_if('\0' != *end, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "extra characters at end of input: %s", end);
+ mc_retvm_if((ULLONG_MAX == ull) && (ERANGE == errno), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "out of range of type long");
+
+ *value = (unsigned long long)ull;
+
+ return MEDIA_CONTROLLER_ERROR_NONE;
+}