[Box Backup-dev] COMMIT r299 - in box/trunk: . infrastructure lib/backupclient test/raidfile

boxbackup-dev@fluffy.co.uk boxbackup-dev@fluffy.co.uk
Thu, 5 Jan 2006 22:01:36 +0000 (GMT)


Author: ben
Date: 2006-01-05 22:01:34 +0000 (Thu, 05 Jan 2006)
New Revision: 299

Removed:
   box/trunk/test/raidfile/Darwin-SYS.h
   box/trunk/test/raidfile/Makefile.extra.Darwin
   box/trunk/test/raidfile/make-darwin-intercepts.pl
Modified:
   box/trunk/configure.ac
   box/trunk/infrastructure/BoxPlatform.pm.in
   box/trunk/lib/backupclient/BackupClientFileAttributes.cpp
Log:
Fix for Darwin: xattr support, remove nasty assembler intercept code, cosmetic in configure

Modified: box/trunk/configure.ac
===================================================================
--- box/trunk/configure.ac	2006-01-04 00:31:49 UTC (rev 298)
+++ box/trunk/configure.ac	2006-01-05 22:01:34 UTC (rev 299)
@@ -125,6 +125,8 @@
 AC_CHECK_FUNCS([getpeereid kqueue lchown setproctitle])
 AX_FUNC_SYSCALL
 AX_CHECK_SYSCALL_LSEEK
