unix/src/solaris-2-x/Udir.i3


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.

Udir's implementation is in:


interface Utypes is in: