{"action":"created","comment":{"url":"https://api.github.com/repos/mono/mono/pulls/comments/37776582","id":37776582,"diff_hunk":"@@ -4356,6 +4544,223 @@ public static long pwritev (int fd, Iovec[] iov, long offset)\n \t\t\treturn sys_pwritev (fd, iov, iov.Length, offset);\n \t\t}\n \t\t#endregion\n+\n+\t\t#region <socket.h> Declarations\n+\t\t//\n+\t\t// <socket.h>\n+\t\t//\n+\n+\t\t// socket(2)\n+\t\t//    int socket(int domain, int type, int protocol);\n+\t\t[DllImport (LIBC, SetLastError=true, \n+\t\t\t\tEntryPoint=\"socket\")]\n+\t\tstatic extern int sys_socket (int domain, int type, int protocol);\n+\n+\t\tpublic static int socket (UnixAddressFamily domain, UnixSocketType type, UnixSocketFlags flags, UnixSocketProtocol protocol)\n+\t\t{\n+\t\t\tvar _domain = NativeConvert.FromUnixAddressFamily (domain);\n+\t\t\tvar _type = NativeConvert.FromUnixSocketType (type);\n+\t\t\tvar _flags = NativeConvert.FromUnixSocketFlags (flags);\n+\t\t\t// protocol == 0 is a special case (uses default protocol)\n+\t\t\tvar _protocol = protocol == 0 ? 0 : NativeConvert.FromUnixSocketProtocol (protocol);\n+\n+\t\t\treturn sys_socket (_domain, _type | _flags, _protocol);\n+\t\t}\n+\n+\t\tpublic static int socket (UnixAddressFamily domain, UnixSocketType type, UnixSocketProtocol protocol)\n+\t\t{\n+\t\t\treturn socket (domain, type, 0, protocol);\n+\t\t}\n+\n+\t\t// socketpair(2)\n+\t\t//    int socketpair(int domain, int type, int protocol, int sv[2]);\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_socketpair\")]\n+\t\tstatic extern int sys_socketpair (int domain, int type, int protocol, out int socket1, out int socket2);\n+\n+\t\tpublic static int socketpair (UnixAddressFamily domain, UnixSocketType type, UnixSocketFlags flags, UnixSocketProtocol protocol, out int socket1, out int socket2)\n+\t\t{\n+\t\t\tvar _domain = NativeConvert.FromUnixAddressFamily (domain);\n+\t\t\tvar _type = NativeConvert.FromUnixSocketType (type);\n+\t\t\tvar _flags = NativeConvert.FromUnixSocketFlags (flags);\n+\t\t\t// protocol == 0 is a special case (uses default protocol)\n+\t\t\tvar _protocol = protocol == 0 ? 0 : NativeConvert.FromUnixSocketProtocol (protocol);\n+\n+\t\t\treturn sys_socketpair (_domain, _type | _flags, _protocol, out socket1, out socket2);\n+\t\t}\n+\n+\t\tpublic static int socketpair (UnixAddressFamily domain, UnixSocketType type, UnixSocketProtocol protocol, out int socket1, out int socket2)\n+\t\t{\n+\t\t\treturn socketpair (domain, type, 0, protocol, out socket1, out socket2);\n+\t\t}\n+\n+\t\t// sockatmark(2)\n+\t\t//    int sockatmark(int sockfd);\n+\t\t[DllImport (LIBC, SetLastError=true)]\n+\t\tpublic static extern int sockatmark (int socket);\n+\n+\t\t// listen(2)\n+\t\t//    int listen(int sockfd, int backlog);\n+\t\t[DllImport (LIBC, SetLastError=true)]\n+\t\tpublic static extern int listen (int socket, int backlog);\n+\n+\t\t// getsockopt(2)\n+\t\t//    int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_getsockopt\")]\n+\t\tstatic extern unsafe int sys_getsockopt (int socket, int level, int option_name, void *option_value, ref long option_len);\n+\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_getsockopt_timeval\")]\n+\t\tstatic extern unsafe int sys_getsockopt_timeval (int socket, int level, int option_name, out Timeval option_value);\n+\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_getsockopt_linger\")]\n+\t\tstatic extern unsafe int sys_getsockopt_linger (int socket, int level, int option_name, out Linger option_value);\n+\n+\t\tpublic static unsafe int getsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, void *option_value, ref long option_len)\n+\t\t{\n+\t\t\tvar _level = NativeConvert.FromUnixSocketProtocol (level);\n+\t\t\tvar _option_name = NativeConvert.FromUnixSocketOptionName (option_name);\n+\t\t\treturn sys_getsockopt (socket, _level, _option_name, option_value, ref option_len);\n+\t\t}\n+\n+\t\tpublic static unsafe int getsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, out int option_value)\n+\t\t{\n+\t\t\tint value;\n+\t\t\tlong size = sizeof (int);\n+\t\t\tint ret = getsockopt (socket, level, option_name, &value, ref size);\n+\t\t\tif (ret != -1 && size != sizeof (int)) {\n+\t\t\t\tSetLastError (Errno.EINVAL);\n+\t\t\t\tret = -1;\n+\t\t\t}\n+\t\t\toption_value = value;\n+\t\t\treturn ret;\n+\t\t}\n+\n+\t\tpublic static unsafe int getsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, byte[] option_value, ref long option_len)\n+\t\t{\n+\t\t\tif (option_len > (option_value == null ? 0 : option_value.Length))\n+\t\t\t\tthrow new ArgumentOutOfRangeException (\"option_len\", \"option_len > (option_value == null ? 0 : option_value.Length)\");\n+\t\t\tfixed (byte* ptr = option_value)\n+\t\t\t\treturn getsockopt (socket, level, option_name, ptr, ref option_len);\n+\t\t}\n+\n+\t\tpublic static unsafe int getsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, out Timeval option_value)\n+\t\t{\n+\t\t\tvar _level = NativeConvert.FromUnixSocketProtocol (level);\n+\t\t\tvar _option_name = NativeConvert.FromUnixSocketOptionName (option_name);\n+\t\t\treturn sys_getsockopt_timeval (socket, _level, _option_name, out option_value);\n+\t\t}\n+\n+\t\tpublic static unsafe int getsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, out Linger option_value)\n+\t\t{\n+\t\t\tvar _level = NativeConvert.FromUnixSocketProtocol (level);\n+\t\t\tvar _option_name = NativeConvert.FromUnixSocketOptionName (option_name);\n+\t\t\treturn sys_getsockopt_linger (socket, _level, _option_name, out option_value);\n+\t\t}\n+\n+\t\t// setsockopt(2)\n+\t\t//    int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_setsockopt\")]\n+\t\tstatic extern unsafe int sys_setsockopt (int socket, int level, int option_name, void *option_value, long option_len);\n+\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_setsockopt_timeval\")]\n+\t\tstatic extern unsafe int sys_setsockopt_timeval (int socket, int level, int option_name, ref Timeval option_value);\n+\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_setsockopt_linger\")]\n+\t\tstatic extern unsafe int sys_setsockopt_linger (int socket, int level, int option_name, ref Linger option_value);\n+\n+\t\tpublic static unsafe int setsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, void *option_value, long option_len)\n+\t\t{\n+\t\t\tvar _level = NativeConvert.FromUnixSocketProtocol (level);\n+\t\t\tvar _option_name = NativeConvert.FromUnixSocketOptionName (option_name);\n+\t\t\treturn sys_setsockopt (socket, _level, _option_name, option_value, option_len);\n+\t\t}\n+\n+\t\tpublic static unsafe int setsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, int option_value)\n+\t\t{\n+\t\t\treturn setsockopt (socket, level, option_name, &option_value, sizeof (int));\n+\t\t}\n+\n+\t\tpublic static unsafe int setsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, byte[] option_value, long option_len)\n+\t\t{\n+\t\t\tif (option_len > (option_value == null ? 0 : option_value.Length))\n+\t\t\t\tthrow new ArgumentOutOfRangeException (\"option_len\", \"option_len > (option_value == null ? 0 : option_value.Length)\");\n+\t\t\tfixed (byte* ptr = option_value)\n+\t\t\t\treturn setsockopt (socket, level, option_name, ptr, option_len);\n+\t\t}\n+\n+\t\tpublic static unsafe int setsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, Timeval option_value)\n+\t\t{\n+\t\t\tvar _level = NativeConvert.FromUnixSocketProtocol (level);\n+\t\t\tvar _option_name = NativeConvert.FromUnixSocketOptionName (option_name);\n+\t\t\treturn sys_setsockopt_timeval (socket, _level, _option_name, ref option_value);\n+\t\t}\n+\n+\t\tpublic static unsafe int setsockopt (int socket, UnixSocketProtocol level, UnixSocketOptionName option_name, Linger option_value)\n+\t\t{\n+\t\t\tvar _level = NativeConvert.FromUnixSocketProtocol (level);\n+\t\t\tvar _option_name = NativeConvert.FromUnixSocketOptionName (option_name);\n+\t\t\treturn sys_setsockopt_linger (socket, _level, _option_name, ref option_value);\n+\t\t}\n+\n+\t\t// shutdown(2)\n+\t\t//    int shutdown(int sockfd, int how);\n+\t\t[DllImport (LIBC, SetLastError=true, \n+\t\t\t\tEntryPoint=\"shutdown\")]\n+\t\tstatic extern int sys_shutdown (int socket, int how);\n+\n+\t\tpublic static int shutdown (int socket, ShutdownOption how)\n+\t\t{\n+\t\t\tvar _how = NativeConvert.FromShutdownOption (how);\n+\t\t\treturn sys_shutdown (socket, _how);\n+\t\t}\n+\n+\t\t// recv(2)\n+\t\t//    ssize_t recv(int sockfd, void *buf, size_t len, int flags);\n+\t\t[DllImport (MPH, SetLastError=true, \n+\t\t\t\tEntryPoint=\"Mono_Posix_Syscall_recv\")]\n+\t\tstatic extern unsafe long sys_recv (int socket, void *buffer, ulong length, int flags);\n+\n+\t\tpublic static unsafe long recv (int socket, void *buffer, ulong length, MessageFlags flags)","path":"mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs","position":388,"original_position":388,"commit_id":"dca5fd68673809e08f1150b23f1c7ec67cacf950","original_commit_id":"dca5fd68673809e08f1150b23f1c7ec67cacf950","user":{"login":"jonpryor","id":155958,"avatar_url":"https://avatars.githubusercontent.com/u/155958?v=3","gravatar_id":"","url":"https://api.github.com/users/jonpryor","html_url":"https://github.com/jonpryor","followers_url":"https://api.github.com/users/jonpryor/followers","following_url":"https://api.github.com/users/jonpryor/following{/other_user}","gists_url":"https://api.github.com/users/jonpryor/gists{/gist_id}","starred_url":"https://api.github.com/users/jonpryor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonpryor/subscriptions","organizations_url":"https://api.github.com/users/jonpryor/orgs","repos_url":"https://api.github.com/users/jonpryor/repos","events_url":"https://api.github.com/users/jonpryor/events{/privacy}","received_events_url":"https://api.github.com/users/jonpryor/received_events","type":"User","site_admin":false},"body":"Current convention is that methods which take `void*` parameters are also overloaded to take `IntPtr` parameters. (This seems somewhat at odds with my previous comments that we try to minimize overloads -- doh! -- but the rationale is that not all managed languages support unsafe code, so they can use the `IntPtr`-based overloads.)\r\n\r\nThis should be done for all methods which take `void*` parameters.","created_at":"2015-08-24T17:22:49Z","updated_at":"2015-08-24T17:22:49Z","html_url":"https://github.com/mono/mono/pull/1993#discussion_r37776582","pull_request_url":"https://api.github.com/repos/mono/mono/pulls/1993","_links":{"self":{"href":"https://api.github.com/repos/mono/mono/pulls/comments/37776582"},"html":{"href":"https://github.com/mono/mono/pull/1993#discussion_r37776582"},"pull_request":{"href":"https://api.github.com/repos/mono/mono/pulls/1993"}}},"pull_request":{"url":"https://api.github.com/repos/mono/mono/pulls/1993","id":43042487,"html_url":"https://github.com/mono/mono/pull/1993","diff_url":"https://github.com/mono/mono/pull/1993.diff","patch_url":"https://github.com/mono/mono/pull/1993.patch","issue_url":"https://api.github.com/repos/mono/mono/issues/1993","number":1993,"state":"open","locked":false,"title":"Add socket-related functions and data structures to Mono.Posix","user":{"login":"steffen-kiess","id":947515,"avatar_url":"https://avatars.githubusercontent.com/u/947515?v=3","gravatar_id":"","url":"https://api.github.com/users/steffen-kiess","html_url":"https://github.com/steffen-kiess","followers_url":"https://api.github.com/users/steffen-kiess/followers","following_url":"https://api.github.com/users/steffen-kiess/following{/other_user}","gists_url":"https://api.github.com/users/steffen-kiess/gists{/gist_id}","starred_url":"https://api.github.com/users/steffen-kiess/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/steffen-kiess/subscriptions","organizations_url":"https://api.github.com/users/steffen-kiess/orgs","repos_url":"https://api.github.com/users/steffen-kiess/repos","events_url":"https://api.github.com/users/steffen-kiess/events{/privacy}","received_events_url":"https://api.github.com/users/steffen-kiess/received_events","type":"User","site_admin":false},"body":"This is the first part of https://github.com/mono/mono/pull/1977\r\n\r\nThis pull request should contain all the requested changes. It contains only the \"simple\" changes, I'll create additional pull requests for the sockaddr_* changes and the sendmsg()/recvmsg() stuff.\r\n\r\nI've prefixed all the Socket* enums and AddressFamily with Unix. (For consistency also SocketProtocol even though there is no conflict with System.Net.Sockets.)\r\nFor MessageFlags and ShutdownOption there is no prefix.\r\n\r\nRegarding the recv()/send() overloads which accept a byte[]: Should those overloads also accept an offset argument? (Currently they don't.)\r\n","created_at":"2015-08-21T14:18:59Z","updated_at":"2015-08-24T17:22:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"201561d6d3c9c3ad0c1eeedeb37d6bcc05300124","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/mono/mono/pulls/1993/commits","review_comments_url":"https://api.github.com/repos/mono/mono/pulls/1993/comments","review_comment_url":"https://api.github.com/repos/mono/mono/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mono/mono/issues/1993/comments","statuses_url":"https://api.github.com/repos/mono/mono/statuses/dca5fd68673809e08f1150b23f1c7ec67cacf950","head":{"label":"steffen-kiess:posix-sockets-1","ref":"posix-sockets-1","sha":"dca5fd68673809e08f1150b23f1c7ec67cacf950","user":{"login":"steffen-kiess","id":947515,"avatar_url":"https://avatars.githubusercontent.com/u/947515?v=3","gravatar_id":"","url":"https://api.github.com/users/steffen-kiess","html_url":"https://github.com/steffen-kiess","followers_url":"https://api.github.com/users/steffen-kiess/followers","following_url":"https://api.github.com/users/steffen-kiess/following{/other_user}","gists_url":"https://api.github.com/users/steffen-kiess/gists{/gist_id}","starred_url":"https://api.github.com/users/steffen-kiess/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/steffen-kiess/subscriptions","organizations_url":"https://api.github.com/users/steffen-kiess/orgs","repos_url":"https://api.github.com/users/steffen-kiess/repos","events_url":"https://api.github.com/users/steffen-kiess/events{/privacy}","received_events_url":"https://api.github.com/users/steffen-kiess/received_events","type":"User","site_admin":false},"repo":{"id":3240307,"name":"mono","full_name":"steffen-kiess/mono","owner":{"login":"steffen-kiess","id":947515,"avatar_url":"https://avatars.githubusercontent.com/u/947515?v=3","gravatar_id":"","url":"https://api.github.com/users/steffen-kiess","html_url":"https://github.com/steffen-kiess","followers_url":"https://api.github.com/users/steffen-kiess/followers","following_url":"https://api.github.com/users/steffen-kiess/following{/other_user}","gists_url":"https://api.github.com/users/steffen-kiess/gists{/gist_id}","starred_url":"https://api.github.com/users/steffen-kiess/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/steffen-kiess/subscriptions","organizations_url":"https://api.github.com/users/steffen-kiess/orgs","repos_url":"https://api.github.com/users/steffen-kiess/repos","events_url":"https://api.github.com/users/steffen-kiess/events{/privacy}","received_events_url":"https://api.github.com/users/steffen-kiess/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/steffen-kiess/mono","description":"Mono open source ECMA CLI, C# and .NET implementation.","fork":true,"url":"https://api.github.com/repos/steffen-kiess/mono","forks_url":"https://api.github.com/repos/steffen-kiess/mono/forks","keys_url":"https://api.github.com/repos/steffen-kiess/mono/keys{/key_id}","collaborators_url":"https://api.github.com/repos/steffen-kiess/mono/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/steffen-kiess/mono/teams","hooks_url":"https://api.github.com/repos/steffen-kiess/mono/hooks","issue_events_url":"https://api.github.com/repos/steffen-kiess/mono/issues/events{/number}","events_url":"https://api.github.com/repos/steffen-kiess/mono/events","assignees_url":"https://api.github.com/repos/steffen-kiess/mono/assignees{/user}","branches_url":"https://api.github.com/repos/steffen-kiess/mono/branches{/branch}","tags_url":"https://api.github.com/repos/steffen-kiess/mono/tags","blobs_url":"https://api.github.com/repos/steffen-kiess/mono/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/steffen-kiess/mono/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/steffen-kiess/mono/git/refs{/sha}","trees_url":"https://api.github.com/repos/steffen-kiess/mono/git/trees{/sha}","statuses_url":"https://api.github.com/repos/steffen-kiess/mono/statuses/{sha}","languages_url":"https://api.github.com/repos/steffen-kiess/mono/languages","stargazers_url":"https://api.github.com/repos/steffen-kiess/mono/stargazers","contributors_url":"https://api.github.com/repos/steffen-kiess/mono/contributors","subscribers_url":"https://api.github.com/repos/steffen-kiess/mono/subscribers","subscription_url":"https://api.github.com/repos/steffen-kiess/mono/subscription","commits_url":"https://api.github.com/repos/steffen-kiess/mono/commits{/sha}","git_commits_url":"https://api.github.com/repos/steffen-kiess/mono/git/commits{/sha}","comments_url":"https://api.github.com/repos/steffen-kiess/mono/comments{/number}","issue_comment_url":"https://api.github.com/repos/steffen-kiess/mono/issues/comments{/number}","contents_url":"https://api.github.com/repos/steffen-kiess/mono/contents/{+path}","compare_url":"https://api.github.com/repos/steffen-kiess/mono/compare/{base}...{head}","merges_url":"https://api.github.com/repos/steffen-kiess/mono/merges","archive_url":"https://api.github.com/repos/steffen-kiess/mono/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/steffen-kiess/mono/downloads","issues_url":"https://api.github.com/repos/steffen-kiess/mono/issues{/number}","pulls_url":"https://api.github.com/repos/steffen-kiess/mono/pulls{/number}","milestones_url":"https://api.github.com/repos/steffen-kiess/mono/milestones{/number}","notifications_url":"https://api.github.com/repos/steffen-kiess/mono/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/steffen-kiess/mono/labels{/name}","releases_url":"https://api.github.com/repos/steffen-kiess/mono/releases{/id}","created_at":"2012-01-22T15:46:26Z","updated_at":"2015-08-24T16:56:09Z","pushed_at":"2015-08-24T16:59:46Z","git_url":"git://github.com/steffen-kiess/mono.git","ssh_url":"git@github.com:steffen-kiess/mono.git","clone_url":"https://github.com/steffen-kiess/mono.git","svn_url":"https://github.com/steffen-kiess/mono","homepage":"http://www.mono-project.com/","size":433890,"stargazers_count":1,"watchers_count":1,"language":"C#","has_issues":false,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"mono:master","ref":"master","sha":"83985b4ab6d3ffdd17fa08862a8ab1b838054ce8","user":{"login":"mono","id":53395,"avatar_url":"https://avatars.githubusercontent.com/u/53395?v=3","gravatar_id":"","url":"https://api.github.com/users/mono","html_url":"https://github.com/mono","followers_url":"https://api.github.com/users/mono/followers","following_url":"https://api.github.com/users/mono/following{/other_user}","gists_url":"https://api.github.com/users/mono/gists{/gist_id}","starred_url":"https://api.github.com/users/mono/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mono/subscriptions","organizations_url":"https://api.github.com/users/mono/orgs","repos_url":"https://api.github.com/users/mono/repos","events_url":"https://api.github.com/users/mono/events{/privacy}","received_events_url":"https://api.github.com/users/mono/received_events","type":"Organization","site_admin":false},"repo":{"id":791611,"name":"mono","full_name":"mono/mono","owner":{"login":"mono","id":53395,"avatar_url":"https://avatars.githubusercontent.com/u/53395?v=3","gravatar_id":"","url":"https://api.github.com/users/mono","html_url":"https://github.com/mono","followers_url":"https://api.github.com/users/mono/followers","following_url":"https://api.github.com/users/mono/following{/other_user}","gists_url":"https://api.github.com/users/mono/gists{/gist_id}","starred_url":"https://api.github.com/users/mono/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mono/subscriptions","organizations_url":"https://api.github.com/users/mono/orgs","repos_url":"https://api.github.com/users/mono/repos","events_url":"https://api.github.com/users/mono/events{/privacy}","received_events_url":"https://api.github.com/users/mono/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mono/mono","description":"Mono open source ECMA CLI, C# and .NET implementation.","fork":false,"url":"https://api.github.com/repos/mono/mono","forks_url":"https://api.github.com/repos/mono/mono/forks","keys_url":"https://api.github.com/repos/mono/mono/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mono/mono/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mono/mono/teams","hooks_url":"https://api.github.com/repos/mono/mono/hooks","issue_events_url":"https://api.github.com/repos/mono/mono/issues/events{/number}","events_url":"https://api.github.com/repos/mono/mono/events","assignees_url":"https://api.github.com/repos/mono/mono/assignees{/user}","branches_url":"https://api.github.com/repos/mono/mono/branches{/branch}","tags_url":"https://api.github.com/repos/mono/mono/tags","blobs_url":"https://api.github.com/repos/mono/mono/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mono/mono/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mono/mono/git/refs{/sha}","trees_url":"https://api.github.com/repos/mono/mono/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mono/mono/statuses/{sha}","languages_url":"https://api.github.com/repos/mono/mono/languages","stargazers_url":"https://api.github.com/repos/mono/mono/stargazers","contributors_url":"https://api.github.com/repos/mono/mono/contributors","subscribers_url":"https://api.github.com/repos/mono/mono/subscribers","subscription_url":"https://api.github.com/repos/mono/mono/subscription","commits_url":"https://api.github.com/repos/mono/mono/commits{/sha}","git_commits_url":"https://api.github.com/repos/mono/mono/git/commits{/sha}","comments_url":"https://api.github.com/repos/mono/mono/comments{/number}","issue_comment_url":"https://api.github.com/repos/mono/mono/issues/comments{/number}","contents_url":"https://api.github.com/repos/mono/mono/contents/{+path}","compare_url":"https://api.github.com/repos/mono/mono/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mono/mono/merges","archive_url":"https://api.github.com/repos/mono/mono/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mono/mono/downloads","issues_url":"https://api.github.com/repos/mono/mono/issues{/number}","pulls_url":"https://api.github.com/repos/mono/mono/pulls{/number}","milestones_url":"https://api.github.com/repos/mono/mono/milestones{/number}","notifications_url":"https://api.github.com/repos/mono/mono/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mono/mono/labels{/name}","releases_url":"https://api.github.com/repos/mono/mono/releases{/id}","created_at":"2010-07-22T18:06:36Z","updated_at":"2015-08-24T08:09:08Z","pushed_at":"2015-08-24T16:59:50Z","git_url":"git://github.com/mono/mono.git","ssh_url":"git@github.com:mono/mono.git","clone_url":"https://github.com/mono/mono.git","svn_url":"https://github.com/mono/mono","homepage":"http://www.mono-project.com/","size":1483656,"stargazers_count":3751,"watchers_count":3751,"language":"C#","has_issues":false,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":1867,"mirror_url":null,"open_issues_count":119,"forks":1867,"open_issues":119,"watchers":3751,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mono/mono/pulls/1993"},"html":{"href":"https://github.com/mono/mono/pull/1993"},"issue":{"href":"https://api.github.com/repos/mono/mono/issues/1993"},"comments":{"href":"https://api.github.com/repos/mono/mono/issues/1993/comments"},"review_comments":{"href":"https://api.github.com/repos/mono/mono/pulls/1993/comments"},"review_comment":{"href":"https://api.github.com/repos/mono/mono/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mono/mono/pulls/1993/commits"},"statuses":{"href":"https://api.github.com/repos/mono/mono/statuses/dca5fd68673809e08f1150b23f1c7ec67cacf950"}}}}