+AC_CHECK_FUNCS([listxattr llistxattr getxattr lgetxattr setxattr lsetxattr])
+AC_CHECK_DECLS([XATTR_NOFOLLOW],,, [[#include <sys/xattr.h>]])
 
 
 ### Miscellaneous complicated feature checks

Modified: box/trunk/infrastructure/BoxPlatform.pm.in
===================================================================
--- box/trunk/infrastructure/BoxPlatform.pm.in	2006-01-04 00:31:49 UTC (rev 298)
+++ box/trunk/infrastructure/BoxPlatform.pm.in	2006-01-05 22:01:34 UTC (rev 299)
@@ -51,7 +51,7 @@
 		# test for fink installation
 		if(-d '/sw/include' && -d '/sw/lib')
 		{
-			print "Fink installation detected, will use headers and libraries\n";
+			print "Fink installation detected, will use headers and libraries\n\n\n";
 			$platform_compile_line_extra = '-I/sw/include ';
 			$platform_link_line_extra = '-L/sw/lib ';
 		}

Modified: box/trunk/lib/backupclient/BackupClientFileAttributes.cpp
===================================================================
--- box/trunk/lib/backupclient/BackupClientFileAttributes.cpp	2006-01-04 00:31:49 UTC (rev 298)
+++ box/trunk/lib/backupclient/BackupClientFileAttributes.cpp	2006-01-05 22:01:34 UTC (rev 299)
@@ -33,6 +33,19 @@
 
 #include "MemLeakFindOn.h"
 
+// Handle differing xattr APIs
+#ifdef HAVE_SYS_XATTR_H
+	#if !defined(HAVE_LLISTXATTR) && defined(HAVE_LISTXATTR) && HAVE_DECL_XATTR_NOFOLLOW
+		#define llistxattr(a,b,c) listxattr(a,b,c,XATTR_NOFOLLOW)
+	#endif
+	#if !defined(HAVE_LGETXATTR) && defined(HAVE_GETXATTR) && HAVE_DECL_XATTR_NOFOLLOW
+		#define lgetxattr(a,b,c,d) getxattr(a,b,c,d,0,XATTR_NOFOLLOW)
+	#endif
+	#if !defined(HAVE_LSETXATTR) && defined(HAVE_SETXATTR) && HAVE_DECL_XATTR_NOFOLLOW
+		#define lsetxattr(a,b,c,d,e) setxattr(a,b,c,d,0,(e)|XATTR_NOFOLLOW)
+	#endif
+#endif
+
 // set packing to one byte
 #ifdef STRUCTURE_PACKING_FOR_WIRE_USE_HEADERS
 #include "BeginStructPackForWire.h"

Deleted: box/trunk/test/raidfile/Darwin-SYS.h
===================================================================
--- box/trunk/test/raidfile/Darwin-SYS.h	2006-01-04 00:31:49 UTC (rev 298)
+++ box/trunk/test/raidfile/Darwin-SYS.h	2006-01-05 22:01:34 UTC (rev 299)
@@ -1,167 +0,0 @@
-
-/* Taken from the Darwin Libc source
-*/
-
-/*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- * 
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License").  You may not use this file except in compliance with the
- * License.  Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
- * 
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
- * 
- * @APPLE_LICENSE_HEADER_END@
- */
-/* Copyright (c) 1992 NeXT Computer, Inc.  All rights reserved.
- *
- *	File:	SYS.h
- *
- *	Definition of the user side of the UNIX system call interface
- *	for M98K.
- *
- *	Errors are flagged by the location of the trap return (ie., which
- *	instruction is executed upon rfi):
- *
- *		SC PC + 4:	Error (typically branch to cerror())
- *		SC PC + 8:	Success
- *
- * HISTORY
- * 18-Nov-92	Ben Fathi (benf@next.com)
- *	Ported to m98k.
- *
- *  9-Jan-92	Peter King (king@next.com)
- *	Created.
- */
-
-#define KERNEL_PRIVATE	1
-/*
- * Header files.
- */
-#import	<architecture/ppc/asm_help.h>
-#import	<architecture/ppc/pseudo_inst.h>
-#import	<mach/ppc/exception.h>
-#import	<sys/syscall.h>
-
-/* From rhapsody kernel mach/ppc/syscall_sw.h */
-#define	kernel_trap_args_0
-#define	kernel_trap_args_1
-#define	kernel_trap_args_2
-#define	kernel_trap_args_3
-#define	kernel_trap_args_4
-#define	kernel_trap_args_5
-#define	kernel_trap_args_6
-#define	kernel_trap_args_7
-
-/*
- * simple_kernel_trap -- Mach system calls with 8 or less args
- * Args are passed in a0 - a7, system call number in r0.
- * Do a "sc" instruction to enter kernel.
- */	
-#define simple_kernel_trap(trap_name, trap_number)	\
-	.globl	_##trap_name				@\
-_##trap_name:						@\
-	li	r0,trap_number				 @\
-	sc						 @\
-	blr						 @\
-	END(trap_name)
-
-#define kernel_trap_0(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_1(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_2(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_3(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_4(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_5(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_6(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_7(trap_name,trap_number)		 \
-	simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_8(trap_name,trap_number)		 \
-        simple_kernel_trap(trap_name,trap_number)
-
-#define kernel_trap_9(trap_name,trap_number)		 \
-        simple_kernel_trap(trap_name,trap_number)
-
-/* End of rhapsody kernel mach/ppc/syscall_sw.h */
-
-/*
- * Macros.
- */
-
-#define	SYSCALL(name, nargs)			\
-	.globl	cerror				@\
-LEAF(_##name)					@\
-	kernel_trap_args_##nargs		@\
-	li	r0,SYS_##name			@\
-	sc					@\
-	b	1f   				@\
-	b	2f				@\
-1:	BRANCH_EXTERN(cerror)			@\
-.text						\
-2:	nop
-
-#define	SYSCALL_NONAME(name, nargs)		\
-	.globl	cerror				@\
-	kernel_trap_args_##nargs		@\
-	li	r0,SYS_##name			@\
-	sc					@\
-	b	1f   				@\
-	b	2f				@\
-1:	BRANCH_EXTERN(cerror)			@\
-.text						\
-2:	nop
-
-#define	PSEUDO(pseudo, name, nargs)		\
-LEAF(_##pseudo)					@\
-	SYSCALL_NONAME(name, nargs)
-
-
-#undef END
-#import	<mach/ppc/syscall_sw.h>
-
-#if !defined(SYS_getdirentriesattr)
-#define SYS_getdirentriesattr 222
-#endif
-
-#if !defined(SYS_semsys)
-#define SYS_semsys	251
-#define SYS_msgsys	252
-#define SYS_shmsys	253
-#define SYS_semctl	254
-#define SYS_semget	255
-#define SYS_semop	256
-#define SYS_semconfig	257
-#define SYS_msgctl	258
-#define SYS_msgget	259
-#define SYS_msgsnd	260
-#define SYS_msgrcv	261
-#define SYS_shmat	262
-#define SYS_shmctl	263
-#define SYS_shmdt	264
-#define SYS_shmget	265
-#endif
- 

Deleted: box/trunk/test/raidfile/Makefile.extra.Darwin
===================================================================
--- box/trunk/test/raidfile/Makefile.extra.Darwin	2006-01-04 00:31:49 UTC (rev 298)
+++ box/trunk/test/raidfile/Makefile.extra.Darwin	2006-01-05 22:01:34 UTC (rev 299)
@@ -1,6 +0,0 @@
-
-# link-extra: intercept-lseek.o intercept-close.o intercept-open.o intercept-read.o intercept-readv.o intercept-write.o
-
-$(OUTDIR)/intercept-lseek.o:	make-darwin-intercepts.pl $(OUTDIR)
-	./make-darwin-intercepts.pl $(OUTDIR)
-

Deleted: box/trunk/test/raidfile/make-darwin-intercepts.pl
===================================================================
--- box/trunk/test/raidfile/make-darwin-intercepts.pl	2006-01-04 00:31:49 UTC (rev 298)
+++ box/trunk/test/raidfile/make-darwin-intercepts.pl	2006-01-05 22:01:34 UTC (rev 299)
@@ -1,46 +0,0 @@
-#!/usr/bin/perl
-use strict;
-
-my $out = $ARGV[0];
-die "No out directory specified" unless $out ne '';
-
-my @calls = split /[\r\n]+/,<<__E;
-lseek SYSCALL_TEST(lseek, 3)
-open SYSCALL_TEST(open, 3)
-close SYSCALL_TEST(close, 1)
-write SYSCALL_TEST(write, 3)
-read SYSCALL_TEST(read, 3)
-readv SYSCALL_TEST(readv, 3)
-__E
-
-for(@calls)
-{
-	my ($name,$line) = split / /,$_,2;
-	
-	open FL,">$out/intercept-$name.s" or die "Can't open out file";
-	print FL <<'__S';
-#include "../../../test/raidfile/Darwin-SYS.h"
-
-#define	SYSCALL_TEST(name, nargs)			\
-	.globl	cerror				@\
-LEAF(_TEST_##name)					@\
-	kernel_trap_args_##nargs		@\
-	li	r0,SYS_##name			@\
-	sc					@\
-	b	1f   				@\
-	b	2f				@\
-1:	BRANCH_EXTERN(cerror)			@\
-.text						\
-2:	nop
-
-__S
-	print FL $line,"\n\tblr\n\n";
-
-	close FL;
-	
-	if(system("gcc -c $out/intercept-$name.s -o $out/intercept-$name.o") != 0)
-	{
-		die "Assembly failed\n";
-	}
-}
-