<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal/nametransform, branch master</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=master</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2026-01-24T19:12:18+00:00</updated>
<entry>
<title>macos: normalize unicode file names in forward mode (#992)</title>
<updated>2026-01-24T19:12:18+00:00</updated>
<author>
<name>rfjakob</name>
</author>
<published>2026-01-24T19:12:18+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=5185e92ec80a9998ae00cb799dfdfbb93247dfaf'/>
<id>urn:sha1:5185e92ec80a9998ae00cb799dfdfbb93247dfaf</id>
<content type='text'>
Summary: Store as NFC, read as NFD.

This commit resolves https://github.com/rfjakob/gocryptfs/issues/850
by addressing Unicode normalization mismatches on macOS between NFC
(used by CLI tools) and NFD (used by GUI apps). The solution is inspired
by Cryptomator's approach ( https://github.com/cryptomator/cryptomator/issues/264 ).

Forward mode on MacOS now enforces NFC for storage but presents NFD
as recommended by https://developer.apple.com/library/archive/qa/qa1173/_index.html
and https://github.com/macfuse/macfuse/wiki/File-Names-(Unicode-Normalization-Forms) .

See https://github.com/rfjakob/gocryptfs/pull/949 for more info.

This commit does nothing for reverse mode as it is not clear if
anything can be done. Reverse mode can not influence how the
file names are stored, hence mapping normalized names back to
what is actually on disk seems difficult.</content>
</entry>
<entry>
<title>Fix a bunch of staticcheck errors</title>
<updated>2025-07-07T17:59:35+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2025-07-07T17:54:48+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=8f5df19b353e02ffba842fd1b15ccf93da7ee3b4'/>
<id>urn:sha1:8f5df19b353e02ffba842fd1b15ccf93da7ee3b4</id>
<content type='text'>
Tool-assisted.
</content>
</entry>
<entry>
<title>nametransform: reject non-canonical base64</title>
<updated>2023-09-15T20:29:07+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-07-21T17:31:38+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=7fff33a1e2560c8f4eb1f477c1e220eeb14291ab'/>
<id>urn:sha1:7fff33a1e2560c8f4eb1f477c1e220eeb14291ab</id>
<content type='text'>
The test added in the earlier commit passes with this
change.
</content>
</entry>
<entry>
<title>make format</title>
<updated>2022-08-28T09:11:36+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2022-08-28T09:11:36+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=003a7fa2e53ac15d2c94a34102ae12b69b23c586'/>
<id>urn:sha1:003a7fa2e53ac15d2c94a34102ae12b69b23c586</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add comment to pass Codacy Static Code Analysis</title>
<updated>2022-08-28T09:09:06+00:00</updated>
<author>
<name>NekoGirlSAIKOU</name>
</author>
<published>2022-04-25T13:27:08+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=4808adc761783e93d6b6d91a9ed4727089f66688'/>
<id>urn:sha1:4808adc761783e93d6b6d91a9ed4727089f66688</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix invalid -longnamemax for reverse mode</title>
<updated>2022-08-28T09:09:01+00:00</updated>
<author>
<name>NekoGirlSAIKOU</name>
</author>
<published>2022-04-24T17:35:30+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=1bff80b46cf3cdd2d6934ebf905fca96dde7af97'/>
<id>urn:sha1:1bff80b46cf3cdd2d6934ebf905fca96dde7af97</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix typos</title>
<updated>2022-06-26T08:59:06+00:00</updated>
<author>
<name>Yuta Hayashibe</name>
</author>
<published>2022-05-04T09:06:20+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=e9ecff7f07aeb1efe0edec7b4b050ce3c0ef75f8'/>
<id>urn:sha1:e9ecff7f07aeb1efe0edec7b4b050ce3c0ef75f8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>nametransform: fix oversight in comment</title>
<updated>2021-12-19T13:50:52+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-12-19T13:50:52+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=5749e70c7cc4365d6de6a4d5afb73d71d0c10003'/>
<id>urn:sha1:5749e70c7cc4365d6de6a4d5afb73d71d0c10003</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fusefrontend: allow slashes in xattr names</title>
<updated>2021-12-19T13:43:56+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-12-19T13:43:56+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=64be5de75f42e415198ff5e77de509680b69e0e1'/>
<id>urn:sha1:64be5de75f42e415198ff5e77de509680b69e0e1</id>
<content type='text'>
xattr names have fewer restrictions than file names,
relax the validation.

Fixes https://github.com/rfjakob/gocryptfs/issues/627
</content>
</entry>
<entry>
<title>nametransform: fix math.MaxInt build failure on older Go</title>
<updated>2021-10-21T14:44:05+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-10-21T14:42:00+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=87a6bb370acc3690e89a8b0d5109fcb0dab0a374'/>
<id>urn:sha1:87a6bb370acc3690e89a8b0d5109fcb0dab0a374</id>
<content type='text'>
Failure is:

  # github.com/rfjakob/gocryptfs/v2/internal/nametransform
  internal/nametransform/names.go:47:33: undefined: math.MaxInt

math.MaxInt was only introduced in Go 1.17. Use MaxInt32 instead,
which is good enough, even on amd64. It only has to be larger than
any name we might encounter.
</content>
</entry>
</feed>
