;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; ;;;; Name: file-socket.cl ;;;; Purpose: UFFI Example file to get a socket on a file ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Jul 2002 ;;;; ;;;; $Id: file-socket.lisp,v 1.1 2002/09/30 10:02:36 kevin Exp $ ;;;; ;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; ;;;; UFFI users are granted the rights to distribute and use this software ;;;; as governed by the terms of the Lisp Lesser GNU Public License ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; ************************************************************************* (in-package :cl-user) ;; Values for linux (uffi:def-constant PF_UNIX 1) (uffi:def-constant SOCK_STREAM 1) (uffi:def-function ("socket" c-socket) ((family :int) (type :int) (protocol :int)) :returning :int) (uffi:def-function ("connect" c-connect) ((sockfd :int) (serv-addr :void-pointer) (addr-len :int)) :returning :int) (defun connect-to-file-socket (filename) (let ((socket (c-socket PF_UNIX SOCK_STREAM 0))) (if (plusp socket) (let ((stream (c-connect socket filename (length filename)))) stream) (error "Unable to create socket"))))