[darwinbuild-changes] [926] branches/PR-8817822/darwintrace/darwintrace.c
source_changes at macosforge.org
source_changes at macosforge.org
Tue Feb 8 11:30:57 PST 2011
Revision: 926
http://trac.macosforge.org/projects/darwinbuild/changeset/926
Author: wsiegrist at apple.com
Date: 2011-02-08 11:30:55 -0800 (Tue, 08 Feb 2011)
Log Message:
-----------
More cleanup, remove __s
Modified Paths:
--------------
branches/PR-8817822/darwintrace/darwintrace.c
Modified: branches/PR-8817822/darwintrace/darwintrace.c
===================================================================
--- branches/PR-8817822/darwintrace/darwintrace.c 2011-02-08 19:06:43 UTC (rev 925)
+++ branches/PR-8817822/darwintrace/darwintrace.c 2011-02-08 19:30:55 UTC (rev 926)
@@ -46,8 +46,8 @@
#define DARWINTRACE_LOG_FULL_PATH 1
#define DARWINTRACE_DEBUG_OUTPUT 0
-#define START_FD 81
-#define BUFFER_SIZE 1024
+#define DARWINTRACE_START_FD 81
+#define DARWINTRACE_BUFFER_SIZE 1024
#if DARWINTRACE_DEBUG_OUTPUT
#define dprintf(...) fprintf(stderr, __VA_ARGS__)
@@ -59,16 +59,16 @@
__attribute__((used)) static struct{ const void* replacement; const void* replacee; } _interpose_##_replacee \
__attribute__ ((section ("__DATA,__interpose"))) = { (const void*)(unsigned long)&_replacement, (const void*)(unsigned long)&_replacee };
-static int __darwintrace_fd = -2;
-static char __darwintrace_progname[BUFFER_SIZE];
-static pid_t __darwintrace_pid = -1;
+static int darwintrace_fd = -2;
+static char darwintrace_progname[DARWINTRACE_BUFFER_SIZE];
+static pid_t darwintrace_pid = -1;
/**
* Redirect file access
*/
-static char *__darwintrace_redirect = NULL;
-static char *__darwintrace_buildroot = NULL;
-static const char *__redirect_exceptions[] = {
+static char *darwintrace_redirect = NULL;
+static char *darwintrace_buildroot = NULL;
+static const char *darwintrace_exceptions[] = {
"/Developer/Library/Private",
"/Developer/Library/Frameworks",
"/Developer/usr/bin/../../Library/Private",
@@ -90,10 +90,11 @@
};
/* check if str starts with one of the exceptions */
-static inline bool __except(const char *str) {
- size_t i, __exception_count = sizeof(__redirect_exceptions)/sizeof(*__redirect_exceptions);
- for (i = 0; i < __exception_count; i++) {
- if (strncmp(__redirect_exceptions[i], str, strlen(__redirect_exceptions[i])) == 0) {
+static inline bool darwintrace_except(const char *str) {
+ size_t c = sizeof(darwintrace_exceptions)/sizeof(*darwintrace_exceptions);
+ size_t i;
+ for (i = 0; i < c; i++) {
+ if (strncmp(darwintrace_exceptions[i], str, strlen(darwintrace_exceptions[i])) == 0) {
return true;
}
}
@@ -101,81 +102,77 @@
}
/* apply redirection heuristic to path */
-static inline char* __redirect_path(const char* path) {
+static inline char* darwintrace_redirect_path(const char* path) {
char *redirpath;
redirpath = (char *)path;
- if (__darwintrace_redirect
+ if (darwintrace_redirect
&& path[0] == '/'
- && !__except(path)
- && strncmp(__darwintrace_buildroot, path, strlen(__darwintrace_buildroot))!=0
- && strncmp(__darwintrace_redirect, path, strlen(__darwintrace_redirect))!=0 ) {
- asprintf(&redirpath, "%s%s%s", __darwintrace_redirect, (*path == '/' ? "" : "/"), path);
+ && !darwintrace_except(path)
+ && strncmp(darwintrace_buildroot, path, strlen(darwintrace_buildroot))!=0
+ && strncmp(darwintrace_redirect, path, strlen(darwintrace_redirect))!=0 ) {
+ asprintf(&redirpath, "%s%s%s", darwintrace_redirect, (*path == '/' ? "" : "/"), path);
dprintf("darwintrace: redirect %s -> %s\n", path, redirpath);
}
return redirpath;
}
/* free path if not the same as test */
-static inline void __free_path(char* path, const char* test) {
+static inline void darwintrace_free_path(char* path, const char* test) {
if (path != test) free(path);
}
-static inline void __darwintrace_setup() {
- if (__darwintrace_fd == -2) {
+static inline void darwintrace_setup() {
+ if (darwintrace_fd == -2) {
char* path = getenv("DARWINTRACE_LOG");
if (path != NULL) {
- int olderrno = errno;
- int fd = open(path,
- O_CREAT | O_WRONLY | O_APPEND,
- DEFFILEMODE);
- int newfd;
- for(newfd = START_FD; newfd < START_FD + 21; newfd++) {
- if(-1 == write(newfd, "", 0) && errno == EBADF) {
- if(-1 != dup2(fd, newfd))
- __darwintrace_fd = newfd;
- close(fd);
- fcntl(__darwintrace_fd, F_SETFD, 1); /* close-on-exec */
- break;
- }
- }
- errno = olderrno;
+ int olderrno = errno;
+ int fd = open(path,
+ O_CREAT | O_WRONLY | O_APPEND,
+ DEFFILEMODE);
+ int newfd;
+ for(newfd = DARWINTRACE_START_FD; newfd < DARWINTRACE_START_FD + 21; newfd++) {
+ if(-1 == write(newfd, "", 0) && errno == EBADF) {
+ if(-1 != dup2(fd, newfd))
+ darwintrace_fd = newfd;
+ close(fd);
+ fcntl(darwintrace_fd, F_SETFD, 1); /* close-on-exec */
+ break;
+ }
+ }
+ errno = olderrno;
}
/* read env vars needed for redirection */
- __darwintrace_redirect = getenv("DARWINTRACE_REDIRECT");
- __darwintrace_buildroot = getenv("DARWIN_BUILDROOT");
+ darwintrace_redirect = getenv("DARWINTRACE_REDIRECT");
+ darwintrace_buildroot = getenv("DARWIN_BUILDROOT");
}
- if (__darwintrace_pid == -1) {
- __darwintrace_pid = getpid();
+ if (darwintrace_pid == -1) {
+ darwintrace_pid = getpid();
char** progname = _NSGetProgname();
if (progname && *progname) {
- if (strlcpy(__darwintrace_progname, *progname, sizeof(__darwintrace_progname))
- >= sizeof(__darwintrace_progname)) {
+ if (strlcpy(darwintrace_progname, *progname, sizeof(darwintrace_progname)) >= sizeof(darwintrace_progname)) {
dprintf("darwintrace: progname too long to copy: %s\n", *progname);
}
}
}
}
-/* __darwintrace_setup must have been called already */
-static inline void __darwintrace_logpath(int fd, const char *procname, char *tag, const char *path) {
- char __darwintrace_buf[BUFFER_SIZE];
- int size;
-
- size = snprintf(__darwintrace_buf, sizeof(__darwintrace_buf),
- "%s[%d]\t%s\t%s\n",
- procname ? procname : __darwintrace_progname, __darwintrace_pid,
- tag, path );
-
- write(fd, __darwintrace_buf, size);
+/* darwintrace_setup must have been called already */
+static inline void darwintrace_logpath(int fd, const char *procname, char *tag, const char *path) {
+ char darwintrace_buf[DARWINTRACE_BUFFER_SIZE];
+ int size = snprintf(darwintrace_buf, sizeof(darwintrace_buf),
+ "%s[%d]\t%s\t%s\n",
+ procname ? procname : darwintrace_progname, darwintrace_pid,
+ tag, path);
+ write(fd, darwintrace_buf, size);
fsync(fd);
}
/* remap resource fork access to the data fork.
* do a partial realpath(3) to fix "foo//bar" to "foo/bar"
*/
-static inline void __darwintrace_cleanup_path(char *path) {
+static inline void darwintrace_cleanup_path(char *path) {
size_t pathlen, rsrclen;
size_t i, shiftamount;
enum { SAWSLASH, NOTHING } state = NOTHING;
@@ -226,15 +223,15 @@
int result;
va_list args;
- char* redirpath = __redirect_path(path);
+ char* redirpath = darwintrace_redirect_path(path);
va_start(args, flags);
mode = va_arg(args, int);
va_end(args);
result = open(redirpath, flags, mode);
if (result >= 0 && (flags & (O_CREAT | O_WRONLY /*O_RDWR*/)) == 0 ) {
- __darwintrace_setup();
- if (__darwintrace_fd >= 0) {
+ darwintrace_setup();
+ if (darwintrace_fd >= 0) {
char realpath[MAXPATHLEN];
#if DARWINTRACE_LOG_FULL_PATH
int usegetpath = 1;
@@ -265,12 +262,12 @@
}
}
- __darwintrace_cleanup_path(realpath);
- __darwintrace_logpath(__darwintrace_fd, NULL, "open", realpath);
+ darwintrace_cleanup_path(realpath);
+ darwintrace_logpath(darwintrace_fd, NULL, "open", realpath);
}
}
- __free_path(redirpath, path);
+ darwintrace_free_path(redirpath, path);
return result;
}
DARWINTRACE_INTERPOSE(darwintrace_open, open)
@@ -282,11 +279,11 @@
ssize_t darwintrace_readlink(const char * path, char * buf, size_t bufsiz) {
ssize_t result;
- char* redirpath = __redirect_path(path);
+ char* redirpath = darwintrace_redirect_path(path);
result = readlink(redirpath, buf, bufsiz);
if (result >= 0) {
- __darwintrace_setup();
- if (__darwintrace_fd >= 0) {
+ darwintrace_setup();
+ if (darwintrace_fd >= 0) {
char realpath[MAXPATHLEN];
dprintf("darwintrace: original readlink path is %s\n", redirpath);
@@ -295,12 +292,12 @@
dprintf("darwintrace: in readlink: path too long to copy: %s\n", redirpath);
}
- __darwintrace_cleanup_path(realpath);
- __darwintrace_logpath(__darwintrace_fd, NULL, "readlink", realpath);
+ darwintrace_cleanup_path(realpath);
+ darwintrace_logpath(darwintrace_fd, NULL, "readlink", realpath);
}
}
- __free_path(redirpath, path);
+ darwintrace_free_path(redirpath, path);
return result;
}
DARWINTRACE_INTERPOSE(darwintrace_readlink, readlink)
@@ -309,9 +306,9 @@
int darwintrace_execve(const char* path, char* const argv[], char* const envp[]) {
int result;
- char* redirpath = __redirect_path(path);
- __darwintrace_setup();
- if (__darwintrace_fd >= 0) {
+ char* redirpath = darwintrace_redirect_path(path);
+ darwintrace_setup();
+ if (darwintrace_fd >= 0) {
struct stat sb;
char realpath[MAXPATHLEN];
int printorig = 0;
@@ -350,8 +347,8 @@
dprintf("darwintrace: in execve: path too long to copy: %s\n", redirpath);
}
- __darwintrace_cleanup_path(realpath);
- __darwintrace_logpath(__darwintrace_fd, NULL, "execve", realpath);
+ darwintrace_cleanup_path(realpath);
+ darwintrace_logpath(darwintrace_fd, NULL, "execve", realpath);
}
fd = open(redirpath, O_RDONLY, 0);
@@ -378,8 +375,8 @@
}
}
- __darwintrace_cleanup_path(realpath);
- __darwintrace_logpath(__darwintrace_fd, NULL, "execve", realpath);
+ darwintrace_cleanup_path(realpath);
+ darwintrace_logpath(darwintrace_fd, NULL, "execve", realpath);
}
bzero(buffer, sizeof(buffer));
@@ -418,8 +415,8 @@
procname++;
}
- __darwintrace_cleanup_path(interp);
- __darwintrace_logpath(__darwintrace_fd, procname, "execve", interp);
+ darwintrace_cleanup_path(interp);
+ darwintrace_logpath(darwintrace_fd, procname, "execve", interp);
}
}
@@ -429,7 +426,7 @@
}
result = execve(redirpath, argv, envp);
- __free_path(redirpath, path);
+ darwintrace_free_path(redirpath, path);
return result;
}
DARWINTRACE_INTERPOSE(darwintrace_execve, execve)
@@ -440,7 +437,7 @@
attempts to close our file descriptor
*/
int darwintrace_close(int fd) {
- if(__darwintrace_fd != -2 && fd == __darwintrace_fd) {
+ if(darwintrace_fd != -2 && fd == darwintrace_fd) {
errno = EBADF;
return -1;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20110208/aeff5f7c/attachment-0001.html>
More information about the darwinbuild-changes
mailing list