source: abuse/tags/pd/macabuse/imlib/port/mac/dirent.h @ 49

Last change on this file since 49 was 49, checked in by Sam Hocevar, 15 years ago
  • Imported original public domain release, for future reference.
  • Property svn:keywords set to Id
File size: 2.7 KB
Line 
1/****************************************************************************************
2 *
3 *      File:           dirent.h
4 *      Created:        7/3/93          By:     George T. Talbot
5 *      Purpose:        Implements UNIX-like directory reading for the Macintosh.
6 *                              This file describes Filesystem-independent directory information.
7 *      Modifications:
8 *
9 *      Notes:
10 *                      1) These routines will NOT work under A/UX.
11 *                      2) WD = working directory
12 *                      3) CD = change directory
13 *                      4) FS = file system
14 *                      5) Mac filesystems allow spaces as part of pathnames!
15 *                      6) All routines which return a path use the default Macintosh path separator,
16 *                         a colon (":").
17 *
18 ****************************************************************************************/
19
20#ifndef __dirent_h
21#define __dirent_h
22
23/*      Maximum path length for opendir()       */
24#define MAXPATHLEN      255
25
26/*
27 * Definitions for library routines operating on directories.
28 */
29typedef struct __dirdesc {
30        /*      PRIVATE FIELDS.  Use the fields & defines below PUBLIC */
31        FSSpec  dir_fsp;
32        long    dd_off;         /* Current offset (ioWDIndex) in dir (for telldir) */
33        int             dd_cached;      /* true if dd_cache_hint points to the next dir to be read      */
34
35        struct dirent   **dd_cache_hint;
36        struct dirent   **dd_buf;       /* directory data buffer */
37
38        /*      PUBLIC  */
39        long    dd_fd;                                                  /* file descriptor (dirID) of this dir  */
40
41#define dd_parent       dir_fsp.parID                   /* dirID of parent      */
42#define dd_bsize        1                                               /* amount of entries read at a time */
43#define dd_size         sizeof(struct dirent)   /* amount of valid data in buffer */
44#define dd_loc          1
45#define dd_name         dir_fsp.name
46#define dd_volume       dir_fsp.vRefNum
47
48        long    dd_numents;     /* Number of files/directories in this directory        */
49} DIR;
50
51/*      See dirent.c for descriptions of these routines */
52extern  DIR     *opendir(char *dirname);
53extern  struct dirent *readdir(DIR *dirp);
54extern  int closedir(DIR *dirp);
55extern  void seekdir(DIR *dirp, long loc);
56extern  long telldir(DIR *dirp);
57
58#ifndef lint
59        #define rewinddir(dirp) seekdir((dirp), (long)0)
60#else
61        extern  void rewinddir(DIR *dirp);
62#endif
63
64/*      Convenient routines     */
65extern char     *getwd(char *path);
66extern int      chdir(char *path);
67extern char     *pathdir(DIR *dirp, char *path);
68
69/*      Any errors in above routines (and hopendir()) are put here      */
70extern OSErr    dd_errno;
71extern char             *dd_separator;  /*      If you're feeling brave, change this to "/"     */
72extern int              dd_xform_seps;
73
74/*      In case you like errno instead  */
75#ifdef UNCOMMENT_ME_IF_YOUVE_GOT_TO_HAVE_ERRNO
76#define errno   dd_errno
77#endif
78
79/*      This routine is Mac-specific, but very convenient in certain situations */
80OSErr   hgetwd(short vRefNum, long startDirID, char *path, int max_path_len, char *sep);
81
82/*      You probably don't want to call this.   */
83extern  DIR     *hopendir(char *dirname, short vRefNum, long dirID);
84
85#include "sys_dirent.h"
86
87#endif  /* !__dirent_h */
Note: See TracBrowser for help on using the repository browser.