- return r;
-}
-
-static int help(void) {
-
- printf("%s [OPTIONS...] [DIRECTORY]\n\n"
- "Collect read-ahead data on early boot.\n\n"
- " -h --help Show this help\n"
- " --max-files=INT Maximum number of files to read ahead\n"
- " --max-file-size=BYTES Maximum size of files to read ahead\n"
- " --timeout=USEC Maximum time to spend collecting data\n",
- program_invocation_short_name);
-
- return 0;
-}
-
-static int parse_argv(int argc, char *argv[]) {
-
- enum {
- ARG_FILES_MAX = 0x100,
- ARG_FILE_SIZE_MAX,
- ARG_TIMEOUT
- };
-
- static const struct option options[] = {
- { "help", no_argument, NULL, 'h' },
- { "files-max", required_argument, NULL, ARG_FILES_MAX },
- { "file-size-max", required_argument, NULL, ARG_FILE_SIZE_MAX },
- { "timeout", required_argument, NULL, ARG_TIMEOUT },
- { NULL, 0, NULL, 0 }
- };
-
- int c;
-
- assert(argc >= 0);
- assert(argv);
-
- while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) {
-
- switch (c) {
-
- case 'h':
- help();
- return 0;
-
- case ARG_FILES_MAX:
- if (safe_atou(optarg, &arg_files_max) < 0 || arg_files_max <= 0) {
- log_error("Failed to parse maximum number of files %s.", optarg);
- return -EINVAL;
- }
- break;
-
- case ARG_FILE_SIZE_MAX: {
- unsigned long long ull;
-
- if (safe_atollu(optarg, &ull) < 0 || ull <= 0) {
- log_error("Failed to parse maximum file size %s.", optarg);
- return -EINVAL;
- }
-
- arg_file_size_max = (off_t) ull;
- break;
- }
-
- case ARG_TIMEOUT:
- if (parse_usec(optarg, &arg_timeout) < 0 || arg_timeout <= 0) {
- log_error("Failed to parse timeout %s.", optarg);
- return -EINVAL;
- }
-
- break;
-
- case '?':
- return -EINVAL;