[cmucl-commit] [git] CMU Common Lisp branch rtoy-unix-core updated. snapshot-2014-11-17-g11ecbb8

Raymond Toy rtoy at common-lisp.net
Mon Nov 17 05:14:54 UTC 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".

The branch, rtoy-unix-core has been updated
       via  11ecbb802bbf4758df3e4f0e45faeb912bcc1e72 (commit)
      from  a71198af3e574a22d6698870bd6f5755449c39cd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 11ecbb802bbf4758df3e4f0e45faeb912bcc1e72
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Sun Nov 16 21:14:42 2014 -0800

    More support for hemlock.

diff --git a/src/code/exports.lisp b/src/code/exports.lisp
index 3c2e492..197af66 100644
--- a/src/code/exports.lisp
+++ b/src/code/exports.lisp
@@ -290,6 +290,10 @@
 	   "TERMIOS"
 	   "UNIX-TCGETATTR"
 	   "UNIX-TCSETATTR"
+	   "UNIX-CFGETOSPEED"
+	   "UNIX-FCHMOD"
+	   "UNIX-CREAT"
+	   "UNIX-UTIMES"
 	   ))
   
 (defpackage "FORMAT")
diff --git a/src/code/unix.lisp b/src/code/unix.lisp
index e314960..968194c 100644
--- a/src/code/unix.lisp
+++ b/src/code/unix.lisp
@@ -437,6 +437,19 @@
 	   (type unix-file-mode mode))
   (void-syscall ("chmod" c-string int) (%name->file path) mode))
 
+;;; Unix-fchmod accepts a file descriptor ("fd") and a file protection mode
+;;; ("mode") and changes the protection of the file described by "fd" to 
+;;; "mode".
+
+(defun unix-fchmod (fd mode)
+  _N"Given an integer file descriptor and a mode (the same as those
+   used for unix-chmod), unix-fchmod changes the permission mode
+   for that file to the one specified. T is returned if the call
+   was successful."
+  (declare (type unix-fd fd)
+	   (type unix-file-mode mode))
+  (void-syscall ("fchmod" int int) fd mode))
+
 ;;; Unix-lseek accepts a file descriptor, an offset, and whence value.
 
 (defconstant l_set 0 _N"set the file pointer")
@@ -538,6 +551,22 @@
   (declare (type unix-fd fd))
   (void-syscall ("close" int) fd))
 
+;;; Unix-creat accepts a file name and a mode.  It creates a new file
+;;; with name and sets it mode to mode (as for chmod).
+
+(defun unix-creat (name mode)
+  _N"Unix-creat accepts a file name and a mode (same as those for
+   unix-chmod) and creates a file by that name with the specified
+   permission mode.  It returns a file descriptor on success,
+   or NIL and an error  number otherwise.
+
+   This interface is made obsolete by UNIX-OPEN."
+  
+  (declare (type unix-pathname name)
+	   (type unix-file-mode mode))
+  (int-syscall (#+solaris "creat64" #-solaris "creat" c-string int)
+	       (%name->file name) mode))
+
 ;;; Unix-read accepts a file descriptor, a buffer, and the length to read.
 ;;; It attempts to read len bytes from the device associated with fd
 ;;; and store them into the buffer.  It returns the actual number of
@@ -955,6 +984,22 @@
   (declare (type unix-fd fd))
   (void-syscall ("tcsetattr" int int (* (struct termios))) fd opt termios))
 
+;; XXX rest of functions in this progn probably are present in linux, but
+;; not verified.
+#-bsd
+(defun unix-cfgetospeed (termios)
+  _N"Get terminal output speed."
+  (multiple-value-bind (speed errno)
+      (int-syscall ("cfgetospeed" (* (struct termios))) termios)
+    (if speed
+        (values (svref terminal-speeds speed) 0)
+        (values speed errno))))
+
+#+bsd
+(defun unix-cfgetospeed (termios)
+  _N"Get terminal output speed."
+  (int-syscall ("cfgetospeed" (* (struct termios))) termios))
+
 (def-alien-routine ("getuid" unix-getuid) int
   _N"Unix-getuid returns the real user-id associated with the
    current process.")
@@ -1873,6 +1918,29 @@
 	      (addr tv)
 	      #-(or svr4 netbsd) (addr tz) #+netbsd nil)))
 
+;;; Unix-utimes changes the accessed and updated times on UNIX
+;;; files.  The first argument is the filename (a string) and
+;;; the second argument is a list of the 4 times- accessed and
+;;; updated seconds and microseconds.
+
+#-hpux
+(defun unix-utimes (file atime-sec atime-usec mtime-sec mtime-usec)
+  _N"Unix-utimes sets the 'last-accessed' and 'last-updated'
+   times on a specified file.  NIL and an error number is
+   returned if the call is unsuccessful."
+  (declare (type unix-pathname file)
+	   (type (alien unsigned-long)
+		 atime-sec atime-usec
+		 mtime-sec mtime-usec))
+  (with-alien ((tvp (array (struct timeval) 2)))
+    (setf (slot (deref tvp 0) 'tv-sec) atime-sec)
+    (setf (slot (deref tvp 0) 'tv-usec) atime-usec)
+    (setf (slot (deref tvp 1) 'tv-sec) mtime-sec)
+    (setf (slot (deref tvp 1) 'tv-usec) mtime-usec)
+    (void-syscall (#-netbsd "utimes" #+netbsd "__utimes50" c-string (* (struct timeval)))
+		  file
+		  (cast tvp (* (struct timeval))))))
+
 (def-alien-routine ("getpid" unix-getpid) int
   _N"Unix-getpid returns the process-id of the current process.")
 

-----------------------------------------------------------------------

Summary of changes:
 src/code/exports.lisp |  4 +++
 src/code/unix.lisp    | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+)


hooks/post-receive
-- 
CMU Common Lisp


More information about the cmucl-commit mailing list