Skip to content

Commit 2a5601f

Browse files
daveseco7sindresorhus
authored andcommitted
Handle reserved Windows filenames (#2)
1 parent c7e7fa9 commit 2a5601f

4 files changed

Lines changed: 9 additions & 5 deletions

File tree

.travis.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,3 @@ language: node_js
33
node_js:
44
- '5'
55
- '4'
6-
- '0.12'
7-
- '0.10'

index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var stripOuter = require('strip-outer');
77
// doesn't make sense to have longer filenames
88
var MAX_FILENAME_LENGTH = 100;
99

10-
var reControlChars = /[\x00-\x1f\x80-\x9f]/g;
10+
var reControlChars = /[\x00-\x1f\x80-\x9f]/g; // eslint-disable-line no-control-regex
1111
var reRelativePath = /^\.+/;
1212

1313
var fn = module.exports = function (str, opts) {
@@ -32,6 +32,7 @@ var fn = module.exports = function (str, opts) {
3232
str = str.length > 1 ? stripOuter(str, replacement) : str;
3333
}
3434

35+
str = filenameReservedRegex.windowsNames().test(str) ? str + replacement : str;
3536
str = str.slice(0, MAX_FILENAME_LENGTH);
3637

3738
return str;

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"url": "sindresorhus.com"
1111
},
1212
"engines": {
13-
"node": ">=0.10.0"
13+
"node": ">=4"
1414
},
1515
"scripts": {
1616
"test": "xo && ava"
@@ -32,7 +32,7 @@
3232
"dirname"
3333
],
3434
"dependencies": {
35-
"filename-reserved-regex": "^1.0.0",
35+
"filename-reserved-regex": "^2.0.0",
3636
"strip-outer": "^1.0.0",
3737
"trim-repeated": "^1.0.0"
3838
},

test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ test('filnamify()', t => {
1414
t.is(m('..'), '!');
1515
t.is(m('./'), '!');
1616
t.is(m('../'), '!');
17+
t.is(m('con'), 'con!');
18+
t.is(m('foo/bar/nul'), 'foo!bar!nul');
19+
t.is(m('con', {replacement: '🐴🐴'}), 'con🐴🐴');
20+
t.is(m('c/n', {replacement: 'o'}), 'cono');
21+
t.is(m('c/n', {replacement: 'con'}), 'cconn');
1722
});
1823

1924
test('filenamify.path()', t => {

0 commit comments

Comments
 (0)