delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org 83656385E024 |
DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; |
s=default; t=1585220466; | |
bh=mYp24XqML0r8+fkwiRVJ0OR7DCzMGluxU3iFyjOsnqY=; | |
h=Date:From:To:Subject:References:In-Reply-To:List-Id: | |
List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: | |
Reply-To:From; | |
b=pjSDkBB2YkRznq0gvfL3XyzwbezVaDpdI/bu/6kCkuj3u9AF4cdvxdxVLAvE5QbCe | |
Ackm7/49twy1YNv3W0vAbasxLiXZhP3V5G3QODG/qjespCqHVW9pw1F0n/UYF1Yo7Y | |
sMeFApevwxAlNqymed8BIGZO0dn9r2AD/DYDpaos= | |
X-Original-To: | cygwin AT cygwin DOT com |
Delivered-To: | cygwin AT cygwin DOT com |
DMARC-Filter: | OpenDMARC Filter v1.3.2 sourceware.org 26011385E01E |
Authentication-Results: | sourceware.org; |
dmarc=none (p=none dis=none) header.from=cygwin.com | |
Authentication-Results: | sourceware.org; |
spf=fail smtp.mailfrom=corinna-cygwin AT cygwin DOT com | |
Date: | Thu, 26 Mar 2020 12:00:59 +0100 |
From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: WSL symbolic links |
Message-ID: | <20200326110059.GG3261@calimero.vinschen.de> |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <294944bd-757e-4bb8-6bcc-ceb8d9190ef9 AT towo DOT net> |
MIME-Version: | 1.0 |
In-Reply-To: | <294944bd-757e-4bb8-6bcc-ceb8d9190ef9@towo.net> |
X-Provags-ID: | V03:K1:rylL2MRCRRtfWef7EKnks0AIgKwgdSSJDYE9Nbx4+6eUqqDozyA |
bTDukSTLRFlkEIBWWzErjwQo396vhcrM8u8Ou89RqFmt3jEN0HX/nyE8eYNDsxgQ+4Y+fYP | |
VjgwnItpA6xGP+wnvAvXIexC8DQX1Q9X/xd/FnmV962njvu9JsWRihD+5arIXEElitRXwkZ | |
AvsaVmpAJdpxgE3TDpkHA== | |
X-UI-Out-Filterresults: | notjunk:1;V03:K0:/vu4SMGjA3c=:stjH0uDl81cU+4wydcZD2q |
FawUyoVguwoaJdruwD7fsrlvPnVdW8R047sVR/P0QbXTF8G/sGkQnJ8W6AIKiCO7SFuUlEPlj | |
dLFEmpnGvzrTEFvohfpYwuu6dDE7uUitS7gK7lmB4PzQZAianaFiOIPNKs8vzbjNGuUzg0LEg | |
wF/ycr1Y7ZmDuhZ34vGkKDj7IswoSNL1i6ttGuQo+224+TSnnOy5ELpdivqak2ZzMp/AItW1G | |
v4Nz56iQwdPIzq5/n+nAlSwGvZ487DJZRRE+4OFguAfmurZaf/FuyRRWXAcfKULz4CgCRKmVo | |
0YNltJUKUdhvTArastmvAJ6uKLkh+GAkxVK0tnQQl/JWzxry0ON3E3szZ7qt0ut5zk7Ur8h9a | |
dNnOcD+kDZ9Lze9OTaYeU/Lf++wZVt0jA+Vpq3UkO+z6EiisvWu3U0lzJycK2FRjbdu2hDka0 | |
aJUCgx2y9ORq2BsF13QkX9Qn/ZsCo4vqVU1bvcCB2HIfc+5W127IiOxonZuZoCgbSc0+PSL28 | |
nskdjgxXVNhH7LJZKXoZvx3nXC/IkyUgAcuUoTFTih+WdvbUO+etVD41Ym49FdQ+Gu+XsB8uW | |
uzyZtEPYjQBKRE4/pBpTrEVd8G88NG9vws8GYjFo4pYQfvuHIua2rXqy5q9yl775+YSfOylYJ | |
FOnxoROs7b1L1zKPBwwTtG2SEhCO1j350HjlaRzbA6RPiHzjCn6zKgl0x6/TDknMLUYUUPVXe | |
YvAwAGBZYDFeoHCB/b3JbfsDgkyrPcKHuf4zmDqnKXJMEmaUIrX8keKQAZekwKyA+nSezuM8L | |
Plt7YwiA/mz3RNhPBh+4A4NINVZgtT9A5Cci241qG3z+VvodoyRxgmQ00EhjOkm33qhLGSf | |
X-Spam-Status: | No, score=-79.5 required=5.0 tests=BAYES_00, BODY_8BITS, |
GARBLED_BODY, GIT_PATCH_2, GOOD_FROM_CORINNA_CYGWIN, KAM_DMARC_STATUS, | |
RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NEUTRAL, | |
TXREP autolearn=ham autolearn_force=no version=3.4.2 | |
X-Spam-Checker-Version: | SpamAssassin 3.4.2 (2018-09-13) on |
server2.sourceware.org | |
X-BeenThere: | cygwin AT cygwin DOT com |
X-Mailman-Version: | 2.1.29 |
List-Id: | General Cygwin discussions and problem reports <cygwin.cygwin.com> |
List-Unsubscribe: | <http://cygwin.com/mailman/options/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe> | |
List-Archive: | <http://cygwin.com/pipermail/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
List-Subscribe: | <http://cygwin.com/mailman/listinfo/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
Reply-To: | cygwin AT cygwin DOT com |
Errors-To: | cygwin-bounces AT cygwin DOT com |
Sender: | "Cygwin" <cygwin-bounces AT cygwin DOT com> |
--===============5896253471367158595== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="Zi0sgQQBxRFxMTsj" Content-Disposition: inline --Zi0sgQQBxRFxMTsj Content-Type: multipart/mixed; boundary="WK3l2KTTmXPVedZ6" Content-Disposition: inline --WK3l2KTTmXPVedZ6 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mar 26 10:00, Thomas Wolff wrote: > A symbolic link created with WSL is neither interpreted in cygwin nor can= it > be deleted: > > touch file > > wsl ln -s file link > > wsl ls -l link > lrwxrwxrwx=C2=A0=C2=A0=C2=A0 1 towo=C2=A0=C2=A0=C2=A0=C2=A0 towo=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1 Mar 26 08= :56 link -> file > > ls -l link > -rw-r----- 1 Unknown+User Unknown+Group 0 Mar 26 00:00 link What kind of file are they in the real world? Reparse points? If so, what content do they have? I attached a Q&D source from my vault of old test apps to check on reparse point content. Please compile with gcc -g ../src/rd-reparse.c -o rd-reparse -lntdll It takes a single native NT path as parameter, kind of like this: ./rd-reparse '\??\C:\cygwin64\home\corinna\link' Thanks, Corinna --=20 Corinna Vinschen Cygwin Maintainer --WK3l2KTTmXPVedZ6 Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="rd-reparse.c" #include <stdio.h> #include <wchar.h> #include <windows.h> #include <winternl.h> typedef struct { DWORD ReparseTag; WORD ReparseDataLength; WORD Reserved; union { struct { WORD SubstituteNameOffset; WORD SubstituteNameLength; WORD PrintNameOffset; WORD PrintNameLength; DWORD Flag; WCHAR PathBuffer[1]; } SymbolicLinkReparseBuffer; struct { WORD SubstituteNameOffset; WORD SubstituteNameLength; WORD PrintNameOffset; WORD PrintNameLength; WCHAR PathBuffer[1]; } MountPointReparseBuffer; struct { BYTE DataBuffer[1]; } GenericReparseBuffer; }; } MY_REPARSE_DATA_BUFFER, *MY_PREPARSE_DATA_BUFFER; //ULONG WINAPI RtlCreateUnicodeStringFromAsciiz (PUNICODE_STRING, PCSTR); int main (int argc, char **argv) { HANDLE fh; char buf[MAXIMUM_REPARSE_DATA_BUFFER_SIZE]; DWORD siz; MY_PREPARSE_DATA_BUFFER rp; char *pbuf; char name[32768]; NTSTATUS status; IO_STATUS_BLOCK io; UNICODE_STRING fname; OBJECT_ATTRIBUTES attr; RtlCreateUnicodeStringFromAsciiz (&fname, argv[1]); InitializeObjectAttributes(&attr, &fname, OBJ_CASE_INSENSITIVE, NULL, 0); status = NtOpenFile (&fh, FILE_READ_EA | FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr, &io, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT | FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REPARSE_POINT); if (!NT_SUCCESS (status)) { fprintf (stderr, "NtOpenFile: %08X\n", status); return 1; } status = NtFsControlFile (fh, NULL, NULL, NULL, &io, FSCTL_GET_REPARSE_POINT, NULL, 0, (LPVOID) buf, sizeof buf); if (!NT_SUCCESS (status)) { fprintf (stderr, "NtDeviceIoControlFile: %08lX\n", status); CloseHandle (fh); return 1; } rp = (MY_PREPARSE_DATA_BUFFER) buf; printf ("ReparseTag: 0x%08x\n", rp->ReparseTag); printf ("ReparseDataLength: %10d\n", rp->ReparseDataLength); printf ("Reserved: %10d\n", rp->Reserved); if (rp->ReparseTag == IO_REPARSE_TAG_SYMLINK || rp->ReparseTag == IO_REPARSE_TAG_SYMLINK) { printf ("SubstituteNameOffset: %10d\n", rp->SymbolicLinkReparseBuffer.SubstituteNameOffset); printf ("SubstituteNameLength: %10d\n", rp->SymbolicLinkReparseBuffer.SubstituteNameLength); printf ("PrintNameOffset: %10d\n", rp->SymbolicLinkReparseBuffer.PrintNameOffset); printf ("PrintNameLength: %10d\n", rp->SymbolicLinkReparseBuffer.PrintNameLength); if (rp->ReparseTag == IO_REPARSE_TAG_SYMLINK) { printf ("Flag: 0x%08x\n", rp->SymbolicLinkReparseBuffer.Flag); pbuf = (char *) rp->SymbolicLinkReparseBuffer.PathBuffer; } else pbuf = (char *) rp->MountPointReparseBuffer.PathBuffer; wcstombs (name, (PWCHAR) (pbuf + rp->SymbolicLinkReparseBuffer.SubstituteNameOffset), rp->SymbolicLinkReparseBuffer.SubstituteNameLength / 2); name[rp->SymbolicLinkReparseBuffer.SubstituteNameLength / 2] = '\0'; printf("SubstituteName: %s\n", name); wcstombs (name, (PWCHAR) (pbuf + rp->SymbolicLinkReparseBuffer.PrintNameOffset), rp->SymbolicLinkReparseBuffer.PrintNameLength / 2); name[rp->SymbolicLinkReparseBuffer.PrintNameLength / 2] = '\0'; printf("PrintName: %s\n", name); } else { WORD i; for (i = 0; i < rp->ReparseDataLength; ++i) { printf ("%02x ", rp->GenericReparseBuffer.DataBuffer[i]); if ((i + 1) % 16 == 0) putchar ('\n'); } } CloseHandle (fh); return 0; } --WK3l2KTTmXPVedZ6-- --Zi0sgQQBxRFxMTsj Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIyBAEBCAAdFiEEoVYPmneWZnwT6kwF9TYGna5ET6AFAl58i2sACgkQ9TYGna5E T6Bp7Q/3bJs0t+TN4VsQRbeXICYhYcVIN1ky+Wk1r54tp5e7M7x6CQ7vhDShzkUX iGiJjjIkpTpKoAzqX6r0LY0j3nmH77g2Na2gggxnRVRIEiVXG6gc7GxEeNDbcoeI 8jvtuoMSUoxHHXvuCm6COKRV5nsVBFm16Gxlix1eF/KYeB4LT7owsfXEHRndBPKy KXXyf97evj616F6Als8m+iO9oDaeejCh/bD5JAG46/OD73JmjiECBZNz7XIFbNjO G6UczY+ME20mltvWclDMpFUqUQ4WE9CghQohbr/isQXActAkv4ZzjEnVqFmZ/hTg slzGuc5CHSDpoUAgpf9SCetoFc65BoGv/M128Md5sT74Ubip4a1kobVzvgd5NqCI q2xLWz1JHv/tV4eikTB3FSbrm5hJMoEQcNJJlO8bSmfNclwBK1QH8CbkHJIDzXm/ tUoWQUQpF24g8NENYVHxWd2qaYD3ylUZR+bQeK5VxBftGYsVXFCItlam1zLuBMC3 GL9qkpGL5PoESf6prtVi3xOuAIbtNX1xA9HikiiEv/R2zdgdyQfgpwIowGwQE4vG xpi7iWBaHNHMnz+kqS5EwsMcS3roL5Hl+1Y0U9Awa/ONVbSQ8Piwy1S5c5thNC71 w+8mOhrBtUY0vhiPSCkpyh2YXV0sLWYX3t21nugnn0/JHrQF8w== =DFfv -----END PGP SIGNATURE----- --Zi0sgQQBxRFxMTsj-- --===============5896253471367158595== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple --===============5896253471367158595==--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |