]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/kernlib/kerngen/ccgen/dosgs/lstati.c
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / ccgen / dosgs / lstati.c
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 <----------------------------------------------------------*/