pkgsrc/sysutils/xfsprogs/patches/patch-ad

202 lines
5.3 KiB
Text
Raw Normal View History

$NetBSD: patch-ad,v 1.1.1.1 2005/12/30 23:03:05 agc Exp $
--- /dev/null 2005-12-29 13:42:11.000000000 +0000
+++ include/netbsd.h 2005-12-29 14:07:41.000000000 +0000
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2004 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/
+ *
+ */
+#ifndef __XFS_NetBSD_H__
+#define __XFS_NetBSD_H__
+
+#include <sys/stat.h>
+#include <sys/param.h>
+#include <sys/ioctl.h>
+#include <sys/ioccom.h>
+#include <sys/mount.h>
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+# include <sys/statvfs.h>
+#else
+# include <sys/statfs.h>
+#endif
+#include <ctype.h>
+#include <libgen.h>
+#include <paths.h>
+#include <uuid.h>
+
+#include <sys/endian.h>
+
+#define __bswap16 htobe16
+#define __bswap32 htobe32
+#define __bswap64 htobe64
+
+/* NetBSD file API is 64-bit aware */
+#define fstat64 fstat
+#define ftruncate64 ftruncate
+#define lseek64 lseek
+#define stat64 stat
+#define pwrite64 pwrite
+#define pread64 pread
+#define fdatasync fsync
+#define memalign(a,size) valloc(size)
+
+typedef u_int8_t __u8;
+typedef int8_t __s8;
+typedef u_int16_t __u16;
+typedef int16_t __s16;
+typedef u_int32_t __u32;
+typedef int32_t __s32;
+typedef u_int64_t __u64;
+typedef int64_t __s64;
+
+#define constpp char * const *
+
+#define EFSCORRUPTED 990 /* Filesystem is corrupted */
+
+typedef off_t xfs_off_t;
+typedef off_t off64_t;
+typedef __uint64_t xfs_ino_t;
+typedef __uint32_t xfs_dev_t;
+typedef __int64_t xfs_daddr_t;
+typedef char* xfs_caddr_t;
+typedef off_t loff_t;
+
+#ifndef _UCHAR_T_DEFINED
+typedef unsigned char uchar_t;
+#define _UCHAR_T_DEFINED 1
+#endif
+typedef enum { B_FALSE,B_TRUE } boolean_t;
+
+#define O_LARGEFILE 0
+
+#ifndef O_DIRECT
+#define O_DIRECT 0
+#endif
+
+#define HAVE_FID 1
+#define HAVE_SWABMACROS 1
+#define INT_SWAP16(type,var) ((typeof(type))(__bswap16((__u16)(var))))
+#define INT_SWAP32(type,var) ((typeof(type))(__bswap32((__u32)(var))))
+#define INT_SWAP64(type,var) ((typeof(type))(__bswap64((__u64)(var))))
+
+static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p)
+{
+ return ioctl(fd, cmd, p);
+}
+
+static __inline__ int platform_test_xfs_fd(int fd)
+{
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+ struct statvfs buf;
+ if (fstatvfs(fd, &buf) < 0)
+ return 0;
+#else
+ struct statvfs buf;
+ if (fstatvfs(fd, &buf) < 0)
+ return 0;
+#endif
+ return strcpy(buf.f_fstypename, "xfs") == 0;
+}
+
+static __inline__ int platform_test_xfs_path(const char *path)
+{
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+ struct statvfs buf;
+ if (statvfs(path, &buf) < 0)
+ return 0;
+#else
+ struct statvfs buf;
+ if (statvfs(path, &buf) < 0)
+ return 0;
+#endif
+ return strcpy(buf.f_fstypename, "xfs") == 0;
+}
+
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+static __inline__ int platform_fstatfs(int fd, struct statvfs *buf)
+{
+ return fstatvfs(fd, buf);
+}
+#else
+static __inline__ int platform_fstatfs(int fd, struct statfs *buf)
+{
+ return fstatfs(fd, buf);
+}
+#endif
+
+static __inline__ void platform_getoptreset(void)
+{
+ extern int optind;
+ optind = 0;
+}
+
+/*
+ * Implement Linux libuuid functions in terms of DEC DCE's uuid
+ * functions from NetBSD libc.
+ */
+
+static __inline__ int gnu_uuid_compare(uuid_t a, uuid_t b)
+{
+ return uuid_compare(&a, &b, NULL);
+}
+#define uuid_compare gnu_uuid_compare
+
+static __inline__ int uuid_is_null(uuid_t uid)
+{
+ return uuid_is_nil(&uid, NULL);
+}
+
+static __inline__ void uuid_unparse(uuid_t uid, char *buf)
+{
+ uint32_t status;
+ char *str;
+ uuid_to_string(&uid, &str, &status);
+ if (status == uuid_s_ok)
+ strcpy(buf, str);
+ else *buf = '\0';
+ free(str);
+}
+
+static __inline__ int gnu_uuid_parse(const char *buf, uuid_t *uid)
+{
+ uint32_t status;
+ uuid_from_string(buf, uid, &status);
+ return (status == uuid_s_ok);
+}
+#define uuid_parse(s,u) gnu_uuid_parse((s), &(u))
+
+#define uuid_generate(uid) uuid_create(&(uid), NULL)
+#define uuid_clear(uid) uuid_create_nil(&(uid), NULL)
+#define uuid_copy(dst, src) memcpy(&(dst), &(src), sizeof(uuid_t))
+
+#endif /* __XFS_NetBSD_H__ */