Update the changelog
[opencv] / apps / cvenv / EiC / stdClib / dirent.c
1 /* dirent.c
2  *
3  *      (C) Copyright Dec 20 1998, Edmond J. Breen.
4  *                 ALL RIGHTS RESERVED.
5  * This code may be copied for personal, non-profit use only.
6  *
7  */
8 /* This file is broken into 2 parts
9  * the first part defines the interface routines
10  * and the 2nd part adds the interface routine
11  * to EiC's look up tables.
12  */
13
14
15 #ifndef NO_DIRENT
16
17 #include <sys/types.h>
18 #include <dirent.h>
19
20 #if 0
21 #ifdef _LINUX
22 #include <direntry.h>
23 #endif
24 #endif
25
26
27 #include <stdlib.h>
28
29 #include "eic.h"
30 #include "stdliblocal.h"
31
32 /* DIRENT.H STUFF 
33 long telldir(DIR *dir);
34 void seekdir(DIR *dir, long offset);
35 */
36
37
38 val_t eic_opendir(void)
39 {
40     val_t v;
41     v.p.sp = v.p.p = opendir(arg(0,getargs(),ptr_t).p);
42     /*setEp( v.p, sizeof(DIR) );*/
43     setEp( v.p, 3*sizeof(int) + sizeof(void*));
44     return v;
45 }
46
47 val_t eic_readdir(void)
48 {
49     val_t v;
50
51     v.p.sp = v.p.p = readdir(arg(0,getargs(),ptr_t).p);
52
53 #if defined(_SOLARIS) || defined (_IRIX)
54
55     if(v.p.p) {
56         setEp( v.p, sizeof(struct dirent) + strlen(((struct dirent*)v.p.p)->d_name) + 1 );
57     }
58
59 #else
60
61     setEp( v.p, sizeof(struct dirent) );
62
63 #endif
64
65     
66
67     return v;
68 }
69
70 val_t eic_telldir(void)
71 {
72     val_t v;
73     v.lval = telldir(arg(0,getargs(),ptr_t).p);
74     return v;
75 }
76
77 val_t eic_seekdir(void)
78 {
79     val_t v;
80     seekdir(arg(0,getargs(),ptr_t).p,
81             arg(1,getargs(),long));
82     return v;
83 }
84
85
86 val_t eic_rewinddir(void)
87 {
88     val_t v;
89     rewinddir(arg(0,getargs(),ptr_t).p);
90     return v;
91 }
92 val_t eic_closedir(void)
93 {
94     val_t v;
95     v.ival = closedir(arg(0,getargs(),ptr_t).p);
96     return v;
97 }
98
99
100 #endif
101
102
103
104 /**************************************************/
105 void module_dirent()
106 {
107 #ifndef NO_DIRENT
108
109     /* DIRENT.H STUFF */
110     EiC_add_builtinfunc("opendir",eic_opendir);
111     EiC_add_builtinfunc("readdir",eic_readdir);
112     EiC_add_builtinfunc("telldir",eic_telldir);
113     EiC_add_builtinfunc("seekdir",eic_seekdir);
114     EiC_add_builtinfunc("rewinddir",eic_rewinddir);
115     EiC_add_builtinfunc("closedir",eic_closedir);
116
117 #endif
118
119 }