diff options
| author | Eli Zaretskii | 2011-04-06 20:49:21 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2011-04-06 20:49:21 +0300 |
| commit | 7c106b1e1e4e2bef3920787160e1e31e352d14cc (patch) | |
| tree | 0bc2167ecf7ffa9e9906c7687f32f94786ff7878 /src/msdos.c | |
| parent | 973f782d33cb0b9fa6caf5487ca8916838d12556 (diff) | |
| download | emacs-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.c | 38 |
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 | ||
| 3939 | char * | ||
| 3940 | careadlinkat (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 | |||
| 3966 | ssize_t | ||
| 3967 | careadlinkatcwd (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 | ||