| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FOOMATIC_SHELL_SHELL_H_ |
| #define FOOMATIC_SHELL_SHELL_H_ |
| |
| #include <string> |
| |
| namespace foomatic_shell { |
| |
| // The maximum size of single script is 16KB. |
| constexpr size_t kMaxSourceSize = 16 * 1024; |
| |
| // Parse and execute a shell script in |source|. Generated output is saved to |
| // the file descriptor |output_fd|. When necessary, input data is read from the |
| // standard input (file descriptor = 0). Error messages are written to standard |
| // error stream (file descriptor = 2). |output_fd| must be a valid file |
| // descriptor different that 0 and 2. |verbose_mode| is used to control logging |
| // level - all logs are dumped to stderr. |verify_mode| is used to disable |
| // execution of the shell script. |recursion_level| is used to control |
| // maximum recursion depth and should be set to the default value. The function |
| // returns exit code returned by executed script or value 127 in case of an |
| // shell error. |
| int ExecuteShellScript(const std::string& source, |
| const int output_fd, |
| const bool verbose_mode, |
| const bool verify_mode, |
| const int recursion_level = 0); |
| |
| } // namespace foomatic_shell |
| |
| #endif // FOOMATIC_SHELL_SHELL_H_ |