]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/kernlib/kerngen/ccgen/dosgs/lstati.c
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / ccgen / dosgs / lstati.c
CommitLineData
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
11C 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)
19int lstati_(fname, info, lgname, slate)
20#endif
21#if defined(CERNLIB_QXNO_SC)
22int lstati(fname, info, lgname, slate)
23#endif
24#if defined(CERNLIB_QXCAPT)
25int 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);
91out2: free(ptname);
92out1: return istat;
93
94}
95#ifdef WIN32
96#undef lstat
97#endif
98/*> END <----------------------------------------------------------*/