Skip to content

Commit cececad

Browse files
committed
remove unneeded preexec function option from cpp-subprocess
We don't seem to ever need this, so remove it.
1 parent 633e45b commit cececad

File tree

1 file changed

+0
-50
lines changed

1 file changed

+0
-50
lines changed

src/util/subprocess.hpp

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -845,44 +845,6 @@ struct error
845845
int wr_ch_ = -1;
846846
};
847847

848-
// Impoverished, meager, needy, truly needy
849-
// version of type erasure to store function pointers
850-
// needed to provide the functionality of preexec_func
851-
// ATTN: Can be used only to execute functions with no
852-
// arguments and returning void.
853-
// Could have used more efficient methods, ofcourse, but
854-
// that won't yield me the consistent syntax which I am
855-
// aiming for. If you know, then please do let me know.
856-
857-
class preexec_func
858-
{
859-
public:
860-
preexec_func() {}
861-
862-
template <typename Func>
863-
explicit preexec_func(Func f): holder_(new FuncHolder<Func>(std::move(f)))
864-
{}
865-
866-
void operator()() {
867-
(*holder_)();
868-
}
869-
870-
private:
871-
struct HolderBase {
872-
virtual void operator()() const = 0;
873-
virtual ~HolderBase(){};
874-
};
875-
template <typename T>
876-
struct FuncHolder: HolderBase {
877-
FuncHolder(T func): func_(std::move(func)) {}
878-
void operator()() const override { func_(); }
879-
// The function pointer/reference
880-
T func_;
881-
};
882-
883-
std::unique_ptr<HolderBase> holder_ = nullptr;
884-
};
885-
886848
// ~~~~ End Popen Args ~~~~
887849

888850

@@ -990,7 +952,6 @@ struct ArgumentDeducer
990952
void set_option(output&& out);
991953
void set_option(error&& err);
992954
void set_option(close_fds&& cfds);
993-
void set_option(preexec_func&& prefunc);
994955
void set_option(session_leader&& sleader);
995956

996957
private:
@@ -1323,13 +1284,11 @@ class Popen
13231284

13241285
bool defer_process_start_ = false;
13251286
bool close_fds_ = false;
1326-
bool has_preexec_fn_ = false;
13271287
bool session_leader_ = false;
13281288

13291289
std::string exe_name_;
13301290
std::string cwd_;
13311291
env_map_t env_;
1332-
preexec_func preexec_fn_;
13331292

13341293
// Command in string format
13351294
std::string args_;
@@ -1669,11 +1628,6 @@ namespace detail {
16691628
popen_->close_fds_ = cfds.close_all;
16701629
}
16711630

1672-
inline void ArgumentDeducer::set_option(preexec_func&& prefunc) {
1673-
popen_->preexec_fn_ = std::move(prefunc);
1674-
popen_->has_preexec_fn_ = true;
1675-
}
1676-
16771631

16781632
inline void Child::execute_child() {
16791633
#ifndef __USING_WINDOWS__
@@ -1737,10 +1691,6 @@ namespace detail {
17371691
if (sys_ret == -1) throw OSError("chdir failed", errno);
17381692
}
17391693

1740-
if (parent_->has_preexec_fn_) {
1741-
parent_->preexec_fn_();
1742-
}
1743-
17441694
if (parent_->session_leader_) {
17451695
sys_ret = setsid();
17461696
if (sys_ret == -1) throw OSError("setsid failed", errno);

0 commit comments

Comments
 (0)