git/list[1] front-page[2] threads[3] people[4] search[5] about
 

BUG report: unicode normalization on APFS (Mac OS High Sierra)

From
Elijah Newren <newren@gmail.com>
Date
Apr 26, 2018, 16:48 UTC
Message-ID
<CABPp-BEe+BK6Ew0ZLnkgCn=1J6kyJa5VTaibuJOEVeDdgLd_Ow@mail.gmail.com>

On HFS (which appears to be the default Mac filesystem prior to High Sierra), unicode names are "normalized" before recording. Thus with a script like:

    mkdir tmp
    cd tmp
    auml=$(printf "\303\244")
    aumlcdiar=$(printf "\141\314\210")
    >"$auml"
    echo "auml:          " $(echo -n "$auml" | xxd)
    echo "aumlcdiar:     " $(echo -n "$aumlcdiar" | xxd)
    echo "Dir contents:  " $(echo -n * | xxd)
    echo "Stat auml:     " "$(stat -f "%i   %Sm   %Su %N" "$auml")"
    echo "Stat aumlcdiar:" "$(stat -f "%i   %Sm   %Su %N" "$aumlcdiar")"
We see output like:
    auml:           00000000: c3a4 ..
    aumlcdiar:      00000000: 61cc 88 a..
    Dir contents:   00000000: 61cc 88 a..
    Stat auml:      857473   Apr 26 09:40:40 2018   newren ä
    Stat aumlcdiar: 857473   Apr 26 09:40:40 2018   newren ä

On APFS, which appears to be the new default filesystem in Mac OS High Sierra, we instead see:

    auml:           00000000: c3a4 ..
    aumlcdiar:      00000000: 61cc 88 a..
    Dir contents:   00000000: c3a4 ..
    Stat auml:      8591766636   Apr 26 09:40:59 2018   newren ä
    Stat aumlcdiar: 8591766636   Apr 26 09:40:59 2018   newren ä

i.e. APFS appears to record the filename as specified by the user, but continues to allow the user to access it via any name that normalizes to the same thing. This difference causes t0050-filesystem.sh to fail the final two tests. I could change the "UTF8_NFD_TO_NFC" flag checking in test-lib.sh to instead test the exit code of stat to make it pass these two tests, but I have no idea if there are problems elsewhere that this would just be papering over.

I dislike Mac OS and avoid it, so I'd prefer to find someone else motivated to fix this. If no one is, I may eventually try to fix this up...in a year or three from now. But is someone else interested? Would this serve as a good microproject for our microprojects list (or are the internals hairy enough that this is too big of a project for that list)?

Elijah
Next: Torsten Bögershausen
Message 1 of 11 in “BUG report: unicode normalization on APFS (Mac OS High Sierra)”
  1. Elijah NewrenApr 26, 2018
  2. Torsten BögershausenApr 26, 2018
  3. Elijah NewrenApr 26, 2018
  4. Totsten BögershausenApr 27, 2018
  5. Elijah NewrenApr 30, 2018
  6. 1/1 test: Correct detection of UTF8_NFD_TO_NFC for APFStboegi@web.de, Apr 30, 2018
  7. Junio C HamanoApr 30, 2018
  8. Torsten BögershausenApr 30, 2018
  9. Elijah NewrenApr 30, 2018
  10. Torsten BögershausenApr 30, 2018
  11. Elijah NewrenApr 30, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.