Apply requirement for gcov automation
[platform/core/system/libstorage.git] / src / storage-common.c
1 /*
2  * libstorage
3  *
4  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the License);
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *       http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 #include <unistd.h>
20 #include <libmount.h>
21 #include <system_info.h>
22 #include "common.h"
23
24 #define EXTERNAL_FEATURE        "http://tizen.org/feature/storage.external"
25
26 int is_compat_bind_mount(void)
27 {
28         struct libmnt_table *t = NULL;
29         int r = 0;
30         struct libmnt_fs *fs;
31
32         t = mnt_new_table();
33         if (!t)
34                 return 0;
35
36         r = mnt_table_parse_mtab(t, NULL);
37         if (r < 0) {
38                 //LCOV_EXCL_START System Error
39                 mnt_free_table(t);
40                 return 0;
41                 //LCOV_EXCL_STOP
42         }
43
44         fs = mnt_table_find_target(t, COMPAT_DIR, MNT_ITER_BACKWARD);
45         if (fs) {
46                 // TODO : mnt_fs_get_root(fs) should be matched to tzplatform_getenv(TZ_USER_CONTENT).
47                 mnt_free_table(t);
48                 return 1;
49         }
50
51         //LCOV_EXCL_START System Error
52         mnt_free_table(t);
53         return 0;
54         //LCOV_EXCL_STOP
55 }
56
57 int storage_ext_is_supported(void)
58 {
59         static int support = -1;
60         int ret_val;
61         bool ext_avail;
62
63         if (support >= 0)
64                 return support;
65
66         ret_val = system_info_get_platform_bool(EXTERNAL_FEATURE, &ext_avail);
67         if (ret_val < 0)
68                 support = 0;
69         else if (ret_val == 0 && !ext_avail)
70                 support = 0;
71         else
72                 support = 1;
73
74         return support;
75 }
76