summaryrefslogtreecommitdiffstats
path: root/Mac/Compat/opendir.c
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Compat/opendir.c')
-rw-r--r--Mac/Compat/opendir.c132
1 files changed, 0 insertions, 132 deletions
diff --git a/Mac/Compat/opendir.c b/Mac/Compat/opendir.c
deleted file mode 100644
index a015609..0000000
--- a/Mac/Compat/opendir.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Macintosh version of UNIX directory access package
- * (opendir, readdir, closedir).
- * Public domain by Guido van Rossum, CWI, Amsterdam (July 1987).
- */
-
-#include "dirent.h"
-#include "macdefs.h"
-
-static DIR opened;
-
-/*
- * Open a directory. This means calling PBOpenWD.
- * The value returned is always the address of opened, or NULL.
- * (I have as yet no use for multiple open directories; this could
- * be implemented by allocating memory dynamically.)
- */
-
-DIR *
-opendir(path)
- char *path;
-{
-#if TARGET_API_MAC_CARBON
- Str255 ppath;
- FSSpec fss;
- int plen;
- OSErr err;
-
- if (opened.nextfile != 0) {
- errno = EBUSY;
- return NULL; /* A directory is already open. */
- }
- plen = strlen(path);
- c2pstrcpy(ppath, path);
- if ( ppath[plen] != ':' )
- ppath[++plen] = ':';
- ppath[++plen] = 'x';
- ppath[0] = plen;
- if( (err = FSMakeFSSpec(0, 0, ppath, &fss)) < 0 && err != fnfErr ) {
- errno = EIO;
- return NULL;
- }
- opened.dirid = fss.parID;
- opened.vrefnum = fss.vRefNum;
- opened.nextfile = 1;
- return &opened;
-#else
- union {
- WDPBRec d;
- VolumeParam v;
- } pb;
- char ppath[MAXPATH];
- short err;
-
- if (opened.nextfile != 0) {
- errno = EBUSY;
- return NULL; /* A directory is already open. */
- }
- strncpy(ppath+1, path, ppath[0]= strlen(path));
- pb.d.ioNamePtr= (unsigned char *)ppath;
- pb.d.ioVRefNum= 0;
- pb.d.ioWDProcID= 0;
- pb.d.ioWDDirID= 0;
- err= PBOpenWD((WDPBPtr)&pb, 0);
- if (err != noErr) {
- errno = ENOENT;
- return NULL;
- }
- opened.dirid= pb.d.ioVRefNum;
- opened.nextfile= 1;
- return &opened;
-#endif
-}
-
-/*
- * Close a directory.
- */
-
-void
-closedir(dirp)
- DIR *dirp;
-{
-#if TARGET_API_MAC_CARBON
- dirp->nextfile = 0;
-#else
- WDPBRec pb;
-
- pb.ioVRefNum= dirp->dirid;
- (void) PBCloseWD(&pb, 0);
- dirp->dirid= 0;
- dirp->nextfile= 0;
-#endif
-}
-
-/*
- * Read the next directory entry.
- */
-
-struct dirent *
-readdir(dp)
- DIR *dp;
-{
- union {
- DirInfo d;
- FileParam f;
- HFileInfo hf;
- } pb;
- short err;
- static struct dirent dir;
-
- dir.d_name[0]= 0;
- pb.d.ioNamePtr= (unsigned char *)dir.d_name;
-#if TARGET_API_MAC_CARBON
- pb.d.ioVRefNum= dp->vrefnum;
- pb.d.ioDrDirID= dp->dirid;
-#else
- pb.d.ioVRefNum= dp->dirid;
- pb.d.ioDrDirID= 0;
-#endif
- pb.d.ioFDirIndex= dp->nextfile++;
- err= PBGetCatInfo((CInfoPBPtr)&pb, 0);
- if (err != noErr) {
- errno = EIO;
- return NULL;
- }
-#if TARGET_API_MAC_CARBON
- p2cstrcpy(dir.d_name, (StringPtr)dir.d_name);
-#else
- (void) p2cstr((unsigned char *)dir.d_name);
-#endif
- return &dir;
-}