Copyright (C) 1994, Digital Equipment Corp.
INTERFACE Udir;
IMPORT Utypes;
FROM Ctypes IMPORT char_star, int, long, unsigned_short;
CONST
MAXNAMELEN = 512; (* Maximum length of component of file path name. *)
MAXPATHLEN = 1024; (* Maximum length of file path name. *)
TYPE
struct_dirent_star_star = UNTRACED REF struct_dirent_star;
struct_dirent_star = UNTRACED REF struct_dirent;
struct_dirent = RECORD
d_ino : Utypes.ino_t;
d_offset_XXX : Utypes.off_t; (* not set until libucb is no *)
(* longer linked into M3 programs. *)
d_reclen : unsigned_short;
d_name : D_name;
END;
D_name = ARRAY [0..MAXNAMELEN] OF CHAR;
DIR_star = UNTRACED REF DIR;
DIR = RECORD
dd_fd : int;
dd_loc : int;
dd_size : int;
dd_buf : char_star;
nlist : struct_dirent_star_star;
END;
<* EXTERNAL *> PROCEDURE opendir(dir: char_star): DIR_star;
Make readdir external again when libucb is no longer linked into M3
programs.
PROCEDURE readdir(dirPtr: DIR_star): struct_dirent_star;
<* EXTERNAL *> PROCEDURE telldir(dirPtr: DIR_star): long;
<* EXTERNAL *> PROCEDURE seekdir(dirPtr: DIR_star; location: long);
<* EXTERNAL *> PROCEDURE rewinddir(dirPtr: DIR_star);
<* EXTERNAL *> PROCEDURE closedir(dirPtr: DIR_star): int;
----------------------------------------------- UCB compatibility hack ---
This is an interface to the Berkeley-style readdir routine. The rest
of Udir is identical between Berkeley and System V. This should go
away when libucb is no longer linked into M3 programs.
TYPE
UCB_struct_direct_star = UNTRACED REF UCB_struct_direct;
UCB_struct_direct = RECORD
d_ino : Utypes.ino_t;
d_reclen : unsigned_short;
d_namlen : unsigned_short;
d_name : D_name;
END;
<* EXTERNAL "readdir"*>
PROCEDURE UCB_readdir(dirPtr: DIR_star): UCB_struct_direct_star;
END Udir.