invalid file name chars

BlitzMax Forums/BlitzMax Programming/invalid file name chars

Grey Alien(Posted 2007) [#1]
Hi, I've banned the following characters from file names:

"|*\/:;~?<>

But can you think of any more that might screw things up, especially for non-english keyboard layouts? Thanks.


Scaremonger(Posted 2007) [#2]
The plus sign "+" could mess things up too; it's supported through the windows command line as a way to join files.
C:\>copy b.txt+c.txt a.txt
b.txt
c.txt
        1 file(s) copied.


Other characters not supported by windows include the comma "," and the equals "="

You should also watch out for the "%" sign because this is used to reference variables. Consider the following:
C:\>echo Hello > %PROMPT%.txt
C:\>dir *.txt
 Volume in drive C is Sys
 Volume Serial Number is B84E-DC4E

 Directory of C:\

03/10/2007  14:58                 8 $P$G.txt
              11 File(s)         8 bytes
               0 Dir(s)  147,663,589,376 bytes free



Grey Alien(Posted 2007) [#3]
Thanks I forgot about batch file stuff, will add +,=%

:-)


popcade(Posted 2007) [#4]
>>non-english keyboard layouts?

Gery, in my experience I have a BIG issue when using European characters, that'll cause Chinese/Japanese/Korean OSes fail to load file.

(Just happened when I play TECNO and I contacted auther for solution)

If the requirements is "stable on all possible OSes", alphabet chars, numbers and "_" are safer.


Grey Alien(Posted 2007) [#5]
Can you elaborate yoko? thx.


jhans0n(Posted 2007) [#6]
If you're going for maximum stability and security, you should white list the characters you want to allow rather than black list the ones you want to deny. I'd suggest:

A-Z
a-z
0-9
-
_

Also, and I'm sure you know this but others reading the thread might not, keep in mind that some OSes have case-sensitive file names, so ABCD.txt and abcd.txt could be different files.


Grey Alien(Posted 2007) [#7]
yep thanks. whitelist could be the way to go I just though I might let the players have some freedom of expression in their names which get turned into filenames.


jhans0n(Posted 2007) [#8]
It really depends on how much security and stability you need for your app. If you're doing a web application, I would definitely white list, since otherwise it could be open to remote attacks. If you're making a single player game, a black list of the characters mentioned by you and others above would probably suffice.