]> git.saurik.com Git - apt.git/blob - test/interactive-helper/libnoprofile.c
2cba6dc8b2a881203de9e463666834da145ab3fa
[apt.git] / test / interactive-helper / libnoprofile.c
1 #define _GNU_SOURCE
2 #include <stdarg.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <dlfcn.h>
6 #include <unistd.h>
7 #include <stdio.h>
8
9 int vprintf(const char *format, va_list ap) {
10 static int (*func_fprintf)(const char *format, va_list ap) = NULL;
11 if (func_fprintf == NULL)
12 func_fprintf = (int (*) (const char *format, va_list ap)) dlsym(RTLD_NEXT, "vprintf");
13
14 va_list ap2;
15 va_copy(ap2, ap);
16 if (strncmp(format, "profiling:", strlen("profiling:")) == 0)
17 return 0;
18 int res = func_fprintf(format, ap2);
19 va_end(ap2);
20 return res;
21 }
22 int printf(const char *format, ...) {
23 va_list ap;
24 va_start(ap, format);
25 int res = vprintf(format, ap);
26 va_end(ap);
27 return res;
28 }
29
30 int vfprintf(FILE *stream, const char *format, va_list ap) {
31 static int (*func_vfprintf)(FILE *stream, const char *format, va_list ap) = NULL;
32 if (func_vfprintf == NULL)
33 func_vfprintf = (int (*) (FILE *stream, const char *format, va_list ap)) dlsym(RTLD_NEXT, "vfprintf");
34
35 va_list ap2;
36 va_copy(ap2, ap);
37 if (strncmp(format, "profiling:", strlen("profiling:")) == 0)
38 return 0;
39 int res = func_vfprintf(stream, format, ap2);
40 va_end(ap2);
41 return res;
42 }
43
44 int fprintf(FILE *stream, const char *format, ...) {
45 va_list ap;
46 va_start(ap, format);
47 int res = vfprintf(stream, format, ap);
48 va_end(ap);
49 return res;
50 }