From clynbech at common-lisp.net Wed Nov 24 20:24:06 2004 From: clynbech at common-lisp.net (Christian Lynbech) Date: Wed, 24 Nov 2004 21:24:06 +0100 Subject: [cparse-cvs] CVS update: cparse/uffi-alien.lisp cparse/ctype.lisp cparse/cparse.system cparse/cparse.lisp cparse/ChangeLog cparse/system.lisp Message-ID: Update of /project/cparse/cvsroot/cparse In directory common-lisp.net:/tmp/cvs-serv8040 Modified Files: ctype.lisp cparse.system cparse.lisp ChangeLog Added Files: uffi-alien.lisp Removed Files: system.lisp Log Message: * uffi-alien.lisp: New file. * system.lisp: Removed. * ctype.lisp (print-object): moved PCL guard into lambda. (print-object): Added allegro guard. (defnumtype): Added escapes to documentation string. (defnumtype): Case-robustified 'const-name' initial value. (byte): New defnumtype. (unsigned-byte): New defnumtype. (short): Moved upwards (unsigned-short): Moved upwards. (unsignedp, min-val, c!-internal): Added ignore declaration. (type-width): Added fallback method. (def-c-op): Case-robustified 'internal-op' initial value. * cparse.system: (*cparse-backend*): New variable. (toplevel): Added require of :uffi when this is backend. (toplevel): Guarded hash string test with CMU. (toplevel): Added ASDF to-be-done guard. (toplevel): Reorganised MK based defsystem. (toplevel): Added Allegro defsystem. * cparse.lisp (*cparse-debug*): Added documentation. (cparse-object): Wrapped in 'eval-when', (print-object): Moved PCL guard into lambda and added allegro guard. (defc): Intern initargs in keyword package. (defc): Wrapped generated class in 'eval-when'. (+c-keywords+): Added "__extension__". (tok): Outcommented :number case in return value. (frob-prim-type): Case-robustified 'cparse-type' value. (frob-prim-type): Added 'long-long' and 'unsigned-long-long'. (array-type): Added 'int-const'. (cparse-stream): Added escapes in documentation. (cparse-stmt): Added consumption of '__extension__' keywords. (parse-decl-type): Added debug-ouput. (parse-declarator): Outcommented second version of this function. (parse-sizeof): Added :value keyword. (*a-pointer*): New parameter. Date: Wed Nov 24 21:23:58 2004 Author: clynbech Index: cparse/ctype.lisp diff -u cparse/ctype.lisp:1.1.1.1 cparse/ctype.lisp:1.2 --- cparse/ctype.lisp:1.1.1.1 Tue Mar 19 19:02:57 2002 +++ cparse/ctype.lisp Wed Nov 24 21:23:58 2004 @@ -34,14 +34,17 @@ (defclass c-super () ()) -#+PCL + (defmethod print-object ((obj c-super) stream) (let ((slots (mapcan #'(lambda (slot-def) - (let ((name (pcl:slot-definition-name slot-def))) + (let ((name + #+PCL (pcl:slot-definition-name slot-def) + #+allegro (mop:slot-definition-name slot-def))) (if (slot-boundp obj name) (list name (slot-value obj name)) nil))) - (pcl:class-slots (class-of obj))))) + #+PCL (pcl:class-slots (class-of obj)) + #+allegro (mop:class-slots (class-of obj))))) (print-unreadable-object (obj stream :type t) (format stream "~<~@{~W ~@_~W~^ ~_~}~:>" slots)))) @@ -53,9 +56,10 @@ (defmacro defnumtype (cname super &body body) "Define class CNAME with superclasses SUPER and CNAME-CONST with superclasses -(, at SUPER c-const)" +\(, at SUPER c-const\)" (let ((const-name (intern (concatenate 'string - (symbol-name cname) "-CONST")))) + (symbol-name cname) + (symbol-name '-const))))) `(progn (defclass ,cname ,super , at body) (defclass ,const-name (,cname c-const) , at body)))) @@ -66,6 +70,18 @@ (defclass cinteger-super () ()) +(defnumtype byte (cinteger-super) + ()) + +(defnumtype unsigned-byte (unsigned byte) + ()) + +(defnumtype short (cinteger-super) + ()) + +(defnumtype unsigned-short (unsigned short) + ()) + (defnumtype int (cinteger-super) ()) @@ -84,12 +100,6 @@ (defnumtype unsigned-long-long (unsigned long-long) ()) -(defnumtype short (cinteger-super) - ()) - -(defnumtype unsigned-short (unsigned short) - ()) - (defclass cfloat-super () ()) @@ -114,9 +124,11 @@ (defgeneric unsignedp (comp-imp type)) (defmethod unsignedp (comp-imp (type t)) + (declare (ignore comp-imp)) nil) (defmethod unsignedp (comp-imp (type unsigned)) + (declare (ignore comp-imp)) t) (defgeneric max-val (comp-imp type)) @@ -131,6 +143,7 @@ (1- (expt 2 (type-width comp-imp type)))) (defmethod min-val (comp-imp (type unsigned)) + (declare (ignore comp-imp)) 0) ;;; Class representing C compiler implementation characteristics. @@ -141,6 +154,11 @@ (defgeneric type-width (comp-imp type)) +;;; fallback - this is bad but shouldn't halt generation +(defmethod type-width (comp-imp type) + (warn "Type ~A is too complex for `type-width' - substituting 0!" type) + 0) + (defmethod type-width ((comp-imp compiler-impl) (type char)) 8) @@ -325,8 +343,9 @@ (type-width cimpl op1))))) (defmacro def-c-op (c-func float-func int-func) - (let ((internal-op (intern (concatenate 'simple-string (string c-func) - "-INTERNAL") + (let ((internal-op (intern (concatenate 'simple-string + (string c-func) + (symbol-name '-internal)) :cparse))) `(progn (defun ,c-func (cimpl op1 op2) @@ -416,6 +435,7 @@ (defgeneric c!-internal (cimpl op)) (defmethod c!-internal (cimpl (op c-const)) + (declare (ignore cimpl)) (make-instance 'int-const :value (if (= (value op) 0) 1 Index: cparse/cparse.system diff -u cparse/cparse.system:1.1.1.1 cparse/cparse.system:1.2 --- cparse/cparse.system:1.1.1.1 Fri Aug 17 20:13:30 2001 +++ cparse/cparse.system Wed Nov 24 21:23:58 2004 @@ -1,8 +1,8 @@ -;;; -*- Lisp -*- -;;; -;;; Copyright (c) 2001 Timothy Moore +;;; Copyright (c) 2001 Timothy Moore -*- lisp -*- ;;; All rights reserved. ;;; +;;; Modified 2004 by Christian Lynbech +;;; ;;; Redistribution and use in source and binary forms, with or without ;;; modification, are permitted provided that the following conditions ;;; are met: @@ -29,18 +29,14 @@ ;;; ;;; CPARSE - library for parsing C header files. -(mk:defsystem cparse - :source-extension "lisp" - :components - ((:file "cparse-package") - (:file "ctype" :depends-on ("cparse-package")) - (:file "cparse" :depends-on ("cparse-package")) - #+CMU (:file "cmu-alien-package") - #+CMU (:file "cmu-alien" :depends-on ("cparse-package" - "cmu-alien-package" - "cparse")))) +;; Choose one of the supported backends +(defvar *cparse-backend* (nth 0 '("uffi-alien" "cmu-alien" "acl-alien"))) -;;; CMUCL 18c and earlier didn't hash strings with fill pointers correctly. +(when (string= *cparse-backend* "uffi-alien") + '(require :uffi)) + +#+CMU +;;; CMUCL 18c and earlier doesn't hash strings with fill pointers correctly. (let ((string-with-fill (make-array 32 :element-type 'base-char :adjustable t @@ -48,3 +44,26 @@ (setf (subseq string-with-fill 0) "typedef") (unless (= (sxhash string-with-fill) (sxhash "typedef")) (pushnew :hash-fill-bug *features*))) + + +;;; We will define a system for all available defsystem systems, even +;;; if that means duplicated info but this allows the user to work +;;; with whatever kind of system his is most comfortable with. + +#+ASDF +'(to-be-done asdf:defsystem cparse) + +#+MK-DEFSYSTEM +(mk:defsystem cparse + :source-extension "lisp" + :components + ((:file "package") + (:file "ctype" :depends-on ("package")) + (:file "cparse" :depends-on ("package")) + (:file #.*cparse-backend* :depends-on ("package" "cparse")))) + +#+ALLEGRO +(defsystem :cparse (:default-file-type "lisp") + (:serial "package" + (:parallel "ctype" "cparse") + #.*cparse-backend*)) Index: cparse/cparse.lisp diff -u cparse/cparse.lisp:1.1.1.1 cparse/cparse.lisp:1.2 --- cparse/cparse.lisp:1.1.1.1 Tue Mar 19 19:06:38 2002 +++ cparse/cparse.lisp Wed Nov 24 21:23:58 2004 @@ -35,7 +35,9 @@ (defvar *compiler-implementation* nil) -(defvar *cparse-debug* nil) +(defvar *cparse-debug* nil + "Turn on debugging output. +If not nil and not t turn on even more debugging output.") (defclass lookahead-stream () ((stream :accessor stream :initarg :stream) @@ -233,20 +235,23 @@ ;;; A superclass for all our types. We can hang our own print-object method ;;; off it and stuff. -(defclass cparse-object () - ()) +(eval-when (load compile eval) + (defclass cparse-object () + ())) ;;; Obviously there are ways to do this in other CLOSes and MOPs, but I ;;; don't know what they are. -#+PCL (defmethod print-object ((obj cparse-object) stream) (let ((slots (mapcan #'(lambda (slot-def) - (let ((name (pcl:slot-definition-name slot-def))) + (let ((name + #+PCL (pcl:slot-definition-name slot-def) + #+allegro (mop:slot-definition-name slot-def))) (if (slot-boundp obj name) (list name (slot-value obj name)) nil))) - (pcl:class-slots (class-of obj))))) + #+PCL (pcl:class-slots (class-of obj)) + #+allegro (mop:class-slots (class-of obj))))) (print-unreadable-object (obj stream :type t) (format stream "~<~@{~W ~@_~W~^ ~_~}~:>" slots)))) @@ -263,12 +268,13 @@ (error "Invalid slot ~S" slot))) `(,name :accessor ,name :initarg ,(intern (string name) - "KEYWORD") + :keyword) , at args))) slots))) - `(defclass ,class-name ,supers - ,new-slots - , at class-options))) + `(eval-when (load compile eval) + (defclass ,class-name ,supers + ,new-slots + , at class-options)))) ;;; Classes for constant numbers @@ -474,7 +480,7 @@ (let ((keywords '("float" "double" "typedef" "extern" "void" "char" "int" "long" "const" "volatile" "signed" "unsigned" "short" "struct" "union" "enum" - "__attribute__" "__mode__" ; gcc extension + "__attribute__" "__mode__" "__extension__" ; gcc extension "sizeof"))) (loop for keyword in keywords do (setf (gethash keyword +c-keywords+) (intern keyword)))) @@ -517,9 +523,10 @@ finally (return (progn (unreadc c lstream) (case state + #+nil ;unreachable anyway according to CMUCL ((:number) (cparse-error - "How did we get in :number state?")) + "How did we get in :number state?")) ((:id) (intern-token tok)) (t (cparse-error @@ -544,8 +551,9 @@ new) (macrolet ((frob-prim-type (type) - (let ((cparse-type (intern (concatenate 'string "CPARSE-" - (symbol-name type))))) + (let ((cparse-type (intern (concatenate 'string + (symbol-name 'cparse-) + (symbol-name type))))) `(defc ,cparse-type (,type c-type) ())))) (frob-prim-type void) @@ -558,6 +566,8 @@ (frob-prim-type unsigned-int) (frob-prim-type long) (frob-prim-type unsigned-long) + (frob-prim-type long-long) + (frob-prim-type unsigned-long-long) (frob-prim-type cfloat) (frob-prim-type double)) @@ -569,7 +579,7 @@ (defc array-type (c-type) ((of :type c-type) - (len :type (or fixnum null)))) + (len :type (or int-const fixnum null)))) (defmethod %copy-type :after ((type array-type) new) (setf (of new) (of type) @@ -678,7 +688,8 @@ Default is an object of type 'impl-32bit. :scope - A scope object, possibly the result of an earlier run of cparse-stream. -:stmt-fun - that is called for every statement with (parse-tree scope lstream)." +:stmt-fun - that is called for every statement with +\(parse-tree scope lstream\)." (let* ((lstream (make-instance 'lookahead-stream :stream stream :file-name file-name)) @@ -700,6 +711,8 @@ (file-name lstream) (line-number lstream)))))) (defun cparse-stmt (lstream) + (when (member (look lstream) '(|__extension__|)) + (consume lstream)) (when (eq (look lstream) '|typedef|) (consume lstream) (return-from cparse-stmt @@ -815,24 +828,27 @@ type))) (loop for token = (look lstream) then (consume lstream) - do (cond ((member token +decl-keywords+ :test #'eq) - (push token keywords)) - ;; use value of setq - ((setq maybe-typedef (lookup 'objects token)) - (setq typedef-type (defined-type maybe-typedef))) - ((member token prim-qualifiers :test #'eq) - (pushnew token qualifiers)) - ((or (eq token '|struct|) (eq token '|union|)) - (return-from parse-decl-type - (do-qualifiers (parse-struct-union lstream)))) - ((eq token '|enum|) - (return-from parse-decl-type - (do-qualifiers (parse-enum lstream)))) - (t (loop-finish)))) + do (when (and *cparse-debug* (not (eq *cparse-debug* t))) + (format *error-output* "Next token: ~S~%" token)) + (cond + ((member token +decl-keywords+ :test #'eq) + (push token keywords)) + ;; use value of setq + ((setq maybe-typedef (lookup 'objects token)) + (setq typedef-type (defined-type maybe-typedef))) + ((member token prim-qualifiers :test #'eq) + (pushnew token qualifiers)) + ((or (eq token '|struct|) (eq token '|union|)) + (return-from parse-decl-type + (do-qualifiers (parse-struct-union lstream)))) + ((eq token '|enum|) + (return-from parse-decl-type + (do-qualifiers (parse-enum lstream)))) + (t (loop-finish)))) (if typedef-type (do-qualifiers typedef-type) (make-prim-type qualifiers keywords))))) - +#+nil ;why are there two versions of this function --tedchly/20040401 (defun parse-declarator (lstream decl-type) (let (new-type id @@ -1311,7 +1327,7 @@ (push-back initial lstream) (parse-unary-expression lstream)))) (t (parse-unary-expression lstream))))) - (make-instance 'int-const (sizeof sized-type)))) + (make-instance 'int-const :value (sizeof sized-type)))) (defgeneric sizeof (type)) @@ -1330,8 +1346,12 @@ (defmethod alignof ((type compound-type)) (alignment type)) +(defparameter *a-pointer* (make-instance 'pointer-type)) + (defmethod sizeof ((type array-type)) - (* (sizeof (of type)) (value (len type)))) + (if (len type) + (* (sizeof (of type)) (value (len type))) + (sizeof *a-pointer*))) (defmethod alignof ((type array-type)) (alignof (of type))) Index: cparse/ChangeLog diff -u cparse/ChangeLog:1.3 cparse/ChangeLog:1.4 --- cparse/ChangeLog:1.3 Sat May 15 00:06:24 2004 +++ cparse/ChangeLog Wed Nov 24 21:23:58 2004 @@ -1,5 +1,50 @@ +2004-11-24 Christian Lynbech + + * uffi-alien.lisp: New file. + + * system.lisp: Removed. + + * ctype.lisp (print-object): moved PCL guard into lambda. + (print-object): Added allegro guard. + (defnumtype): Added escapes to documentation string. + (defnumtype): Case-robustified 'const-name' initial value. + (byte): New defnumtype. + (unsigned-byte): New defnumtype. + (short): Moved upwards + (unsigned-short): Moved upwards. + (unsignedp, min-val, c!-internal): Added ignore declaration. + (type-width): Added fallback method. + (def-c-op): Case-robustified 'internal-op' initial value. + + * cparse.system: (*cparse-backend*): New variable. + (toplevel): Added require of :uffi when this is backend. + (toplevel): Guarded hash string test with CMU. + (toplevel): Added ASDF to-be-done guard. + (toplevel): Reorganised MK based defsystem. + (toplevel): Added Allegro defsystem. + + * cparse.lisp (*cparse-debug*): Added documentation. + (cparse-object): Wrapped in 'eval-when', + (print-object): Moved PCL guard into lambda and added allegro guard. + (defc): Intern initargs in keyword package. + (defc): Wrapped generated class in 'eval-when'. + (+c-keywords+): Added "__extension__". + (tok): Outcommented :number case in return value. + (frob-prim-type): Case-robustified 'cparse-type' value. + (frob-prim-type): Added 'long-long' and 'unsigned-long-long'. + (array-type): Added 'int-const'. + (cparse-stream): Added escapes in documentation. + (cparse-stmt): Added consumption of '__extension__' keywords. + (parse-decl-type): Added debug-ouput. + (parse-declarator): Outcommented second version of this function. + (parse-sizeof): Added :value keyword. + (*a-pointer*): New parameter. + 2004-05-15 Christian Lynbech + * cparse-package.lisp: File removed. + * system.lisp: New File. + * package.lisp: New file. * acl-alien.lisp: New file. 2004-05-14 Christian Lynbech From clynbech at common-lisp.net Wed Nov 24 20:29:37 2004 From: clynbech at common-lisp.net (Christian Lynbech) Date: Wed, 24 Nov 2004 21:29:37 +0100 Subject: [cparse-cvs] CVS update: cparse/test3.h cparse/test2.h cparse/test1.h cparse/dir-test.c cparse/dir-test-ffi.lisp cparse/01debug.lisp cparse/00debug.lisp cparse/ChangeLog Message-ID: Update of /project/cparse/cvsroot/cparse In directory common-lisp.net:/tmp/cvs-serv8222 Modified Files: ChangeLog Added Files: test3.h test2.h test1.h dir-test.c dir-test-ffi.lisp 01debug.lisp 00debug.lisp Log Message: * test1.h: New file. * test2.h: New file. * test3.h: New file. * 00debug.lisp: New file. * 01debug.lisp: New file. * dir-test-ffi.lisp: New file. * dir-test.c: New file. * uffi-alien.lisp: New file. * system.lisp: Removed. Date: Wed Nov 24 21:29:32 2004 Author: clynbech Index: cparse/ChangeLog diff -u cparse/ChangeLog:1.4 cparse/ChangeLog:1.5 --- cparse/ChangeLog:1.4 Wed Nov 24 21:23:58 2004 +++ cparse/ChangeLog Wed Nov 24 21:29:32 2004 @@ -1,7 +1,13 @@ 2004-11-24 Christian Lynbech + * test1.h: New file. + * test2.h: New file. + * test3.h: New file. + * 00debug.lisp: New file. + * 01debug.lisp: New file. + * dir-test-ffi.lisp: New file. + * dir-test.c: New file. * uffi-alien.lisp: New file. - * system.lisp: Removed. * ctype.lisp (print-object): moved PCL guard into lambda. From clynbech at common-lisp.net Mon Nov 29 20:22:58 2004 From: clynbech at common-lisp.net (Christian Lynbech) Date: Mon, 29 Nov 2004 21:22:58 +0100 (CET) Subject: [cparse-cvs] CVS update: cparse/dir-test.c Message-ID: <20041129202258.536AE884CE@common-lisp.net> Update of /project/cparse/cvsroot/cparse In directory common-lisp.net:/tmp/cvs-serv10631 Modified Files: dir-test.c Log Message: modified to print all entries Date: Mon Nov 29 21:22:57 2004 Author: clynbech Index: cparse/dir-test.c diff -u cparse/dir-test.c:1.1 cparse/dir-test.c:1.2 --- cparse/dir-test.c:1.1 Wed Nov 24 21:29:32 2004 +++ cparse/dir-test.c Mon Nov 29 21:22:56 2004 @@ -4,14 +4,16 @@ main() { DIR *handle; struct dirent *entry; - int x; + int x = 0; - printf("\n\n============\n"); - handle = opendir("/home/tedchly"); - for (x=0; x<=5; x++) { + printf("DIRTEST/c\n"); + handle = opendir("/tmp"); + entry = (struct dirent *)1; + while (handle && entry) { entry = readdir(handle); if (entry) - printf("Entry: %s\n", entry->d_name); + printf("%d: %s\n", x++, entry->d_name); } + closedir(handle); } From clynbech at common-lisp.net Mon Nov 29 20:24:08 2004 From: clynbech at common-lisp.net (Christian Lynbech) Date: Mon, 29 Nov 2004 21:24:08 +0100 (CET) Subject: [cparse-cvs] CVS update: cparse/02debug.lisp cparse/01debug.lisp Message-ID: <20041129202408.ACF7D884CE@common-lisp.net> Update of /project/cparse/cvsroot/cparse In directory common-lisp.net:/tmp/cvs-serv10660 Modified Files: 01debug.lisp Added Files: 02debug.lisp Log Message: Renamed old 01debug.lisp to 02debug.lisp added new 01debug.lisp with a handwritten dirtest version Date: Mon Nov 29 21:24:07 2004 Author: clynbech Index: cparse/01debug.lisp diff -u cparse/01debug.lisp:1.1 cparse/01debug.lisp:1.2 --- cparse/01debug.lisp:1.1 Wed Nov 24 21:29:32 2004 +++ cparse/01debug.lisp Mon Nov 29 21:24:06 2004 @@ -1,17 +1,73 @@ + +#| +(clc:require :uffi) (load "00debug.lisp") +|# + +(defmacro my-convert-to-foreign-string (obj) + (let ((size (gensym)) + (storage (gensym)) + (i (gensym)) + (char-type '(alien:signed 8))) + `(etypecase ,obj + (null + (alien:sap-alien (system:int-sap 0) (* ,char-type))) + (string + (let* ((,size (length ,obj)) + (,storage (alien:make-alien ,char-type (1+ ,size)))) + (setq ,storage (alien:cast ,storage (* ,char-type))) + (locally + (declare (optimize (speed 3) (safety 0))) + (dotimes (,i ,size) + (declare (fixnum ,i)) + (setf (alien:deref ,storage ,i) (char-code (char ,obj ,i)))) + (setf (alien:deref ,storage ,size) 0)) + ,storage))))) + +(defmacro my-convert-from-foreign-string (obj &key + length + (locale :default) + (null-terminated-p t)) + `(if (uffi:null-pointer-p ,obj) + nil + (uffi::cmucl-naturalize-cstring (alien:alien-sap ,obj) + :length ,length + :null-terminated-p ,null-terminated-p))) + + +(uffi:def-foreign-type nil + (:struct dirent + (d-ino :unsigned-long) + (d-off :long) + (d-reclen :unsigned-short) + (d-type :unsigned-char) + (d-name (:array :char 256)))) + +(uffi:def-function "opendir" + ((--name (* :char))) + :returning (* (:struct --dirstream))) + +(uffi:def-function "closedir" + ((--dirp (* (:struct --dirstream)))) + :returning :int) + +(uffi:def-function "readdir" + ((--dirp (* (:struct --dirstream)))) + :returning (* (:struct dirent))) + +(defun main () + (format t "DIRTEST/ffi~%") + (let* ((tmp (my-convert-to-foreign-string "/tmp")) + (handle (opendir tmp))) + (unwind-protect + (do ((entry (readdir handle) (readdir handle)) + (x 0 (incf x))) + ((or (uffi:null-pointer-p handle) (uffi:null-pointer-p entry))) + (format t "~S: ~S~%" x + (my-convert-from-foreign-string + (uffi:get-slot-value entry dirent 'd-name)))) + (unless (uffi:null-pointer-p handle) + (closedir handle)) + (uffi:free-foreign-object tmp)))) -(defun dir-test-0 () - (format t "~%~%============~%") - (uffi-alien:make-alien-defs '("/usr/include/sys/types.h" - "/usr/include/dirent.h") - :file "dir-test-ffi.lisp" - :compile t :load t)) - -(defun dir-test-1 () - (let* ((name (uffi:convert-to-foreign-string "/home/tedchly")) - (handle (opendir name))) - (uffi:with-foreign-object (entry '(* (:struct dirent))) - (setq entry (readdir handle))) - (format t "Entry: ~S~%" entry) - - )) \ No newline at end of file +;(main) From clynbech at common-lisp.net Mon Nov 29 20:26:06 2004 From: clynbech at common-lisp.net (Christian Lynbech) Date: Mon, 29 Nov 2004 21:26:06 +0100 (CET) Subject: [cparse-cvs] CVS update: cparse/ChangeLog Message-ID: <20041129202606.C285A884CE@common-lisp.net> Update of /project/cparse/cvsroot/cparse In directory common-lisp.net:/tmp/cvs-serv10682 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Mon Nov 29 21:26:05 2004 Author: clynbech Index: cparse/ChangeLog diff -u cparse/ChangeLog:1.5 cparse/ChangeLog:1.6 --- cparse/ChangeLog:1.5 Wed Nov 24 21:29:32 2004 +++ cparse/ChangeLog Mon Nov 29 21:26:05 2004 @@ -1,3 +1,10 @@ +2004-11-29 Christian Lynbech + + * 02debug.lisp: New file. + * 01debug.lisp: New file. + + * dir-test.c: Modified to print all entries in /tmp. + 2004-11-24 Christian Lynbech * test1.h: New file.