greatroar
663106ef6e
lib/fs: Optimize WindowsInvalidFilename ( #8687 )
...
Replaced strings.Split with the new strings.Cut, which doesn't allocate.
name old time/op new time/op delta
WindowsInvalidFilenameValid-8 154ns ± 2% 89ns ± 0% -42.09% (p=0.000 n=10+9)
WindowsInvalidFilenameNUL-8 124ns ± 2% 124ns ± 1% ~ (p=0.371 n=8+10)
name old alloc/op new alloc/op delta
WindowsInvalidFilenameValid-8 16.0B ± 0% 0.0B -100.00% (p=0.000 n=10+10)
WindowsInvalidFilenameNUL-8 19.0B ± 0% 3.0B ± 0% -84.21% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
WindowsInvalidFilenameValid-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10)
WindowsInvalidFilenameNUL-8 2.00 ± 0% 1.00 ± 0% -50.00% (p=0.000 n=10+10)
2022-11-21 12:58:00 +01:00
Jakob Borg
a3c724f2c3
all: Add build constants for runtime.GOOS comparisons ( #8442 )
...
all: Add package runtimeos for runtime.GOOS comparisons
I grew tired of hand written string comparisons. This adds generated
constants for the GOOS values, and predefined Is$OS constants that can
be iffed on. In a couple of places I rewrote trivial switch:es to if:s,
and added Illumos where we checked for Solaris (because they are
effectively the same, and if we're going to target one of them that
would be Illumos...).
2022-07-28 19:36:39 +02:00
deepsource-autofix[bot]
80ec4acb53
all: Fix check for empty string ( #8456 )
...
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
2022-07-28 16:51:03 +02:00
greatroar
3e032c4da6
lib/fs: optimize Windows path checking/sanitizing
...
name old time/op new time/op delta
WindowsInvalidFilenameValid-8 875ns ± 1% 150ns ± 1% -82.84% (p=0.000 n=9+9)
WindowsInvalidFilenameNUL-8 276ns ± 4% 121ns ± 3% -56.26% (p=0.000 n=10+10)
name old alloc/op new alloc/op delta
WindowsInvalidFilenameValid-8 32.0B ± 0% 16.0B ± 0% -50.00% (p=0.000 n=10+10)
WindowsInvalidFilenameNUL-8 32.0B ± 0% 19.0B ± 0% -40.62% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
WindowsInvalidFilenameValid-8 2.00 ± 0% 1.00 ± 0% -50.00% (p=0.000 n=10+10)
WindowsInvalidFilenameNUL-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
2021-11-23 21:25:29 +01:00
Simon Frei
1a00ea7c6e
lib: Prevent using protocol method with native path ( fixes #7557 ) ( #7563 )
2021-04-11 15:29:43 +02:00
tomasz1986
1ed0116147
all: Fix Microsoft documentation links in code comments ( #7387 )
2021-02-20 14:56:45 +01:00
Simon Frei
54b50e3d52
lib/fs, lib/model: Cover more windowsyness sanitizing paths ( fixes #7075 ) ( #7158 )
2020-11-25 22:52:46 +01:00
Tomasz Wilczyński
fb3281b647
lib/fs: Add COM0 and LPT0 to invalid Windows file names (ref #7008 ) ( #7013 )
...
COM0 and LPT0 are not listed in the official Microsoft's documentation
at https://docs.microsoft.com/windows/win32/fileio/naming-a-file , but
in reality are also invalid in Windows Explorer.
Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com>
2020-09-28 20:35:54 +02:00
Jakob Borg
e6b1f67ecf
lib/fs: Be even more strict about Windows names (ref #7008 ) ( #7012 )
...
Things like nul.whatever.txt are also not allowed.
2020-09-28 10:42:37 +02:00
Jakob Borg
9e0b924d57
lib/fs: Be more clear about invalid file names (ref #7010 ) ( #7011 )
...
Add specific errors for the failures, resulting in this rather than just
the generic "invalid filename":
[MRIW7] 08:50:50 INFO: Puller (folder default, item "NUL"): syncing: filename is invalid: name is reserved
[MRIW7] 08:50:50 INFO: Puller (folder default, item "fail."): syncing: filename is invalid: name ends with space or period
[MRIW7] 08:50:50 INFO: Puller (folder default, item "sup:yo"): syncing: filename is invalid: name contains reserved character
[MRIW7] 08:50:50 INFO: default: Failed to sync 3 items
2020-09-28 10:22:50 +02:00
Jakob Borg
df99237a7f
lib/model: Disallow reserved names, and names ending with period on Windows ( fixes #7008 ) ( #7010 )
...
Like we already do with names ending in space or containing invalid
characters.
2020-09-28 08:25:43 +01:00
Jakob Borg
1d99e5277a
all: Cleanups enabled by Go 1.12
2019-11-10 10:16:10 +01:00
Audrius Butkevicius
0ca1f26ff8
lib/versioner: Restore for all versioners, cross-device support ( #5514 )
...
* lib/versioner: Restore for all versioners, cross-device support
Fixes #4631
Fixes #4586
Fixes #1634
Fixes #5338
Fixes #5419
2019-04-28 23:30:16 +01:00
Simon Frei
e302ccf4b4
lib/fs: Improve IsParent ( #5658 )
2019-04-22 11:12:32 +02:00
Simon Frei
2f9840ddae
lib: Introduce fs.IsParent ( fixes #5324 ) ( #5326 )
2018-11-22 11:16:45 +01:00
Simon Frei
c080f677cb
all: Add invalid/ignored files to global list, announce to peers ( fixes #623 )
...
This lets us determine accurate completion status for remote peers when they
have ignored files.
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4460
2017-11-11 19:18:17 +00:00
Audrius Butkevicius
3d8b4a42b7
all: Convert folders to use filesystem abstraction
...
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4228
2017-08-19 14:36:56 +00:00