Re: FS utils treates directories as files?

From: Ivan Voras <ivoras_at_freebsd.org>
Date: Tue, 09 Jun 2009 11:03:49 +0200
Thomas Backman wrote:
> FreeBSD 8.0-CURRENT r193521 (Jun 5), bash:
> [root_at_chaos /usr/ports]# file /
> /: directory
> [root_at_chaos /usr/ports]# cat /
> �g��=[root_at_chaos /usr/ports]#
> [root_at_chaos /usr/ports]# cat /usr/ports/mail
> �

This is the traditional behaviour because yes, directories are just
simply ordinary files with a special bit set to distinguish them. Other
systems might have modified "cat" to check if directories are files but
it's not standard.

You can easily check this yourself. The following small program should
work on every unix-ish system:

#include <stdio.h>
#include <stdlib.h>
#include <sys/fcntl.h>

int main() {
	int fd, i;
	char buf[512];
	
	fd = open(".", O_RDONLY);
	read(fd, buf, 512);
	for (i = 0; i < 512; i++)
		printf("%4d ", buf[i]);
}
Received on Tue Jun 09 2009 - 07:03:38 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:49 UTC