ITEM: E8569L
Need file stats from Fortran program
Question:
I am needing to get file characteristics from within a Fortran program.
In particular, I want to access a filename which is a logical link to
another file and be able to determine what the original name is. I think
I need something like "stat", "lstat" , or "readlink" C functions but for
Fortran. Any advice or direction would be appreciated.
Response:
I faxed to the customer an example c and fortran program that
illustrate one way of returning the absolute path of a file to which
an input file is symbolically linked. The faxed information follows.
The sample program contained in this document shows you one way to
return the full pathname of a file that is symbolically linked to
another file. The sample C language routine does not prevent failure
in the event of improper input, etc, and is intended to demonstrate a
method. It is supplied as-is.
FILE makefile:
nuts: ctest.o ftest.o
xlf -o $@ ftest.o ctest.o
ftest.o: ftest.f
xlf -c ftest.f
ctest.o: ctest.c
cc -c ctest.c
FILE ctest.c:
\#include \
\#include \
\#define ERR -1
/*
* How to use the readlink subroutine
*
* prototype:
* int readlink( char *path, char *buffer, int buffersize)
*/
int linkread( char *input, char *output, int *buffersize) {
int retval = 0;
char *p = NULL;
char *q = strdup( input);
if(( p = strstr( input, " ")) == NULL)
return( ERR);
strcpy( p, ' ');
if((retval = readlink( input, output, *buffersize)) \< 0)
perror( " linkread error ");
fprintf( stdout, " LINKREAD: Call returned ==%d\==0, retval);
fprintf( stdout, " Input path was ==>%s\<==0, q);
fprintf( stdout, " Modified input path was ==%s\==0, input);
fprintf( stdout, " Path resolved to ==>%s\<==0, output);
return( retval); }
FILE ftest.f
program ftest
external linkread
character*80 output, input
integer retval, size
input = '/unix' size = 80
retval = linkread( input, output, size)
write( 6, 100) input, output, retval
100 format( ' FORTRAN:',/,
$ ' Input path was ==', a,'\==',/,
$ ' Output path was ==', a,'\==',/,
$ ' The returned size was ==', i4,'\==')
end
Support Line: Need file stats from Fortran program ITEM: E8569L
Dated: November 1993 Category: N/A
This HTML file was generated 99/06/24~13:30:53
Comments or suggestions?
Contact us