Mail Archives: djgpp/1992/08/24/18:14:44
Fixes for stat() for djgpp 1.08
-------------------------------
1. Directories have the S_IWRITE bit set, because on DOS, files
can be added/deleted from any directory.
2. The st_uid and st_gid fields are set to be equal to the user
and group ids as given by getuid() and getgid(), so that all
files appear to be owned by the caller.
3. The st_dev field is set to the drive number that the file is
found on.
4. The st_ino field returns the same value for two different calls
to stat() with the same file, and returns different values for
different files. This allows programs like "mv" or "cp" to
detect if they are about to overwrite an input file. The root
directory is statable (looks like this was already added
between 1.07 and 1.08 but I'll leave my modification anyway).
5. There is some strange bug in stat() which causes the wrong
value to get used for st_atime, st_mtime, and st_ctime if
time() has not been previously called, which has been worked
around.
To get a fixed version of stat(), remove the existing
/djgpp/libsrc/c/sys/stat.s and replace it with the stat.c and
stat_ast.s supplied below.
Fixes for opendir(), readdir(), and closedir() for djgpp 1.08
-------------------------------------------------------------
1. As written, opendir() appends "/*.*" to the end of the path
passed to it, even if that path already ends in a slash. This
can cause the opendir() to fail. I now strip trailing slashes
from the supplied path.
2. As written, readdir() skips hidden and system files. I
personally don't like that, and it makes programs like "du" get
the wrong answer. I've modified readdir() to pick up all
files.
3. As written, closedir() does not return a value like it's
supposed to. I've modified it to return zero.
To get a fixed version of these functions, apply the patch
supplied below to /djgpp/libsrc/c/dos/dir.c.
Fix for umask() for djgpp 1.08
------------------------------
1. As written, umask() returns 0644, which is the inverse of what
it should return. I've modified it to return 022, a more
reasonable value.
To get a fixed version of umask(), replace
/djgpp/libsrc/c/sys/umask.c with the umask.c supplied below.
Fix for strftime() for djgpp 1.08
---------------------------------
1. For some reason, the existing strftime() has the "%Z" case
#ifdef'ed out. The commented out code works, and is needed for
a program like "date" to correctly print the timezone in the
date string. I've removed the #if around "%Z".
To get a fixed version of strftime(), apply the patch supplied
below to /djgpp/libsrc/c/str/strftime.c.
Fix for errno.h for djgpp 1.08
------------------------------
1. The existing errno.h has EBADENV and E2BIG set to different
values. On unix, EBADENV does not exist and E2BIG is used for
both "arg list too long" and "environment too big". So I
changed E2BIG to be equal to EBADENV.
2. The existing errno.h has EXDEV ("cross-device link attempted")
equal to 22. However, DOS returns 17 for this situation, so
EXDEV should be equal to 17.
3. The existing errno.h does not have EPERM, which is used by
several GNU programs. I set EPERM equal to EACCES.
To get a fixed version of errno.h, apply the patch supplied below
to /djgpp/include/errno.h.
begin 644 patch1.zoo
M6D]/(#(N,3`@07)C:&EV92X:``#<I\3]*@```-;___\"``$````````#W*?$
M_0(",`(``'$````8&<5Q2<#E`P``OP$```(!``````````!D:7)C+F1I9@``
M````"@`<%T(`````I`%`````0"DC*``!BV.ZPC35/\U/@#^[P);VM"VTHM"9
MD)@TVD3,@/AT<QG-.H=&[J3K=,L1^-W=UH7;$?`OAWC?@VW!:XFW"$(-1TRW
MJ$G:ST(&<J0_"(7\44>*+`())(;CSSRPMZ5KH2<9._6(8%>8H<.+![:P1..+
M7$CL$(8JM AT 2 DOT PQA2#UP*Q3.>]R"]QAS!N78IZD<[BSST2MTU)G,AM>XYRQN8
MV#U:DNW\-\"SH9OX[G*%>`7R#34D^T5)*><Z-8IG+3L-2Z*:!X&$I4`NW:9&
MH<E\EXG("7V&?#8><P;<8I^6?5XJ`M=6Q4.V0=P?+'G7AY AT WO#\P?<'U28OV
MX[_`O\E"0\(/FL7=OW1NW*9#7C0KB![>VZYZ`%;[]VUTFGI-6,\8"_2Z.;Z>
M%J\J>5T"LJVDU7>E"X'Q_VX\"K=15W(K=NJA"[;S'1J0;[U-^MC9FFL9[(,]
M7[$S'33YP'O*NCHR?3)HY^G<K_HR_#K]_8M'+U:,W/8T65(4RG+(`LC%_&SB
MS%"[%[+>+7_A]0MII@[TBA:'3U9<N;K6CI[-/QS9_]'G\K9'`['@MZ:X8W<,
MELMS),;SY%>6I9R9M;Z^`0%P``#<I\3]`@+C`P``=P(``!@9QG&UC[$$``!L
M`0```@$``````````&5R<FYO:"YD:68````*`!PK&`````"D`4````!`*2,H
M``%)8[O--3-^8?@#_T?&/&P4[*FC&0QJO$C AT TRS3>40N"Q-:RVFG/QRMPR*N
MV&,?!OBIWN?(W11(TU&VVP(A!CU7CH*UU(*$-E(">7]A%!A_CH/00"XG''+8
M>]5\0F#GMA&]OF9P%R_M\0;,P!QT$TE,0!R2XQYP![`'OZ^V$AP39/4%!-99
MR;=X&[_L"1R9X>Q8)!<"1FUS5EH"9%-FHAE;P3]>@(+%'UKU!.W`D**0K*E0
M*.<*SFIX43)*/0.)B(;P0?^).&DZ-4RF)^='"B=&Q$@$*X$B0=*7/-$:RF\.
M%$Y8\HVGQ--+ELLO]BW;V.7(R;??N(\DRJOI+[2-G`"URUX7/QRQXH<8Y,__
M<M[F^W+^>T[ZW;@M[3L>I>9??K>]4<G=F:>==V4E&92T%L\5$H!/DE1-03S5
MUM;G8E7(/6R%^4%IIWGL-0FU06F1O)ZWD/-D:'#%$/M6",!RFGKLH('0E5%Z
MKIX@``#<I\3]`@)7"0``*@0``!@9Q7$@7_D,```M!0```@$``````````'-T
M870N8P!D:68````*`!PR]`````"D`4````!`*2,H``1#:[O1M-S#S-_`'^W)
M!'`"`97)6RPJ-:56I6W9!<K4C"BZ-]).4<?3=W,A+2?&[__N[FW)``5V\>\^
M\NT`:N-M/7+<8!:ED#UIS:%(Q8V!P^?S\0<JD2A^II<E*XQX/SQH6"TX69S*
M.&4V@,!PI6>8,*CGGT"K"=-&(#+!A<N6IG4)8B4X(6+&G/A8"*&&E9ODU#J)
M0/"`6NHU##G!-#F#!V[\=NY''^2*)9Z9CAZ5Z%W%L,S?Q\>I*Q2*,7<CFG1@
M)'8DF2O9Q3J50GO["&HHS];#JH*,HB>=\RUH6RU*FA;`EQF4%O=`7W3*P"X`
M6Y+L.IU)1-%?PHZ\QF8^WI.^QY<;^X7#OSBVX_N-)P#N316Z!:UUJLNY%%;)
M6Y`4/11(H3,>['I:U##70D\8O]JC7`!=KMC?!3ADJ?;>[X0%5Y='%YOTZ7/N
MY;#G893!MH-RR=(W[IH8!B1"!P7.-:S AT I*7,P%XTTSS$$%F=(#=VQZ625?<Q
M[P?G=C_NB;X1S,5NC*:C]1>3Z1U3;$7&U4GBQF7C>TBCW(C,">HZ AT F/U$*DU
M$PBH-,(3PV[FW"($80M$[NCAZ0O7 AT V_1MAM;38,Z.)R&YMR.F#<KC,7!]&T1
M&<,RDX#8!)8).`,,_L$$X%!HTI,\>SW;F&=Z[P-X=X.!WKGQHG.%JWF#R"]?
MYX!>S>`+VMYMS<U])OUM!P=>'#7"/N-U'#.<%G/`MC2?>JI^OJL^!'7S)E/O
MI"M<%]5=GPU!)(U)]XXBIX+CERYK3@]PX.]QE[R%3_ AT D#`HYLEV.+\-^+NA5
MO>K(MICUVG<_XBO";*=\P[I8J%E[N%4-;8A'SO<:V7Q0ZVR\IY-H\ZSPDH6A
M\CYWL\,Z"&@30;6F6#4LBO*:>=,MI:/L=.$*A9"?R+5%94"^7\?#X2`H[*1P
M?[W#9.;IH!W"UIVAQO%!\U+JN]S9AP_];[J(7 AT L+W!COL:-3=5_*H2LM$VE$
M500JP;[.-LKEVO&OU@,O2WY?&PD$&])8VBP9?_C6JSERC9<\U_`?"E1ZRNMP
M9YNCS\'3=:#RK%9FZ/WY/G[K_QY/KN#@"A AT 5+"D3.I765_Y)4-]!O>W(HVOC
M^=5H.>062S!,E60#*&=YBN8:C$<,%,`PE)A8F&(RGU8D?)X25473\3*5]+1:
MFI&LNU:+YOEJX$P&LI`PGZ\9Y<@#V;,WMC\@='=#RW/*XX8=G8$$P;@<(JO1
M!7)84+W#)D^K0H/X.%YCRH-.$IEEHUKVWA,DZZ-M AT 3HR."\55V]N9"CRL2K1
MOM+LT5U>:$18_=PCG*.#I#C%09V;HO;TC[?8N/4),=`I"L)9O%RKKF`X;/^<
M7D+BZ=0_MG'$M3<&Z7Z8_5XX>.)O"YJZ(3YS:%OQ3\6OH97&IY[_O]OL]_,'
M87CS<O)['>/TYO?\^5WER_7E]=A;J)T49'@#@CI1,*'$)6T36I+%&*"C%VJ%
M.E.R8;%A8Y7%+J1&:+/8CR^*.7Q1X)\CVCYN'B?4-D*-2I45_'5,<8.LXVGO
MS<5<'5^<D1=E AT B$PQ5]^)LD-#-%.7`=2PIH1_5)Z AT N08C=5U31J_+)L9P_K@
M[QC#J`RG';F6CLZ%30.^51R[@XN#L6T(D*UL2T=\RD=4(7']GOM1UOZV_K`Y
MLLZIMGJY<'!0,6SC`Z<]`_N^P:`32I9Y\.QB_\!;8VH&.0+@SJ0P?QW'=^^G
M1"VI?Q`10'L_;G;-SYI\#UE2/(-+:SL"-#G$=]K40:20-9%>R]40+7C,?H\A
MFITQ@```W*?$_0("40L``)X)```8&<5Q<,[+`@``LP$```(!``````````!S
M=&%T7V%S="YS````"@`<?*D`````I`%`````0"DC*``!P6.7K;:CW-)X`_60
M)!%24V,8*;B>NN5H;6U2.K*\53<;ECPY'4VY*3QR^X;&,)'"<Y8&LC+FQR`6
MI3@'Y2I:0G*0NXDY99PDQQXY(Y)`RLX7M5OJ>'LR^T.7)DY0Z_J'6E;&J3B#
MFYP^RFN>FP"7#GF914D<S0TYP]_P^?1\O=S9/CSB)@,P6X*A]H4Y[5'M>E`6
MV(&2?4D!FJW`L=L=95F&FAE%M:;'P!<E`T AT JS?*CPY,0&N,I9CB0I:RO]TR!
MGX31D(:ES@,=ER98`"!`"#*?X*!U3+5H`U%#*^!K+QG?&J^D%4A8QXK<)J`3
MQC3I_M`\:DM3YS8<3.!AWF58E$H>?`$`E9KX%X!?3 AT OBIXG7BMN2TYGJK_U8
MR__E/OT%SZMA0)IVAWDFF)I+MZ?T=3<G\\N*KX+4E$!7$S6FL?@J[LTV7.,D
M3JT=N AT NT&-#LT%TYIYP[-4P\BZR3%T9=G:28->R;7JGS>5(]S$*I$E"O[P<N
M'X]7>![PS-50'4:C[VN&,QQQQ2O3^'CZWK8=8;G/,_<9SAL:/TR?2.*MEQXO
M5T8O69<<7A7PB?:T[/*,``#<I\3]`@)7#```F`L``!@9QG%4$UT!``"_````
M`@$``````````'-T<F9T:6UE+F1I9@`*`!R.2`````"D`4````!`*2,H``"N
M6I:AIN4\UO@#^F,58,;)+=<JA AT O0]-X42,<3 AT L@2QX<7QOBQ3&+RX[[,$#3:
M(0@[O=@]?9,[7+V6-8++G`R`@U7'G#P/32C:4I=:E4Z<Z?IC]A'(&IJ/SJ^*
M(TY//93A!^4R#T#,`#9ESE/Q<R0TM>@*6L>MF*J]I1[+P!HCIN[J&_KOJTIH
M$R;GE^G]K?QK%#QX&ZVZ^^3]#EES5L=K\B$9?]+4S(1Q])93+UX?R7]]4OP)
MILZ(9(\=F```W*?$_0(":0T``)X,```8&<5Q<3TI`0``RP````(!````````
M``!U;6%S:RYC`"YD:68`"@`<9-T`````I`%`````0"DC*```UEJ6L<:A6//`
M'^(M*6I2C AT N4X-PE!Q=.[>Z:O23C9O6"(^-VRBB,@`2-'CN'I$Q14S29:#'W
MSUU&TBK\#+:>#)284VV6=1X>//GO%HIA$)4-$X`!)]36KP>3_1,+&^@6FGR+
M%-N`>@?,G2W]#\N7[#2,IUO"M?:R30Z AT E,8/!,>(LC1?;%E1C&IK)*UN)Y44
M9K3;5SL4<*7?>&_QQ]=9.I]2TV/MH$/7IY^PD6$4F?`;N,$FT.S=W/Q$J8GW
MP^KQ/X6W+/*'W````-RGQ/T"````````````````````````````````````
8`````````````````````````````/R#
`
end
--
Eric Backus
ericb%hplsla AT hplabs DOT hp DOT com
(206) 335-2495
- Raw text -