-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Address some System.Formats.Tar TODOs (infra and syscalls) (#69107)
* Fix Design time build errors by removing src project as dependency of the test project. * Add Browser to target platform identifiers. Ensure Browser can consume the Unix specific ArchivingUtils file too. * Remove nullable enable from csproj since it's now default * Use FileStream constructor with FileMode.CreateNew to detect and throw if destination file exists when creating archive. * No error checking on syscalls that do not set errno. * Add RDev field in FileStatus and retrieve it with stat/lstat so devmajor and devminor get their correct values. * Simplify some File.Open calls with direct FileStream constructor calls. Simplify FileStreamOptions objects too. * Implement and consume p/invokes to retrieve uname from uid and gname from gid. * size_t variables should not be checked for negative values * FileStream calls simplified to File.OpenRead * Remove check for RDev > 0 * Use dictionary to preserve repeated unames and gnames mapped to uids and gids * Missing documentation in pal_uid.h new PALEXPORT methods. * Adjust syscalls to thread-safe ones. Start with stackalloc, then use loop. * Make dicts readonly and non-nullable, use TryGetValue * Reuse 'GetNameFromUid' from pal_networking.c, move to pal_uid.c, use similar logic for Gid method. Simplify Interop.Sys method. * Remove unnecessary comment Co-authored-by: Adam Sitnik <[email protected]> * Put TargetFrameworks back in the first position of the PropertyGroup. * Address eerhardt suggestions * Update src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.WriteEntry.File.Tests.Unix.cs * Clarify in pal_uid.h methods comments that new memory is returned Co-authored-by: carlossanlop <[email protected]> Co-authored-by: Adam Sitnik <[email protected]>
- Loading branch information
1 parent
ade698f
commit 5408323
Showing
18 changed files
with
184 additions
and
120 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
src/libraries/Common/src/Interop/Unix/System.Native/Interop.GroupNameUserName.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
|
||
using System.Runtime.InteropServices; | ||
using System.Buffers; | ||
using System.Text; | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Reflection; | ||
|
||
internal static partial class Interop | ||
{ | ||
internal static partial class Sys | ||
{ | ||
/// <summary> | ||
/// Gets the group name associated to the specified group ID. | ||
/// </summary> | ||
/// <param name="gid">The group ID.</param> | ||
/// <returns>On success, return a string with the group name. On failure, throws an IOException.</returns> | ||
internal static string GetGroupName(uint gid) => GetGroupNameInternal(gid) ?? throw GetIOException(GetLastErrorInfo()); | ||
|
||
/// <summary> | ||
/// Gets the user name associated to the specified user ID. | ||
/// </summary> | ||
/// <param name="uid">The user ID.</param> | ||
/// <returns>On success, return a string with the user name. On failure, throws an IOException.</returns> | ||
internal static string GetUserName(uint uid) => GetUserNameInternal(uid) ?? throw GetIOException(GetLastErrorInfo()); | ||
|
||
[LibraryImport(Libraries.SystemNative, EntryPoint = "SystemNative_GetGroupName", StringMarshalling = StringMarshalling.Utf8, SetLastError = true)] | ||
private static unsafe partial string? GetGroupNameInternal(uint uid); | ||
|
||
[LibraryImport(Libraries.SystemNative, EntryPoint = "SystemNative_GetUserName", StringMarshalling = StringMarshalling.Utf8, SetLastError = true)] | ||
private static unsafe partial string? GetUserNameInternal(uint uid); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.