brintos

brintos / llvm-project-archived public Read only

0
0
Text · 647 B · ef0a4fe Raw
27 lines · c
1// RUN: %clang -O0 %s -o %t && %run %t2 3#include <assert.h>4#include <fcntl.h>5#include <limits.h>6#include <stdio.h>7#include <string.h>8#include <sys/types.h>9#include <unistd.h>10 11int main(int argc, char **argv) {12  char symlink_path[PATH_MAX];13  snprintf(symlink_path, sizeof(symlink_path), "%s_%d.symlink", argv[0],14           getpid());15  remove(symlink_path);16  int res = symlink(argv[0], symlink_path);17  assert(!res);18 19  char readlink_path[PATH_MAX];20  ssize_t res2 = readlink(symlink_path, readlink_path, sizeof(readlink_path));21  assert(res2 >= 0);22  readlink_path[res2] = '\0';23  assert(!strcmp(readlink_path, argv[0]));24 25  return 0;26}27