]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/02/15 17:49:31 mclareni | |
6 | * Kernlib | |
7 | * | |
8 | * | |
9 | /*> ROUTINE LSTATI | |
10 | CERN PROGLIB# Z265 LSTATI .VERSION KERNFOR 4.38 931108 | |
11 | C ORIG. 24/03/91, RDM + JZ | |
12 | Fortran interface routine to lstat | |
13 | */ | |
14 | #include <stdio.h> | |
15 | #include <sys/types.h> | |
16 | #include <sys/stat.h> | |
17 | #include "kerngen/fortchar.inc" | |
18 | #if defined(CERNLIB_QX_SC) | |
19 | int lstati_(fname, info, lgname, slate) | |
20 | #endif | |
21 | #if defined(CERNLIB_QXNO_SC) | |
22 | int lstati(fname, info, lgname, slate) | |
23 | #endif | |
24 | #if defined(CERNLIB_QXCAPT) | |
25 | int LSTATI(fname, info, lgname, slate) | |
26 | #endif | |
27 | #if defined(CERNLIB_QMCRY) | |
28 | _fcd fname; | |
29 | #endif | |
30 | #if !defined(CERNLIB_QMCRY) | |
31 | char *fname; | |
32 | #endif | |
33 | int *lgname; | |
34 | int *info; | |
35 | int *slate; | |
36 | { | |
37 | #ifdef WIN32 | |
38 | #define lstat stat | |
39 | #endif | |
40 | struct stat *buf; | |
41 | char *ptname, *fchtak(); | |
42 | int istat, lstat(); | |
43 | ||
44 | istat = -1; | |
45 | ptname = fchtak(fname,*lgname); | |
46 | if (ptname == NULL) goto out1; | |
47 | ||
48 | buf = (struct stat *) malloc(sizeof (struct stat)); | |
49 | if (buf == NULL) goto out2; | |
50 | ||
51 | istat = lstat(ptname, buf); | |
52 | ||
53 | if (!istat) { | |
54 | info[0] = (int) buf->st_dev; | |
55 | info[1] = (int) buf->st_ino; | |
56 | info[2] = (int) buf->st_mode; | |
57 | info[3] = (int) buf->st_nlink; | |
58 | info[4] = (int) buf->st_uid; | |
59 | info[5] = (int) buf->st_gid; | |
60 | info[6] = (int) buf->st_size; | |
61 | info[7] = (int) buf->st_atime; | |
62 | info[8] = (int) buf->st_mtime; | |
63 | info[9] = (int) buf->st_ctime; | |
64 | #if (!defined(CERNLIB_QMSGI))&&(!defined(CERNLIB_QMDOS)) | |
65 | info[10] = (int) buf->st_blksize; | |
66 | info[11] = (int) buf->st_blocks; | |
67 | #endif | |
68 | #if defined(CERNLIB_QMDOS) | |
69 | #ifdef WIN32 | |
70 | info[10] = 0; | |
71 | #else | |
72 | info[10] = (int) buf->st_blksize; | |
73 | #endif | |
74 | info[11] = 0; | |
75 | #endif | |
76 | #if defined(CERNLIB_QMSGI) | |
77 | info[10] = 0; | |
78 | info[11] = 0; | |
79 | #endif | |
80 | *slate++ = (buf->st_mode & S_IFMT) ^ S_IFREG; | |
81 | #if !defined(CERNLIB_QMDOS) | |
82 | *slate++ = (buf->st_mode & S_IFMT) ^ S_IFLNK; | |
83 | #endif | |
84 | #if defined(CERNLIB_QMDOS) | |
85 | *slate++ = 0; | |
86 | #endif | |
87 | *slate++ = (buf->st_mode & S_IFMT) ^ S_IFDIR; | |
88 | }; | |
89 | ||
90 | free(buf); | |
91 | out2: free(ptname); | |
92 | out1: return istat; | |
93 | ||
94 | } | |
95 | #ifdef WIN32 | |
96 | #undef lstat | |
97 | #endif | |
98 | /*> END <----------------------------------------------------------*/ |