#define E_MOD_SPLIT_SCREEN_SUB_REGION2 "sub2"
#define E_MOD_SPLIT_SCREEN_SYSTEM_UI_REGION "SystemUI"
+#define MAX_HINT_LEN 255
+
typedef Eina_Bool (*E_Mod_Split_Screen_Manager_Hint_Func)(E_Client *ec, const char *name, const char *value);
struct _E_Mod_Split_Screen_Manager_Hint_Handler
{
E_Mod_Split_Screen_Region *emssr;
Eina_Stringshare *appid;
- int ret = 0;
- char _region_name[10] = {0,};
- char _appid[255] = {0,};
+ char _region_name[MAX_HINT_LEN+1] = {0,};
+ char _appid[MAX_HINT_LEN+1] = {0,};
+ size_t parsed_name_len = 0, parsed_appid_len = 0;
+ char *spliter = NULL, *parsed_appid = NULL;
EINA_SAFETY_ON_NULL_RETURN_VAL(value, EINA_FALSE);
- // hint value format: region_name/appid
- ret = sscanf(value, "%[^/]/%s", _region_name, _appid);
- if (ret < 0) return EINA_FALSE;
+ // parse hint value, format: region_name/appid
+ spliter = strstr(value, "/");
+ if (!spliter)
+ {
+ SSMERR("couldn't parse hint value:%s", ec, value);
+ return EINA_FALSE;
+ }
- SSMINF("client appid(%s) -> assign to region:%s", ec, _appid, _region_name);
+ parsed_name_len = spliter - value;
+ parsed_appid = spliter + 1;
+ parsed_appid_len = strlen(parsed_appid);
- if ((strlen(_region_name) <= 0) || strlen(_region_name) > 10)
+ if ((parsed_name_len > 0) &&
+ (parsed_name_len < MAX_HINT_LEN))
{
- SSMERR("invalid region name:%s", ec, _region_name);
+ strncpy(_region_name, value, parsed_name_len);
+ }
+ else
+ {
+ SSMERR("invalid value:%s, name_len:%d", ec, value, parsed_name_len);
return EINA_FALSE;
}
- if ((strlen(_appid) <= 0) || (strlen(_appid) > 255))
+ if ((parsed_appid_len > 0) &&
+ (parsed_appid_len < MAX_HINT_LEN))
{
- SSMERR("invalid app id:%s", ec, _appid);
+ strncpy(_appid, parsed_appid, MAX_HINT_LEN);
+ }
+ else
+ {
+ SSMERR("invalid value:%s, appid_len:%d", ec, value, parsed_appid_len);
return EINA_FALSE;
}
+ SSMINF("client appid(%s) -> assign to region:%s", ec, _appid, _region_name);
+
emssr = _e_mod_split_screen_manager_find_region_by_name(_region_name);
if (!emssr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(value, EINA_FALSE);
- if ((strlen(value) <= 0) || strlen(value) > 255)
+ if ((strlen(value) <= 0) || strlen(value) > MAX_HINT_LEN)
{
SSMERR("invalid app id:%s", ec, value);
return EINA_FALSE;
EINA_SAFETY_ON_NULL_RETURN_VAL(value, EINA_FALSE);
- if ((strlen(value) <= 0) || strlen(value) > 255)
+ if ((strlen(value) <= 0) || strlen(value) > MAX_HINT_LEN)
{
SSMERR("invalid app id:%s", ec, value);
return EINA_FALSE;