Subject: None
To: None <netbsd-bugs@NetBSD.ORG>
From: Benjamin Kenobi <fkrj@crux4.cit.cornell.edu>
List: netbsd-bugs
Date: 05/13/1996 21:37:35
>Submitter-Id:	net
>Originator:	Daniel Oberlin
>Organization:  Cornell University
>Confidential:	no
>Synopsis:      fstat() returns 0 for st_size (file lengths) 
>Severity:	serious
>Priority:	high
>Category:	port-amiga	
>Class:		sw-bug
>Release:	1.1
>Environment:
	netbsd-amiga 1.1
System: NetBSD amy 1.1 NetBSD 1.1 (AMY) #2: Fri May 3 12:11:37 PDT 1996 dan@amy.cit.cornell.edu:/usr/src/sys/arch/amiga/compile/AMY amiga


>Description:

	fstat() and stat() return 0 for the file length in the stat
	structure.  It may be that they return other incorrect values
	as well.  Please let me know what you find. 


>How-To-Repeat:


/* Compile and run this program.  It always seems to return 0 for the
 * file size.  I encountered this bug when attempting to compile the
 * program XPilot.  The program "msub" in XPilot failed because of a
 * call to fstat().  I worked around it and got the program to work
 * anyway. */


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>

void main( void )
{

	char file_name[100];
	FILE *f;
	struct stat st;
	int rv, fd;	

	printf("Enter filename to stat : ");
	scanf("%s", &file_name);

	f = fopen(file_name, "r"); 

	if ( !f )
	{
		printf("fopen() failed\n");
		exit(0);
	}

	fd = fileno(f);
	printf("fileno() returned %d\n", fd);

	rv = fstat(fd, &st);
	printf("fstat() returned %d\n", rv);

	printf("st.st_size = %d\n", st.st_size);

	fclose(f);
}

>Fix:

	No clue.