1*4b9c6d91SCole Faust /* Copyright 2016 The ChromiumOS Authors 2*4b9c6d91SCole Faust * Use of this source code is governed by a BSD-style license that can be 3*4b9c6d91SCole Faust * found in the LICENSE file. 4*4b9c6d91SCole Faust */ 5*4b9c6d91SCole Faust 6*4b9c6d91SCole Faust #ifndef _SCOPED_MINIJAIL_H_ 7*4b9c6d91SCole Faust #define _SCOPED_MINIJAIL_H_ 8*4b9c6d91SCole Faust 9*4b9c6d91SCole Faust #include <memory> 10*4b9c6d91SCole Faust 11*4b9c6d91SCole Faust #include "libminijail.h" 12*4b9c6d91SCole Faust 13*4b9c6d91SCole Faust namespace mj { 14*4b9c6d91SCole Faust 15*4b9c6d91SCole Faust namespace internal { 16*4b9c6d91SCole Faust 17*4b9c6d91SCole Faust struct ScopedMinijailDeleter { operatorScopedMinijailDeleter18*4b9c6d91SCole Faust inline void operator()(minijail *j) const { 19*4b9c6d91SCole Faust if (j) { 20*4b9c6d91SCole Faust minijail_destroy(j); 21*4b9c6d91SCole Faust } 22*4b9c6d91SCole Faust } 23*4b9c6d91SCole Faust }; 24*4b9c6d91SCole Faust 25*4b9c6d91SCole Faust } // namespace internal 26*4b9c6d91SCole Faust 27*4b9c6d91SCole Faust } // namespace mj 28*4b9c6d91SCole Faust 29*4b9c6d91SCole Faust using ScopedMinijail = 30*4b9c6d91SCole Faust std::unique_ptr<minijail, mj::internal::ScopedMinijailDeleter>; 31*4b9c6d91SCole Faust 32*4b9c6d91SCole Faust #endif /* _SCOPED_MINIJAIL_H_ */ 33