-multiple values."
- (multiple-value-call (lambda (rc &rest results)
- (unless rc
- (error 'unix-error :func 'stat :args (list file)
- :error (car results)))
- (apply #'%make-stat-boa results))
- (unix:unix-stat file)))
+ multiple values."
+ (multiple-value-call
+ (lambda (rc &rest results)
+ (unless rc
+ (error 'unix-error
+ :func 'sys-stat :args (list file)
+ :error (car results)))
+ (apply #'%make-stat-boa results))
+ (unix:unix-stat file)))
+
+(defmacro defsyscall (name)
+ (let ((sysname (intern (format nil "SYS-~:@(~A~)" name)))
+ (unixname (intern (format nil "UNIX-~:@(~A~)" name) :unix)))
+ `(defun ,sysname (&rest args)
+ (apply #'syscall* ',sysname #',unixname args))))
+
+(macrolet ((defsys (&rest names)
+ `(progn ,@(mapcar (lambda (name)
+ `(defsyscall ,name))
+ names))))
+ (defsys open close read write
+ chown fchown chmod fchmod utimes
+ unlink rename
+ gethostname gettimeofday))
+