#include #include #include #include #include #include #include #ifndef MAXPATHLEN #define MAXPATHLEN 128 #endif /* maximum number of chars for the message string */ #define STRCHARS 100 main(int ac, char *av[]) { int count, fd, slen, lerr, slerr; char *fn; struct stat sb; char str[255]; if (mkdir("TEMP", 0755)) { perror("mkdir TEMP"); exit(0); } fd = open("FOO", O_RDWR|O_CREAT, 0666); if (fd < 0) { perror("creat"); exit(0); } sprintf(str, "..."); slen = strlen(str); if (write(fd, str, slen) != slen) { perror("write"); (void) close(fd); exit(0); } if (close(fd)) { perror("close"); exit(0); } if (lerr = link("FOO", "TEMP/BAR")) { if (errno != EOPNOTSUPP) { perror("link"); exit(0); } } else if (rename("TEMP/BAR", "FOO")) { perror("rerename"); exit(0); } if (unlink("FOO")) { perror("unlink 1"); exit(0); } system("ls -l FOO TEMP/BAR"); exit(errno); }