;;;;
;;;; p o s i x . s t k 		-- Posix function in Scheme
;;;;
;;;;
;;;; Copyright © 1993-1999 Erick Gallesio - I3S-CNRS/ESSI <eg@unice.fr>
;;;; 
;;;; Permission to use, copy, modify, distribute,and license this
;;;; software and its documentation for any purpose is hereby granted,
;;;; provided that existing copyright notices are retained in all
;;;; copies and that this notice is included verbatim in any
;;;; distributions.  No written agreement, license, or royalty fee is
;;;; required for any of the authorized uses.
;;;; This software is provided ``AS IS'' without express or implied
;;;; warranty.
;;;;
;;;;
;;;;           Author: Erick Gallesio [eg@unice.fr]
;;;;    Creation date: 15-Mar-1995 16:31
;;;; Last file update:  3-Sep-1999 19:53 (eg)
;;;;

(if (symbol-bound? '%init-posix)
    ;; Posix.1 module is in the core interpreter
    (%init-posix)
    ;; Try to load Posix.1 support dynamically
    (load (string-append "posix." *shared-suffix*)))

;;;;
;;;; Stat functions
;;;;
(define (posix-stat->list p)
  (apply append 
	 (map list 
	      '(:dev :ino :mode :nlink :uid :gid :size :atime :mtime :ctime)
	      (vector->list (posix-stat->vector p)))))

(define (posix-lstat filename)
  (posix-stat->list (posix-stat filename)))


;;;;
;;;; Time functions
;;;;
(define (posix-asctime . time)
  (apply posix-strftime "%a %b %d %H:%M:%S %Z %Y\n" time))

(define (posix-ctime . time)
  (let ((t (if (null? time) (list (posix-time)) time)))
    (posix-asctime (apply posix-localtime t))))

;;;;
;;;; Backward compatibility
;;;;
(define posix-access posix-access?)

(provide "posix")