[74318] trunk/base/src/darwintracelib1.0

jmr at macports.org jmr at macports.org
Sun Dec 12 01:30:25 PST 2010


Revision: 74318
          http://trac.macports.org/changeset/74318
Author:   jmr at macports.org
Date:     2010-12-12 01:30:21 -0800 (Sun, 12 Dec 2010)
Log Message:
-----------
wrap stat64 and lstat64 in darwintracelib (fixes #21582)

Modified Paths:
--------------
    trunk/base/src/darwintracelib1.0/Makefile
    trunk/base/src/darwintracelib1.0/darwintrace.c

Modified: trunk/base/src/darwintracelib1.0/Makefile
===================================================================
--- trunk/base/src/darwintracelib1.0/Makefile	2010-12-12 05:16:24 UTC (rev 74317)
+++ trunk/base/src/darwintracelib1.0/Makefile	2010-12-12 09:30:21 UTC (rev 74318)
@@ -7,6 +7,8 @@
 include ../../Mk/macports.autoconf.mk
 
 CFLAGS+= -fPIC
+# will need to update this to cope with 64-bit inodes someday
+CPPFLAGS+= -D_DARWIN_NO_64_BIT_INODE
 
 all:: ${SHLIB_NAME}
 

Modified: trunk/base/src/darwintracelib1.0/darwintrace.c
===================================================================
--- trunk/base/src/darwintracelib1.0/darwintrace.c	2010-12-12 05:16:24 UTC (rev 74317)
+++ trunk/base/src/darwintracelib1.0/darwintrace.c	2010-12-12 09:30:21 UTC (rev 74318)
@@ -465,6 +465,8 @@
  */
 static int is_directory(const char * path)
 {
+/* will need to update this to cope with 64-bit inodes someday - for now, we
+ build with -D_DARWIN_NO_64_BIT_INODE */
 #define stat(path, sb) syscall(SYS_stat, path, sb)
 	struct stat s;
 	if(stat(path, &s)==-1)
@@ -920,9 +922,37 @@
 #undef stat
 }
 
+int stat64(const char * path, struct stat64 * sb)
+{
+#define stat64(path, sb) syscall(SYS_stat64, path, sb)
+	int result=0;
+	char newpath[260];
+		
+	*newpath=0;
+	if(!is_directory(path)&&__darwintrace_is_in_sandbox(path, newpath)==0)
+	{
+		errno=ENOENT;
+		result=-1;
+	}else
+	{
+		if(*newpath)
+			path=newpath;
+			
+		result=stat64(path, sb);
+	}
+	
+	return result;
+#undef stat64
+}
+
+int stat$INODE64(const char * path, struct stat64 * sb)
+{
+    return stat64(path, sb);
+}
+
 int lstat(const char * path, struct stat * sb)
 {
-#define stat(path, sb) syscall(SYS_lstat, path, sb)
+#define lstat(path, sb) syscall(SYS_lstat, path, sb)
 	int result=0;
 	char newpath[260];
 	
@@ -936,9 +966,37 @@
 		if(*newpath)
 			path=newpath;
 			
-		result=stat(path, sb);
+		result=lstat(path, sb);
 	}
 	
 	return result;
-#undef stat
+#undef lstat
 }
+
+int lstat64(const char * path, struct stat64 * sb)
+{
+#define lstat64(path, sb) syscall(SYS_lstat64, path, sb)
+	int result=0;
+	char newpath[260];
+	
+	*newpath=0;
+	if(!is_directory(path)&&__darwintrace_is_in_sandbox(path, newpath)==0)
+	{
+		errno=ENOENT;
+		result=-1;
+	}else
+	{
+		if(*newpath)
+			path=newpath;
+			
+		result=lstat64(path, sb);
+	}
+	
+	return result;
+#undef lstat64
+}
+
+int lstat$INODE64(const char * path, struct stat64 * sb)
+{
+    return lstat64(path, sb);
+}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20101212/f4aa3678/attachment.html>


More information about the macports-changes mailing list