delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org 0744E3851C37 |
DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; |
s=default; t=1589432866; | |
bh=1sjgE2JgZ8AN/hxIm+XVtSbL7fEFfftsEJIkcUqqqeQ=; | |
h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe: | |
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: | |
From; | |
b=ucLUNoIdF7+QnM29a5846fW75oUuHiBcLKXF1cQdQeJFfKWNyK5RNjVVqiNIte+HG | |
rPpFPaOD6IKPTi3aaPgj7xT4kH+C6Lg1n+BPgnWZX5naOGygTDhB3BKJVuD4j9ZJDu | |
0OkLb7IfL7hl3mmi++6cZAWAq4pCvYaX0lOt5HVY= | |
X-Original-To: | cygwin AT cygwin DOT com |
Delivered-To: | cygwin AT cygwin DOT com |
DMARC-Filter: | OpenDMARC Filter v1.3.2 sourceware.org 2C6BF385BF81 |
X-Google-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
d=1e100.net; s=20161025; | |
h=x-gm-message-state:mime-version:references:in-reply-to:from:date | |
:message-id:subject:to; | |
bh=thEhjw+TtDKiObgPNOywNZus8ZdBLI9zv4lnECAcUgM=; | |
b=ceORUEFVgzuz9YrwJXZLR7XDDUYB4RliU+nWCPXh3VOAZ2uCtbAxjoxKAPedul7VaI | |
oOD4I3bJAGVZktsgRHV0gNHz0bG0ttPhIFJ0/Ic2tytDDBgBHLh8rLpUzEbBnEe3lCZ7 | |
DLnZS8NJVMzIIbU4zHMh/JQ9WEp8VdUDTFjLzHZ1huiiR2hkgBCa0EjNRuzNXbcf5mC1 | |
rGPXqvtmvgWDn/YH+wgxyIYxO9izrmdOWWu19BSsw6tPVkBSx7CmlGpSv+dQjP3zu/k7 | |
i4qOJkRGv2iIQ0t0QBFPOI7dSAh1JlCxg1Rn07OVPpuvnFRlbUrISUE7J83rTj5/d89z | |
YUQg== | |
X-Gm-Message-State: | AOAM530IXV1En3HSVbZVPesAfogUQdx1Pprb/fduG+dCNfioQht5TyDT |
1+VfPkF95b/kduDh/tx5thgHTwQqVJ8RrhO26r3aCGDmyT0= | |
X-Google-Smtp-Source: | ABdhPJzjk0AgG3DhIjvR/ylNknkneus6rVYU2gy5zM2wGohe7CzC9kvsl1cvWQFzVVflajqea2uqDAcMHExp1V6q8Qs= |
X-Received: | by 2002:a50:d7c7:: with SMTP id m7mr2505153edj.101.1589432861544; |
Wed, 13 May 2020 22:07:41 -0700 (PDT) | |
MIME-Version: | 1.0 |
References: | <CAKObCaoqPMb6ebbivTcKpWvF_ADhb1HNFgkkD3mpW6nARD4hWQ AT mail DOT gmail DOT com> |
<CAKObCarg0JG5afmja7juRTF_=fGsjON8_L1MMPWOn-6iLBv65g AT mail DOT gmail DOT com> | |
<CAKObCareyjhR8+tQpMrGa3D1pghyksn0v5zmT-8FO-a8tp9BQQ AT mail DOT gmail DOT com> | |
In-Reply-To: | <CAKObCareyjhR8+tQpMrGa3D1pghyksn0v5zmT-8FO-a8tp9BQQ@mail.gmail.com> |
Date: | Thu, 14 May 2020 01:07:11 -0400 |
Message-ID: | <CAKObCaos1F-S5xo+YoH_n1zBKPJyG+CYbkyBAsCXyz-0ofQGdQ@mail.gmail.com> |
Subject: | Re: patch command incorrectly capitalizes filenames that live on |
external USB flash drives | |
To: | cygwin <cygwin AT cygwin DOT com>, Marco Atzeri <marco DOT atzeri AT gmail DOT com>, |
Thomas Wolff <towo AT towo DOT net>, | |
Brian Inglis <Brian DOT Inglis AT systematicsw DOT ab DOT ca> | |
X-Spam-Status: | No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, |
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, | |
FREEMAIL_FROM, GIT_PATCH_0, KAM_EXEURI, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, | |
SPF_PASS, TXREP, USB_DRIVES 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-Archive: | <https://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> | |
From: | Jason Gross via Cygwin <cygwin AT cygwin DOT com> |
Reply-To: | Jason Gross <jasongross9 AT gmail DOT com> |
Sender: | "Cygwin" <cygwin-bounces AT cygwin DOT com> |
Also btw, the bug I reported to patch is at https://lists.gnu.org/archive/html/bug-patch/2020-05/msg00000.html . It's not clear to me if this is a cygwin issue or a patch issue. On Wed, May 13, 2020 at 10:32 PM Jason Gross <jasongross9 AT gmail DOT com> wrote: > > By the way, when I run the same script on the same flash drive from WSL, it works fine, and does not capitalize the filename. So this does seem to be a cygwin-patch specific issue... > > On Wed, May 13, 2020 at 8:31 PM Jason Gross <jasongross9 AT gmail DOT com> wrote: >> >> Sorry for the late reply; I can see replies to my messages at >> https://cygwin.com/pipermail/cygwin/2020-April/244660.html, but >> somehow I'm not receiving them in Gmail. I've tried (re?)subscribing >> to the cygwin mailing list, hopefully this fixes the problem. >> >> Thomas Wolff wrote: >> > You are throwing a puzzle into the mailing list and if you are lucky, >> > someone may like to solve it. >> > But perhaps: can you try to minimize your test case, please. >> > Something like: touch Makefile; ls (if that's it). >> >> I think there's some sort of misconception here. touch and cat create >> correctly capitalized files, and sed -i doesn't change capitalization, >> even on my FAT32 drive. patch is the only command I've found so far >> which capitalizes filenames when modifying files. I can try to dig >> into the source code of patch and figure out a minimal C program that >> breaks casing on files, but, come on, the fact that patch seems to >> capitalize the file name of every file it modifies, and no other >> utility does this, that seems like a pretty minimal test-case to me. >> And anyway, the cygwin patch sources (version 2.7.4) are impossible to >> compile, because safe.c can't find sys/resource.h and passing >> -I/usr/include via CFLAGS hits an internal bug in patch's configure >> script (search.h: present but cannot be compiled; sys/timeb.h: present >> but cannot be compiled; fcntl.h: present but cannot be compiled). (I've emailed >> bug-patch AT gnu DOT org as requested by the configure script, but so far >> https://lists.gnu.org/archive/html/bug-patch/ isn't showing anything >> newer than January.) >> >> Brian Inglis wrote: >> > That might be expected with FAT32, which is normally the default format for >> > flash drives, for maximum compatibility with microcontrollers, which may not >> > create VFAT Long File Names when file names are <= 8.3, so they appear as upper >> > case. >> >> This does not explain why `ls` displays "Makefile" as "Makefile" >> before I run `patch`, but displays the filename as "MAKEFILE" after I >> run `patch`. Nor does it explain why this happens to patch-modified >> files, but not to files modified via sed -i. >> >> Marco Atzeri wrote: >> > use a flash driver with NTFS and check the difference >> >> Indeed, I can confirm that this issue occurs when it's FAT or FAT32, >> and does not occur under NTFS nor exFAT. >> >> > I doubt it is a patch issue >> >> Do you have another utility that you suggest I try that you think will >> display the same problem as patch? So far, `| tee -a`, `sed -i`, >> `touch`, `>`, and `>>` all do not display this issue, while `patch` >> does. >> >> >> -Jason >> >> >> >> >> On Tue, Apr 28, 2020 at 3:27 PM Jason Gross <jasongross9 AT gmail DOT com> wrote: >> > >> > Consider the following script in foo.sh: >> > ``` >> > #!/usr/bin/env bash >> > >> > set -ex >> > >> > cd "$1" >> > rm -rf foo >> > mkdir foo >> > cd foo >> > cat > Makefile <<EOF >> > a >> > b >> > c >> > d >> > e >> > EOF >> > cat > diff <<EOF >> > diff --git a/Makefile b/Makefile >> > index 9405325..86d2f8c 100644 >> > --- a/Makefile >> > +++ b/Makefile >> > @@ -1,5 +1,5 @@ >> > a >> > b >> > -c >> > +ccc >> > d >> > e >> > EOF >> > patch -p1 -i ./diff >> > ls >> > ``` >> > >> > If I run `./foo.sh /cygdrive/c/`, I get, as expected, >> > ``` >> > + cd /cygdrive/c/ >> > + rm -rf foo >> > + mkdir foo >> > + cd foo >> > + cat >> > + cat >> > + patch -p1 -i ./diff >> > patching file Makefile >> > + ls >> > diff Makefile >> > ``` >> > >> > If I instead run `./foo.sh /cygdrive/h/`, I get >> > ``` >> > + cd /cygdrive/h/ >> > + rm -rf foo >> > + mkdir foo >> > + cd foo >> > + cat >> > + cat >> > + patch -p1 -i ./diff >> > patching file Makefile >> > + ls >> > diff MAKEFILE >> > ``` >> > >> > My C drive is an internal SSD (NTFS), my H drive is an external flash >> > drive (FAT32). I installed cygwin with the commands: >> > ``` >> > powershell -Command "(New-Object >> > Net.WebClient).DownloadFile('http://www.cygwin.com/setup-x86_64.exe', >> > 'setup-x86_64.exe')" >> > SET CYGMIRROR=http://mirror.easyname.at/cygwin >> > SET CYGROOT=H:\cygwin64 >> > SET CYGCACHE=%CYGROOT%\var\cache\setup >> > setup-x86_64.exe -qnNdO -R %CYGROOT% -l %CYGCACHE% -s %CYGMIRROR% -P >> > rsync -P patch -P diffutils -P make -P unzip -P m4 -P findutils -P >> > time -P wget -P curl -P git -P >> > mingw64-x86_64-binutils,mingw64-x86_64-gcc-core,mingw64-x86_64-gcc-g++,mingw64-x86_64-pkg-config,mingw64-x86_64-windows_default_manifest >> > -P mingw64-x86_64-headers,mingw64-x86_64-runtime,mingw64-x86_64-pthreads,mingw64-x86_64-zlib >> > -P python3 >> > ``` >> > >> > Running `patch -v` says `GNU patch 2.7.4`. Note that this happens >> > regardless of whether I install cygwin itself on my external flash >> > drive or on my internal HD. >> > >> > This came up when trying to run `opam install findlib` (which fails >> > when the home directory is on an external USB drive). >> > >> > -Jason -- 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
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |