blob: a8db451817648d5a8d0eec516d2fd6d2825ef29c [file] [log] [blame]
// Copyright 2025 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <string.h>
#include <unistd.h>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
int main(int argc, char** argv) {
if (argc == 0) {
exit(EXIT_FAILURE);
}
if (argc < 2) {
goto usage;
}
if (strcmp(argv[1], "close_fd") == 0 && argc == 3) {
int fd = atoi(argv[2]);
if (close(atoi(argv[2])) != 0) {
fprintf(stderr, "Failed to close FD %d: %d (%s)\n", fd, errno, strerror(errno));
exit(EXIT_FAILURE);
}
return 0;
}
if (strcmp(argv[1], "set_cwd") == 0 && argc == 3) {
if (chdir(argv[2]) != 0) {
fprintf(stderr, "Failed to chdir to %s: %d (%s)\n", argv[2], errno, strerror(errno));
exit(EXIT_FAILURE);
}
return 0;
}
usage:
fprintf(stderr, "Usage: %s <command> [<arg>]\n", argv[0]);
fprintf(stderr, "commands:\n");
fprintf(stderr, "\tclose_fd: close the specified FD and exit.\n");
exit(EXIT_FAILURE);
}