summaryrefslogtreecommitdiff
path: root/coreutils/sync.c (plain)
blob: 1a5aae55eeebb6afc61537b36c3fab0c755196cd
1/* vi: set sw=4 ts=4: */
2/*
3 * Mini sync implementation for busybox
4 *
5 * Copyright (C) 1995, 1996 by Bruce Perens <bruce@pixar.com>.
6 * Copyright (C) 2015 by Ari Sundholm <ari@tuxera.com>
7 *
8 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
9 */
10//config:config SYNC
11//config: bool "sync"
12//config: default y
13//config: help
14//config: sync is used to flush filesystem buffers.
15//config:config FEATURE_SYNC_FANCY
16//config: bool "Enable -d and -f flags (requires syncfs(2) in libc)"
17//config: default y
18//config: depends on SYNC
19//config: help
20//config: sync -d FILE... executes fdatasync() on each FILE.
21//config: sync -f FILE... executes syncfs() on each FILE.
22
23//applet:IF_SYNC(APPLET_NOFORK(sync, sync, BB_DIR_BIN, BB_SUID_DROP, sync))
24
25//kbuild:lib-$(CONFIG_SYNC) += sync.o
26
27/* BB_AUDIT SUSv3 N/A -- Matches GNU behavior. */
28
29//usage:#define sync_trivial_usage
30//usage: ""IF_FEATURE_SYNC_FANCY("[-df] [FILE]...")
31//usage:#define sync_full_usage "\n\n"
32//usage: IF_NOT_FEATURE_SYNC_FANCY(
33//usage: "Write all buffered blocks to disk"
34//usage: )
35//usage: IF_FEATURE_SYNC_FANCY(
36//usage: "Write all buffered blocks (in FILEs) to disk"
37//usage: "\n -d Avoid syncing metadata"
38//usage: "\n -f Sync filesystems underlying FILEs"
39//usage: )
40
41#include "libbb.h"
42
43/* This is a NOFORK applet. Be very careful! */
44
45int sync_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
46int sync_main(int argc UNUSED_PARAM, char **argv IF_NOT_DESKTOP(UNUSED_PARAM))
47{
48 /* coreutils-6.9 compat */
49 bb_warn_ignoring_args(argv[1]);
50
51 sync();
52
53 return EXIT_SUCCESS;
54}
55