Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
shared.hh
Go to the documentation of this file.
1#pragma once
3
4#include "lix/libutil/args.hh"
5#include "lix/libutil/args/root.hh"
11
12#include <signal.h>
13
14
15namespace nix {
16
17int handleExceptions(const std::string & programName, std::function<void()> fun);
18
22void initNix();
23
24void printVersion(const std::string & programName);
25
29void printGCWarning();
30
31class Store;
32
33kj::Promise<Result<void>> printMissing(
34 ref<Store> store,
35 const std::vector<DerivedPath> & paths,
36 Verbosity lvl = lvlInfo);
37
38kj::Promise<Result<void>> printMissing(ref<Store> store, const StorePathSet & willBuild,
39 const StorePathSet & willSubstitute, const StorePathSet & unknown,
40 uint64_t downloadSize, uint64_t narSize, Verbosity lvl = lvlInfo);
41
42std::string getArg(const std::string & opt,
43 Strings::iterator & i, const Strings::iterator & end);
44
45template<class N> N getIntArg(const std::string & opt,
46 Strings::iterator & i, const Strings::iterator & end, bool allowUnit)
47{
48 ++i;
49 if (i == end) throw UsageError("'%1%' requires an argument", opt);
51}
52
53
54struct LegacyArgs : public MixCommonArgs, public RootArgs
55{
56 AsyncIoRoot & aio_;
57 AsyncIoRoot & aio() override { return aio_; }
58
59 std::function<bool(Strings::iterator & arg, const Strings::iterator & end)> parseArg;
60
61 LegacyArgs(AsyncIoRoot & aio, const std::string & programName,
62 std::function<bool(Strings::iterator & arg, const Strings::iterator & end)> parseArg);
63
64 bool processFlag(Strings::iterator & pos, Strings::iterator end) override;
65
66 bool processArgs(const Strings & args, bool finish) override;
67};
68
69
73void showManPage(const std::string & name);
74
80class RunPager
81{
82public:
83 RunPager();
84 ~RunPager();
85
86private:
87 Pid pid;
88 int std_out;
89};
90
91extern volatile ::sig_atomic_t blockInt;
92
93
94/* GC helpers. */
95
96std::string showBytes(uint64_t bytes);
97
98struct GCResults;
99
100struct PrintFreed
101{
102 bool show;
103 const GCResults & results;
104 PrintFreed(bool show, const GCResults & results)
105 : show(show), results(results) { }
106 ~PrintFreed();
107};
108
109
114
130extern std::function<void(siginfo_t * info, void * ctx)> stackOverflowHandler;
131
138void defaultStackOverflowHandler(siginfo_t * info, void * ctx);
139
140}
Definition processes.hh:24
Definition store-api.hh:195
Definition ref.hh:19
void defaultStackOverflowHandler(siginfo_t *info, void *ctx)
Definition stack.cc:69
void detectStackOverflow()
Definition stack.cc:44
std::function< void(siginfo_t *info, void *ctx)> stackOverflowHandler
N string2IntWithUnitPrefix(std::string_view s)
Definition strings.hh:157
Definition async.hh:39
Definition gc-store.hh:73
bool processFlag(Strings::iterator &pos, Strings::iterator end) override
Definition shared.cc:266
bool processArgs(const Strings &args, bool finish) override
Definition shared.cc:275