#include "adu.h"
#include <dirent.h> /* readdir() */
#include <pwd.h>
+#include "format.h"
+#include "select.h"
#include "gcc-compat.h"
#include "cmdline.h"
.column_descriptions = dir_table_cols,
};
+/*
+ * The columns of the per-user tables.
+ *
+ * Adu tracks disk usage on a per-user basis. For each user, a user table is
+ * being created. The rows of the user table have three columns: The directory
+ * number that may be resolved to the path using the directory table, the
+ * number of bytes and the number of files in that directory owned by the given
+ * user.
+ */
static struct osl_column_description user_table_cols[] = {
[UT_DIR_NUM] = {
.storage_type = OSL_MAPPED_STORAGE,
return 1;
}
+static int print_complete_help_and_die(void)
+{
+ const char **line;
+ select_cmdline_parser_init(&select_conf);
+
+ if (conf.help_given)
+ line = gengetopt_args_info_help;
+ else
+ line = gengetopt_args_info_detailed_help;
+
+ printf("adu command line options:\n");
+ printf("=========================\n");
+ for (; *line; line++)
+ printf("%s\n", *line);
+ if (conf.help_given)
+ line = select_args_info_help;
+ else
+ line = select_args_info_detailed_help;
+ printf("select options:\n");
+ printf("===============\n");
+ for (; *line; line++)
+ printf("%s\n", *line);
+ printf("interactive commands:\n");
+ printf("=====================\n");
+ print_interactive_help();
+ exit(EXIT_FAILURE);
+}
+
int main(int argc, char **argv)
{
int ret;
struct cmdline_parser_params params = {
.override = 0,
.initialize = 1,
- .check_required = 1,
- .check_ambiguity = 1,
- .print_errors = 1
+ .check_required = 0,
+ .check_ambiguity = 0,
+ .print_errors = 0
};
+ /* ignore errors and print complete help if --help was given */
+ cmdline_parser_ext(argc, argv, &conf, ¶ms);
+ if (conf.help_given || conf.detailed_help_given)
+ print_complete_help_and_die();
+ params.check_required = 1;
+ params.check_ambiguity = 1;
+ params.print_errors = 1;
+ ret = cmdline_parser_ext(argc, argv, &conf, ¶ms);
+ if (ret)
+ exit(EXIT_FAILURE);
- cmdline_parser_ext(argc, argv, &conf, ¶ms); /* aborts on errors */
ret = check_args();
if (ret < 0)
goto out;