- chmod() did't change smack label of already existing directory.
- remove() can't remove not empty directory
Change-Id: I801ecfaf5df86122fb553891598d7b27b43069e3
Signed-off-by: pr.jung <pr.jung@samsung.com>
#include "fd_handler.h"
#include "utils.h"
#include "apps.h"
+#include "storaged_common.h"
/**
* TODO Assume root device is always mmcblk0*.
op->invocation = invocation;
/* Need to disble app2ext whenever unmounting mmc */
+ /* app2ext_disable_all_external_pkgs inside a critical section need to be avoided. */
if (operation == BLOCK_DEV_UNMOUNT &&
bdev->data->state == BLOCK_MOUNT &&
bdev->data->block_type == BLOCK_MMC_DEV &&
static void block_init(void *data)
{
- struct stat buf;
int ret;
int i;
pthread_cond_init(&(th_manager[i].cond), NULL);
}
- ret = stat(EXTERNAL_STORAGE_PATH, &buf);
- if (ret < 0) {
- ret = mkdir(EXTERNAL_STORAGE_PATH, 0755);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else if (!S_ISDIR(buf.st_mode)) {
- ret = remove(EXTERNAL_STORAGE_PATH);
- if (ret < 0)
- _E("Fail to remove %s. errno: %d", EXTERNAL_STORAGE_PATH, errno);
- ret = mkdir(EXTERNAL_STORAGE_PATH, 0755);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else {
- ret = chmod(EXTERNAL_STORAGE_PATH, 0644);
- if (ret < 0)
- _E("Fail to change permissions of a file");
- }
+ ret = remove_directory(EXTERNAL_STORAGE_PATH);
+ if (ret < 0)
+ _E("Failed to remove directory");
+ ret = mkdir(EXTERNAL_STORAGE_PATH, 0755);
+ if (ret < 0)
+ _E("Failed to make directory: %d", errno);
- ret = stat(EXTENDED_INTERNAL_PATH, &buf);
- if (ret < 0) {
- ret = mkdir(EXTENDED_INTERNAL_PATH, 0755);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else if (!S_ISDIR(buf.st_mode)) {
- ret = remove(EXTENDED_INTERNAL_PATH);
- if (ret < 0)
- _E("Fail to remove %s. errno: %d", EXTENDED_INTERNAL_PATH, errno);
- ret = mkdir(EXTENDED_INTERNAL_PATH, 0755);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else {
- ret = chmod(EXTENDED_INTERNAL_PATH, 0644);
- if (ret < 0)
- _E("Fail to change permissions of a file");
- }
+ ret = remove_directory(EXTENDED_INTERNAL_PATH);
+ if (ret < 0)
+ _E("Failed to remove directory");
+ ret = mkdir(EXTENDED_INTERNAL_PATH, 0755);
+ if (ret < 0)
+ _E("Failed to make directory: %d", errno);
ret = get_internal_storage_number();
if (ret < 0)
#define MODEL_NAME "http://tizen.org/system/model_name"
#define MODEL_EMULATOR "Emulator"
+static const char *rm_arg[] = {
+ "/usr/bin/rm",
+ "-rf", NULL, NULL,
+};
+
bool is_emulator(void)
{
int ret;
return r;
}
+
+int remove_directory(const char*path)
+{
+ int argc;
+
+ argc = ARRAY_SIZE(rm_arg);
+ rm_arg[argc - 2] = path;
+ return run_child(argc, rm_arg);
+}
int run_child(int argc, const char *argv[]);
bool is_emulator(void);
+int remove_directory(const char* path);
#endif /* __STORAGED_COMMON_H__ */
FILE(GLOB ALL_SRCS "*.c")
SET(SRCS ${ALL_SRCS})
SET(SHARED_SRCS
+ ../shared/common.c
../shared/config-parser.c
../shared/fd_handler.c
)
#include "log.h"
#include "config-parser.h"
#include "module-intf.h"
+#include "storaged_common.h"
#define MEMORY_STATUS_TMP_PATH "/tmp"
#define MEMORY_STATUS_OPT_PATH "/opt"
static void storage_init(void *data)
{
- struct stat buf;
int ret;
storage_config_load(&storage_internal_info);
if (ret < 0)
_E("Failed to register dbus interface and methods(%d)", ret);
- ret = stat(STORAGED_DIR_PATH, &buf);
- if (ret < 0) {
- ret = mkdir(STORAGED_DIR_PATH, 0644);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else if (!S_ISDIR(buf.st_mode)) {
- ret = remove(STORAGED_DIR_PATH);
- if (ret < 0)
- _E("Fail to remove %s. errno: %d", STORAGED_DIR_PATH, errno);
- ret = mkdir(STORAGED_DIR_PATH, 0644);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else {
- ret = chmod(STORAGED_DIR_PATH, 0644);
- if (ret < 0)
- _E("Fail to change permissions of a file");
- }
+ ret = remove_directory(STORAGED_DIR_PATH);
+ if (ret < 0)
+ _E("Failed to remove directory");
+ ret = mkdir(STORAGED_DIR_PATH, 0644);
+ if (ret < 0)
+ _E("Failed to make directory: %d", errno);
- ret = stat(NEED_CLEANUP_DIR_PATH, &buf);
- if (ret < 0) {
- ret = mkdir(NEED_CLEANUP_DIR_PATH, 0644);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else if (!S_ISDIR(buf.st_mode)) {
- ret = remove(NEED_CLEANUP_DIR_PATH);
- if (ret < 0)
- _E("Fail to remove %s. errno: %d", NEED_CLEANUP_DIR_PATH, errno);
- ret = mkdir(NEED_CLEANUP_DIR_PATH, 0644);
- if (ret < 0)
- _E("Failed to make directory: %d", errno);
- } else {
- ret = chmod(NEED_CLEANUP_DIR_PATH, 0644);
- if (ret < 0)
- _E("Fail to change permissions of a file");
- }
+ ret = remove_directory(NEED_CLEANUP_DIR_PATH);
+ if (ret < 0)
+ _E("Failed to remove directory");
+ ret = mkdir(NEED_CLEANUP_DIR_PATH, 0644);
+ if (ret < 0)
+ _E("Failed to make directory: %d", errno);
}
static void storage_exit(void *data)