blob: 38f1a913b2c5f24512b2aba94c8e6a3875443a7a [file] [log] [blame]
Mike Frysinger50e31fa2018-01-19 18:59:49 -05001/* Copyright 2016 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
4 */
Jorge Lucangeli Obesd50f8192016-07-14 15:59:59 -04005
Chirantan Ekbote59e47372017-07-12 11:22:01 -07006#ifndef _SCOPED_MINIJAIL_H_
7#define _SCOPED_MINIJAIL_H_
8
Jorge Lucangeli Obesd50f8192016-07-14 15:59:59 -04009#include <memory>
10
11#include "libminijail.h"
12
Jorge Lucangeli Obescdf2c6d2019-02-12 13:17:41 -050013namespace mj {
14
15namespace internal {
16
Jorge Lucangeli Obesd50f8192016-07-14 15:59:59 -040017struct ScopedMinijailDeleter {
18 inline void operator()(minijail *j) const {
19 if (j) {
20 minijail_destroy(j);
21 }
22 }
23};
Jorge Lucangeli Obesd50f8192016-07-14 15:59:59 -040024
Jorge Lucangeli Obescdf2c6d2019-02-12 13:17:41 -050025} // namespace internal
26
27} // namespace mj
28
29using ScopedMinijail =
30 std::unique_ptr<minijail, mj::internal::ScopedMinijailDeleter>;
Chirantan Ekbote59e47372017-07-12 11:22:01 -070031
32#endif /* _SCOPED_MINIJAIL_H_ */