2 * system_settings_ringtones.c
4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #include <system_settings.h>
23 #include <system_settings_private.h>
24 #include "system_settings_ringtones.h"
25 #include "system_settings_json.h"
27 inline char *strlower(char *str)
29 if (!str) return NULL;
31 for (; *str != '\0'; str++)
37 char *get_filename_from_fullname(const char *fullname)
39 //retvm_if(fullname == NULL, NULL, "fullname == NULL");
40 if (fullname == NULL) return NULL;
43 snprintf(tmp, sizeof(tmp), "%s", fullname);
45 char *name = strrchr(tmp, '.');
49 return strdup((char*)tmp);
52 char *get_media_basename(const char *dir_path, const char *name)
54 //retv_if(isEmptyStr(dir_path) || isEmptyStr(name), NULL);
55 if (dir_path == NULL) return NULL;
57 char path[512] = {0, };
58 snprintf(path, sizeof(path), "%s/%s", dir_path, name);
60 metadata_extractor_h metadata = NULL;
62 int ret = metadata_extractor_create(&metadata);
63 if (ret == METADATA_EXTRACTOR_ERROR_NONE && metadata) {
64 ret = metadata_extractor_set_path(metadata, path);
65 if (ret == METADATA_EXTRACTOR_ERROR_NONE) {
66 ret = metadata_extractor_get_metadata(
67 metadata, METADATA_TITLE, &title);
68 metadata_extractor_destroy(metadata);
70 /*return (char *)g_strdup(title);*/
75 metadata_extractor_destroy(metadata);
83 int get_filelist_from_dir_path(char *path, Eina_List **file_list)
87 struct dirent ent, *result;
90 SETTING_TRACE("dir path is null");
94 if (file_list == NULL) {
95 SETTING_TRACE("file_list is null");
104 while (readdir_r(pDir, &ent, &result) == 0) {
108 fileNodeInfo *pNode = NULL;
110 if (strncmp(ent.d_name, ".", 1) == 0
111 || strcmp(ent.d_name, "..") == 0)
114 if ((ent.d_type & DT_REG) == 0)
117 pNode = (fileNodeInfo *) malloc(sizeof(fileNodeInfo));
121 memset(pNode, 0, sizeof(fileNodeInfo));
123 pNode->path = strdup(path);
124 pNode->name = strdup(ent.d_name);
125 pNode->media_name = get_media_basename(
126 pNode->path, pNode->name);
128 *file_list = eina_list_append(*file_list, pNode);