delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2003/06/25/02:03:12

From: Doug Kaufman <dkaufman AT rahul DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: stat and character devices
Date: Wed, 25 Jun 2003 05:56:30 +0000 (UTC)
Organization: a2i network
Lines: 33
Message-ID: <bdbdie$im7$1@blue.rahul.net>
NNTP-Posting-Host: violet.rahul.net
X-Trace: blue.rahul.net 1056520590 19143 66.237.72.28 (25 Jun 2003 05:56:30 GMT)
X-Complaints-To: support AT rahul DOT net
NNTP-Posting-Date: Wed, 25 Jun 2003 05:56:30 +0000 (UTC)
User-Agent: nn/6.6.4
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

I noticed that stat treats some character devices differently, depending
on whether it is run in a DOS box under Win98 or in plain DOS. The COM
series (com1, com2, etc.) shows as a character device when run under
plain DOS, but not in the DOS box under Win98. I couldn't find a
reference to this in searching the archives. This problem doesn't apply
to PRN or the LPT series. A test program that demonstrates this follows.
The results of running the program depend on whether or not it is run on
plain DOS. I am using DJGPP 2.03 libc.a from December 24, 2001.
                          Doug

#include <sys/stat.h>
#include <stdio.h>
int main()
{
	char *base;
	struct stat s;
	base="com1";
	stat(base, &s);
	printf("The value of base is %s\r\n", base);
	printf("The value of st_dev is %d.\r\n", s.st_dev);
	printf("The value of st_mode is %d.\r\n", s.st_mode);
	if(S_ISCHR(s.st_mode))
	{
		printf("The file is a character device.\r\n");
	}else
	{
		printf("The file is not a character device.\r\n");
	}
	return 1;
}
-- 
Doug Kaufman
Internet: dkaufman AT rahul DOT net

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019