Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to asdf-import-branch:||(view) (annotate)|
Implement process pipes. This feature is quite different from CLISP's make-pipe-*-stream because it doesn't exec a different process image in the child. Rather, the child process evaluates an arbitrary Lisp expression. Special trickery is used to ensure that both the *standard-output* and file descriptor 1 are redirected (or, *standard-input* and file descriptor 0 in the case of an input pipe), so that the process /can/ spawn child programs, as well as use the standrad Lisp file streams, all being correctly redirected. * code/clisp-unix.lisp (process-pipe): New struct. (create-process-pipe, close-process-pipe): New functions. (*default-execute-filter*): New special variable. This can be set in order to automatically add an input or output pipe to a process spawned by the execute-program function. (execute-program): Observe the value of *default-execute-filter* and set up a pipe as required. This means that an additional process is spawned, which handles output from the command being run, or possibly supplied input to it. (with-filtered-execute-program): Macro which sets up the *default-execute-filter* dynamic variable, using syntax which is similar to that of create-process-pipe. The macro asserts that in this dynamic scope, calls to execute-program will set up such and such a filter. A boolean variable additionally controls whether the construct has any effect at all, allowing it to be turned on and off.
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.
Stylistic change. * code/add.lisp: Change in-package calls not to use the all-caps "META-CVS" string string, but rather the :meta-cvs keyword. * code/branch.lisp: Likewise. * code/chatter.lisp: Likewise. * code/checkout.lisp: Likewise. * code/clisp-unix.lisp: Likewise. * code/cmucl-unix.lisp: Likewise. * code/convert.lisp: Likewise. * code/create.lisp: Likewise. * code/dirwalk.lisp: Likewise. * code/error.lisp: Likewise. * code/execute.lisp: Likewise. * code/filt.lisp: Likewise. * code/find-bind.lisp: Likewise. * code/generic.lisp: Likewise. * code/grab.lisp: Likewise. * code/link.lisp: Likewise. * code/main.lisp: Likewise. * code/mapping.lisp: Likewise. * code/memoize.lisp: Likewise. * code/move.lisp: Likewise. * code/multi-hash.lisp: Likewise. * code/options.lisp: Likewise. * code/paths.lisp: Likewise. * code/print.lisp: Likewise. * code/prop.lisp: Likewise. * code/purge.lisp: Likewise. * code/rcs-utils.lisp: Likewise. * code/remap.lisp: Likewise. * code/remove.lisp: Likewise. * code/restart.lisp: Likewise. * code/restore.lisp: Likewise. * code/seqfuncs.lisp: Likewise. * code/slot-refs.lisp: Likewise. * code/split.lisp: Likewise. * code/sync.lisp: Likewise. * code/types.lisp: Likewise. * code/unix.lisp: Likewise. * code/update.lisp: Likewise. * code/watch.lisp: Likewise.
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.
Revamped loading system. Got rid of require/provide in all Lisp source files. * code/mcvs.lisp: New file. Responsible for compiling and loading everything in the right order. * code/mcvs-main.lisp: File renamed to main.lisp. * code/mcvs-package.lisp: File renamed to package.lisp. * code/system.lisp: File removed.
Merging from mcvs-1-0-branch.
Merging from mcvs-1-0-branch.
Merging from mcvs-1-0-branch. New command, remote-filt. * code/mcvs-main.lisp (*remote-filt-options*): New option constant. (*mcvs-command-table*): Entries for new command added. (*usage*): Help text added. * code/filt.lisp (filt-select-map): New keyword parameter for specifing repository module. CVS up -p or co -p command generated accordingly. Also, little glitch fixed: the local case descends into the MCVS directory, to avoid a warning message that occurs when CVS is used in server mode. (mcvs-filt-loop): New function, contains most of the old mcvs-filt function body. (mcvs-filt): Calls new mcvs-filt-loop to do actual filtering work. (mcvs-remote-filt, mcvs-remote-filt-wrapper): New functions. * code/clisp-unix.lisp (with-input-from-program): Macro changed to include debug tracing of the invoked command.
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/paths.lisp: Move some (declaim inline) to the correct location, before the function to be inlined. * code/clisp-unix.lisp: Likewise. * code/cmucl-unix.lisp: Likewise. * code/mapping.lisp: Likewise.
Merging from mcvs-1-0-branch. * code/unix-bindings/wrap.c (mcvs_getcwd): If getcwd() returns NULL, it only means that the buffer is too small if errno is also set to ERANGE. This second condition was not being tested. * code/clisp-unix.lisp (getcwd-error): New condition. (initialize-instance (getcwd-error)): New method. (getcwd): Raise getcwd-error condition if unix-funcs::getcwd returns NIL.
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.
* code/mcvs-package.lisp: New file, defines META-CVS package. * code/purge.lisp: Put all symbols in new package. * code/restore.lisp: Likewise. * code/paths.lisp: Likewise. * code/install.sh: Likewise. * code/restart.lisp: Likewise. * code/update.lisp: Likewise. * code/move.lisp: Likewise. * code/grab.lisp: Likewise. * code/unix.lisp: Likewise. * code/slot-refs.lisp: Likewise. * code/prop.lisp: Likewise. * code/multi-hash.lisp: Likewise. * code/rcs-utils.lisp: Likewise. * code/branch.lisp: Likewise. * code/find-bind.lisp: Likewise. * code/execute.lisp: Likewise. * code/link.lisp: Likewise. * code/split.lisp: Likewise. * code/watch.lisp: Likewise. * code/clisp-unix.lisp: Likewise. * code/add.lisp: Likewise. * code/chatter.lisp: Likewise. * code/print.lisp: Likewise. * code/types.lisp: Likewise. * code/remove.lisp: Likewise. * code/convert.lisp: Likewise. * code/error.lisp: Likewise. * code/options.lisp: Likewise. * code/dirwalk.lisp: Likewise. * code/checkout.lisp: Likewise. * code/generic.lisp: Likewise. * code/sync.lisp: Likewise. * code/create.lisp: Likewise. * code/memoize.lisp: Likewise. * code/seqfuncs.lisp: Likewise. * code/cmucl-unix.lisp: Likewise. * code/remap.lisp: Likewise. * code/mapping.lisp: Put symbols in new package. Replace use of CLISP specific substring function with subseq. * code/filt.lisp: Likewise. * code/mcvs-main.lisp: Put symbols in new package. The mcvs function is renamed to main. * code/install.sh: Generate mcvs script that uses qualified name of new startup functiont to start the software.
Merging from mcvs-1-0-branch. * code/filt.lisp (mcvs-filt): Do not filter F- names if immediately preceded by MCVS/ prefix. * code/clisp-unix.lisp (execute-program): Provide debug traces for command execution.
Rethink some decisions in the previous change. Reusing the name posix.lisp for a new file will cause problems for people using mcvs grab to keep up with Meta-CVS patches. * code/posix.lisp: Renamed to unix.lisp. * code/clisp-posix.lisp: Renamed back to clisp-unix.lisp, for the sake of consistency. * code/system.lisp: Updated. * code/cmucl.lisp: Likewise.
Minor reorganization. * posix.lisp: File renamed to paths.lisp, module renamed to "paths". (*editor*): Variable removed. (arglist-to-command-string, execute-programs-xargs, invoke-editor-on): Functions removed. * posix.lisp: New file. (*editor*): Variable moved here from paths.lisp. (arglist-to-command-string, invoke-editor-on): Functions moved here from paths.lisp. * editor.lisp: New file. (*argument-limit*): Variable definition moved here. (execute-programs-xargs): Function moved here from paths.lisp. * clisp-unix.lisp: Renamed to clisp-posix.lisp. Requires "posix" module now. (*argument-limit*): Variable removed. * system.lisp: Remove references to old clisp-linux module. Added requires for new paths and execute modules. * cmucl-unix.lisp (*argument-limit*): Variable definition removed.
* code/clisp-unix.lisp (guid-gen): Changes for Cygwin broke the case when /dev/urandom is available.
Minimal changes for building on Cygwin. * code/install.sh (space_check, dash_check): Function definitions modified to conform to bash2. * code/clisp-unix.lisp (*have-dev-random*, *mcvs-random-state*): New special variables. (guid-gen): Rewritten to fall back on the Common Lisp random function if /dev/urandom is not available.
* code/restore.lisp (mcvs-restore): Was still generating old-style mapping entries. * code/clisp-unix.lisp (executable-p (string)): New method for executable-p generic function that takes a filename.
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.
* posix.lisp (execute-program): Function removed. * clisp-linux.lisp (execute-program): Function added. Works in terms of CLISP's run-program function rather than the shell function, thus eliminating the need to build a command string and escape shell characters. * clisp-unix.lisp (excecute-program): Likewise.
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|