4 ms·
I thought it was amusing until I read that: #define LOBYTE 0377 #define STRIP 0177 #define QUOTE 0200 I can deal with preprocesso
by simias 12y ago
I thought it was amusing until I read that:
#define LOBYTE 0377
#define STRIP 0177
#define QUOTE 0200
I can deal with preprocessor abuse but octal crosses the line...
Also, in case anybody would have the bad idea to take inspiration from that code, don't do that:
#define MAX(a,b) ((a)>(b)?(a):(b))
It evaluates the macro parameters twice.
Although, on second thought, don't do anything like that code anyway.
- userbinator 12y agoOctal was far more common than hex back then, due to machines with a wordsize that was a multiple of 3 bits; hence Unix permissions, coming from the 18-bit PDP-7, also inheriting that convention.
- simias 12y agoInteresting, you have a source for that? I thought permissions were given in octal just because they're groups of 3 bits (owner/group/other) so it aligns with octal correctly.
- acqq 12y agohttp://en.wikipedia.org/wiki/Programmed_Data_Processor http://en.wikipedia.org/wiki/Programmed_Data_Processor PDP-1 18 bit PDP-2 24 bit PDP-3 36 bit PDP-4 18 bit PDP-5 12 bit PDP-6 36 bit PDP-7 18 bit http://en.wikipedia.org/wiki/PDP-7 http://en.wikipedia.org/wiki/PDP-7 "In 1969, Ken Thompson wrote the first UNIX system in assembly language on a PDP-7, then named Unics as a pun on Multics" CDC "super" computers also had 60-bit words. Moreover, the original ASCII standard had the 7-bit characters, the improvement over even less bits used for characters before that (6 bits == 2 octal digits). 8-bit bytes weren't something you could expect except when buying IBM (which had EBCDIC, not ASCII).
- kjs3 12y agoSeparate issues, I think. Octal was used because that's what most everyone used at the time (a holdover from machines like the IBM 70xx and GE600 series which the early Unix folks were used to). Even in V6 & V7 and later, you see much more octal than hex. Unix perms just happened to be 3 groups of 3 bits. Said another way, we'd likely have used octal to represent them even if perms were 2 bits or 4 bits each.