blob: 103ce8e5d4f079fc4fbf9bf4fefa47f0697ee082 [file] [log] [blame]
Rob Landley0e4690d2006-08-20 22:12:18 +00001/* vi: set sw=4 ts=4: */
2/*
3 * readahead implementation for busybox
4 *
5 * Preloads the given files in RAM, to reduce access time.
6 * Does this by calling the readahead(2) system call.
7 *
8 * Copyright (C) 2006 Michael Opdenacker <michael@free-electrons.com>
9 *
10 * Licensed under GPLv2 or later, see file License in this tarball for details.
11 */
12
Denis Vlasenkob6adbf12007-05-26 19:00:18 +000013#include "libbb.h"
Rob Landley0e4690d2006-08-20 22:12:18 +000014
Denis Vlasenko06af2162007-02-03 17:28:39 +000015int readahead_main(int argc, char **argv);
Rob Landley0e4690d2006-08-20 22:12:18 +000016int readahead_main(int argc, char **argv)
17{
18 FILE *f;
Rob Landley0e4690d2006-08-20 22:12:18 +000019 int retval = EXIT_SUCCESS;
20
21 if (argc == 1) bb_show_usage();
22
23 while (*++argv) {
Denis Vlasenkoddec5af2006-10-26 23:25:17 +000024 if ((f = fopen_or_warn(*argv, "r")) != NULL) {
Rob Landley0e4690d2006-08-20 22:12:18 +000025 int r, fd=fileno(f);
Denis Vlasenko9213a9e2006-09-17 16:28:10 +000026
Rob Landley0e4690d2006-08-20 22:12:18 +000027 r = readahead(fd, 0, fdlength(fd));
28 fclose(f);
29 if (r >= 0) continue;
30 }
31 retval = EXIT_FAILURE;
32 }
33
34 return retval;
35}