diff options
author | Jason Stubbs <jstubbs@gentoo.org> | 2005-08-28 08:37:44 +0000 |
---|---|---|
committer | Jason Stubbs <jstubbs@gentoo.org> | 2005-08-28 08:37:44 +0000 |
commit | d9fc4acc572c6647a4f27b838d35d27d805d190e (patch) | |
tree | 262a8de35d8c7567312757da5f1f66efdc8cece5 /src/sandbox/problems | |
download | portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.gz portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.bz2 portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.zip |
Migration (without history) of the current stable line to subversion.
svn path=/main/branches/2.0/; revision=1941
Diffstat (limited to 'src/sandbox/problems')
-rw-r--r-- | src/sandbox/problems/Makefile | 31 | ||||
-rw-r--r-- | src/sandbox/problems/libsandbox_emacsbug.c | 34 | ||||
-rw-r--r-- | src/sandbox/problems/libsandbox_muttbug.c | 24 | ||||
-rw-r--r-- | src/sandbox/problems/sandbox_dev_fd_foo.c | 42 | ||||
-rw-r--r-- | src/sandbox/problems/sandbox_muttbug.c | 43 |
5 files changed, 174 insertions, 0 deletions
diff --git a/src/sandbox/problems/Makefile b/src/sandbox/problems/Makefile new file mode 100644 index 000000000..b44189bdc --- /dev/null +++ b/src/sandbox/problems/Makefile @@ -0,0 +1,31 @@ +# Copyright (C) 2001 Geert Bevin, Uwyn, http://www.uwyn.com +# Distributed under the terms of the GNU General Public License, v2 or later +# Author : Geert Bevin <gbevin@uwyn.com> +# +# Modified 15 Apr 2002 Jon Nelson <jnelson@gentoo.org> +# Clean up Makefile somewhat, and use make's implicit rules +# +# $Header: /var/cvsroot/gentoo-src/portage/src/sandbox/problems/Attic/Makefile,v 1.2 2002/04/16 01:06:55 jnelson Exp $ + +.SUFFIXES: +.SUFFIXES: .c .o .so +.PRECIOUS: %.o + +%.so: LIBS=-ldl +%.so: LDFLAGS=--shared +%.so: %.o + $(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@ $(LIBS) $(LDFLAGS) + +CC = gcc +CFLAGS = -Wall -O2 +LIBS = +LDFLAGS = + +TARGETS = sandbox_muttbug sandbox_dev_fd_foo \ + libsandbox_muttbug.so libsandbox_emacsbug.so + +all: $(TARGETS) + +clean: + rm -f $(TARGETS) + rm -f *.o *~ diff --git a/src/sandbox/problems/libsandbox_emacsbug.c b/src/sandbox/problems/libsandbox_emacsbug.c new file mode 100644 index 000000000..11e861b92 --- /dev/null +++ b/src/sandbox/problems/libsandbox_emacsbug.c @@ -0,0 +1,34 @@ +/* $Header: /var/cvsroot/gentoo-src/portage/src/sandbox/problems/Attic/libsandbox_emacsbug.c,v 1.2 2003/03/22 14:24:38 carpaski Exp $ */ + +#define _GNU_SOURCE +#define _REENTRANT + +#define open xxx_open +# include <dlfcn.h> +# include <errno.h> +# include <fcntl.h> +# include <stdlib.h> +# include <sys/stat.h> +# include <sys/types.h> +#undef open + +extern int open(const char*, int, mode_t); +int (*orig_open)(const char*, int, mode_t) = NULL; +int open(const char* pathname, int flags, mode_t mode) +{ + int old_errno = errno; + + /* code that makes xemacs' compilation produce a segfaulting executable */ +/* char** test = NULL; + test = (char**)malloc(sizeof(char*)); + free(test);*/ + /* end of that code */ + + if (!orig_open) + { + orig_open = dlsym(RTLD_NEXT, "open"); + } + errno = old_errno; + return orig_open(pathname, flags, mode); +} + diff --git a/src/sandbox/problems/libsandbox_muttbug.c b/src/sandbox/problems/libsandbox_muttbug.c new file mode 100644 index 000000000..1d6e18c48 --- /dev/null +++ b/src/sandbox/problems/libsandbox_muttbug.c @@ -0,0 +1,24 @@ +/* $Header: /var/cvsroot/gentoo-src/portage/src/sandbox/problems/Attic/libsandbox_muttbug.c,v 1.2 2003/03/22 14:24:38 carpaski Exp $ */ + +#define _GNU_SOURCE +#define _REENTRANT + +#define open xxx_open +#include <dlfcn.h> +#include <errno.h> +#include <stdio.h> +#undef open + +extern FILE* fopen(const char*, const char*); +FILE* (*orig_fopen)(const char*, const char*) = 0; +FILE* fopen(const char* a1, const char* a2) +{ + int old_errno = errno; + if (!orig_fopen) + { + orig_fopen = dlsym(RTLD_NEXT, "fopen"); + } + errno = old_errno; + return orig_fopen(a1, a2); +} + diff --git a/src/sandbox/problems/sandbox_dev_fd_foo.c b/src/sandbox/problems/sandbox_dev_fd_foo.c new file mode 100644 index 000000000..c36a095c2 --- /dev/null +++ b/src/sandbox/problems/sandbox_dev_fd_foo.c @@ -0,0 +1,42 @@ +/* $Header: /var/cvsroot/gentoo-src/portage/src/sandbox/problems/Attic/sandbox_dev_fd_foo.c,v 1.2 2003/03/22 14:24:38 carpaski Exp $ */ + +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +void cleanup_1(void) +{ + puts("Unlinking file..."); + unlink("/tmp/_sandbox_test.file"); +} + +int main(void) +{ + struct stat s1, s2; + FILE *fp1, *fp2; + char *file = "/tmp/_sandbox_test.file"; + char devfd[32]; + + printf("Opening file...\n"); + if (!(fp1 = fopen(file, "w"))) + exit(1); + atexit(cleanup_1); + printf("fstat'ing file...\n"); + if (fstat(fileno(fp1), &s1) < 0) + exit(2); + sprintf(devfd, "/dev/fd/%d", fileno(fp1)); + printf("fopening %s...\n", devfd); + if (!(fp2 = fopen(devfd, "w"))) + exit(3); + printf("fstat'ing %s...\n", devfd); + if (fstat(fileno(fp2), &s2) < 0) + exit(4); + printf("Checking %ld == %ld and %ld == %ld...\n", + (long int) s1.st_dev, (long int) s2.st_dev, s1.st_ino, s2.st_ino); + if (s1.st_dev != s2.st_dev || s1.st_ino != s2.st_ino) + exit(5); + printf("Success!\n"); + return(0); +} diff --git a/src/sandbox/problems/sandbox_muttbug.c b/src/sandbox/problems/sandbox_muttbug.c new file mode 100644 index 000000000..cccdc43ee --- /dev/null +++ b/src/sandbox/problems/sandbox_muttbug.c @@ -0,0 +1,43 @@ +/* $Header: /var/cvsroot/gentoo-src/portage/src/sandbox/problems/Attic/sandbox_muttbug.c,v 1.3 2003/03/22 14:24:38 carpaski Exp $ */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +int main(int argc, char *argv[]) +{ + FILE *fd ; + + printf("unlink\n"); + unlink("/tmp/test"); + printf("... done\n"); + + printf("fopen\n"); + fd = fopen("/tmp/test", "a+"); + printf("... done\n"); + + printf("fputc\n"); + fputc('7', fd); + printf("... done\n"); + + printf("fseek\n"); + fseek(fd, 0, SEEK_SET); + printf("... done\n"); + + printf("freopen\n"); + fd = freopen("/tmp/test", "r", fd); + printf("... done\n"); + + printf("fgetc "); + printf("%c\n", fgetc(fd)); + printf("... done\n"); + + printf("fseek\n"); + fseek(fd, 0, SEEK_SET); + printf("... done\n"); + + printf("fclose\n"); + fclose(fd); + printf("... done\n"); + return 0; +} |