// Copyright 2018 The Crashpad Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef CRASHPAD_UTIL_LINUX_SCOPED_PR_SET_DUMPABLE_H_
#define CRASHPAD_UTIL_LINUX_SCOPED_PR_SET_DUMPABLE_H_

#include "base/macros.h"

namespace crashpad {

class ScopedPrSetDumpable {
 public:
  //! \brief Uses `PR_SET_DUMPABLE` to make the current process dumpable.
  //!
  //! Restores the dumpable flag to its original value on destruction. If the
  //! original value couldn't be determined, the destructor attempts to restore
  //! the flag to 0 (non-dumpable).
  //!
  //! \param[in] may_log `true` if this object may log error messages.
  explicit ScopedPrSetDumpable(bool may_log);

  ~ScopedPrSetDumpable();

 private:
  bool was_dumpable_;
  bool may_log_;

  DISALLOW_COPY_AND_ASSIGN(ScopedPrSetDumpable);
};

}  // namespace crashpad

#endif  // CRASHPAD_UTIL_LINUX_SCOPED_PR_SET_DUMPABLE_H_
