]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/kernlib/kerngen/ccgen/lstati.c
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / ccgen / lstati.c
1 /*
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.2  1997/02/04 17:34:35  mclareni
6 * Merge Winnt and 97a versions
7 *
8 * Revision 1.1.1.1.2.1  1997/01/21 11:29:36  mclareni
9 * All mods for Winnt 96a on winnt branch
10 *
11 * Revision 1.1.1.1  1996/02/15 17:49:29  mclareni
12 * Kernlib
13 *
14 */
15 #include "kerngen/pilot.h" 
16 #if defined(CERNLIB_WINNT)
17 #include "wntgs/lstati.c"
18 #elif defined(CERNLIB_QMDOS)
19 #include "dosgs/lstati.c"
20 #elif defined(CERNLIB_QMIRTD)
21 #include "irtdgs/lstati.c"
22 #else
23 /*>    ROUTINE LSTATI
24   CERN PROGLIB# Z265    LSTATI          .VERSION KERNFOR  4.39  940228
25 C ORIG. 24/03/91, RDM + JZ
26   Fortran interface routine to lstat
27 */
28 #include <stdio.h>
29 #include <sys/types.h>
30 #include <sys/stat.h>
31 #include "kerngen/fortchar.h"
32 #if defined(CERNLIB_QX_SC)
33 int lstati_(fname, info, lgname, slate)
34 #endif
35 #if defined(CERNLIB_QXNO_SC)
36 int lstati(fname, info, lgname, slate)
37 #endif
38 #if defined(CERNLIB_QXCAPT)
39 int LSTATI(fname, info, lgname, slate)
40 #endif
41 #if defined(CERNLIB_QMCRY)
42       _fcd  fname;
43 #endif
44 #if !defined(CERNLIB_QMCRY)
45       char *fname;
46 #endif
47       int  *lgname;
48       int  *info;
49       int  *slate;
50 {
51       struct stat *buf;
52       char *ptname, *fchtak();
53       int  istat, lstat();
54
55       istat  = -1;
56       ptname = fchtak(fname,*lgname);
57       if (ptname == NULL)          goto out1;
58
59       buf = (struct stat *) malloc(sizeof (struct stat));
60       if (buf == NULL)             goto out2;
61
62       istat = lstat(ptname, buf);
63
64       if (!istat) {
65          info[0] = (int) buf->st_dev;
66          info[1] = (int) buf->st_ino;
67          info[2] = (int) buf->st_mode;
68          info[3] = (int) buf->st_nlink;
69          info[4] = (int) buf->st_uid;
70          info[5] = (int) buf->st_gid;
71          info[6] = (int) buf->st_size;
72          info[7] = (int) buf->st_atime;
73          info[8] = (int) buf->st_mtime;
74          info[9] = (int) buf->st_ctime;
75 #if (!defined(CERNLIB_QMSGI))&&(!defined(CERNLIB_QMDOS))
76          info[10] = (int) buf->st_blksize;
77          info[11] = (int) buf->st_blocks;
78 #endif
79 #if defined(CERNLIB_QMSGI)||defined(CERNLIB_QMDOS)
80          info[10] = 0;
81          info[11] = 0;
82 #endif
83          *slate++ = (buf->st_mode & S_IFMT) ^ S_IFREG;
84          *slate++ = (buf->st_mode & S_IFMT) ^ S_IFLNK;
85          *slate++ = (buf->st_mode & S_IFMT) ^ S_IFDIR;
86        };
87
88       free(buf);
89 out2: free(ptname);
90 out1: return istat;
91
92 }
93 /*> END <----------------------------------------------------------*/
94 #endif