Change returned value from STORAGE_ERROR_NOT_SUPPORTED
[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 "common.h"
22
23 #define BLOCK_CONF_FILE         "/etc/storaged/block.conf"
24
25 int is_compat_bind_mount(void)
26 {
27         struct libmnt_table *t = NULL;
28         int r = 0;
29         struct libmnt_fs *fs;
30
31         t = mnt_new_table();
32         if (!t)
33                 return 0;
34
35         r = mnt_table_parse_mtab(t, NULL);
36         if (r < 0) {
37                 //LCOV_EXCL_START System Error
38                 mnt_free_table(t);
39                 return 0;
40                 //LCOV_EXCL_STOP
41         }
42
43         fs = mnt_table_find_target(t, COMPAT_DIR, MNT_ITER_BACKWARD);
44         if (fs) {
45                 // TODO : mnt_fs_get_root(fs) should be matched to tzplatform_getenv(TZ_USER_CONTENT).
46                 mnt_free_table(t);
47                 return 1;
48         }
49
50         //LCOV_EXCL_START System Error
51         mnt_free_table(t);
52         return 0;
53         //LCOV_EXCL_STOP
54 }
55
56 int storage_ext_is_supported(void)
57 {
58         static int support = -1;
59
60         if (support >= 0)
61                 return support;
62
63         if (access(BLOCK_CONF_FILE, R_OK) == 0)
64                 support = 1;
65         else
66                 support = 0;
67
68         return support;
69 }
70