Remix.run Logo
lapsed_lisper 3 days ago

I don't know about the Unix certification process itself, but the Single Unix Specification explicitly mentions case-insensitivity among non-conforming file system behaviors that are allowed as extensions (in 2.1.1 item 4, third-to-last bullet):

https://pubs.opengroup.org/onlinepubs/9799919799/

So a conforming OS has to make case-sensitive file systems available (which MacOS does: you can create case-sensitive HFS or APFS volumes). But I'm not sure if a conforming OS instance (i.e., running system) has to have any case-sensitive mount points, and either way, AFAIK there's no practical and race-free way for a conforming application to detect whether any particular mount point behaves case-sensitively.

So I believe that as far as the standard goes, a conforming application might run on a conformingly-extended OS where no portion of the the file namespace behaves case-sensitively. IOW, a conforming application cannot rely on case-sensitivity for file names.

p_ing 3 days ago | parent | next [-]

Apple calls out case-sensitivity as a change they made to pass certification. [0]

> 3. APFS file systems can be formatted as either case-sensitive or case-insensitive. Always format as case-sensitive for UNIX Conformant behavior.

[0] https://www.opengroup.org/csq/repository/noreferences=1&RID=...

yjftsjthsd-h 3 days ago | parent | prev [-]

If they standardize mktemp ( https://www.austingroupbugs.net/view.php?id=1616 ) then I think you could just

  TESTDIR=$(mktemp -d -p ${WHEREVER})
  touch ${TESTDIR}/FOO
  ls ${TESTDIR}/foo && fail