|
51 | 51 | #define DARWINTRACE_STOP_FD 200 |
52 | 52 | #define DARWINTRACE_BUFFER_SIZE 1024 |
53 | 53 |
|
54 | | -extern void _simple_dprintf(int __fd, const char *__fmt, ...); |
55 | | - |
56 | 54 | #if DARWINTRACE_DEBUG_OUTPUT |
57 | | -#define dprintf(...) _simple_dprintf(STDERR_FILENO, __VA_ARGS__) |
| 55 | +#define dprintf(...) fprintf(stderr, __VA_ARGS__) |
58 | 56 | #else |
59 | 57 | #define dprintf(...) |
60 | 58 | #endif |
@@ -238,9 +236,29 @@ static inline void darwintrace_logpath(int fd, const char *procname, char *tag, |
238 | 236 | } |
239 | 237 | } |
240 | 238 | } |
241 | | - _simple_dprintf(fd, "%s[%d]\t%s\t%s\n", |
242 | | - procname ? procname : darwintrace_progname, darwintrace_pid, |
243 | | - tag, path); |
| 239 | + size_t size; |
| 240 | + char pidstr_bytes[16]; |
| 241 | + char *pidstr = &pidstr_bytes[sizeof(pidstr_bytes)-1]; |
| 242 | + char darwintrace_buf[DARWINTRACE_BUFFER_SIZE]; |
| 243 | + |
| 244 | + pid_t pid = darwintrace_pid; |
| 245 | + *pidstr = 0; |
| 246 | + do { |
| 247 | + --pidstr; |
| 248 | + *pidstr = '0' + (pid % 10); |
| 249 | + pid /= 10; |
| 250 | + } while (pid > 0); |
| 251 | + |
| 252 | + /* "%s[%d]\t%s\t%s\n" */ |
| 253 | + size = strlcpy(darwintrace_buf, procname ? procname : darwintrace_progname, sizeof(darwintrace_buf)); |
| 254 | + size = strlcat(darwintrace_buf, "[", sizeof(darwintrace_buf)); |
| 255 | + size = strlcat(darwintrace_buf, pidstr, sizeof(darwintrace_buf)); |
| 256 | + size = strlcat(darwintrace_buf, "]\t", sizeof(darwintrace_buf)); |
| 257 | + size = strlcat(darwintrace_buf, tag, sizeof(darwintrace_buf)); |
| 258 | + size = strlcat(darwintrace_buf, "\t", sizeof(darwintrace_buf)); |
| 259 | + size = strlcat(darwintrace_buf, path, sizeof(darwintrace_buf)); |
| 260 | + size = strlcat(darwintrace_buf, "\n", sizeof(darwintrace_buf)); |
| 261 | + write(fd, darwintrace_buf, size); |
244 | 262 | } |
245 | 263 |
|
246 | 264 | /* remap resource fork access to the data fork. |
|
0 commit comments