aboutsummaryrefslogtreecommitdiffstats
path: root/src/msdos.c
diff options
context:
space:
mode:
authorEli Zaretskii2011-04-06 20:49:21 +0300
committerEli Zaretskii2011-04-06 20:49:21 +0300
commit7c106b1e1e4e2bef3920787160e1e31e352d14cc (patch)
tree0bc2167ecf7ffa9e9906c7687f32f94786ff7878 /src/msdos.c
parent973f782d33cb0b9fa6caf5487ca8916838d12556 (diff)
downloademacs-7c106b1e1e4e2bef3920787160e1e31e352d14cc.tar.gz
emacs-7c106b1e1e4e2bef3920787160e1e31e352d14cc.zip
Adapt the MS-DOS build to changes in gnulib.
msdos/sedlibmk.inp: Update checklist. (am_libgnu_a_OBJECTS): Remove careadlinkat.$(OBJEXT). ($(top_builddir)/config.status): Edit away, both as target and in prerequisites. (@am__fastdepCC_FALSE@): Fix editing. (@GL_GENERATE_STDBOOL_H_TRUE@, @GL_GENERATE_STDBOOL_H_FALSE@) (@GL_GENERATE_STDDEF_H_TRUE@, @GL_GENERATE_STDDEF_H_FALSE@) (@GL_GENERATE_STDINT_H_TRUE@, @GL_GENERATE_STDINT_H_FALSE@): Edit to either nothing or "#". src/msdos.c (careadlinkat, careadlinkatcwd): MS-DOS replacements.
Diffstat (limited to 'src/msdos.c')
-rw-r--r--src/msdos.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/msdos.c b/src/msdos.c
index b0bf5c4fdd9..e02e64b9ece 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -81,6 +81,9 @@ extern int spawnve (int, const char *, char *const [], char *const []);
81#include <signal.h> 81#include <signal.h>
82#include "syssignal.h" 82#include "syssignal.h"
83 83
84#include "careadlinkat.h"
85#include "allocator.h"
86
84#ifndef SYSTEM_MALLOC 87#ifndef SYSTEM_MALLOC
85 88
86#ifdef GNU_MALLOC 89#ifdef GNU_MALLOC
@@ -3933,6 +3936,41 @@ readlink (const char *name, char *dummy1, size_t dummy2)
3933} 3936}
3934#endif 3937#endif
3935 3938
3939char *
3940careadlinkat (int fd, char const *filename,
3941 char *buffer, size_t buffer_size,
3942 struct allocator const *alloc,
3943 ssize_t (*preadlinkat) (int, char const *, char *, size_t))
3944{
3945 if (!buffer)
3946 {
3947 /* We don't support the fancy auto-allocation feature. */
3948 if (!buffer_size)
3949 errno = ENOSYS;
3950 else
3951 errno = EINVAL;
3952 buffer = NULL;
3953 }
3954 else
3955 {
3956 ssize_t len = preadlinkat (fd, filename, buffer, buffer_size);
3957
3958 if (len < 0 || len == buffer_size)
3959 buffer = NULL;
3960 else
3961 buffer[len + 1] = '\0';
3962 }
3963 return buffer;
3964}
3965
3966ssize_t
3967careadlinkatcwd (int fd, char const *filename, char *buffer,
3968 size_t buffer_size)
3969{
3970 (void) fd;
3971 return readlink (filename, buffer, buffer_size);
3972}
3973
3936 3974
3937#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2 3975#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2
3938 3976