20 ms·
An error message, still found in Windows 10, is a mistake from 1974
- CoconutPilot 8y agoThere are bugs, there are design flaws, and there are limitations. Often people are confused how to classify an issue between these categories. This is a 44 year old limitation.
- perl4ever 8y agoNot expecting a limitation like this could lead to undesired behavior (it did!), which would constitute a bug. Maybe 44 years from now, someone will have a nanotech brain implant, and happen to read this tweet and think "AUX.H" and their implant will crash, and they'll have a seizure and fall in front of a bus. Technically, it was a "limitation" passed on, but it turned out there was an associated bug.
- jerkstate 8y agoHopefully 44 years from today, these timeless words will still echo: "it's not a bug, it's a feature!"
- c3534l 8y agoRight. It's not a bug if it's the intended behavior. It's merely insanity that this is the intended behavior.
- dotancohen 8y agoIntended behaviour is not expected behaviour. A bug in the spec is still a bug.
- mark-r 8y agoI remember trying to make that point at a former employer, and getting nowhere. Once something was in the spec it was written in stone, no matter how much pain it caused the users. Unlike Microsoft's case, this one wasn't required for backwards compatibility. It was simply a dumb decision that nobody wanted to revisit.
- laumars 8y agoDoes it even matter? undesired behaviour due to backwards compatibility with a little known (in the wider sense of computer usage) 44 year old feature which brakes someone’s workflow will be interpreted by the user as a bug regardless of whether it is expected behaviour to the developers who wrote the code. If that’s not technically a “bug” then it’s still broken UX (and the error message produced certainly doesn’t help there either).
- hyperman1 8y agoI'll just leave this here. https://github.com/rust-lang/cargo/issues/3982 https://github.com/rust-lang/cargo/issues/3982
- bklaasen 8y agoThis is why I detest talk about "quality" in software. Quality isn't an inherent property - it's a relationship between you and the software. What you might regard as a limitation I might regard as a showstopper. It's that failure to appreciate quality as a relationship which is the confusion.
- wcoenen 8y agoQuality is also about other relationships between the software and its environment. It's not just the user and one piece of software in a vacuum. Imagine being a developer of some windows software, and a QA person in your team notices that the software can't save to "aux.foo". You explain that this is a limitation of the Windows OS and you can't fix this. But QA insists that this is a "showstopper", and management agrees. So you do a bit more research and you discover the work-around with the "\\?\" path prefix. You implement the "fix". Now QA discovers that they can save to "aux.foo", but windows explorer has weird issues with it, and they can't open the file in a text editor, and the file doesn't get backed up anymore, etc. Wouldn't it have been better to accept the limitation instead of calling it a showstopper?
- ryacko 8y agoI wish Microsoft would just accept that no one will use Internet Explorer and devote resources to breaking MS-DOS compatibility.
- int0x80 8y agoBug? No. Works as expected, one could argue. Limitation? Yes. Design flaw? Hell yes.
- userbinator 8y agoThe real bug is the misleading "too large for destination" message. The other message "invalid device name" is at least somewhat more descriptive, even better would be "filename is a reserved device name".
- alkonaut 8y agoThis. The file name is explicitly documented as not supported by the file system. The error message is buggy. A correctly working system would have simply said what limitation the user had hit. I’m sure that in every file system there are names you can’t give a file - and if there aren’t then that problem is at least as big. For example if it’s possible to call files null, the empty string, “.”, the directory separator etc then that just creates more trouble. These are documented limitations and a non-buggy system will explain what limitation the user has hit. Inconsistency such as differences beteeen file system and file explorer I could agree are borderline bugs at least in the UX sense. The user doesn’t see the file explorer UI and the file system as different things.
- marcosdumay 8y agoAFAIK, Linux accepts any byte sequence. I never found one that couldn't be used.
- alkonaut 8y agoTry using a proper front slash in a file name.
- umanwizard 8y ago0x2F and 0x00 are not allowed in Linux filenames.
- cesarb 8y agoAlso, filenames composed solely of 0x2E bytes and with length zero, one, or two have a special meaning and can't actually be used to name files.
- ilaksh 8y agoGood point. Oh man I love coconut though.
- jhoechtl 8y agoExplanation? I guess it has something to do with the league of special file names like CON NUL and PRN?
- rkagerer 8y agoCorrect. AUX is a reserved name: https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#naming-conventions https://docs.microsoft.com/en-us/windows/desktop/FileIO/nami... Here's some history: https://superuser.com/a/613335/75522 https://superuser.com/a/613335/75522 and https://blogs.msdn.microsoft.com/oldnewthing/20031022-00/?p=42073 https://blogs.msdn.microsoft.com/oldnewthing/20031022-00/?p=...
- djsumdog 8y agoYea, it's not really a bug so much as just a very old legacy limitation. Microsoft has ripped out a lot of NT/XP compatibility in Win 7/8/10. I wonder if these special names are still in a lot of use, or if it's just low priority (or it's in a part of the code base where it's low tech debt and no one cares).
- markmark 8y agoExactly. I read this thread this morning and found it a bit frustrating that is was being called a bug. This isn't a bug, it's a documented feature that still exists for backwards compatibility. You may not like it, or may not agree that it still exists, but it was intentionally designed and has been intentionally kept around. It's like complaining that you can't make a file name with / in it under linux (or perhaps making a file with / in it's name on a system that allows it then saying linux has a bug when it can't open it).
- p2t2p 8y agoYes and no. In Linux you can use an Unicode that looks like slash. Candidates are U+2044, U+2215, U+29F8, U+FF0F, and U+2571. However similar trick probably would work in Windows as well. Does anybody care to try? :)
- ndnxhs 8y agoDoes anyone else get a message saying "you are rate limited try again later" on twitter? I'm not on a vpn
- rntksi 8y agoYup happened to me when using Firefox Focus with tracking disabled & no cookies. Using Chrome didn't trigger that error.
- ahoka 8y agoSame here with Firefox + ublock.
- deleted 8y ago[deleted]
- avandecreme 8y agoYes, refreshing the page fixes the issue.
- godzillabrennus 8y agoYes, using Safari on ios with adblocking software. Can’t get it to show even with a refresh.
- astura 8y agoThis happens to me almost every time I click a link to Twitter on chrome for Android even if I haven't been to Twitter in the last month. No VPNs or adblocks. Refresh a few times.
- lgeorget 8y agoThere's one thing I don't understand. Why was the colon dropped from the special name? I personally remember typing things such as "copy CON: sys.ini" to create heredocs. Programs could have redirect their output to "AUX:.H" or "CON:.TXT" and the problem described by the author would not exist since the colon is not a valid character for a filename. Is it because programs did not let you pick a name with a colon in it?
- int_19h 8y agoThere never was a colon in special device names in DOS.
- ezoe 8y agoPerhaps NTFS's alternative data stream has different treatment?
- mormegil 8y agoThis addendum is now in the article: > CP/M actually didn't do these special names as simply as I described them, which is a fact I either never learned or had since forgot. > It actually required them to be followed by a colon, as if they were a drive name. > So PRN: is the printer, PRN is not.
- 3ds 8y agoEasier to read: https://threadreaderapp.com/thread/1058676834940776450.html https://threadreaderapp.com/thread/1058676834940776450.html
- raverbashing 8y agoSo, the question would be, why would Windows not remove this limitation from the main OS and only keep it on backward compatibility mechanisms (like the DOS prompt which runs - or used to - in virtual 8086 mode?)
- mojuba 8y agoMy guess is, because of interoperability with older Windows machines on the local network, but I'm not sure.
- rossy 8y agoThey probably can't remove it as long as they have Win32. Real Windows programs sometimes do things like fopen("con") or CreateFile("nul", ...) for the same reason a program might open /dev/null or /dev/tty on Linux. I guess you could ask why Microsoft didn't remove this feature when they created Win32, or why they still allow forms like "C:\dir\nul.txt".
- mcv 8y agoBut even so, why hasn't Win32 supported \dev\con since forever? Then programs could use that and the old stupid way could be phased out.
- mishac 8y agoYou'd have to modify and recompile the old programs, which may not be possible.
- mcv 8y agoNo you don't. Run them in compatibility mode. You often need to do that anyway. A _lot_ changed between PC-DOS 1 and Windows 10. It's ridiculous that this didn't.
- ygra 8y agoCompatibility mode applies to processes, though, which raises a problem with batch files (or scripts) that use those things, as you'd then have to make cmd always run in compatibility mode (or Python, or Perl, etc.).
- tdeck 8y agoApparently they did think of namespacing these devices files way back in the day. According to Wikipedia: "Versions 2.x of MS-DOS provide the AVAILDEV CONFIG.SYS parameter that, if set to FALSE, makes these special names only active if prefixed with \DEV\, thus allowing ordinary files to be created with these names."
- raverbashing 8y agoOh look, developers of DOS/Windows software not giving one drop of thought to any new (security/compatibility) features unless things break. Reminds me of how many things broke when Windows started any kind of basic enforcement of read/write permissions (files, registry keys) in NT 4, then in 2000, then in XP, until I guess they gave up and created an abstracted API so that programs can trash all they want) (Yes, I'm still bitter)
- karmenblack 8y agoCome on you could have created a better OS than DOS/Windows but you have mastered the art of moaning instead...
- raverbashing 8y agoI'm not complaining about MS, I'm complaining about the software developers (of 3rd party software)
- mcv 8y agoHad they done that, it would have been fine. It's bizarre that once it became clear that this was going to be a problem (when harddisks and directories were introduced, or with Win95, or XP at the latest), they didn't decide to deprecate the stupid way and push everybody to use the sensible way. You may have to support both ways for a while, but once you start supporting stupid ideas like this out of a need for backwards compatibility, it should be obvious that it'll never go away unless you make it go away. Maybe allow old software to run in QDOS-compatibility mode or something. It's just insane that this is still a real limitation in Win10.
- nicetryguy 8y ago> This idea was brought into CP/M by Gary Kiddal in 1974. > Gary Kiddal ....I just died a little inside
- Endy 8y agoWhy?
- perl4ever 8y agohttps://en.wikipedia.org/wiki/Gary_Kildall https://en.wikipedia.org/wiki/Gary_Kildall
- omnibrain 8y agoPerhaps because of the misspelled name. His name was Gary Kildall. Btw, I can highly recommend some of the old Computer Chronicles episodes with him as co-host. They are available on archive.org.
- foone 8y agoYeah, if you read to the bottom I apologize for this. I made this rant at 5am after being in the hospital for 8 hours, I could barely see the screen. It's amazing the thread doesn't have even more typos
- koyote 8y agoBack in the good old days of the early(er) internet, back when you could do a port search on 21 to find random machines with anonymous FTP access, a lot of the machines you'd find were inevitably Windows machines. A 'trick' used by the file-sharing community in order to hide their files on these anonymous FTP servers was to create some nested directories with these kind of keywords. The FTP server allowed you to create the directories as well as access them (if you knew the full path) but on Windows they would just cause errors or crashes if someone tried to access them. Combine that with the ability of creating directories with just spaces as names and you could hide quite a bit of stuff from the unsuspecting FTP server administrator.
- enraged_camel 8y ago>>Back in the good old days of the early(er) internet, back when you could do a port search on 21 to find random machines with anonymous FTP access Man, I remember doing this to find video game executables. Good times.
- petters 8y agoHow did the Windows ftp create the files with protected names? Shouldn't it have crashed, like the blue screen-causing <img src="C:/con/con">
- zapzupnz 8y agoSince the special filenames were handled at the OS level, any crash would have required the OS to mount the FTP directories. I don't think Windows' FTP program ever mounted anything, meaning the directories were handled by the program and not by the OS. When you copied anything to your local Windows machine, the file would automatically be copied to a directory with a safe name rather than mimicking the directory hierarchy from the remote server.
- koyote 8y agoTo be honest, I don't know. This is nearly 20 years ago now. I assume the FTP server created the directories using a different file-system API call than Windows Explorer. Here's a post by someone who found one of these directory structures on his FTP server back in 2003: http://www.informit.com/articles/article.aspx?p=31278 http://www.informit.com/articles/article.aspx?p=31278
- thristian 8y agoFun facts: The reserved names are things like "COM" and "LPT" followed by a digit... or at least, a thing that Unicode recognises as a digit, so "COM²" is just as broken as "COM2". This device remapping is done in the Win32 layer, not the NT kernel, so you can often use "verbatim path syntax" to bypass these hacks. So "C:\Temp\COM2.TXT" is a magic device, but "\\?\C:\Temp\COM2.TXT" is an ordinary file you can read or write without issue... until you try and look into C:\Temp with a program that doesn't use verbatim paths like Windows Explorer, and all hell breaks loose.
- nightfly 8y agoIt amazes me that Windows Explorer (literally the most common way of interacting with files directly in windows) has so many limitations...
- unstuckdev 8y agoSometimes I find interesting things in it. For example, you can open a terminal set to the current directory by putting cmd in the path bar. This also works with other commands and arguments, so you can do stuff like notepad [filename].
- sixothree 8y agoKnow how to get admin cmd this way?
- ygra 8y agoTry Ctrl+Shift+Return instead of just Return for launching.
- WorldMaker 8y agoIn the Ribbon version of Explorer (ie, since Windows 8), open folder in Command Prompt was added to the File menu.
- tragomaskhalos 8y ago
- Endy 8y agoThe more I see of these things, the more I see reason to have partitions, or real drives, with every OS from DOS 5 to the presence.
- jordsta 8y ago@foone is very quickly becoming my favourite account to follow on Twitter. He posts at least one super insightful Twitter thread every day or two about some fascinating quirk about computing history. Beats hitting Wikipedia:Special:Random for sure.
- Stratoscope 8y agoThis brings back fond, or not so fond, memories. Back in the earliest days of Windows, I wanted a way to log some debug output, and there were not a lot of options. You could write to the AUX device, if you had a serial terminal attached. So I figured I would write a device driver that redirected AUX output to the monochrome display, glass teletype style, while Windows ran on the color display. Naturally, I named it AUX.SYS, with a source file called AUX.ASM. Oops. That didn't work too well. Eventually I figured out that I couldn't name any file AUX.anything. I was going to call it AUXDRV.SYS instead, but then I thought it would be fun to use a name that sounded like AUX but wasn't spelled that way. So OX.SYS it was!
- oneeyedpigeon 8y agoBeing a nerd, I’m surprised you didn't go with ORCS.SYS ;-) (Unless, in your dialect, you don’t pronounce 'orcs'and 'aux' in exactly the same way, as I do)
- evincarofautumn 8y agoIn my accent (a rhotic New England without the cot–caught merger) they’re all different: • “ox” /ɒks/ • “aux” /ɔːks/ • “orcs” /ɔɹks/ But hey, close enough for a pun anyway. My favourite rhymes and puns are those that work in any accent, but it’s a bit harder to come by one that’s not overused.
- oneeyedpigeon 8y agoActually, you've reminded me that some of the best puns are the ones that don't quite work anyway. Part of the reason "surely you can't be serious..." is so funny is that it's tortuous to the point of absurdity!
- Domark 8y agoThis reminds me of the C$ trick for networked Microsoft computers. Full read access on the entire volume!
- shallowprize 8y agoThose were the days. You could use Windows Explorer to browse the entire HD of half the computers in your neighborhood. Boy did we find some gems...
- gerdesj 8y agoWhat do you mean those were the days? I use this pretty much every day at work. c$ etc are default shares that appear if you turn on File and Printer sharing. The NTFS ACLs default to read if you are an authenticated user (RW for local admins) and the share ACL is probably local admins only (domain admins get that by default). So, \\machine_name\c$\tmp works exactly as I need it to on say Windows server 2016.
- marcosdumay 8y agoFile sharing defaults into disabled nowadays, and it will only accept users authenticated on the same domain as the computer. It used to default into enabled, and grant read access to anonymous users.
- deleted 8y ago[deleted]
- tjoff 8y agoImages don't load for firefox for me with trackers blocked (which is default in private mode). Had the images had a caption or something I would at least have known the image wasn't an ad but something relevant to the article.
- pmontra 8y agoThe wrong idea was to have file name extensions. The .whatever should should be part of the file name and have no special meaning. All Unix derivatives look at the first bytes of the file to understand what it is. See man 5 magic for details. The shebang #! is one of those magic values and it makes the OS read the next bytes up to an end of line to get the interpreter and arguments to pass the rest of the file to. Maybe CPM used extensions to gain some speed (no need to inspect the file), not that hardware running Unix was fast by today's standards. Or maybe to force users to declare the purpose of the file in the name. However, as all unnecessary things it eventually came back to bite people.
- bhaak 8y agoThat's still the wrong approach. You can easily get wrong types from that (e.g. look at the output of "echo FORM > /tmp/mismatch ; file /tmp/mismatch") and that opens up annoying problems for the user in the best case and security issues in the worse case. The data type of a file is metadata and metadata shouldn't be determined by in-band signaling. What are you going to do if your system miscategorizes a file? File name extensions are not ideal either as they overload the file name (they are out-of-band signalling regarding the content of the file but in-band regarding the file name) but at least you can change them yourself.
- marcosdumay 8y agoWhat is the alternative? If you don't trust the information that is sent with the file, do you expect the user to decide on the format of each file? The file type is an inherent pair of the file content, and must move together. Otherwise your images and documents become only a meaningless set of bytes. The information that "this is a png image" is as much a responsibility of the machine that is sending you the file as the pixel data. Also, yes, accepting random data from a network is a big security risk. It's up to your OS to handle that data in a secure way, but this is not done by removing the "this is an executable" mark.
- Drdrdrq 8y agoThe obvious alternative is to have metadata about file in a separate descriptor, which could be saved either in first N bytes of the file, or in the file allocation table itself. However implementing this in this age would be impractical as it would break interoperability with every other (still alive) OS out there.
- karmenblack 8y agoWhat is the error? Clickbait title and the error buried in the wall of text...
- Jo_anone 8y agohttps://threadreaderapp.com/thread/1058676834940776450.html https://threadreaderapp.com/thread/1058676834940776450.html
- karmenblack 8y agoThat doesn't tell what is the error
- janee 8y agoSome part of me hopes this bug/limitation/legacy behavior is never addressed. How crazy wouldn't it be if this behavior somehow survives for the next 44 years. I find things like this fascinating, it's like digital archaeology for me.
- jokoon 8y agoTLDR: the AUX filename is reserved. Apparently this post is just a series of copy pasted tweet, which makes it quite difficult to understand.
- f055 8y agoNow that’s what HN is all about! Great read, thank you! And if you want to listen plenty to Gary Kildall, go YouTube “Computer Chronicles”.
- alkonaut 8y agoIt’s never a good time to take a breaking change. Microsoft has had a pretty extreme view of what’s “compatible”, including what seems to be a desire to not break existing applications that rely on undocumented or buggy behavior. I’d want to argue that removing bugs and fixing things like this should just be done with a reasonable notice period and if some aging system in the basement of a fortune500 company blows up then I’m sure that can be solved too. This said, I find the 70s smell more present and annoying in a Unix terminal than in Windows explorer. All the big OS’es are dinosaurs and it will show up here and there.
- jacob019 8y agoThere's no need to break the old stuff. Applications can signal compatibility level so that new applications need not support legacy cruft.
- oneeyedpigeon 8y agoSo your OS is always a bloated superset of its entire history?
- jacob019 8y agoOld compatibility levels can be deprecated at some point, this would qualify.
- anticensor 8y agoWindows already does it. The problem being there is no manifestation mechanism in MS-DOS executable format. No, it is harder to work with such a system.
- eponeponepon 8y agoI think I've told this story before, but several years ago I discovered this stuff for myself. I had tidied up a script distribution that had been unloved for a while and got a bit out of hand. I'd been working at home on a Debian laptop, and committed my changes back to Subversion - one of which was to gather up and organise some auxiliary files into one neat and tidy directory. Naturally, since the script already had ./bin, ./lib and ./etc, I went with aux. I came into work after the weekend to find my Windows-based colleagues, who were in the habit of checking out a single working copy of the entire repo, in full panic mode because "Subversion is broken, IT say we might have lost everything"... These days I name aux directories 'etc'.
- tux3 8y agoThis gives a whole new meaning to source code not being portable.
- perlgeek 8y agoAnother way for source code to be not portable is to include two files with different casing in the same directory, for example "bin" and "BIN". You can't work properly with that on the case-insensitive file systems on Windows and Mac.
- efreak 8y agoYou can actually turn on case insensitivity in windows, though not all software will like it. NT has always supported case-insensitivity (at least somewhat) via a registry key[1]. With windows 10's linux subsystem, there is now a new command to make a _directory_ case sensitive[2]. [1]: http://www.nicklowe.org/2012/02/understanding-case-sensitivity-in-windows-obcaseinsensitive-file_case_sensitive_search/ http://www.nicklowe.org/2012/02/understanding-case-sensitivi... [2]: https://blogs.msdn.microsoft.com/commandline/2018/02/28/per-directory-case-sensitivity-and-wsl/ https://blogs.msdn.microsoft.com/commandline/2018/02/28/per-...
- naikrovek 8y ago
- antonyme 8y agoIt's not a bug - it's a feature: reserved filenames which have special features and functions. And it has been preserved through DOS, and Windows over the years as part of Microsoft's philosophy of "compatibility at all costs". There are many, many examples of similar (mis)features. Not sure why this particular one is getting so much attention. But yeah, if you know the history, it's not really surprising. For anyone interested in this sort of software archeology, have a look at Raymond Chen's blog https://blogs.msdn.microsoft.com/oldnewthing/ https://blogs.msdn.microsoft.com/oldnewthing/ which is full of this stuff. Very interesting reading.
- isostatic 8y ago"The file AUX.H is too large for the system" That's a bug. It should say something closer to "The filename AUX.H is a reserved filename and can not be used by this system"
- kjaer 8y agoI just tried it on Windows 10, and the error message is: This file name is reserved for use by Windows. Choose another name and try again. So at least that has been fixed.
- isostatic 8y agoNever used it. What’s this screenshot from? https://pbs.twimg.com/media/DrEsBhgUUAACZga.jpg https://pbs.twimg.com/media/DrEsBhgUUAACZga.jpg
- richev 8y agoRelated post from Raymond Chen's "The Old New Thing" https://blogs.msdn.microsoft.com/oldnewthing/20031022-00/?p=42073 https://blogs.msdn.microsoft.com/oldnewthing/20031022-00/?p=...
- colatkinson 8y agoChen's blog and book are both amazing. Highly recommend if you've every asked yourself, "Why the hell would MS even conceive of doing this?"
- schindlabua 8y agoSo.. can i still write to LPT on my win10 machine and have my printer print something?
- dwighttk 8y ago>Babe Ruth's home run record was about to fall. 1961?
- agumonkey 8y agoRead about Microsoft never ending list of compromises on https://blogs.msdn.microsoft.com/oldnewthing/ https://blogs.msdn.microsoft.com/oldnewthing/ I don't even blame MS nowadays. My idealism is weaker than my nostalgia. Without these hacks MS would probably die long ago. #worseisbetter
- draw_down 8y agoTurns out, preserving backwards compatibility over sane behavior has downsides, such as not-sane behavior.
- itomato 8y agoRIP @foone's inbox
- commandlinefan 8y agoI was a CS major in the late 80’s, and we’d regularly have communications majors come in to the CS lab to write their papers (this was back before most people had their own computers). At least once a week, one of them would save their paper as “COM1”... and shut off the computer and go home, thinking they were done.
- sys_64738 8y agoKeyboard Error. Press F1 to Continue!
- efreak 8y agoI remember that. Every single time I booted.
- reffaelwallen 8y agoIs this it? https://github.com/Microsoft/MS-DOS/blob/master/v2.0/source/PRINT_v211.ASM#L254 https://github.com/Microsoft/MS-DOS/blob/master/v2.0/source/...
- joezydeco 8y agoI'm still affected by this. We checked our build of the Linux kernel into our version control server. A couple of legacy drivers have files named aux.h, which now screws up any Windows user that tries to check out that branch.
- thejerz 8y agoFor those not familiar with CP/M and Gary Kildall's pioneering role in PC history, this Youtube video is educational: https://www.youtube.com/watch?v=OVqBokd3l2E https://www.youtube.com/watch?v=OVqBokd3l2E
- kerng 8y agoWell, strictly speaking not a bug. Its by design. :)
- mark-r 8y agoI hadn't realized that CP/M dated from 1974, that's older than the Altair!
- ccnafr 8y agoThis looks like pure legacy code and not actually a bug...
- tomohawk 8y agoThis is also why windows has the back slash for file names instead of the forward slash. When dos 1 came out with no directories, the forward slash was used for command line parameters. When directories where introduced in dos 2, the forward slash was already 'taken', so they used the backslash for backwards compatibility.
- efreak 8y agoAny source for this? I see no reason why the same character can't be used in multiple places. Parser should parse the command line until it finds a command, then send the rest of the line to it, regardless of content...
- macintux 8y agohttps://blogs.msdn.microsoft.com/larryosterman/2005/06/24/why-is-the-dos-path-character/ https://blogs.msdn.microsoft.com/larryosterman/2005/06/24/wh... Update: this link adds the tidbit that IBM was concerned about 3rd party utilities that made assumptions about the slash. https://www.howtogeek.com/181774/why-windows-uses-backslashes-and-everything-else-uses-forward-slashes/ https://www.howtogeek.com/181774/why-windows-uses-backslashe...
- ygra 8y agoParsing would be ambiguous, though, as the built-in commands don't require a space before its first argument. So things like copy/y foo bar were (and still are) valid. With directories they would either retain their original meaning, or refer to the y program inside of the copy folder.
- richard_todd 8y agoAt least we can explain it away in terms of backwards compatibility. Here's a quirk that's harder to explain: open a powershell window in windows 10. Hit alt-enter rapidly to switch back-and-forth to full-screen mode while looking at the min/max/close buttons. You can see flashes of windows-vista-era buttons. Is the new look just painted on top of the old one? That's crazy!
- JonathonW 8y agoThere's one other place where you'll see Vista-era title bars in Windows 10: in the title bars of MDI subwindows, where the application itself (or, rather, the Windows theming engine) is responsible for drawing the title bar rather than the DWM. For whatever reason, that little bit of the theme was never updated (probably because most users will never see it; AFAIK the only program that ships with Windows that still uses that style of MDI window is MMC). My hunch is that something similar's happening here: when you bring a Windows Console window full-screen, it disables its window decorations and the DWM stops drawing them. Through some quirk of timing, it looks like the console window itself starts attempting to draw its decorations, and, when that happens, you'll see Vista-style decorations very briefly, because that's what the theme tells it to draw. (I suppose it's also possible that console windows always draw their title bars themselves underneath the DWM-provided decorations... they've always been a bit weird in Windows.)
- Jasper_ 8y agoI'll explain it: In the olden Windows days, the application is in charge of painting its titlebar by handling the WM_NCPAINT message. The default window handler for this will paint the Windows Vista-era buttons. During Windows 7's development, the responsibility of painting window frames moved from the application to a separate process known as the Desktop Window Manager, "dwm.exe". DWM tells the app that it should stop drawing its own frame when the application is windowed, and tells it is in charge of drawing "the frame" when fullscreen. This is communicated using an asynchronous protocol (private window messages), thus during the transition it's possible for the window's idea of its frame state to be "out of sync" with the real state because the client hasn't processed all of its messages yet.
- andyjohnson0 8y ago"The project that eventually became the .NET Framework was originally called COM3. I quickly realized this was a bad idea because of this bug. We then renamed it to COR (Common Object Runtime)." https://mobile.twitter.com/ckindel/status/1058813796209254401 https://mobile.twitter.com/ckindel/status/105881379620925440...
- gecko 8y agoI've written about this before (https://www.bitquabit.com/post/zombie-operating-systems-and-aspnet-mvc/ https://www.bitquabit.com/post/zombie-operating-systems-and-... ); we had to work around this on Kiln back in ~2010, because it meant that Unix users couldn't even access files named things like "aux.h" that were stored in their Mercurial repositories. That said, I had an error in that original post which this weirdly replicates: CP/M doesn't actually have quite this same error, because these names show up through the PIP command, IIRC. I really want to link to the correction, but I can't find someone telling me what the actual correction is from the last time that got posted.
- Myrth 8y agoReminds: http://www.astrodigital.org/space/stshorse.html http://www.astrodigital.org/space/stshorse.html
- slededit 8y agoI don’t see how you can “fix” it without breaking a ton of stuff. I guess they could do a compatibility shim.
- 13of40 8y agoAn even earlier bug in Unix that considers "file.txt" and "FILE.TXT" two different files is still causing user anguish to this day. I mean, honestly, can any of you raise your hand and say that's made your life better?
- userbinator 8y agoEspecially if you want to support Unicode the idea of "case-insensitive" becomes an absurdly complex mess, and I believe it's even lead to some security vulnerabilities (filename filtering, for example, now requires special Unicode-aware comparison.) It's good that it stays out of the filesystem.
- paulddraper 8y agoRaises hand. (1) My Buck BUILD file can exist alongside my build/ directory. (2) Outside of a 0x00 or 0x2F byte, I love not having to think about locales, character encodings, normalizations, etc. especially as I am sharing files across computers which may use different values for these. macOS went from case-insensitve to optionally case-sensitive for what I suspect are similar reasons.
- 13of40 8y agoFair anecdote, but compare that to all of the untold millions of times someone's day has been derailed because they didn't push the shift key. It's a user interface, not an API.
- paulddraper 8y agoOn the contrary, the file system is an application programming interface (hence its presence in every standard library and kernel). File explorers, etc. are user interfaces.
- Drdrdrq 8y agoDoes that really happen? Both CLI and GUI utils help find the correct file name (using Tab and by sorting, respectively). Can someone raise a hand if that happens to them?
- crankylinuxuser 8y agoBTW, here's my tweet about this... https://twitter.com/jwiechers/status/1059039735929282560 https://twitter.com/jwiechers/status/1059039735929282560 And here's my personal tweet: https://twitter.com/CrankyLinuxUser/status/1055860913985806336 https://twitter.com/CrankyLinuxUser/status/10558609139858063... I credit HN user "ageitgey" for this.
- shmerl 8y agoImages aren't loading.
- roywiggins 8y agoA coworker got forcibly introduced to this when he was writing a script that generated several thousand files that he'd decided to name alphabetically. Eventually AAA turned into CAA turned to COM and accessing the resulting file failed, and I got the immense pleasure of being able to explain this.
- bscphil 8y agoOriginal Twitter link for those who want to avoid the broken garbage that is threadreader. https://twitter.com/Foone/status/1058676834940776450 https://twitter.com/Foone/status/1058676834940776450 archive.org link: https://web.archive.org/web/20181104213003/https:/twitter.com/Foone/status/1058676834940776450 https://web.archive.org/web/20181104213003/https:/twitter.co...
- paulmooreparks 8y agoI wrote code in 1993 to deal with this in a DOS-based document-management system, PC DOCS. If users of the system created files with these names, it had to change them to some tokenised version that would then magically re-appear as the original name when requested. I don't remember the exact algorithm, but I remember it was a lot more complicated than I thought it would be when I got the assignment.
- mgliwka 8y agoThis bug even haunts Azure Functions: https://twitter.com/troyhunt/status/1059254759293542400?s=21 https://twitter.com/troyhunt/status/1059254759293542400?s=21
- informatimago 8y agoBut a bug, a feature!
- 0xcb0 8y agoSo using a VM running Linux I can create a 'aux.txt' on a mounted share and write to it. In Windows I can not open/rename/delete the file. Not through the explorer and not through the command line. This seems just wrong and also dangerous in my eyes.
- phaedrus 8y agoOne time in the mid to late 2000s I had a PC motherboard with a BIOS configuration or hardware problem; the boot process started falling back: hdd, CD, fdd, netboot... Finally it brought up the message "ROM BASIC NOT FOUND". I wonder how long THAT error string has been in the AMI BIOS and how long since anyone has seen it!
- kanox 8y agoIt's not a mistake! Compatibility is a feature, and quite a difficult to maintain one at that.