]>
Commit | Line | Data |
---|---|---|
81fea2b1 JL |
1 | /* Copyright (C) 1995, 1997 Free Software Foundation, Inc. |
2 | This file is part of GNU Fortran libU77 library. | |
3 | ||
4 | This library is free software; you can redistribute it and/or modify it | |
5 | under the terms of the GNU Library General Public License as published | |
6 | by the Free Software Foundation; either version 2 of the License, or | |
7 | (at your option) any later version. | |
8 | ||
9 | GNU Fortran is distributed in the hope that it will be useful, | |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | Library General Public License for more details. | |
13 | ||
14 | You should have received a copy of the GNU Library General Public | |
15 | License along with GNU Fortran; see the file COPYING.LIB. If | |
16 | not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
17 | Boston, MA 02111-1307, USA. */ | |
18 | ||
19 | #ifdef HAVE_CONFIG_H | |
20 | #include "config.h" | |
21 | #endif | |
22 | #include <stdio.h> | |
23 | #if HAVE_STDLIB_H | |
24 | # include <stdlib.h> | |
25 | #endif | |
26 | #include <sys/types.h> | |
27 | #include <sys/stat.h> | |
28 | #include "f2c.h" | |
29 | ||
30 | #ifdef KR_headers | |
31 | void g_char (); | |
32 | ||
33 | integer G77_stat_0 (name, statb, Lname) | |
34 | char *name; | |
35 | integer statb[13]; | |
36 | ftnlen Lname; | |
37 | #else | |
38 | void g_char(const char *a, ftnlen alen, char *b); | |
39 | ||
40 | integer G77_stat_0 (const char *name, integer statb[13], const ftnlen Lname) | |
41 | #endif | |
42 | { | |
43 | char *buff; | |
44 | char *bp, *blast; | |
45 | int err; | |
46 | struct stat buf; | |
47 | ||
48 | buff = malloc (Lname+1); | |
49 | if (buff == NULL) return -1; | |
50 | g_char (name, Lname, buff); | |
51 | err = stat (buff, &buf); | |
52 | free (buff); | |
53 | statb[0] = buf.st_dev; | |
54 | statb[1] = buf.st_ino; | |
55 | statb[2] = buf.st_mode; | |
56 | statb[3] = buf.st_nlink; | |
57 | statb[4] = buf.st_uid; | |
58 | statb[5] = buf.st_gid; | |
59 | #if HAVE_ST_RDEV | |
60 | statb[6] = buf.st_rdev; /* not posix */ | |
61 | #else | |
62 | statb[6] = 0; | |
63 | #endif | |
64 | statb[7] = buf.st_size; | |
65 | statb[8] = buf.st_atime; | |
66 | statb[9] = buf.st_mtime; | |
67 | statb[10] = buf.st_ctime; | |
68 | #if HAVE_ST_BLKSIZE | |
69 | statb[11] = buf.st_blksize; /* not posix */ | |
70 | #else | |
71 | statb[11] = -1; | |
72 | #endif | |
73 | #if HAVE_ST_BLOCKS | |
74 | statb[12] = buf.st_blocks; /* not posix */ | |
75 | #else | |
76 | statb[12] = -1; | |
77 | #endif | |
78 | return err; | |
79 | } |