diff options
Diffstat (limited to 'sysutils/xfsprogs/patches/patch-ae')
-rw-r--r-- | sysutils/xfsprogs/patches/patch-ae | 179 |
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; ++} |