summaryrefslogtreecommitdiff
path: root/iperlsys.h
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2020-10-07 16:31:22 +1100
committerTony Cook <tony@develop-help.com>2020-12-01 15:29:33 +1100
commit680b2c5ee3b53c627074192b3cf14416a24da6ea (patch)
treeeca893a731b7a5530d88b990def603caba525ab8 /iperlsys.h
parent92b3a3ebc05e3ce0e84a1ccff46487ca2200b471 (diff)
downloadperl-680b2c5ee3b53c627074192b3cf14416a24da6ea.tar.gz
Win32: implement symlink() and readlink()
The API used requires Windows Vista or later. The API itself requires either elevated privileges or a sufficiently recent version of Windows 10 running in "Developer Mode", so some tests require updates.
Diffstat (limited to 'iperlsys.h')
-rw-r--r--iperlsys.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/iperlsys.h b/iperlsys.h
index c176ad5c55..28091141e6 100644
--- a/iperlsys.h
+++ b/iperlsys.h
@@ -654,6 +654,10 @@ typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*);
typedef int (*LPLIOUtime)(struct IPerlLIO*, const char*, struct utimbuf*);
typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*,
unsigned int);
+typedef int (*LPLIOSymLink)(struct IPerlLIO*, const char*,
+ const char *);
+typedef int (*LPLIOReadLink)(struct IPerlLIO*, const char*,
+ char *, size_t);
struct IPerlLIO
{
@@ -683,6 +687,8 @@ struct IPerlLIO
LPLIOUnlink pUnlink;
LPLIOUtime pUtime;
LPLIOWrite pWrite;
+ LPLIOSymLink pSymLink;
+ LPLIOReadLink pReadLink;
};
struct IPerlLIOInfo
@@ -715,6 +721,10 @@ struct IPerlLIOInfo
(*PL_LIO->pIsatty)(PL_LIO, (fd))
#define PerlLIO_link(oldname, newname) \
(*PL_LIO->pLink)(PL_LIO, (oldname), (newname))
+#define PerlLIO_symlink(oldname, newname) \
+ (*PL_LIO->pSymLink)(PL_LIO, (oldname), (newname))
+#define PerlLIO_readlink(path, buf, bufsiz) \
+ (*PL_LIO->pReadLink)(PL_LIO, (path), (buf), (bufsiz))
#define PerlLIO_lseek(fd, offset, mode) \
(*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode))
#define PerlLIO_lstat(name, buf) \
@@ -764,6 +774,8 @@ struct IPerlLIOInfo
#define PerlLIO_ioctl(fd, u, buf) ioctl((fd), (u), (buf))
#define PerlLIO_isatty(fd) isatty((fd))
#define PerlLIO_link(oldname, newname) link((oldname), (newname))
+#define PerlLIO_symlink(oldname, newname) symlink((oldname), (newname))
+#define PerlLIO_readlink(path, buf, bufsiz) readlink((path), (buf), (bufsiz))
#define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode))
#define PerlLIO_stat(name, buf) Stat((name), (buf))
#ifdef HAS_LSTAT