5ff84e1186fe88e0a2a43b9d88776f793542e532
[mirrors/Programs.git] / c / troll23 / troll23.c
1 #define _GNU_SOURCE
2 #include <stdio.h>
3 #include <sys/types.h>
4 #include <dlfcn.h>
5 #include <stdarg.h>
6
7 int rand(void) { return 23; }
8 int random(void) { return 23; }
9
10 static const char *redirect_name(const char *name)
11 {
12 if(strcmp(name,"/dev/random") == 0) return "/dev/zero";
13 if(strcmp(name,"/dev/urandom") == 0) return "/dev/zero";
14 return name;
15 }
16
17 int open(const char *filename, int flags, ...)
18 {
19 static int (*open_orig)(const char *, int, mode_t);
20 int ret;
21 va_list ap;
22 mode_t mode;
23
24 if (!open_orig) {
25 open_orig = dlsym(RTLD_NEXT, "open");
26 }
27
28 va_start(ap, flags);
29 mode = va_arg(ap, mode_t);
30 va_end(ap);
31
32 ret = open_orig(redirect_name(filename), flags, mode);
33
34 printf("open(\"%s\", 0x%x, %o) -> %d\n", filename, flags, mode, ret);
35
36 return ret;
37 }
This page took 0.282329 seconds and 3 git commands to generate.