Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to HEAD:||(view) (annotate)|
Clean-up stat-related FFI. * code/clisp-ffi.lisp (stat): In 32 bit version, rename fields for consistency with glibc. The paddings should be written as 32, not 16 (though thanks to alignment, it doesn't matter). In the IA-64 version of stat, blksize should be 64, and the inode field near the front is the one and only inode field; there isn't one at the tail. In the Cygwin and IA-64 structs, the tail padding array is now expressed with c-array rather than c-array-max.
First cut at IA-64 support. * Makefile (ARCH): New variable, captures output of arch program. Arch, prefixed with "ARCH-" is pushed onto *FEATURES* list. * code/clisp-ffi.lisp (stat): New variant of structure introduced. (stat-ver): Constant removed. (__stat-ver-linux): New constant added, with architecture-dependent value. (stat, fstat, lstat): Use new constant.
* code/clisp-ffi.lisp (readlink): No need to coerce result of readlink-ll to string type. (getcwd): Add comment.
Ported to Cygwin. * code/clisp-ffi.lisp (eval-when): Rename :linux-libc6 feature to just linux. Only push it onto *features* if :cygwin isn't there. Our platform support is restricted to Linux and Cygwin for the time being. (def-libc-call-out): Change macro to handle both Cygwin and Linux. The only difference is the library. (errno-location): Cygwin variant uses __errno function rather than __errno_location. Otherwise it works the same as Linux. (edeadlk, enametoolong, enolck, enosys, enotempty, eloop, ewouldblock): Remove these error constants, since we don't use them anyway and those that exist on Cygwin have different values. (struct dirent): Define Cygwin variant of structure. (readdir): Cygwin variation added. (struct stat): Define Cygwin variant of structure. Small change in Linux variant. (stat, lstat, fstat): Cygwin versions defined. These go to _*64 functions. (sighup, sigint, sigquit, sigill, sigtrap, sigabrt, sigemt, sigfpe, sigkill, sigbus, sigsegv, sigsys, sigpipe, sigalrm, sigterm, sigurg, sigstop, sigtstp, sigcont, sigchld, sigcld, sigttin, sigttou, sigio, sigpoll, sigxcpu, sigxfsz, sigvtalrm, sigprof, sigwinch, siglost, sigusr1, sigusr2): Define for Cygwin. (getcwd-ll): Not specific to Linux, read-time conditional removed.
Bugfix and enhancmenet in new CLISP FFI module. * code/clisp-ffi.lisp (pipe): New call-out function added. (spawn): Fix reversed result comparison. (defpackage): Export some new symbols.
Get rid of the ffi-pointer-null stuff, since c-pointer foreign types are automatically converted to null now. * code/clisp-ffi.lisp (null-pointer-p): Function removed. * code/clisp-unix.lisp (pointer-null, null-to-nil, when-not-null): macros removed. (opendir, closedir): Revert to normal Lisp null checks.
Rewrote the CLISP bindings. The CLISP FFI is used to directly access the glibc shared library on Linux. This completely eliminates the need to create a custom linking set. Meta-CVS can now be built without any C development tools. The downside is that the the FFI definitions are not portable, since they depend on the glibc ABI. Support for other C libraries has to be hacked in the clisp-ffi.lisp module now. The main() hack is gone now too. * code/unix-bindings/link.sh: Removed. * code/unix-bindings/Makefile: Likewise. * code/unix-bindings/wrap.c: Likewise. * code/unix-bindings/unix.lisp: Renamed to code/unix-bindings/clisp-ffi.lisp. Contains revamped FFI definitions targetting Linux glibc. * code/install.sh: Substantially simplified. No longer builds a CLISP linking set. No longer builds the mcvs-upgrade tool, which is not useful any longer. Error tests eliminated with use of ``set -e''. * code/mcvs.lisp: Updated to load everything properly.
Get rid of CLISP 2.27 support. * code/unix-bindings/unix.lisp (null-pointer-p): Function removed. * code/clisp-unix.lisp: The :clisp-old symbol no longer conditionally pushed onto *features* (pointer-null): Just version of the macro present; no more read-time switch.
Merging from mcvs-1-0-branch. * code/unix-bindings/unix.lisp: Get rid of bogus version check which assumes that the version can be read as a floating point number! Rather than rely on the version, check for the specific features.
Merging from mcvs-1-0-branch.
Merging from mcvs-1-0-branch. Improved error handling. Use of tty for user interaction, plus new global option for selecting non-interactive bail behavior. * code/mcvs-main.lisp (*global-options*): add --error-bail option. (*usage*): Describe new option. (mcvs-execute): Dynamically bind *interactive-error-io* variable to a stream formed by opening the controlling tty. Send error message to *error-output* rather than *standard-output*. * code/unix-bindings/unix.lisp (unix-funcs:ctermid): New function, FFI interface to mcvs_ctermid. * code/unix-bindings/wrap.c (mcvs_ctermid): New function. * code/chatter.lisp (chatter): Chatter now goes to *error-output* rather than *standard-output*. * code/error.lisp (*interactive-error-io*): New special variable, holds stream open to controlling tty. (mcvs-terminate): New function. (mcvs-error-handler): Use *interactive-error-io* to print menu and obtain user input. Support the :bail value of *mcvs-error-treatment* Plus some cosmetic changes. * code/options.lisp (filter-mcvs-options): Support --error-bail option. * code/filt.lisp (mcvs-filt-loop): Bugfix, (read-line t ...) should be (read-line *standard-input* ...) because t stands for *terminal-io* rather than *standard-io*, unlike in the format function! * code/rcs-utils.lisp (rcs-read-token): Read from *standard-input* rather than *terminal-io*.
Merging from mcvs-1-0-branch. Fix remaining occurences of SIG_IGN action for SIGCHLD being passed to child processes. * code/unix-bindings/unix.lisp (unix-funcs:default-sigchld): New call out function. * code/clisp-unix.lisp (with-input-from-program, with-output-to-program): Call the new default-sigchild function to set SIGCHILD signal handler to SIG_DFL just before creating the pipe. * code/unix-bindings/wrap.c (mcvs_default_sigchld): New function.
Merging from mcvs-1-0-branch. * code/unix-bindings/impl.c: File renamed to wrap.c. (impl_null_pointer_p, impl_get_errno, impl_set_errno, impl_readdir, impl_readlink, impl_stat, impl_lstat, impl_fstat, impl_getcwd, impl_spawn): Prefix changed from ``impl_'' to ``mcvs_''. * code/unix-bindings/link.sh, code/unix-bindings/Makefile, code/unix-bindings/unix.lisp: Updated accordingly.
Merging from mcvs-1-0-branch. Discontinuing use of CLISP's ext:run-program function in favor of a new workalike which doesn't rely on the shell interpreter. * code/unix-bindings/unix.lisp (unix-funcs:spawn): New C call out function (unix-funcs:run-program): New function, implemented using spawn. * code/unix-bindings/impl.c (impl_spawn): New function; wraps up fork, execvp and waitpid. * code/clisp-unix.lisp: Switch from ext:run-program to unix-funcs:run-program.
Merging from mcvs-1-0-branch. * code/unix-bindings/unix.lisp: Rewrote defpackage to take only selected symbols from CLISP's FFI package rather using the whole thing. FFI, and the packages it uses, are moving targets. The symbol def-c-call-out is interned in unix-funcs. (unix-funcs:def-c-call-out): New internal macro. CLISP says that ffi:def-c-call-out is obsolescent. * code/unix-bindings/Makefile: The ``clean'' target removes unix.lib, not only unix.fas.
Low level support for versioning executable bit. * code/unix-bindings/unix.lisp (unix-funcs:chmod): New callout function. * code/clisp-unix.lisp (executable-p, make-executable, make-non-executable): New generic functions. (executable-p (file-info), make-executable (file-info), make-executable (string), make-non-executable (file-info), make-non-executable (string)): New methods. * code/add.lisp (mcvs-add): Record whether new file is executable or not, by setting executable slot in mapping-entry. * code/create.lisp (mcvs-create): Likewise. * code/sync.lisp (synchronize-files): New parameter, should-be-executable, tells function which way to set permissions after synchronizing files. * code/mapping.lisp (mapping-entry): New slot, executable. (mapping-entry-parse-attributes): New function, parses new optional property list from :FILE entries in a mapping. (mapping-convert-in): Parse property list that may be present in fourth list element of a :FILE entry. (mapping-convert-out): Write out executable flag as :EXEC property, if true. (mapping-synchronize): Pass executable flag down to synchronize-files.
Merging symlink-branch to main trunk.
Use getcwd to to implement mcvs-locate. * code/unix-bindings/unix.lisp (getcwd): New call out, invokes impl_getcwd. * code/unix-bindings/impl.c (impl_getcwd): New function, use getcwd() to obtain current working directory, resizing dynamic buffer if necessary to get the entire path. * code/clisp-unix.lisp (getcwd): New wrapper function. * code/dirwalk.lisp (go-up): Function removed. * code/mapping.lisp (mcvs-locate): Rewritten to obtain path using getcwd, then try looking for MCVS directory in successively shorter prefixes of that path.
Working back support for CLISP 2.27. * code/install.sh: Bogus *null-pointer* hack is no longer added to the generated mcvs script, since we have our own FFI functions for doing the test. * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New function, tests a C pointer for null, returns T or NIL. * code/unix-bindings/impl.c (impl_null_pointer_p): New function, C implementation of unix-funcs:null-pointer-p. * code/clisp-unix.lisp (pointer-null): New macro, uses ffi:foreign-address-null under CLISP 2.28 or greater, or unix-funcs:null-pointer-p, under an older CLISP.
Retargetting CVS with new system call bindings that are not GNU/Linux specific.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|