the scary thing about is when in file formats it has stuff like:

file: refers to a file
some-special-string: does a special thing

and that just invites the problem of someone using some-special-string as a file name

pls, anyone who does
do not ever do anything like this
keep your formal grammars unambiguous

if you do not, Ada Lovelace will come down from Programmer Heaven and smite you

@Shamar idk, read it in some manpage the other day, not sure which
but similar problems apply to a lot of the system, eg. how basically nothing can handle spaces in file names

(hot take, $ifs should only contain tab and newline, or better yet, there should be no $ifs)

@Shamar this isn't really a Plan 9 specific problem, but it's one of those things that mess up an otherwise nice system


To be honest I don't know why one could need spaces in file names.

I should probably forbid them in #Jehanne at kernel level


I can.

Every programmer continuously does that to users: we restrict what you can do with computers so that you can actually do something.

For example you can't put a 0x0 byte in the middle of a file name. Or a "/" in a domain name.

You are so used to our power you can't see it anymore. And actually most programmers are unaware of it.

But the truth is that we CAN tell you what to do and what not. And that's nothing!

Software programmers dictate how people THINK!

And this was true way before Cambridge Analytica: you perceive and act on the world through the software we write.

Through software we shape your synapses.



@Shamar @xj9 You only can't use 0x0 because of C's limitations. :blobshrug:
IMHO, type Path = List String (maybe NonEmptyList or something) makes more sense than using char*.

It makes sense in historical context, sure, but it doesn't have to always be like this.

And not all limits make you think, some are just practical because an upper bound is often nice to have. Eg. 255 characters per file name is probably a relief for on-disk file system formats.

@Shamar @xj9 Software isn't special in this regard btw, every protocol works like this. They restrict things so that other (hopefully useful) things can happen more easily.

@grainloom That's what NFSv4 does. Every path-component is a counted string and every path is a counted vector of components. (2³²⁻¹ max count for both)

'course then they kind of schmutzed it up by mandating STRINGPREP so not only could you not use non-Unicode filenames, but not even new versions of Unicode…but everyone ignored that and I think it got taken out in the bis.

@Shamar @xj9


Because of C's design.

It's not a limitation, but an explicit choice. There were alternatives, but they were explicitly discarded.


@Shamar @xj9
So it's a chosen limitation. That doesn't change much.
Other choices might make more sense now.

Sign in to participate in the conversation

Cybrespace is an instance of Mastodon, a social network based on open web protocols and free, open-source software. It is decentralized like e-mail.