* Separate the handling of OPEN flags between ports and directories.
[bpt/guile.git] / libguile / filesys.h
index ca33935..c71d844 100644 (file)
@@ -2,7 +2,7 @@
 
 #ifndef FILESYSH
 #define FILESYSH
-/*     Copyright (C) 1995 Free Software Foundation, Inc.
+/*     Copyright (C) 1995,1997,1998, 1999, 2000 Free Software Foundation, Inc.
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -16,7 +16,8 @@
  * 
  * You should have received a copy of the GNU General Public License
  * along with this software; see the file COPYING.  If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307 USA
  *
  * As a special exception, the Free Software Foundation gives permission
  * for additional uses of the text contained in its release of GUILE.
  *
  * If you write modifications of your own for GUILE, it is your choice
  * whether to permit this exception to apply to your modifications.
- * If you do not wish that, delete this exception notice.  
- */
+ * If you do not wish that, delete this exception notice.  */
+
+/* Software engineering face-lift by Greg J. Badros, 11-Dec-1999,
+   gjb@cs.washington.edu, http://www.cs.washington.edu/homes/gjb */
 \f
 
 #include <stdio.h>
-#include <libguile/__scm.h>
+#include "libguile/__scm.h"
 
 \f
 
-extern long scm_tc16_fd;
+extern scm_bits_t scm_tc16_dir;
 
-#define SCM_FD_P(x) (SCM_TYP16(x)==(scm_tc16_fd))
-#define SCM_FD_FLAGS(x)                        (SCM_CAR(x) >> 16)
-#define SCM_FD(x)                      ((int)SCM_CDR (x))
+#define SCM_DIR_FLAG_OPEN (1L << 16)
 
-enum scm_fd_flags
-{
-  scm_fd_is_open = 1,
-  scm_close_fd_on_gc = 2
-};
+#define SCM_DIRP(x) (!SCM_IMP (x) && (SCM_TYP16 (x) == scm_tc16_dir))
+#define SCM_DIR_OPEN_P(x) (SCM_CELL_WORD_0 (x) & SCM_DIR_FLAG_OPEN)
 
+\f
 
+extern SCM scm_chown (SCM object, SCM owner, SCM group);
+extern SCM scm_chmod (SCM object, SCM mode);
+extern SCM scm_umask (SCM mode);
+extern SCM scm_open_fdes (SCM path, SCM flags, SCM mode);
+extern SCM scm_open (SCM path, SCM flags, SCM mode);
+extern SCM scm_close (SCM fd_or_port);
+extern SCM scm_close_fdes (SCM fd);
+extern SCM scm_stat (SCM object);
+extern SCM scm_link (SCM oldpath, SCM newpath);
+extern SCM scm_rename (SCM oldname, SCM newname);
+extern SCM scm_delete_file (SCM str);
+extern SCM scm_mkdir (SCM path, SCM mode);
+extern SCM scm_rmdir (SCM path);
+extern SCM scm_directory_stream_p (SCM obj);
+extern SCM scm_opendir (SCM dirname);
+extern SCM scm_readdir (SCM port);
+extern SCM scm_rewinddir (SCM port);
+extern SCM scm_closedir (SCM port);
+extern SCM scm_chdir (SCM str);
+extern SCM scm_getcwd (void);
+extern SCM scm_select (SCM reads, SCM writes, SCM excepts, SCM secs, SCM msecs);
+extern SCM scm_fcntl (SCM object, SCM cmd, SCM value);
+extern SCM scm_fsync (SCM object);
+extern SCM scm_symlink (SCM oldpath, SCM newpath);
+extern SCM scm_readlink (SCM path);
+extern SCM scm_lstat (SCM str);
+extern SCM scm_copy_file (SCM oldfile, SCM newfile);
+extern SCM scm_dirname (SCM filename);
+extern SCM scm_basename (SCM filename, SCM suffix);
 
+extern void scm_init_filesys (void);
 
