* Skeleton of the privileged worker program.
* Some refactoring: put the NAR archive integer/string serialisation code in a separate file so it can be reused by the worker protocol implementation.
This commit is contained in:
parent
9adc074dc3
commit
40b3f64b55
12 changed files with 255 additions and 126 deletions
|
|
@ -607,17 +607,6 @@ static void opDelete(Strings opFlags, Strings opArgs)
|
|||
}
|
||||
|
||||
|
||||
/* A sink that writes dump output to stdout. */
|
||||
struct StdoutSink : DumpSink
|
||||
{
|
||||
virtual void operator ()
|
||||
(const unsigned char * data, unsigned int len)
|
||||
{
|
||||
writeFull(STDOUT_FILENO, data, len);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* Dump a path as a Nix archive. The archive is written to standard
|
||||
output. */
|
||||
static void opDump(Strings opFlags, Strings opArgs)
|
||||
|
|
@ -625,22 +614,12 @@ static void opDump(Strings opFlags, Strings opArgs)
|
|||
if (!opFlags.empty()) throw UsageError("unknown flag");
|
||||
if (opArgs.size() != 1) throw UsageError("only one argument allowed");
|
||||
|
||||
StdoutSink sink;
|
||||
FdSink sink(STDOUT_FILENO);
|
||||
string path = *opArgs.begin();
|
||||
dumpPath(path, sink);
|
||||
}
|
||||
|
||||
|
||||
/* A source that reads restore input from stdin. */
|
||||
struct StdinSource : RestoreSource
|
||||
{
|
||||
virtual void operator () (unsigned char * data, unsigned int len)
|
||||
{
|
||||
readFull(STDIN_FILENO, data, len);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* Restore a value from a Nix archive. The archive is read from
|
||||
standard input. */
|
||||
static void opRestore(Strings opFlags, Strings opArgs)
|
||||
|
|
@ -648,7 +627,7 @@ static void opRestore(Strings opFlags, Strings opArgs)
|
|||
if (!opFlags.empty()) throw UsageError("unknown flag");
|
||||
if (opArgs.size() != 1) throw UsageError("only one argument allowed");
|
||||
|
||||
StdinSource source;
|
||||
FdSource source(STDIN_FILENO);
|
||||
restorePath(*opArgs.begin(), source);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue