tizen id: reset Tizen ID if it is not a normal file 00/56700/2
authorTaeyoung Kim <ty317.kim@samsung.com>
Tue, 12 Jan 2016 06:44:58 +0000 (15:44 +0900)
committerTaeyoung Kim <ty317.kim@samsung.com>
Tue, 12 Jan 2016 06:58:41 +0000 (15:58 +0900)
- If the Tizen ID file is not a normal file such as symlink,
  the file is removed and Tizen ID is re-made.

Change-Id: Id83565c38721cfe1f4b78f1a8d8202a8e2b8cc41
Signed-off-by: Taeyoung Kim <ty317.kim@samsung.com>
src/tizenid/tizenid.c

index 6646f01..197786e 100755 (executable)
@@ -208,9 +208,44 @@ out:
        return ret;
 }
 
+static int check_tizen_id(void)
+{
+       struct stat buf;
+       int ret;
+       mode_t mode;
+
+       ret = lstat(TIZEN_ID_PATH, &buf);
+       if (ret != 0) {
+               ret = errno;
+               if (ret == ENOENT)
+                       _I("Tizen ID does not exist");
+               else
+                       _E("Failed to get info of Tizen ID (errno:%d)", ret);
+               return -ret;
+       }
+
+       mode = buf.st_mode & S_IFMT;
+       switch (mode) {
+       case S_IFREG:
+               _I("Tizen ID already exists");
+               return 0;
+       case S_IFLNK:
+               _E("Tizen ID is invalid (Symbolic link)");
+               break;
+       default:
+               _E("Tizen ID is invalid");
+               break;
+       }
+
+       if (unlink(TIZEN_ID_PATH) < 0)
+               _E("Failed to remove invalid tizenid (errno:%d)", errno);
+
+       return -ENOENT;
+}
+
 int main(int argc, char *argv[])
 {
-       if (access(TIZEN_ID_PATH, F_OK) == 0)
+       if (check_tizen_id() == 0)
                return 0;
 
        return make_tizen_id();