1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
;;;; Name: getshells.cl
;;;; Purpose: UFFI Example file to get lisp of legal shells
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Mar 2002
;;;;
;;;; $Id$
;;;;
;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
;;;;
;;;; *************************************************************************
(in-package :cl-user)
(uffi:def-function "setusershell"
nil
:returning :void)
(uffi:def-function "endusershell"
nil
:returning :void)
(uffi:def-function "getusershell"
nil
:returning :cstring)
(defun getshells ()
"Returns list of valid shells"
(setusershell)
(let (shells)
(do ((shell (uffi:convert-from-cstring (getusershell))
(uffi:convert-from-cstring (getusershell))))
((null shell))
(push shell shells))
(endusershell)
(nreverse shells)))
#+examples-uffi
(format t "~&Shells: ~S" (getshells))
|