# # patch "ChangeLog" # from [01efb07825a66872a8400a5deb665c76b71f6e5b] # to [5983a31df9f39a73b4e61b58e7dd2c46c0f5858f] # # patch "app_state.cc" # from [b8c84fd7d7240c97d342629836583cc1ac06d17b] # to [92734e46c4a6a9ce393b5c8a6256a1c81cb90a9f] # # patch "change_set.cc" # from [744dd543b1867870b97ebfb41d24436ec36a7445] # to [6bcdb918b63b567fd5f75d78a9b10703926b21e7] # # patch "change_set.hh" # from [163e6e69aa161c2d673df594a6b714ffcd3aee0d] # to [c9d0a8fa88d57ae3e6d479d2d62a1e5ea0016ed3] # # patch "commands.cc" # from [db0ce86b24b1091ca667a4416827cc6494e97988] # to [e906b13585b94293e8afb716d074d7ae412dc0dc] # # patch "inodeprint.cc" # from [b798c91a49790e97796d257d50f7e0c605daba23] # to [529f367b3cbb60dc5eae0b7e0ff089b617afb4d9] # # patch "manifest.cc" # from [51bdafd0a76234da858cc479e7d4c99ddf90527c] # to [f69a4a7d11f78b7b5fae2c03113b127d62891aec] # # patch "rcs_import.cc" # from [2f155daece17f48756d7c866ce417a4a5c1ef7ac] # to [6a279d2f8e166c40298eeec637593c82e5462d0d] # # patch "restrictions.cc" # from [03e4eb83e836f713c20e4d1f94fe26f792e18d51] # to [78d220a74de9051def3807502d7d3598ca1e994c] # # patch "work.cc" # from [6aad7b52e0799c32f82169a1d7546c09a4444a4e] # to [ff8c34d524010170c8946c1eb76116aa1ba84c2a] # ======================================================================== --- ChangeLog 01efb07825a66872a8400a5deb665c76b71f6e5b +++ ChangeLog 5983a31df9f39a73b4e61b58e7dd2c46c0f5858f @@ -1,5 +1,12 @@ 2005-08-24 Nathaniel Smith + * app_state.cc, change_set.cc, change_set.hh, commands.cc: + * inodeprint.cc, manifest.cc, rcs_import.cc, restrictions.cc: + * work.cc: Audit all calls to file_path() to add internal/external + notation. + +2005-08-24 Nathaniel Smith + * app_state.cc: More paths.hh conversion. (app_state::prefix): Remove. * commands.cc: Remove uses of app.prefix. ======================================================================== --- app_state.cc b8c84fd7d7240c97d342629836583cc1ac06d17b +++ app_state.cc 92734e46c4a6a9ce393b5c8a6256a1c81cb90a9f @@ -152,9 +152,7 @@ vector const & paths, bool respect_ignore) { - // this can't be a file-global static, because file_path's initializer - // depends on another global static being defined. - static file_path dot("."); + static file_path root(internal, ""); restrictions.clear(); for (vector::const_iterator i = paths.begin(); i != paths.end(); ++i) { @@ -166,7 +164,7 @@ continue; } - N(p == dot || valid_paths.find(p) != valid_paths.end(), + N(p == root || valid_paths.find(p) != valid_paths.end(), F("unknown path '%s'\n") % p()); L(F("'%s' added to restricted path set\n") % p()); @@ -177,16 +175,14 @@ // assume current directory if ((depth != -1) && restrictions.empty()) { - restrictions.insert(dot); + restrictions.insert(file_path(external, ".")); } } bool app_state::restriction_includes(file_path const & path) { - // this can't be a file-global static, because file_path's initializer - // depends on another global static being defined. - static file_path dot("."); + static file_path root(internal, ""); if (restrictions.empty()) { return true; @@ -199,7 +195,7 @@ // careful about what goes in to the restricted path set we just // check for this special case here. - if ((!user_supplied_depth) && restrictions.find(dot) != restrictions.end()) + if ((!user_supplied_depth) && restrictions.find(root) != restrictions.end()) { return true; } @@ -212,7 +208,7 @@ { L(F("checking restricted path set for '%s'\n") % test.string()); - file_path p(test.string()); + file_path p(internal, test.string()); path_set::const_iterator i = restrictions.find(p); if (i != restrictions.end()) @@ -232,7 +228,7 @@ ++branch_depth; } - if (user_supplied_depth && (restrictions.find(dot) != restrictions.end())) + if (user_supplied_depth && (restrictions.find(root) != restrictions.end())) { return (branch_depth <= max_depth); } ======================================================================== --- change_set.cc 744dd543b1867870b97ebfb41d24436ec36a7445 +++ change_set.cc 6bcdb918b63b567fd5f75d78a9b10703926b21e7 @@ -2775,19 +2775,19 @@ { parser.sym(); parser.str(t1); - cs.add_file(file_path(t1)); + cs.add_file(file_path(internal, t1)); } else if (parser.symp(syms::delete_file)) { parser.sym(); parser.str(t1); - cs.delete_file(file_path(t1)); + cs.delete_file(file_path(internal, t1)); } else if (parser.symp(syms::delete_dir)) { parser.sym(); parser.str(t1); - cs.delete_dir(file_path(t1)); + cs.delete_dir(file_path(internal, t1)); } else if (parser.symp(syms::rename_file)) { @@ -2795,8 +2795,8 @@ parser.str(t1); parser.esym(syms::to); parser.str(t2); - cs.rename_file(file_path(t1), - file_path(t2)); + cs.rename_file(file_path(internal, t1), + file_path(internal, t2)); } else if (parser.symp(syms::rename_dir)) { @@ -2804,8 +2804,8 @@ parser.str(t1); parser.esym(syms::to); parser.str(t2); - cs.rename_dir(file_path(t1), - file_path(t2)); + cs.rename_dir(file_path(internal, t1), + file_path(internal, t2)); } else break; @@ -2887,7 +2887,7 @@ parser.hex(src); parser.esym(syms::to); parser.hex(dst); - cs.deltas.insert(std::make_pair(file_path(path), + cs.deltas.insert(std::make_pair(file_path(internal, path), std::make_pair(file_id(src), file_id(dst)))); } @@ -3103,20 +3103,24 @@ { change_set cs; - cs.delete_file(file_path("usr/lib/zombie")); - cs.add_file(file_path("usr/bin/cat"), + cs.delete_file(file_path(internal, "usr/lib/zombie")); + cs.add_file(file_path(internal, "usr/bin/cat"), file_id(hexenc("adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"))); - cs.add_file(file_path("usr/local/bin/dog"), + cs.add_file(file_path(internal, "usr/local/bin/dog"), file_id(hexenc("adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"))); - cs.rename_file(file_path("usr/local/bin/dog"), file_path("usr/bin/dog")); - cs.rename_file(file_path("usr/bin/cat"), file_path("usr/local/bin/chicken")); - cs.add_file(file_path("usr/lib/libc.so"), + cs.rename_file(file_path(internal, "usr/local/bin/dog"), + file_path(internal, "usr/bin/dog")); + cs.rename_file(file_path(internal, "usr/bin/cat"), + file_path(internal, "usr/local/bin/chicken")); + cs.add_file(file_path(internal, "usr/lib/libc.so"), file_id(hexenc("435e816c30263c9184f94e7c4d5aec78ea7c028a"))); // FIXME: this should be valid, but our directory semantics are broken. Re-add // tests for things like this when fixing directory semantics! (see bug tracker) - // cs.rename_dir(file_path("usr/lib"), file_path("usr/local/lib")); - cs.rename_dir(file_path("some/dir"), file_path("some/other/dir")); - cs.apply_delta(file_path("usr/local/bin/chicken"), + // cs.rename_dir(file_path(internal, "usr/lib"), + // file_path(internal, "usr/local/lib")); + cs.rename_dir(file_path(internal, "some/dir"), + file_path(internal, "some/other/dir")); + cs.apply_delta(file_path(internal, "usr/local/bin/chicken"), file_id(hexenc("c6a4a6196bb4a744207e1a6e90273369b8c2e925")), file_id(hexenc("fe18ec0c55cbc72e4e51c58dc13af515a2f3a892"))); spin_change_set(cs); @@ -3138,22 +3142,23 @@ change_set cs; manifest_map a; - a.insert(std::make_pair(file_path("usr/lib/zombie"), + a.insert(std::make_pair(file_path(internal, "usr/lib/zombie"), file_id(hexenc("92ceb3cd922db36e48d5c30764e0f5488cdfca28")))); - cs.delete_file(file_path("usr/lib/zombie")); - cs.add_file(file_path("usr/bin/cat"), + cs.delete_file(file_path(internal, "usr/lib/zombie")); + cs.add_file(file_path(internal, "usr/bin/cat"), file_id(hexenc("adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"))); - cs.add_file(file_path("usr/local/dog"), + cs.add_file(file_path(internal, "usr/local/dog"), file_id(hexenc("adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"))); - a.insert(std::make_pair(file_path("usr/foo"), + a.insert(std::make_pair(file_path(internal, "usr/foo"), file_id(hexenc("9a4d3ae90b0cc26758e17e1f80229a13f57cad6e")))); - cs.rename_file(file_path("usr/foo"), file_path("usr/bar")); - cs.apply_delta(file_path("usr/bar"), + cs.rename_file(file_path(internal, "usr/foo"), + file_path(internal, "usr/bar")); + cs.apply_delta(file_path(internal, "usr/bar"), file_id(hexenc("9a4d3ae90b0cc26758e17e1f80229a13f57cad6e")), file_id(hexenc("fe18ec0c55cbc72e4e51c58dc13af515a2f3a892"))); - a.insert(std::make_pair(file_path("usr/quuux"), + a.insert(std::make_pair(file_path(internal, "usr/quuux"), file_id(hexenc("fe18ec0c55cbc72e4e51c58dc13af515a2f3a892")))); - cs.apply_delta(file_path("usr/quuux"), + cs.apply_delta(file_path(internal, "usr/quuux"), file_id(hexenc("fe18ec0c55cbc72e4e51c58dc13af515a2f3a892")), file_id(hexenc("c6a4a6196bb4a744207e1a6e90273369b8c2e925"))); @@ -3178,20 +3183,20 @@ { change_set cs1, cs2, csa; - cs1.add_file(file_path("usr/lib/zombie"), + cs1.add_file(file_path(internal, "usr/lib/zombie"), file_id(hexenc("adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"))); - cs1.rename_file(file_path("usr/lib/apple"), - file_path("usr/lib/orange")); - cs1.rename_dir(file_path("usr/lib/moose"), - file_path("usr/lib/squirrel")); + cs1.rename_file(file_path(internal, "usr/lib/apple"), + file_path(internal, "usr/lib/orange")); + cs1.rename_dir(file_path(internal, "usr/lib/moose"), + file_path(internal, "usr/lib/squirrel")); dump_change_set("neutralize target", cs1); - cs2.delete_file(file_path("usr/lib/zombie")); - cs2.rename_file(file_path("usr/lib/orange"), - file_path("usr/lib/apple")); - cs2.rename_dir(file_path("usr/lib/squirrel"), - file_path("usr/lib/moose")); + cs2.delete_file(file_path(internal, "usr/lib/zombie")); + cs2.rename_file(file_path(internal, "usr/lib/orange"), + file_path(internal, "usr/lib/apple")); + cs2.rename_dir(file_path(internal, "usr/lib/squirrel"), + file_path(internal, "usr/lib/moose")); dump_change_set("neutralizer", cs2); @@ -3223,20 +3228,20 @@ { change_set cs1, cs2, csa; - cs1.delete_file(file_path("usr/lib/zombie")); - cs1.rename_file(file_path("usr/lib/orange"), - file_path("usr/lib/apple")); - cs1.rename_dir(file_path("usr/lib/squirrel"), - file_path("usr/lib/moose")); + cs1.delete_file(file_path(internal, "usr/lib/zombie")); + cs1.rename_file(file_path(internal, "usr/lib/orange"), + file_path(internal, "usr/lib/apple")); + cs1.rename_dir(file_path(internal, "usr/lib/squirrel"), + file_path(internal, "usr/lib/moose")); dump_change_set("non-interference A", cs1); - cs2.add_file(file_path("usr/lib/zombie"), + cs2.add_file(file_path(internal, "usr/lib/zombie"), file_id(hexenc("adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"))); - cs2.rename_file(file_path("usr/lib/pear"), - file_path("usr/lib/orange")); - cs2.rename_dir(file_path("usr/lib/spy"), - file_path("usr/lib/squirrel")); + cs2.rename_file(file_path(internal, "usr/lib/pear"), + file_path(internal, "usr/lib/orange")); + cs2.rename_dir(file_path(internal, "usr/lib/spy"), + file_path(internal, "usr/lib/squirrel")); dump_change_set("non-interference B", cs2); @@ -3299,43 +3304,47 @@ void combine() { do_combine = true; } void add_file(which_t which, std::string const & path, file_id fid = fid1) { - getit(which).add_file(file_path(path), fid); + getit(which).add_file(file_path(internal, path), fid); if (do_combine) - combined.add_file(file_path(path), fid); + combined.add_file(file_path(internal, path), fid); } void apply_delta(which_t which, std::string const & path, file_id from_fid, file_id to_fid) { - getit(which).apply_delta(file_path(path), from_fid, to_fid); + getit(which).apply_delta(file_path(internal, path), from_fid, to_fid); if (do_combine) - combined.apply_delta(file_path(path), from_fid, to_fid); + combined.apply_delta(file_path(internal, path), from_fid, to_fid); } void delete_file(which_t which, std::string const & path) { - getit(which).delete_file(file_path(path)); + getit(which).delete_file(file_path(internal, path)); if (do_combine) - combined.delete_file(file_path(path)); + combined.delete_file(file_path(internal, path)); } void delete_dir(which_t which, std::string const & path) { - getit(which).delete_dir(file_path(path)); + getit(which).delete_dir(file_path(internal, path)); if (do_combine) - combined.delete_dir(file_path(path)); + combined.delete_dir(file_path(internal, path)); } void rename_file(which_t which, std::string const & path1, std::string const & path2) { - getit(which).rename_file(file_path(path1), file_path(path2)); + getit(which).rename_file(file_path(internal, path1), + file_path(internal, path2)); if (do_combine) - combined.rename_file(file_path(path1), file_path(path2)); + combined.rename_file(file_path(internal, path1), + file_path(internal, path2)); } void rename_dir(which_t which, std::string const & path1, std::string const & path2) { - getit(which).rename_dir(file_path(path1), file_path(path2)); + getit(which).rename_dir(file_path(internal, path1), + file_path(internal, path2)); if (do_combine) - combined.rename_dir(file_path(path1), file_path(path2)); + combined.rename_dir(file_path(internal, path1), + file_path(internal, path2)); } void run() { ======================================================================== --- change_set.hh 163e6e69aa161c2d673df594a6b714ffcd3aee0d +++ change_set.hh c9d0a8fa88d57ae3e6d479d2d62a1e5ea0016ed3 @@ -74,7 +74,7 @@ inline bool null_name(file_path const & p) { - return p().empty(); + return p.empty(); } inline bool ======================================================================== --- commands.cc db0ce86b24b1091ca667a4416827cc6494e97988 +++ commands.cc e906b13585b94293e8afb716d074d7ae412dc0dc @@ -1121,8 +1121,8 @@ change_set::path_rearrangement work; get_path_rearrangement(work); - build_rename(file_path(external, idx(args, 0)()), - file_path(external, idx(args, 1)()), + build_rename(file_path(external, idx(args, 0)), + file_path(external, idx(args, 1)), m_old, work); put_path_rearrangement(work); @@ -1247,7 +1247,7 @@ if (args.size() == 1) { - read_localized_data(file_path(idx(args, 0)()), dat, app.lua); + read_localized_data(file_path(external, idx(args, 0)), dat, app.lua); } else { @@ -2121,7 +2121,7 @@ read_attr_map(attr_data, attrs); } - file_path path(external, idx(args,1)()); + file_path path(external, idx(args,1)); N(file_exists(path), F("file '%s' not found") % path); bool attrs_modified = false; @@ -3453,7 +3453,6 @@ OPT_REVISION) { revision_id rid; - file_path file; if (app.revision_selectors.size() == 0) app.require_working_copy(); @@ -3461,7 +3460,7 @@ if ((args.size() != 1) || (app.revision_selectors.size() > 1)) throw usage(name); - file=file_path(idx(args, 0)()); + file_path file(external, idx(args, 0)); if (app.revision_selectors.size() == 0) get_revision_id(rid); else @@ -3500,7 +3499,7 @@ throw usage(name); if (args.size() > 0) - file=file_path(idx(args, 0)()); /* specified a file */ + file = file_path(external, idx(args, 0)); /* specified a file */ set< pair > frontier; ======================================================================== --- inodeprint.cc b798c91a49790e97796d257d50f7e0c605daba23 +++ inodeprint.cc 529f367b3cbb60dc5eae0b7e0ff089b617afb4d9 @@ -42,7 +42,7 @@ file_name = dat().substr(file_name_begin); else file_name = dat().substr(file_name_begin, pos - file_name_begin); - ipm.insert(inodeprint_entry(file_path(file_name), + ipm.insert(inodeprint_entry(file_path(internal, file_name), hexenc(ident))); // skip past the '\n' ++pos; ======================================================================== --- manifest.cc 51bdafd0a76234da858cc479e7d4c99ddf90527c +++ manifest.cc f69a4a7d11f78b7b5fae2c03113b127d62891aec @@ -227,7 +227,8 @@ file_name = dat().substr(file_name_begin); else file_name = dat().substr(file_name_begin, pos - file_name_begin); - man.insert(manifest_entry(file_path(file_name), hexenc(ident))); + man.insert(manifest_entry(file_path(internal, file_name), + hexenc(ident))); // skip past the '\n' ++pos; } ======================================================================== --- rcs_import.cc 2f155daece17f48756d7c866ce417a4a5c1ef7ac +++ rcs_import.cc 6a279d2f8e166c40298eeec637593c82e5462d0d @@ -781,7 +781,7 @@ if (last_slash!=std::string::npos && last_slash>=5 && ss.substr(last_slash-5,6)=="Attic/") ss.erase(last_slash-5,6); - curr_file = file_path(ss); + curr_file = file_path(internal, ss); curr_file_interned = path_interner.intern(ss); } @@ -1484,7 +1484,7 @@ for (cvs_cluster::entry_map::const_iterator i = c.entries.begin(); i != c.entries.end(); ++i) { - file_path pth(cvs.path_interner.lookup(i->first)); + file_path pth(internal, cvs.path_interner.lookup(i->first)); file_id fid(cvs.file_version_interner.lookup(i->second.version)); if (i->second.live) { ======================================================================== --- restrictions.cc 03e4eb83e836f713c20e4d1f94fe26f792e18d51 +++ restrictions.cc 78d220a74de9051def3807502d7d3598ca1e994c @@ -63,7 +63,7 @@ std::string::size_type j = std::string::npos; while ((j = (*i)().rfind('/', j)) != std::string::npos) { - file_path dir((*i)().substr(0, j)); + file_path dir(internal, (*i)().substr(0, j)); if (intermediate_paths.find(dir) != intermediate_paths.end()) break; if (paths.find(dir) != paths.end()) break; intermediate_paths.insert(dir); ======================================================================== --- work.cc 6aad7b52e0799c32f82169a1d7546c09a4444a4e +++ work.cc ff8c34d524010170c8946c1eb76116aa1ba84c2a @@ -594,7 +594,7 @@ void get_attr_path(file_path & a_path) { - a_path = file_path(attr_file_name); + a_path = file_path(internal, attr_file_name); L(F("attribute map path is %s\n") % a_path); } @@ -622,7 +622,7 @@ { parser.sym(); parser.str(file); - file_path fp(file); + file_path fp(internal, file); while (parser.symp() && !parser.symp(syms::file))