Mail Archives: djgpp-workers/2014/04/30/12:59:01
--047d7bdc1750a1bc4604f8455812
Content-Type: text/plain; charset=UTF-8
On 4/22/14, Ozkan Sezer <sezeroz AT gmail DOT com> wrote:
> On 4/22/14, Eli Zaretskii <eliz AT gnu DOT org> wrote:
[...]
> OK, leaving things to you guys.
>
PING:
If there is still interest in this, I've been using the two patches
inlined below (also attached) for some time and they work well for
me.
* mkdir.c: replace access() call with _chmod(). this loses the extra
_fixpath()+remote rootdir check done by access(), but it shortens
things by not pulling in extra dependencies.
Index: src/libc/posix/sys/stat/mkdir.c
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/posix/sys/stat/mkdir.c,v
retrieving revision 1.7
diff -u -p -r1.5 mkdir.c
--- src/libc/posix/sys/stat/mkdir.c 2 Oct 2011 02:40:11 -0000 1.7
+++ src/libc/posix/sys/stat/mkdir.c 24 Apr 2014 07:51:10 -0000
@@ -73,7 +73,8 @@ do_mkdir:
{
/* see if the directory existed, in which case
we should return EEXIST - DJ */
- if (access(mydirname, D_OK) == 0)
+ if ((attr = _chmod(dir_name,0,0)) != (unsigned)-1
+ && (attr & 0x10))
errno = EEXIST;
else
errno = save_errno;
* move _djstat_fail_bits and _djstat_flags out of xstat.c into new
statbits.c, so that, e.g. mkdir() doesn't pull in unnecessary
dependencies such as ctime.o.
Index: src/libc/posix/sys/stat/makefile
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/posix/sys/stat/makefile,v
retrieving revision 1.5
diff -u -p -r1.5 makefile
--- src/libc/posix/sys/stat/makefile 8 Mar 2003 00:41:17 -0000 1.5
+++ src/libc/posix/sys/stat/makefile 24 Apr 2014 07:51:10 -0000
@@ -16,6 +16,7 @@
SRC += mkfifo.c
SRC += st_loss.c
SRC += stat.c
+SRC += statbits.c
SRC += umask.c
SRC += xstat.c
Index: src/libc/posix/sys/stat/xstat.c
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/posix/sys/stat/xstat.c,v
retrieving revision 1.8
diff -u -p -r1.8 xstat.c
--- src/libc/posix/sys/stat/xstat.c 10 Mar 2012 18:03:11 -0000 1.8
+++ src/libc/posix/sys/stat/xstat.c 24 Apr 2014 07:51:10 -0000
@@ -32,40 +32,6 @@
static int xstat_count = -1;
-/* Some fields of struct stat are expensive to compute under DOS,
- because they require multiple disk accesses. Fortunately, many
- DOS programs don't care about these. To leave both pedants (like
- me) and performance-oriented guys happy, a variable is provided
- which controls which expensive fields should be computed. To get
- the fastest stat() for your program, clear the bits for only those
- features you need and set the others.
-
- This improvement was suggested by Charles Sandmann
- <sandmann AT clio DOT rice DOT edu> and DJ Delorie <dj AT delorie DOT com>. */
-
-/* Please see the header file sys/stat.h for the definitions of _STAT_*. */
-
-/* Should we bother about executables at all? */
-#define _STAT_EXECBIT (_STAT_EXEC_EXT | _STAT_EXEC_MAGIC)
-
-/* By default, all the bits are reset (including as yet unused ones), so
- people who don't care will transparently have the full version. */
-unsigned short _djstat_flags;
-
-/* As we depend on undocumented DOS features, we could fail in some
- incompatible environment or future DOS versions. If we do, the
- following variable will have some of its bits set. Each bit
- describes a single feature which we tried to use and failed.
- The function _djstat_describe_lossage() may be called to print a
- human-readable description of the bits which were set by the last
- call to f?stat(). This should make debugging f?stat() failures
- in an unanticipated environment a lot easier.
-
- This improvement was suggested by Charles Sandmann
- <sandmann AT clio DOT rice DOT edu>. */
-
-unsigned short _djstat_fail_bits;
-
/* ----------------------------------------------------------------------- */
/* Convert file date and time to time_t value suitable for
--- /dev/null
+++ src/libc/posix/sys/stat/statbits.c 24 Apr 2014 07:51:10 -0000
@@ -0,0 +1,42 @@
+/* Copyright (C) 2012 DJ Delorie, see COPYING.DJ for details */
+/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
+/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
+
+#include <libc/stubs.h>
+#include <sys/stat.h>
+#include "xstat.h"
+
+/* Some fields of struct stat are expensive to compute under DOS,
+ because they require multiple disk accesses. Fortunately, many
+ DOS programs don't care about these. To leave both pedants (like
+ me) and performance-oriented guys happy, a variable is provided
+ which controls which expensive fields should be computed. To get
+ the fastest stat() for your program, clear the bits for only those
+ features you need and set the others.
+
+ This improvement was suggested by Charles Sandmann
+ <sandmann AT clio DOT rice DOT edu> and DJ Delorie <dj AT delorie DOT com>. */
+
+/* Please see the header file sys/stat.h for the definitions of _STAT_*. */
+
+/* Should we bother about executables at all? */
+#define _STAT_EXECBIT (_STAT_EXEC_EXT | _STAT_EXEC_MAGIC)
+
+/* By default, all the bits are reset (including as yet unused ones), so
+ people who don't care will transparently have the full version. */
+unsigned short _djstat_flags;
+
+/* As we depend on undocumented DOS features, we could fail in some
+ incompatible environment or future DOS versions. If we do, the
+ following variable will have some of its bits set. Each bit
+ describes a single feature which we tried to use and failed.
+ The function _djstat_describe_lossage() may be called to print a
+ human-readable description of the bits which were set by the last
+ call to f?stat(). This should make debugging f?stat() failures
+ in an unanticipated environment a lot easier.
+
+ This improvement was suggested by Charles Sandmann
+ <sandmann AT clio DOT rice DOT edu>. */
+
+unsigned short _djstat_fail_bits;
+
--
O.S.
--047d7bdc1750a1bc4604f8455812
Content-Type: text/plain; charset=US-ASCII; name="djxstat.diff"
Content-Disposition: attachment; filename="djxstat.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0
SW5kZXg6IHNyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L21ha2VmaWxlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvZGpncHAvZGpncHAvc3JjL2xpYmMvcG9zaXgvc3lzL3N0YXQvbWFrZWZpbGUsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC11IC1wIC1yMS41IG1ha2VmaWxlCi0tLSBzcmMv
bGliYy9wb3NpeC9zeXMvc3RhdC9tYWtlZmlsZQk4IE1hciAyMDAzIDAwOjQxOjE3IC0wMDAwCTEu
NQorKysgc3JjL2xpYmMvcG9zaXgvc3lzL3N0YXQvbWFrZWZpbGUJMjQgQXByIDIwMTQgMDc6NTE6
MTAgLTAwMDAKQEAgLTE2LDYgKzE2LDcgQEAKIFNSQyArPSBta2ZpZm8uYwogU1JDICs9IHN0X2xv
c3MuYwogU1JDICs9IHN0YXQuYworU1JDICs9IHN0YXRiaXRzLmMKIFNSQyArPSB1bWFzay5jCiBT
UkMgKz0geHN0YXQuYwogCkluZGV4OiBzcmMvbGliYy9wb3NpeC9zeXMvc3RhdC94c3RhdC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpncHAvc3JjL2xpYmMvcG9zaXgvc3lzL3N0
YXQveHN0YXQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLXUgLXAgLXIxLjggeHN0
YXQuYwotLS0gc3JjL2xpYmMvcG9zaXgvc3lzL3N0YXQveHN0YXQuYwkxMCBNYXIgMjAxMiAxODow
MzoxMSAtMDAwMAkxLjgKKysrIHNyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L3hzdGF0LmMJMjQgQXBy
IDIwMTQgMDc6NTE6MTAgLTAwMDAKQEAgLTMyLDQwICszMiw2IEBACiAKIHN0YXRpYyBpbnQgeHN0
YXRfY291bnQgPSAtMTsKIAotLyogU29tZSBmaWVsZHMgb2Ygc3RydWN0IHN0YXQgYXJlIGV4cGVu
c2l2ZSB0byBjb21wdXRlIHVuZGVyIERPUywKLSAgIGJlY2F1c2UgdGhleSByZXF1aXJlIG11bHRp
cGxlIGRpc2sgYWNjZXNzZXMuICBGb3J0dW5hdGVseSwgbWFueQotICAgRE9TIHByb2dyYW1zIGRv
bid0IGNhcmUgYWJvdXQgdGhlc2UuICBUbyBsZWF2ZSBib3RoIHBlZGFudHMgKGxpa2UKLSAgIG1l
KSBhbmQgcGVyZm9ybWFuY2Utb3JpZW50ZWQgZ3V5cyBoYXBweSwgYSB2YXJpYWJsZSBpcyBwcm92
aWRlZAotICAgd2hpY2ggY29udHJvbHMgd2hpY2ggZXhwZW5zaXZlIGZpZWxkcyBzaG91bGQgYmUg
Y29tcHV0ZWQuICBUbyBnZXQKLSAgIHRoZSBmYXN0ZXN0IHN0YXQoKSBmb3IgeW91ciBwcm9ncmFt
LCBjbGVhciB0aGUgYml0cyBmb3Igb25seSB0aG9zZQotICAgZmVhdHVyZXMgeW91IG5lZWQgYW5k
IHNldCB0aGUgb3RoZXJzLgotCi0gICBUaGlzIGltcHJvdmVtZW50IHdhcyBzdWdnZXN0ZWQgYnkg
Q2hhcmxlcyBTYW5kbWFubgotICAgPHNhbmRtYW5uQGNsaW8ucmljZS5lZHU+IGFuZCBESiBEZWxv
cmllIDxkakBkZWxvcmllLmNvbT4uICAqLwotCi0vKiBQbGVhc2Ugc2VlIHRoZSBoZWFkZXIgZmls
ZSBzeXMvc3RhdC5oIGZvciB0aGUgZGVmaW5pdGlvbnMgb2YgX1NUQVRfKi4gKi8KLQotLyogU2hv
dWxkIHdlIGJvdGhlciBhYm91dCBleGVjdXRhYmxlcyBhdCBhbGw/ICovCi0jZGVmaW5lIF9TVEFU
X0VYRUNCSVQgICAgICAgKF9TVEFUX0VYRUNfRVhUIHwgX1NUQVRfRVhFQ19NQUdJQykKLQotLyog
QnkgZGVmYXVsdCwgYWxsIHRoZSBiaXRzIGFyZSByZXNldCAoaW5jbHVkaW5nIGFzIHlldCB1bnVz
ZWQgb25lcyksIHNvCi0gICBwZW9wbGUgd2hvIGRvbid0IGNhcmUgd2lsbCB0cmFuc3BhcmVudGx5
IGhhdmUgdGhlIGZ1bGwgdmVyc2lvbi4gICovCi11bnNpZ25lZCBzaG9ydCBfZGpzdGF0X2ZsYWdz
OwotCi0vKiBBcyB3ZSBkZXBlbmQgb24gdW5kb2N1bWVudGVkIERPUyBmZWF0dXJlcywgd2UgY291
bGQgZmFpbCBpbiBzb21lCi0gICBpbmNvbXBhdGlibGUgZW52aXJvbm1lbnQgb3IgZnV0dXJlIERP
UyB2ZXJzaW9ucy4gIElmIHdlIGRvLCB0aGUKLSAgIGZvbGxvd2luZyB2YXJpYWJsZSB3aWxsIGhh
dmUgc29tZSBvZiBpdHMgYml0cyBzZXQuICBFYWNoIGJpdAotICAgZGVzY3JpYmVzIGEgc2luZ2xl
IGZlYXR1cmUgd2hpY2ggd2UgdHJpZWQgdG8gdXNlIGFuZCBmYWlsZWQuCi0gICBUaGUgZnVuY3Rp
b24gX2Rqc3RhdF9kZXNjcmliZV9sb3NzYWdlKCkgbWF5IGJlIGNhbGxlZCB0byBwcmludCBhCi0g
ICBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgYml0cyB3aGljaCB3ZXJlIHNldCBi
eSB0aGUgbGFzdAotICAgY2FsbCB0byBmP3N0YXQoKS4gIFRoaXMgc2hvdWxkIG1ha2UgZGVidWdn
aW5nIGY/c3RhdCgpIGZhaWx1cmVzCi0gICBpbiBhbiB1bmFudGljaXBhdGVkIGVudmlyb25tZW50
IGEgbG90IGVhc2llci4KLQotICAgVGhpcyBpbXByb3ZlbWVudCB3YXMgc3VnZ2VzdGVkIGJ5IENo
YXJsZXMgU2FuZG1hbm4KLSAgIDxzYW5kbWFubkBjbGlvLnJpY2UuZWR1Pi4gICovCi0KLXVuc2ln
bmVkIHNob3J0IF9kanN0YXRfZmFpbF9iaXRzOwotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAv
KiBDb252ZXJ0IGZpbGUgZGF0ZSBhbmQgdGltZSB0byB0aW1lX3QgdmFsdWUgc3VpdGFibGUgZm9y
CgotLS0gL2Rldi9udWxsCisrKyBzcmMvbGliYy9wb3NpeC9zeXMvc3RhdC9zdGF0Yml0cy5jCTI0
IEFwciAyMDE0IDA3OjUxOjEwIC0wMDAwCkBAIC0wLDAgKzEsNDIgQEAKKy8qIENvcHlyaWdodCAo
QykgMjAxMiBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLworLyogQ29w
eXJpZ2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICov
CisvKiBDb3B5cmlnaHQgKEMpIDE5OTUgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRl
dGFpbHMgKi8KKworI2luY2x1ZGUgPGxpYmMvc3R1YnMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o
PgorI2luY2x1ZGUgInhzdGF0LmgiCisKKy8qIFNvbWUgZmllbGRzIG9mIHN0cnVjdCBzdGF0IGFy
ZSBleHBlbnNpdmUgdG8gY29tcHV0ZSB1bmRlciBET1MsCisgICBiZWNhdXNlIHRoZXkgcmVxdWly
ZSBtdWx0aXBsZSBkaXNrIGFjY2Vzc2VzLiAgRm9ydHVuYXRlbHksIG1hbnkKKyAgIERPUyBwcm9n
cmFtcyBkb24ndCBjYXJlIGFib3V0IHRoZXNlLiAgVG8gbGVhdmUgYm90aCBwZWRhbnRzIChsaWtl
CisgICBtZSkgYW5kIHBlcmZvcm1hbmNlLW9yaWVudGVkIGd1eXMgaGFwcHksIGEgdmFyaWFibGUg
aXMgcHJvdmlkZWQKKyAgIHdoaWNoIGNvbnRyb2xzIHdoaWNoIGV4cGVuc2l2ZSBmaWVsZHMgc2hv
dWxkIGJlIGNvbXB1dGVkLiAgVG8gZ2V0CisgICB0aGUgZmFzdGVzdCBzdGF0KCkgZm9yIHlvdXIg
cHJvZ3JhbSwgY2xlYXIgdGhlIGJpdHMgZm9yIG9ubHkgdGhvc2UKKyAgIGZlYXR1cmVzIHlvdSBu
ZWVkIGFuZCBzZXQgdGhlIG90aGVycy4KKworICAgVGhpcyBpbXByb3ZlbWVudCB3YXMgc3VnZ2Vz
dGVkIGJ5IENoYXJsZXMgU2FuZG1hbm4KKyAgIDxzYW5kbWFubkBjbGlvLnJpY2UuZWR1PiBhbmQg
REogRGVsb3JpZSA8ZGpAZGVsb3JpZS5jb20+LiAgKi8KKworLyogUGxlYXNlIHNlZSB0aGUgaGVh
ZGVyIGZpbGUgc3lzL3N0YXQuaCBmb3IgdGhlIGRlZmluaXRpb25zIG9mIF9TVEFUXyouICovCisK
Ky8qIFNob3VsZCB3ZSBib3RoZXIgYWJvdXQgZXhlY3V0YWJsZXMgYXQgYWxsPyAqLworI2RlZmlu
ZSBfU1RBVF9FWEVDQklUICAgICAgIChfU1RBVF9FWEVDX0VYVCB8IF9TVEFUX0VYRUNfTUFHSUMp
CisKKy8qIEJ5IGRlZmF1bHQsIGFsbCB0aGUgYml0cyBhcmUgcmVzZXQgKGluY2x1ZGluZyBhcyB5
ZXQgdW51c2VkIG9uZXMpLCBzbworICAgcGVvcGxlIHdobyBkb24ndCBjYXJlIHdpbGwgdHJhbnNw
YXJlbnRseSBoYXZlIHRoZSBmdWxsIHZlcnNpb24uICAqLwordW5zaWduZWQgc2hvcnQgX2Rqc3Rh
dF9mbGFnczsKKworLyogQXMgd2UgZGVwZW5kIG9uIHVuZG9jdW1lbnRlZCBET1MgZmVhdHVyZXMs
IHdlIGNvdWxkIGZhaWwgaW4gc29tZQorICAgaW5jb21wYXRpYmxlIGVudmlyb25tZW50IG9yIGZ1
dHVyZSBET1MgdmVyc2lvbnMuICBJZiB3ZSBkbywgdGhlCisgICBmb2xsb3dpbmcgdmFyaWFibGUg
d2lsbCBoYXZlIHNvbWUgb2YgaXRzIGJpdHMgc2V0LiAgRWFjaCBiaXQKKyAgIGRlc2NyaWJlcyBh
IHNpbmdsZSBmZWF0dXJlIHdoaWNoIHdlIHRyaWVkIHRvIHVzZSBhbmQgZmFpbGVkLgorICAgVGhl
IGZ1bmN0aW9uIF9kanN0YXRfZGVzY3JpYmVfbG9zc2FnZSgpIG1heSBiZSBjYWxsZWQgdG8gcHJp
bnQgYQorICAgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGJpdHMgd2hpY2ggd2Vy
ZSBzZXQgYnkgdGhlIGxhc3QKKyAgIGNhbGwgdG8gZj9zdGF0KCkuICBUaGlzIHNob3VsZCBtYWtl
IGRlYnVnZ2luZyBmP3N0YXQoKSBmYWlsdXJlcworICAgaW4gYW4gdW5hbnRpY2lwYXRlZCBlbnZp
cm9ubWVudCBhIGxvdCBlYXNpZXIuCisKKyAgIFRoaXMgaW1wcm92ZW1lbnQgd2FzIHN1Z2dlc3Rl
ZCBieSBDaGFybGVzIFNhbmRtYW5uCisgICA8c2FuZG1hbm5AY2xpby5yaWNlLmVkdT4uICAqLwor
Cit1bnNpZ25lZCBzaG9ydCBfZGpzdGF0X2ZhaWxfYml0czsKKwo=
--047d7bdc1750a1bc4604f8455812
Content-Type: text/plain; charset=US-ASCII; name="djmkdir.diff"
Content-Disposition: attachment; filename="djmkdir.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0
SW5kZXg6IHNyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L21rZGlyLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9kamdwcC9kamdwcC9zcmMvbGliYy9wb3NpeC9zeXMvc3RhdC9ta2Rpci5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtdSAtcCAtcjEuNSBta2Rpci5jCi0tLSBzcmMvbGli
Yy9wb3NpeC9zeXMvc3RhdC9ta2Rpci5jCTIgT2N0IDIwMTEgMDI6NDA6MTEgLTAwMDAJMS43Cisr
KyBzcmMvbGliYy9wb3NpeC9zeXMvc3RhdC9ta2Rpci5jCTI0IEFwciAyMDE0IDA3OjUxOjEwIC0w
MDAwCkBAIC03Myw3ICs3Myw4IEBAIGRvX21rZGlyOgogICAgIHsKICAgICAgIC8qIHNlZSBpZiB0
aGUgZGlyZWN0b3J5IGV4aXN0ZWQsIGluIHdoaWNoIGNhc2UKICAgICAgICAgIHdlIHNob3VsZCBy
ZXR1cm4gRUVYSVNUIC0gREogKi8KLSAgICAgIGlmIChhY2Nlc3MobXlkaXJuYW1lLCBEX09LKSA9
PSAwKQorICAgICAgaWYgKChhdHRyID0gX2NobW9kKGRpcl9uYW1lLDAsMCkpICE9ICh1bnNpZ25l
ZCktMQorICAgICAgICAgICYmIChhdHRyICYgMHgxMCkpCiAgICAgICAgIGVycm5vID0gRUVYSVNU
OwogICAgICAgZWxzZQogICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87Cg==
--047d7bdc1750a1bc4604f8455812--
- Raw text -