diff options
Diffstat (limited to 'src/scoville.cc')
-rw-r--r-- | src/scoville.cc | 49 |
1 files changed, 36 insertions, 13 deletions
diff --git a/src/scoville.cc b/src/scoville.cc index b5c4822..d8d1692 100644 --- a/src/scoville.cc +++ b/src/scoville.cc @@ -1,26 +1,49 @@ -// Copyright 2016 Benjamin Barenblat +// Copyright (C) 2007, 2008 Jan Engelhardt <jengelh@medozas.de> +// Copyright (C) 2016 Benjamin Barenblat <benjamin@barenblat.name> // -// 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 +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // -// http://www.apache.org/licenses/LICENSE-2.0 +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. // -// 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. +// You should have received a copy of the GNU General Public License along with +// this program. If not, see <http://www.gnu.org/licenses/>. +#include <iostream> + +#include <fcntl.h> +#include <gflags/gflags.h> #include <glog/logging.h> +#include <sys/stat.h> +#include <sys/types.h> #include "operations.h" +#include "utility.h" + +constexpr char kUsage[] = R"(allow forbidden characters on VFAT file systems -int main(const int argc, char* argv[]) { - FLAGS_logtostderr = true; +usage: scoville [flags] target_dir [-- fuse_options])"; + +int main(int argc, char* argv[]) { google::InstallFailureSignalHandler(); + google::SetUsageMessage(kUsage); + google::ParseCommandLineFlags(&argc, &argv, true); google::InitGoogleLogging(argv[0]); - const fuse_operations operations = scoville::FuseOperations(); + const char* const root_path = argv[argc - 1]; + int root_fd; + if ((root_fd = open(root_path, O_DIRECTORY)) == -1) { + std::cerr << "scoville: bad mount point `" << root_path + << "': " << scoville::ErrnoText(); + std::exit(EXIT_FAILURE); + } + LOG(INFO) << "overlaying " << root_path; + + const fuse_operations operations = scoville::FuseOperations(root_fd); return fuse_main(argc, argv, &operations, nullptr); } |