14 static sig_atomic_t end;
16 int test_getcwd(char *init_cwd)
19 char cur_cwd[BUF_SIZE];
21 getcwd(cur_cwd, BUF_SIZE);
22 if (strncmp(init_cwd, cur_cwd, BUF_SIZE)) {
23 printf("[%u] %s != %s\n", i, init_cwd, cur_cwd);
33 void do_rename(char *prefix)
37 char c_name[BUF_SIZE];
38 char n_name[BUF_SIZE];
40 strncpy(c_name, prefix, BUF_SIZE);
42 fd = open(c_name, O_CREAT | O_RDWR, 0644);
44 fprintf(stderr, "failed to create file %s: %s\n",
45 c_name, strerror(errno));
52 snprintf(n_name, BUF_SIZE, "%s%u", prefix, i);
53 rename(c_name, n_name);
54 strncpy(c_name, n_name, BUF_SIZE);
63 int main(int argc, char *argv[])
71 printf("Usage: %s <dir>\n", argv[0]);
76 ret = chdir(init_cwd);
78 perror("chdir failed");
82 if (signal(SIGALRM, sigproc) == SIG_ERR) {
83 perror("signal failed");
91 perror("fork failed");
93 } else if (pid == 0) {
94 do_rename("t_getcwd_testfile");
96 ret = test_getcwd(init_cwd);
98 waitpid(pid, &status, 0);