source: vendor/glibc-tests/glibc/posix/tst-execle2.c

Last change on this file was 2036, checked in by bird, 20 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 995 bytes
Line 
1#include <errno.h>
2#include <stdio.h>
3#include <unistd.h>
4#include <sys/stat.h>
5
6
7static void prepare (int argc, char *argv[]);
8static int do_test (void);
9#define PREPARE(argc, argv) prepare (argc, argv)
10#define TEST_FUNCTION do_test ()
11#include "../test-skeleton.c"
12
13
14static char *copy;
15
16static void
17prepare (int argc, char *argv[])
18{
19 char *buf;
20 int off;
21 asprintf (&buf, "cp %s %n%s-copy", argv[0], &off, argv[0]);
22 if (buf == NULL)
23 {
24 puts ("asprintf failed");
25 exit (1);
26 }
27 if (system (buf) != 0)
28 {
29 puts ("system failed");
30 exit (1);
31 }
32
33 /* Make it not executable. */
34 copy = buf + off;
35 if (chmod (copy, 0666) != 0)
36 {
37 puts ("chmod failed");
38 exit (1);
39 }
40
41 add_temp_file (copy);
42}
43
44
45static int
46do_test (void)
47{
48 char *env[] = {"FOO=BAR", NULL};
49 errno = 0;
50 execle (copy, copy, NULL, env);
51
52 if (errno != EACCES)
53 {
54 printf ("errno = %d (%m), expected EACCES\n", errno);
55 return 1;
56 }
57
58 return 0;
59}
Note: See TracBrowser for help on using the repository browser.