diff options
Diffstat (limited to 'src/nix-worker/main.cc')
-rw-r--r-- | src/nix-worker/main.cc | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/nix-worker/main.cc b/src/nix-worker/main.cc index 80db782e90ba..e772421f39bc 100644 --- a/src/nix-worker/main.cc +++ b/src/nix-worker/main.cc @@ -23,23 +23,6 @@ using namespace nix; #endif -static Path readStorePath(Source & from) -{ - Path path = readString(from); - assertStorePath(path); - return path; -} - - -static PathSet readStorePaths(Source & from) -{ - PathSet paths = readStringSet(from); - for (PathSet::iterator i = paths.begin(); i != paths.end(); ++i) - assertStorePath(*i); - return paths; -} - - static FdSource from(STDIN_FILENO); static FdSink to(STDOUT_FILENO); @@ -286,6 +269,18 @@ static void performOp(Source & from, Sink & to, unsigned int op) break; } + case wopFindRoots: { + startWork(); + Roots roots = store->findRoots(); + stopWork(); + writeInt(roots.size(), to); + for (Roots::iterator i = roots.begin(); i != roots.end(); ++i) { + writeString(i->first, to); + writeString(i->second, to); + } + break; + } + default: throw Error(format("invalid operation %1%") % op); } |