Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to mcvs-1-0-7:||(view) (annotate)|
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*.
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.
* 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.
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.
* 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|