{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/comments/28114950","id":28114950,"diff_hunk":"@@ -150,9 +171,14 @@ public bool Exists\n \n             public DateTimeOffset CreationTime\n             {\n-                // Not supported.\n-                get { return default(DateTimeOffset); }\n-                set { } // Not supported. Only some systems support \"birthtime\" from stat.\n+                get\n+                {\n+                    EnsureStatInitialized();\n+                    return (_fileinfo.flags & (uint)Interop.libcoreclr.FileInformationFlags.HasBTime) != 0 ?\n+                        DateTimeOffset.FromUnixTimeSeconds(_fileinfo.btime) :\n+                        default(DateTimeOffset);\n+                }\n+                set { } // Not supported","path":"src/System.IO.FileSystem/src/System/IO/UnixFileSystemObject.cs","position":105,"original_position":105,"commit_id":"708ef853c271aa9ff225f2623a7406c9073abee1","original_commit_id":"708ef853c271aa9ff225f2623a7406c9073abee1","user":{"login":"FiveTimesTheFun","id":6598317,"avatar_url":"https://avatars.githubusercontent.com/u/6598317?v=3","gravatar_id":"","url":"https://api.github.com/users/FiveTimesTheFun","html_url":"https://github.com/FiveTimesTheFun","followers_url":"https://api.github.com/users/FiveTimesTheFun/followers","following_url":"https://api.github.com/users/FiveTimesTheFun/following{/other_user}","gists_url":"https://api.github.com/users/FiveTimesTheFun/gists{/gist_id}","starred_url":"https://api.github.com/users/FiveTimesTheFun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FiveTimesTheFun/subscriptions","organizations_url":"https://api.github.com/users/FiveTimesTheFun/orgs","repos_url":"https://api.github.com/users/FiveTimesTheFun/repos","events_url":"https://api.github.com/users/FiveTimesTheFun/events{/privacy}","received_events_url":"https://api.github.com/users/FiveTimesTheFun/received_events","type":"User","site_admin":false},"body":"PlatformNotSupportedException?","created_at":"2015-04-10T00:24:19Z","updated_at":"2015-04-10T00:24:19Z","html_url":"https://github.com/dotnet/corefx/pull/1361#discussion_r28114950","pull_request_url":"https://api.github.com/repos/dotnet/corefx/pulls/1361","_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments/28114950"},"html":{"href":"https://github.com/dotnet/corefx/pull/1361#discussion_r28114950"},"pull_request":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/1361"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/1361","id":32982916,"html_url":"https://github.com/dotnet/corefx/pull/1361","diff_url":"https://github.com/dotnet/corefx/pull/1361.diff","patch_url":"https://github.com/dotnet/corefx/pull/1361.patch","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/1361","number":1361,"state":"open","locked":false,"title":"Fix System.IO.FileSystem product source and tests for Linux","user":{"login":"stephentoub","id":2642209,"avatar_url":"https://avatars.githubusercontent.com/u/2642209?v=3","gravatar_id":"","url":"https://api.github.com/users/stephentoub","html_url":"https://github.com/stephentoub","followers_url":"https://api.github.com/users/stephentoub/followers","following_url":"https://api.github.com/users/stephentoub/following{/other_user}","gists_url":"https://api.github.com/users/stephentoub/gists{/gist_id}","starred_url":"https://api.github.com/users/stephentoub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephentoub/subscriptions","organizations_url":"https://api.github.com/users/stephentoub/orgs","repos_url":"https://api.github.com/users/stephentoub/repos","events_url":"https://api.github.com/users/stephentoub/events{/privacy}","received_events_url":"https://api.github.com/users/stephentoub/received_events","type":"User","site_admin":false},"body":"Prior to this set of changes, 110 of the ~570 FileSystem tests (inner loop and outer loop) were failing on Linux.  After this PR, there are 0 failing tests.\r\n\r\nPrimary product fixes:\r\n- Using rmdir/unlink for directory/file deletion rather than using remove\r\n- Disallowing FileStreams to be opened for directories\r\n- Supporting copying files when only target directory (not target name) is specified\r\n- Overhauling directory enumeration to ensure to match Win32 behaviors related to search pattern normalization, input validation, supporting re-iteration through an enumerable, outputting partial paths based on user-supplied path, using a SafeHandle to ensure resources are cleaned up\r\n- Fixing FileSystemObject.LastWriteTime to correctly return the LastWriteTime rather than LastAccessTime\r\n- Fixing FileAttributes.ReadOnly handling due to inappropriate caching\r\n- Validating inputs to FileSystemObject.Attributes, and make sure that changes to attributes are visible afterwards\r\n- Adding support for getting CreationTime if it's supported by the OS\r\n- Marking links with FileAttributes.ReparsePoint\r\n- Working around current runtime bug related to exception handling and finally blocks getting executed twice\r\n\r\nPrimary test fixes:\r\n- Suppressing tests as platform-specific that dependend on Win32-isms like drive letters, alternate data streams, etc.\r\n- Changing a bunch of '\\' usage to instead use Path.DirectorySeparatorChar or Path.Combine\r\n- Adapting to behavioral differences between Windows and Unix, e.g. whether a directory can be deleted if it's readonly, invalid path characters, max path lengths, file sharing differences, etc.\r\n\r\nThese changes should all accrue to OSX as well, but we'll need to separately do an exercise to clean this library and tests up there for anything OSX-specific.","created_at":"2015-04-09T18:30:58Z","updated_at":"2015-04-10T00:24:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"35df53a5486f1416d679f58b675e39ca80a1e8c1","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/corefx/pulls/1361/commits","review_comments_url":"https://api.github.com/repos/dotnet/corefx/pulls/1361/comments","review_comment_url":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/1361/comments","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/708ef853c271aa9ff225f2623a7406c9073abee1","head":{"label":"stephentoub:fix_filesystem","ref":"fix_filesystem","sha":"708ef853c271aa9ff225f2623a7406c9073abee1","user":{"login":"stephentoub","id":2642209,"avatar_url":"https://avatars.githubusercontent.com/u/2642209?v=3","gravatar_id":"","url":"https://api.github.com/users/stephentoub","html_url":"https://github.com/stephentoub","followers_url":"https://api.github.com/users/stephentoub/followers","following_url":"https://api.github.com/users/stephentoub/following{/other_user}","gists_url":"https://api.github.com/users/stephentoub/gists{/gist_id}","starred_url":"https://api.github.com/users/stephentoub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephentoub/subscriptions","organizations_url":"https://api.github.com/users/stephentoub/orgs","repos_url":"https://api.github.com/users/stephentoub/repos","events_url":"https://api.github.com/users/stephentoub/events{/privacy}","received_events_url":"https://api.github.com/users/stephentoub/received_events","type":"User","site_admin":false},"repo":{"id":26551529,"name":"corefx","full_name":"stephentoub/corefx","owner":{"login":"stephentoub","id":2642209,"avatar_url":"https://avatars.githubusercontent.com/u/2642209?v=3","gravatar_id":"","url":"https://api.github.com/users/stephentoub","html_url":"https://github.com/stephentoub","followers_url":"https://api.github.com/users/stephentoub/followers","following_url":"https://api.github.com/users/stephentoub/following{/other_user}","gists_url":"https://api.github.com/users/stephentoub/gists{/gist_id}","starred_url":"https://api.github.com/users/stephentoub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephentoub/subscriptions","organizations_url":"https://api.github.com/users/stephentoub/orgs","repos_url":"https://api.github.com/users/stephentoub/repos","events_url":"https://api.github.com/users/stephentoub/events{/privacy}","received_events_url":"https://api.github.com/users/stephentoub/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/stephentoub/corefx","description":"This repository contains the foundational libraries that make up the .NET Core development stack.","fork":true,"url":"https://api.github.com/repos/stephentoub/corefx","forks_url":"https://api.github.com/repos/stephentoub/corefx/forks","keys_url":"https://api.github.com/repos/stephentoub/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/stephentoub/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/stephentoub/corefx/teams","hooks_url":"https://api.github.com/repos/stephentoub/corefx/hooks","issue_events_url":"https://api.github.com/repos/stephentoub/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/stephentoub/corefx/events","assignees_url":"https://api.github.com/repos/stephentoub/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/stephentoub/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/stephentoub/corefx/tags","blobs_url":"https://api.github.com/repos/stephentoub/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/stephentoub/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/stephentoub/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/stephentoub/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/stephentoub/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/stephentoub/corefx/languages","stargazers_url":"https://api.github.com/repos/stephentoub/corefx/stargazers","contributors_url":"https://api.github.com/repos/stephentoub/corefx/contributors","subscribers_url":"https://api.github.com/repos/stephentoub/corefx/subscribers","subscription_url":"https://api.github.com/repos/stephentoub/corefx/subscription","commits_url":"https://api.github.com/repos/stephentoub/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/stephentoub/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/stephentoub/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/stephentoub/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/stephentoub/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/stephentoub/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/stephentoub/corefx/merges","archive_url":"https://api.github.com/repos/stephentoub/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/stephentoub/corefx/downloads","issues_url":"https://api.github.com/repos/stephentoub/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/stephentoub/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/stephentoub/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/stephentoub/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/stephentoub/corefx/labels{/name}","releases_url":"https://api.github.com/repos/stephentoub/corefx/releases{/id}","created_at":"2014-11-12T19:06:24Z","updated_at":"2015-04-09T21:30:52Z","pushed_at":"2015-04-09T21:30:51Z","git_url":"git://github.com/stephentoub/corefx.git","ssh_url":"git@github.com:stephentoub/corefx.git","clone_url":"https://github.com/stephentoub/corefx.git","svn_url":"https://github.com/stephentoub/corefx","homepage":"","size":17546,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"21aca7ab59da629ec9dc7a469f9886bb39bc6e71","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":26295345,"name":"corefx","full_name":"dotnet/corefx","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/corefx","description":"This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others.","fork":false,"url":"https://api.github.com/repos/dotnet/corefx","forks_url":"https://api.github.com/repos/dotnet/corefx/forks","keys_url":"https://api.github.com/repos/dotnet/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/corefx/teams","hooks_url":"https://api.github.com/repos/dotnet/corefx/hooks","issue_events_url":"https://api.github.com/repos/dotnet/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/corefx/events","assignees_url":"https://api.github.com/repos/dotnet/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/corefx/tags","blobs_url":"https://api.github.com/repos/dotnet/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/corefx/languages","stargazers_url":"https://api.github.com/repos/dotnet/corefx/stargazers","contributors_url":"https://api.github.com/repos/dotnet/corefx/contributors","subscribers_url":"https://api.github.com/repos/dotnet/corefx/subscribers","subscription_url":"https://api.github.com/repos/dotnet/corefx/subscription","commits_url":"https://api.github.com/repos/dotnet/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/corefx/merges","archive_url":"https://api.github.com/repos/dotnet/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/corefx/downloads","issues_url":"https://api.github.com/repos/dotnet/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/corefx/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/corefx/releases{/id}","created_at":"2014-11-06T23:42:48Z","updated_at":"2015-04-09T23:40:42Z","pushed_at":"2015-04-09T23:40:42Z","git_url":"git://github.com/dotnet/corefx.git","ssh_url":"git@github.com:dotnet/corefx.git","clone_url":"https://github.com/dotnet/corefx.git","svn_url":"https://github.com/dotnet/corefx","homepage":"","size":33732,"stargazers_count":7387,"watchers_count":7387,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1439,"mirror_url":null,"open_issues_count":318,"forks":1439,"open_issues":318,"watchers":7387,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/1361"},"html":{"href":"https://github.com/dotnet/corefx/pull/1361"},"issue":{"href":"https://api.github.com/repos/dotnet/corefx/issues/1361"},"comments":{"href":"https://api.github.com/repos/dotnet/corefx/issues/1361/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/1361/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/1361/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/corefx/statuses/708ef853c271aa9ff225f2623a7406c9073abee1"}}}}