Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to symlink-branch:||(view) (annotate)|
Support for symbolic links added to the mapping module. The format of the map file has changed to accomodate this. The new format of the list entries is (:keyword "id" "path" ...) where the keyword is either :file or :symlink (for now, extensible obviously), "id" is a unique identifier (for regular files, it is their MCVS/F-* name) and "path" is the sandbox path. Other things can follow; for symlinks, there is a string representing the symlink target. Internally, a new data type called mapping-entry is used; this is a struct. So the functions which read and write maps now convert between the struct format and the above format. * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function. * code/unix-bindings/impl.c (impl_readlink): New function. * code/clisp-unix.lisp (readlink-error): New condition. (initialize-instance readlink-error): New method for initialize-instance generic function, specialized for readlink-error. (readlink): New function. * code/mapping.lisp (mapping-entry): New struct, with slots file, id, path and target. (mapping-same-object-p): Renamed to mapping-same-id-p. (mapping-object-lookup, mapping-moved-p): Unused functions removed. (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup, mapping-prefix-matches, mapping-same-path-p, mapping-rename-files, mapping-removed-files): Functions updated to use the new data structure. (mapping-dupe-checks): Rewritten for new data structure, and to use hashes rather than silly sorting. (mapping-convert-old-style-in, mapping-convert-in, mapping-convert-out): New functions. (mapping-read): Handle new and old style representations, handle conversion to internal representation. (mapping-write): Convert to new-style external representation before writing out. (mapping-synchronize): Handle symbolic links. If a link is missing, create it. If it's present but different from what it should be, erase it and re-create it. (mapping-update): Use new data structure. Handle symbolic links. * code/remove.lisp (mcvs-remove): Refer to new function name, mapping-same-id-p.
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|