summaryrefslogtreecommitdiff
path: root/sysutils/xfsprogs/patches/patch-ae
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/xfsprogs/patches/patch-ae')
-rw-r--r--sysutils/xfsprogs/patches/patch-ae179
1 files changed, 179 insertions, 0 deletions
diff --git a/sysutils/xfsprogs/patches/patch-ae b/sysutils/xfsprogs/patches/patch-ae
new file mode 100644
index 00000000000..a2ac28c0b38
--- /dev/null
+++ b/sysutils/xfsprogs/patches/patch-ae
@@ -0,0 +1,179 @@
+$NetBSD: patch-ae,v 1.1.1.1 2005/12/30 23:03:06 agc Exp $
+
+--- /dev/null 2005-12-29 14:18:54.000000000 +0000
++++ libxfs/netbsd.c 2005-12-29 14:22:31.000000000 +0000
+@@ -0,0 +1,174 @@
++/*
++ * Copyright (c) 2003 Silicon Graphics, Inc. All Rights Reserved.
++ *
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it would be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++ *
++ * Further, this software is distributed without any warranty that it is
++ * free of the rightful claim of any third person regarding infringement
++ * or the like. Any license provided herein, whether implied or
++ * otherwise, applies only to this software file. Patent licenses, if
++ * any, provided herein do not apply to combinations of this program with
++ * other software, or any other product whatsoever.
++ *
++ * You should have received a copy of the GNU General Public License along
++ * with this program; if not, write the Free Software Foundation, Inc., 59
++ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
++ *
++ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
++ * Mountain View, CA 94043, or:
++ *
++ * http://www.sgi.com
++ *
++ * For further information regarding this notice, see:
++ *
++ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
++ */
++
++#include <xfs/libxfs.h>
++#include <sys/types.h>
++#include <sys/param.h>
++#include <sys/stat.h>
++#include <sys/disk.h>
++#include <sys/mount.h>
++#include <sys/ioctl.h>
++
++extern char *progname;
++
++int
++platform_check_ismounted(char *name, char *block, struct stat64 *s, int verbose)
++{
++ struct stat st;
++ int cnt, i;
++#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
++ struct statvfs *fsinfo;
++#else
++ struct statfs *fsinfo;
++#endif
++
++ if (!s) {
++ if (stat(block, &st) < 0)
++ return 0;
++ s = &st;
++ }
++
++ /* Remember, FreeBSD can now mount char devices! -- adrian */
++ if (((st.st_mode & S_IFMT) != S_IFBLK) &&
++ ((st.st_mode & S_IFMT) != S_IFCHR))
++ return 0;
++
++ if ((cnt = getmntinfo(&fsinfo, MNT_NOWAIT)) == 0) {
++ fprintf(stderr,
++ _("%s: %s possibly contains a mounted filesystem\n"),
++ progname, name);
++ return 1;
++ }
++
++ for (i = 0; i < cnt; i++) {
++ if (strcmp (name, fsinfo[i].f_mntfromname) != 0)
++ continue;
++
++ if (verbose)
++ fprintf(stderr,
++ _("%s: %s contains a mounted filesystem\n"),
++ progname, name);
++ break;
++ }
++
++ return (i < cnt);
++}
++
++int
++platform_check_iswritable(char *name, char *block, struct stat64 *s, int fatal)
++{
++ int cnt, i;
++#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
++ struct statvfs *fsinfo;
++#else
++ struct statfs *fsinfo;
++#endif
++
++ if ((cnt = getmntinfo(&fsinfo, MNT_NOWAIT)) == 0) {
++ fprintf(stderr, _("%s: %s contains a possibly writable, "
++ "mounted filesystem\n"), progname, name);
++ return fatal;
++ }
++
++ for (i = 0; i < cnt; i++) {
++ if (strcmp (name, fsinfo[i].f_mntfromname) != 0)
++ continue;
++
++ if (fsinfo[i].f_flag &= MNT_RDONLY)
++ break;
++ }
++
++ if (i == cnt) {
++ fprintf(stderr, _("%s: %s contains a mounted and writable "
++ "filesystem\n"), progname, name);
++ return fatal;
++ }
++ return 0;
++}
++
++void
++platform_set_blocksize(int fd, char *path, int blocksize)
++{
++ return;
++}
++
++void
++platform_flush_device(int fd, dev_t device)
++{
++ return;
++}
++
++void
++platform_findsizes(char *path, int fd, long long *sz, int *bsz)
++{
++ struct stat st;
++ __int64_t size;
++ u_int ssize;
++
++ if (fstat(fd, &st) < 0) {
++ fprintf(stderr, _("%s: "
++ "cannot stat the device file \"%s\": %s\n"),
++ progname, path, strerror(errno));
++ exit(1);
++ }
++
++ if ((st.st_mode & S_IFMT) == S_IFREG) {
++ *sz = (long long)(st.st_size >> 9);
++ *bsz = 512;
++ return;
++ }
++
++ if ((st.st_mode & S_IFMT) != S_IFCHR) {
++ fprintf(stderr, _("%s: "
++ "Not a device or file: \"%s\"n"),
++ progname, path);
++ exit(1);
++ }
++
++ if ((size = st.st_size) == 0) {
++ fprintf(stderr, _("%s: "
++ "zero size: \"%s\"n"),
++ progname, path);
++ exit(1);
++ }
++
++ if ((ssize = st.st_blksize) == 0) {
++ fprintf(stderr, _("%s: "
++ "zero block size \"%s\": %s\n"),
++ progname, path, strerror(errno));
++ exit(1);
++ }
++
++ *sz = (long long) (size / ssize);
++ *bsz = (int)ssize;
++}