Refined the commands
This commit is contained in:
parent
3e08d6a438
commit
4d859efdac
27
src/entry.c
27
src/entry.c
@ -384,9 +384,19 @@ Status RemoveEntryDisk(const char* entry_identifier) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Status ResetEntryDisk(const char* entry_identifier, const char* backing_identifier) {
|
Status ResetEntryDisk(const char* entry_identifier, const char* backing_identifier) {
|
||||||
// Check if the disk exists
|
// Check that the entry exists
|
||||||
bool exists;
|
bool exists;
|
||||||
Status status = DoesEntryDiskExist(entry_identifier, &exists);
|
Status status = DoesEntryExist(entry_identifier, &exists);
|
||||||
|
if (status != SUCCESS)
|
||||||
|
return status;
|
||||||
|
|
||||||
|
if (!exists) {
|
||||||
|
Log(LOG_LEVEL_ERROR, "The entry '%s' does not exist.", entry_identifier);
|
||||||
|
return FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the disk exists
|
||||||
|
status = DoesEntryDiskExist(entry_identifier, &exists);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
@ -438,7 +448,7 @@ Status ResetEntryDisk(const char* entry_identifier, const char* backing_identifi
|
|||||||
}
|
}
|
||||||
|
|
||||||
Status TrimEntryDisk(const char* entry_identifier) {
|
Status TrimEntryDisk(const char* entry_identifier) {
|
||||||
// Check if the disk exists
|
// Check if the entry exists
|
||||||
bool exists;
|
bool exists;
|
||||||
Status status = DoesEntryDiskExist(entry_identifier, &exists);
|
Status status = DoesEntryDiskExist(entry_identifier, &exists);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
@ -449,6 +459,16 @@ Status TrimEntryDisk(const char* entry_identifier) {
|
|||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if the disk exists
|
||||||
|
status = DoesEntryDiskExist(entry_identifier, &exists);
|
||||||
|
if (status != SUCCESS)
|
||||||
|
return status;
|
||||||
|
|
||||||
|
if (!exists) {
|
||||||
|
Log(LOG_LEVEL_ERROR, "The disk for the entry '%s' does not exist.", entry_identifier);
|
||||||
|
return FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the disk path
|
// Get the disk path
|
||||||
char* entry_disk_path = NULL;
|
char* entry_disk_path = NULL;
|
||||||
status = GetEntryDiskPath(entry_identifier, &entry_disk_path);
|
status = GetEntryDiskPath(entry_identifier, &entry_disk_path);
|
||||||
@ -461,3 +481,4 @@ Status TrimEntryDisk(const char* entry_identifier) {
|
|||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,4 +21,6 @@ Status AddRootEntryDisk(const char* entry_identifier, uint64_t disk_size);
|
|||||||
Status AddBackedEntryDisk(const char* entry_identifier, const char* backing_identifier);
|
Status AddBackedEntryDisk(const char* entry_identifier, const char* backing_identifier);
|
||||||
Status RemoveEntryDisk(const char* entry_identifier);
|
Status RemoveEntryDisk(const char* entry_identifier);
|
||||||
Status ResetEntryDisk(const char* entry_identifier, const char* backing_identifier); // TODO
|
Status ResetEntryDisk(const char* entry_identifier, const char* backing_identifier); // TODO
|
||||||
Status TrimEntryDisk(const char* entry_identifier);
|
Status TrimEntryDisk(const char* entry_identifier);
|
||||||
|
|
||||||
|
Status GetEntryBacking(const char* entry_identifier, char** _backing_identifier);
|
200
src/sandbox.c
200
src/sandbox.c
@ -9,6 +9,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
Command COMMANDS[] = {
|
Command COMMANDS[] = {
|
||||||
{CommandHelp, "help", "[command]", "Prints this help message.",
|
{CommandHelp, "help", "[command]", "Prints this help message.",
|
||||||
@ -29,7 +30,7 @@ Command COMMANDS[] = {
|
|||||||
"TODO: Add details."},
|
"TODO: Add details."},
|
||||||
{CommandRemoveDisk, "remove-disk", "<entry id>", "Removes the disk from an entry.",
|
{CommandRemoveDisk, "remove-disk", "<entry id>", "Removes the disk from an entry.",
|
||||||
"TODO: Add details."},
|
"TODO: Add details."},
|
||||||
{CommandResetDisk, "reset-disk", "<entry id> [--update|-u] [--backing|-b <backing id>]", "Resets the disk of an entry.",
|
{CommandResetDisk, "reset-disk", "<entry id> [--update|-u] [--backed|-b <backing id>]", "Resets the disk of an entry.",
|
||||||
"TODO: Add details."},
|
"TODO: Add details."},
|
||||||
{CommandTrimDisk, "trim-disk", "<entry id>", "Trims the disk of an entry.",
|
{CommandTrimDisk, "trim-disk", "<entry id>", "Trims the disk of an entry.",
|
||||||
"TODO: Add details."}};
|
"TODO: Add details."}};
|
||||||
@ -114,8 +115,6 @@ int CommandHelp(int argc, char* argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stdout, "\nFor more information, run 'sandbox help <command>'.\n");
|
fprintf(stdout, "\nFor more information, run 'sandbox help <command>'.\n");
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
} else if (argc == 1) { // If there is one argument, print the help message for the command
|
} else if (argc == 1) { // If there is one argument, print the help message for the command
|
||||||
const char* input = argv[0];
|
const char* input = argv[0];
|
||||||
|
|
||||||
@ -136,7 +135,7 @@ int CommandHelp(int argc, char* argv[]) {
|
|||||||
Log(LOG_LEVEL_ERROR, "Unknown command '%s'.", input);
|
Log(LOG_LEVEL_ERROR, "Unknown command '%s'.", input);
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
} else { // If there are too many arguments, print an error message
|
} else { // If there are too many arguments, print an error message
|
||||||
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to 'help'.");
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'help'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,62 +143,91 @@ int CommandHelp(int argc, char* argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int CommandVersion(int argc, char* argv[]) {
|
int CommandVersion(int argc, char* argv[]) {
|
||||||
|
if (argc > 0) {
|
||||||
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'version'.");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(stdout, "Sandbox utility v%s\n", VERSION);
|
fprintf(stdout, "Sandbox utility v%s\n", VERSION);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CommandAddEntry(int argc, char* argv[]) {
|
int CommandAddEntry(int argc, char* argv[]) {
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to 'add-entry'.");
|
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to command 'add-entry'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
} else if (argc > 1) {
|
} else if (argc > 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to 'add-entry'.");
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'add-entry'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* entry_identifier = argv[0];
|
// Extract the entry identifier
|
||||||
|
const char* entry_id = argv[0];
|
||||||
|
|
||||||
Status status = AddEntry(entry_identifier);
|
// Create the entry
|
||||||
|
Status status = AddEntry(entry_id);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
Log(LOG_LEVEL_INFO, "Added entry '%s'.", entry_identifier);
|
Log(LOG_LEVEL_INFO, "Successfully added entry '%s'.", entry_id);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CommandRemoveEntry(int argc, char* argv[]) {
|
int CommandRemoveEntry(int argc, char* argv[]) {
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to 'remove-entry'.");
|
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to command 'remove-entry'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
} else if (argc > 1) {
|
} else if (argc > 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to 'remove-entry'.");
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'remove-entry'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* entry_identifier = argv[0];
|
// Extract the entry identifier
|
||||||
|
const char* entry_id = argv[0];
|
||||||
|
|
||||||
Status status = RemoveEntry(entry_identifier);
|
// Remove the entry
|
||||||
|
Status status = RemoveEntry(entry_id);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
Log(LOG_LEVEL_INFO, "Removed entry '%s'.", entry_identifier);
|
Log(LOG_LEVEL_INFO, "Successfully removed entry '%s'.", entry_id);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CommandListEntries(int argc, char* argv[]) {
|
int CommandListEntries(int argc, char* argv[]) {
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to 'list-entries'.");
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'list-entries'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// List the entries
|
||||||
char** entries = NULL;
|
char** entries = NULL;
|
||||||
Status status = ListEntries(&entries);
|
Status status = ListEntries(&entries);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
for (size_t i = 0; entries[i] != NULL; i++)
|
// Calculate the maximum length of the entries
|
||||||
fprintf(stdout, "%s\n", entries[i]);
|
size_t max_length = 0;
|
||||||
|
for (size_t i = 0; entries[i] != NULL; i++) {
|
||||||
|
size_t length = strlen(entries[i]);
|
||||||
|
if (length > max_length)
|
||||||
|
max_length = length;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print the entries
|
||||||
|
for (size_t i = 0; entries[i] != NULL; i++) {
|
||||||
|
bool has_disk;
|
||||||
|
status = DoesEntryDiskExist(entries[i], &has_disk);
|
||||||
|
if (status != SUCCESS)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
if (has_disk)
|
||||||
|
fprintf(stdout, "%zu | %-*s | %s |\n", i, (int)max_length, entries[i], "Has disk");
|
||||||
|
else
|
||||||
|
fprintf(stdout, "%zu | %-*s | %s |\n", i, (int)max_length, entries[i], "No disk ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Free the entries
|
||||||
for (size_t i = 0; entries[i] != NULL; i++)
|
for (size_t i = 0; entries[i] != NULL; i++)
|
||||||
free(entries[i]);
|
free(entries[i]);
|
||||||
free(entries);
|
free(entries);
|
||||||
@ -209,158 +237,178 @@ int CommandListEntries(int argc, char* argv[]) {
|
|||||||
|
|
||||||
int CommandClearEntries(int argc, char* argv[]) {
|
int CommandClearEntries(int argc, char* argv[]) {
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to 'clear-entries'.");
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'clear-entries'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear the entries
|
||||||
Status status = ClearEntries();
|
Status status = ClearEntries();
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
Log(LOG_LEVEL_INFO, "Cleared all entries.");
|
Log(LOG_LEVEL_INFO, "Successfully cleared all entries.");
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CommandAddDisk(int argc, char* argv[]) {
|
int CommandAddDisk(int argc, char* argv[]) {
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to 'add-disk'.");
|
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to command 'add-disk'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* entry_identifier = argv[0];
|
// Extract the entry identifier
|
||||||
|
const char* entry_id = argv[0];
|
||||||
|
|
||||||
|
// Extract the options
|
||||||
bool root = false;
|
bool root = false;
|
||||||
uint64_t size = 0;
|
const char* size_str = NULL;
|
||||||
|
|
||||||
bool backed = false;
|
bool backed = false;
|
||||||
const char* backing_identifier = NULL;
|
const char* backing_id = NULL;
|
||||||
|
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "--root") == 0 || strcmp(argv[i], "-r") == 0) {
|
if (strcmp(argv[i], "--root") == 0 || strcmp(argv[i], "-r") == 0) {
|
||||||
|
// Check if the option is duplicated
|
||||||
if (root) {
|
if (root) {
|
||||||
Log(LOG_LEVEL_ERROR, "Duplicate '--root' argument supplied to 'add-disk'.");
|
Log(LOG_LEVEL_ERROR, "Duplicate option '--root'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i + 1 >= argc) {
|
// Check if the option is the last argument
|
||||||
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to 'add-disk'. Missing size for '--root <size>'.");
|
if (i + 1 == argc) {
|
||||||
|
Log(LOG_LEVEL_ERROR, "Missing argument for option '--root <size>'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Extract the size
|
||||||
|
size_str = argv[i + 1];
|
||||||
root = true;
|
root = true;
|
||||||
Status status = ParseSize(argv[i + 1], &size);
|
|
||||||
if (status != SUCCESS)
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
|
|
||||||
if (size == 0) {
|
// Skip the next argument as it is the size
|
||||||
Log(LOG_LEVEL_ERROR, "Invalid size '%s' supplied to 'add-disk'.", argv[i + 1]);
|
i++;
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
i++; // Consumes the next argument (the size)
|
|
||||||
} else if (strcmp(argv[i], "--backed") == 0 || strcmp(argv[i], "-b") == 0) {
|
} else if (strcmp(argv[i], "--backed") == 0 || strcmp(argv[i], "-b") == 0) {
|
||||||
|
// Check if the option is duplicated
|
||||||
if (backed) {
|
if (backed) {
|
||||||
Log(LOG_LEVEL_ERROR, "Duplicate '--backed' argument supplied to 'add-disk'.");
|
Log(LOG_LEVEL_ERROR, "Duplicate option '--backed'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i + 1 >= argc) {
|
// Check if the option is the last argument
|
||||||
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to 'add-disk'. Missing backing identifier for '--backed <backing id>'.");
|
if (i + 1 == argc) {
|
||||||
|
Log(LOG_LEVEL_ERROR, "Missing argument for option '--backed <backing id>'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Extract the backing identifier
|
||||||
|
backing_id = argv[i + 1];
|
||||||
backed = true;
|
backed = true;
|
||||||
backing_identifier = argv[i + 1];
|
|
||||||
|
|
||||||
if (!IsBackingIdentifierValid(backing_identifier)) {
|
// Skip the next argument as it is the backing identifier
|
||||||
Log(LOG_LEVEL_ERROR, "Invalid backing identifier '%s' supplied to 'add-disk'.", backing_identifier);
|
i++;
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
i++; // Consumes the next argument (the backing identifier)
|
|
||||||
} else {
|
} else {
|
||||||
Log(LOG_LEVEL_ERROR, "Unknown argument '%s' supplied to 'add-disk'.", argv[i]);
|
Log(LOG_LEVEL_ERROR, "Unknown option '%s'.", argv[i]);
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't allow both root and backed options
|
||||||
if (root && backed) {
|
if (root && backed) {
|
||||||
Log(LOG_LEVEL_ERROR, "The options '--root' and '--backed' cannot be used together in 'add-disk'.");
|
Log(LOG_LEVEL_ERROR, "Cannot use both '--root' and '--backed' options.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (root) {
|
if (root) {
|
||||||
Status status = AddRootEntryDisk(entry_identifier, size);
|
// Parse the size
|
||||||
|
uint64_t size;
|
||||||
|
Status status = ParseSize(size_str, &size);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
char* size_str = NULL;
|
// Add the root disk
|
||||||
status = FormatSize(size, &size_str);
|
status = AddRootEntryDisk(entry_id, size);
|
||||||
Log(LOG_LEVEL_INFO, "Added root disk to entry '%s' with size %s.", entry_identifier, size_str);
|
if (status != SUCCESS)
|
||||||
free(size_str);
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
// Format the size
|
||||||
|
char* size_fmt;
|
||||||
|
status = FormatSize(size, &size_fmt);
|
||||||
|
|
||||||
|
Log(LOG_LEVEL_INFO, "Successfully added root disk to entry '%s' of size %s.", entry_id, size_fmt);
|
||||||
|
|
||||||
|
free(size_fmt);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
} else if (backed) {
|
} else if (backed) {
|
||||||
Status status = AddBackedEntryDisk(entry_identifier, backing_identifier);
|
// Check if the backing exists
|
||||||
|
Status status = AddBackedEntryDisk(entry_id, backing_id);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
Log(LOG_LEVEL_INFO, "Added backed disk to entry '%s' with backing '%s'.", entry_identifier, backing_identifier);
|
Log(LOG_LEVEL_INFO, "Successfully added backed disk to entry '%s' with backing '%s'.", entry_id, backing_id);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
char* backing_identifier = NULL;
|
// Get the latest backing to use as the default backing
|
||||||
Status status = GetLatestBacking(&backing_identifier);
|
char* backing_id;
|
||||||
if (status != SUCCESS)
|
Status status = GetLatestBacking(&backing_id);
|
||||||
return EXIT_FAILURE;
|
|
||||||
|
|
||||||
status = AddBackedEntryDisk(entry_identifier, backing_identifier);
|
|
||||||
if (status != SUCCESS) {
|
if (status != SUCCESS) {
|
||||||
free(backing_identifier);
|
Log(LOG_LEVEL_ERROR, "Failed to get the latest backing to use as the default backing.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log(LOG_LEVEL_INFO, "Added backed disk to entry '%s' with backing '%s'.", entry_identifier, backing_identifier);
|
// Add the backed disk
|
||||||
free(backing_identifier);
|
status = AddBackedEntryDisk(entry_id, backing_id);
|
||||||
}
|
if (status != SUCCESS) {
|
||||||
|
free(backing_id);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
Log(LOG_LEVEL_INFO, "Successfully added backed disk to entry '%s' with backing '%s'.", entry_id, backing_id);
|
||||||
|
|
||||||
|
free(backing_id);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int CommandRemoveDisk(int argc, char* argv[]) {
|
int CommandRemoveDisk(int argc, char* argv[]) {
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to 'remove-disk'.");
|
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to command 'remove-disk'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
} else if (argc > 1) {
|
} else if (argc > 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to 'remove-disk'.");
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'remove-disk'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* entry_identifier = argv[0];
|
// Extract the entry identifier
|
||||||
|
const char* entry_id = argv[0];
|
||||||
|
|
||||||
Status status = RemoveEntryDisk(entry_identifier);
|
// Remove the disk
|
||||||
|
Status status = RemoveEntryDisk(entry_id);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
Log(LOG_LEVEL_INFO, "Removed disk from entry '%s'.", entry_identifier);
|
Log(LOG_LEVEL_INFO, "Successfully removed disk from entry '%s'.", entry_id);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CommandResetDisk(int argc, char* argv[]) {
|
int CommandResetDisk(int argc, char* argv[]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CommandTrimDisk(int argc, char* argv[]) {
|
int CommandTrimDisk(int argc, char* argv[]) {
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to 'trim-disk'.");
|
Log(LOG_LEVEL_ERROR, "Too few arguments supplied to command 'trim-disk'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
} else if (argc > 1) {
|
} else if (argc > 1) {
|
||||||
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to 'trim-disk'.");
|
Log(LOG_LEVEL_ERROR, "Too many arguments supplied to command 'trim-disk'.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* entry_identifier = argv[0];
|
// Extract the entry identifier
|
||||||
|
const char* entry_id = argv[0];
|
||||||
|
|
||||||
Status status = TrimEntryDisk(entry_identifier);
|
// Trim the disk
|
||||||
|
Status status = TrimEntryDisk(entry_id);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
Log(LOG_LEVEL_INFO, "Trimmed disk of entry '%s'.", entry_identifier);
|
Log(LOG_LEVEL_INFO, "Successfully trimmed disk from entry '%s'.", entry_id);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user