14aeb1c05SPaul Saab /*-
2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause
31de7b4b8SPedro F. Giffuni *
44aeb1c05SPaul Saab * Copyright (c) 2000 Paul Saab <ps@FreeBSD.org>
54aeb1c05SPaul Saab * All rights reserved.
64aeb1c05SPaul Saab *
74aeb1c05SPaul Saab * Redistribution and use in source and binary forms, with or without
84aeb1c05SPaul Saab * modification, are permitted provided that the following conditions
94aeb1c05SPaul Saab * are met:
104aeb1c05SPaul Saab * 1. Redistributions of source code must retain the above copyright
114aeb1c05SPaul Saab * notice, this list of conditions and the following disclaimer.
124aeb1c05SPaul Saab * 2. Redistributions in binary form must reproduce the above copyright
134aeb1c05SPaul Saab * notice, this list of conditions and the following disclaimer in the
144aeb1c05SPaul Saab * documentation and/or other materials provided with the distribution.
154aeb1c05SPaul Saab *
164aeb1c05SPaul Saab * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
174aeb1c05SPaul Saab * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
184aeb1c05SPaul Saab * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
194aeb1c05SPaul Saab * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
204aeb1c05SPaul Saab * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
214aeb1c05SPaul Saab * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
224aeb1c05SPaul Saab * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
234aeb1c05SPaul Saab * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
244aeb1c05SPaul Saab * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
254aeb1c05SPaul Saab * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
264aeb1c05SPaul Saab * SUCH DAMAGE.
274aeb1c05SPaul Saab */
284aeb1c05SPaul Saab
294aeb1c05SPaul Saab #include <err.h>
304aeb1c05SPaul Saab #include <fcntl.h>
314aeb1c05SPaul Saab #include <stdio.h>
32948a3f54SDima Dorfman #include <stdlib.h>
334aeb1c05SPaul Saab #include <sysexits.h>
344aeb1c05SPaul Saab #include <unistd.h>
354aeb1c05SPaul Saab
36e5faa1a4SSuleiman Souhlal static void usage(void);
374aeb1c05SPaul Saab
384aeb1c05SPaul Saab int
main(int argc,char * argv[])394aeb1c05SPaul Saab main(int argc, char *argv[])
404aeb1c05SPaul Saab {
414aeb1c05SPaul Saab int fd;
424aeb1c05SPaul Saab int i;
43e5faa1a4SSuleiman Souhlal int rval;
444aeb1c05SPaul Saab
4539aa7c9dSXin LI if (argc < 2) {
464aeb1c05SPaul Saab usage();
4739aa7c9dSXin LI /* NOTREACHED */
4839aa7c9dSXin LI }
494aeb1c05SPaul Saab
5039aa7c9dSXin LI rval = EX_OK;
514aeb1c05SPaul Saab for (i = 1; i < argc; ++i) {
5239aa7c9dSXin LI if ((fd = open(argv[i], O_RDONLY)) == -1) {
53e5faa1a4SSuleiman Souhlal warn("open %s", argv[i]);
5439aa7c9dSXin LI if (rval == EX_OK)
5539aa7c9dSXin LI rval = EX_NOINPUT;
56e5faa1a4SSuleiman Souhlal continue;
57e5faa1a4SSuleiman Souhlal }
584aeb1c05SPaul Saab
5939aa7c9dSXin LI if (fsync(fd) == -1) {
60e5faa1a4SSuleiman Souhlal warn("fsync %s", argv[i]);
6139aa7c9dSXin LI if (rval == EX_OK)
6239aa7c9dSXin LI rval = EX_OSERR;
63e5faa1a4SSuleiman Souhlal }
644aeb1c05SPaul Saab close(fd);
654aeb1c05SPaul Saab }
6639aa7c9dSXin LI exit(rval);
6739aa7c9dSXin LI /* NOTREACHED */
684aeb1c05SPaul Saab }
694aeb1c05SPaul Saab
70e5faa1a4SSuleiman Souhlal static void
usage(void)7139aa7c9dSXin LI usage(void)
724aeb1c05SPaul Saab {
7339aa7c9dSXin LI
74176e8228SPaul Saab fprintf(stderr, "usage: fsync file ...\n");
754aeb1c05SPaul Saab exit(EX_USAGE);
7639aa7c9dSXin LI /* NOTREACHED */
774aeb1c05SPaul Saab }
78