-extern long scm_tc16_dir;
-#define SCM_DIRP(x) (SCM_TYP16(x)==(scm_tc16_dir))
-#define SCM_OPDIRP(x) (SCM_CAR(x)==(scm_tc16_dir | SCM_OPN))
+\f
 
+#if (SCM_DEBUG_DEPRECATED == 0)
 
-\f
-#ifdef __STDC__
-extern SCM scm_sys_chown (SCM path, SCM owner, SCM group);
-extern SCM scm_sys_chmod (SCM port_or_path, SCM mode);
-extern SCM scm_umask (SCM mode);
-extern SCM scm_intern_fd (int fd, int flags);
-extern SCM scm_sys_open (SCM path, SCM flags, SCM mode);
-extern SCM scm_sys_create (SCM path, SCM mode);
-extern SCM scm_sys_close (SCM sfd);
-extern SCM scm_sys_write_fd (SCM sfd, SCM buf);
-extern SCM scm_sys_read_fd (SCM sfd, SCM buf, SCM offset, SCM length);
-extern SCM scm_sys_lseek (SCM sfd, SCM offset, SCM whence);
-extern SCM scm_sys_dup (SCM oldfd, SCM newfd);
-extern SCM scm_sys_stat (SCM fd_or_path);
-extern SCM scm_sys_link (SCM oldpath, SCM newpath);
-extern SCM scm_sys_rename (SCM oldname, SCM newname);
-extern SCM scm_sys_mkdir (SCM path, SCM mode);
-extern SCM scm_sys_rmdir (SCM path);
-extern SCM scm_sys_opendir (SCM dirname);
-extern SCM scm_sys_readdir (SCM port);
-extern SCM scm_rewinddir (SCM port);
-extern SCM scm_sys_closedir (SCM port);
-extern SCM scm_sys_chdir (SCM str);
-extern SCM scm_sys_getcwd (void);
-extern SCM scm_sys_select (SCM reads, SCM writes, SCM excepts, SCM secs, SCM msecs);
-extern SCM scm_sys_symlink(SCM oldpath, SCM newpath);
-extern SCM scm_sys_readlink(SCM path);
-extern SCM scm_sys_lstat(SCM str);
-extern SCM scm_sys_copy_file (SCM oldfile, SCM newfile);
-extern void scm_init_filesys (void);
+#define SCM_OPDIRP(x) (SCM_DIRP (x) && (SCM_DIR_OPEN_P (x)))
 
-#else /* STDC */
-extern SCM scm_sys_chown ();
-extern SCM scm_sys_chmod ();
-extern SCM scm_umask ();
-extern SCM scm_intern_fd ();
-extern SCM scm_sys_open ();
-extern SCM scm_sys_create ();
-extern SCM scm_sys_close ();
-extern SCM scm_sys_write_fd ();
-extern SCM scm_sys_read_fd ();
-extern SCM scm_sys_lseek ();
-extern SCM scm_sys_dup ();
-extern SCM scm_sys_stat ();
-extern SCM scm_sys_link ();
-extern SCM scm_sys_rename ();
-extern SCM scm_sys_mkdir ();
-extern SCM scm_sys_rmdir ();
-extern SCM scm_sys_opendir ();
-extern SCM scm_sys_readdir ();
-extern SCM scm_rewinddir ();
-extern SCM scm_sys_closedir ();
-extern SCM scm_sys_chdir ();
-extern SCM scm_sys_getcwd ();
-extern SCM scm_sys_select ();
-extern SCM scm_sys_symlink();
-extern SCM scm_sys_readlink();
-extern SCM scm_sys_lstat();
-extern SCM scm_sys_copy_file ();
-extern void scm_init_filesys ();
-
-#endif /* STDC */
+#endif  /* SCM_DEBUG_DEPRECATED == 0 */
 
 #endif  /* FILESYSH */
+
+/*
+  Local Variables:
+  c-file-style: "gnu"
+  End:
+*/