fota_tar: Improve a bit gTarFd handling
[platform/core/system/libtota.git] / ss_engine / fota_tar.c
index f37ef1e..af32bb2 100755 (executable)
@@ -208,9 +208,9 @@ int tar_get_item_offset(char *tar, char *item)
                return -1;
        };
        //check if gTarFd was opened by tar_open during SS_FSUpdateFile then use it
-       if (gTarFd > 0)
+       if (gTarFd >= 0)
                fd = gTarFd;
-       if (fd < 0) {
+       else {
                fd = open(tar, O_RDONLY);
                if (fd < 0) {
                        LOGE("can't open file(%s).\n", tar);
@@ -562,15 +562,16 @@ tar_Data_t *tar_build_cfg_table(char *tar)
                return NULL;
        }
        //check if gTarFd was opened by tar_open during SS_FSUpdateFile then use it
-       if (gTarFd > 0)
+       if (gTarFd >= 0)
                fd = gTarFd;
-       if (fd < 0) {
+       else {
                fd = open(tar, O_RDONLY);
                if (fd < 0) {
                        LOG("can't open file(%s).\n", tar);
                        return NULL;
                }
        }
+
        tar_len = lseek(fd, 0, SEEK_END);
        if (tar_len < 0) {
                LOGL(LOG_SSENGINE, "can't read tar_len (%s).\n", tar);
@@ -761,7 +762,7 @@ tar_Data_t *tar_cfg_clear_nodes(tar_Data_t * head)
 
 int tar_open(char *tar)
 {
-       if (gTarFd)
+       if (gTarFd >= 0)
                close(gTarFd);
        gTarFd = open(tar, O_RDONLY);
        if (gTarFd < 0) {
@@ -773,7 +774,7 @@ int tar_open(char *tar)
 
 int tar_close()
 {
-       if (gTarFd)
+       if (gTarFd >= 0)
                close(gTarFd);
        gTarFd = -1;
        return 0;
@@ -1071,15 +1072,16 @@ int fast_tar_extract_file(char *tar, char *item, char *pathname, int size, int o
                LOG("Invalid params\n");
                return -1;
        }
-       if (gTarFd > 0)
+       if (gTarFd >= 0)
                fd = gTarFd;
-       if (fd < 0) {
+       else {
                fd = open(tar, O_RDONLY);
                if (fd < 0) {
                        LOG("can't open file(%s).\n", tar);
                        return -1;
                }
        }
+
        pos = lseek(fd, data_offset, SEEK_SET);
        if (pos < 0) {
                LOG("lseek fail (%s offset %d).\n", tar, data_offset);