[1945] in Perl-Users-Digest
-B FILE in linux perl not implemented? or why my stdio ain't std
daemon@ATHENA.MIT.EDU (Calvin Clark)
Thu May 6 17:03:25 1993
Date: Thu, 6 May 93 17:02 EDT
From: Calvin Clark <ckclark@MIT.EDU>
To: perl-users@MIT.EDU
[ Pardon me if this is a FAQ, but there is no FAQ for comp.lang.perl on
the new pit-manager, bloom-picayune. ]
When I try to use -B on a filehandle to determine whether or not the
file is a binary file, I get the error:
-T and -B not implemented on filehandles
I have only seen this on the linux box (quiche), but it should occur on
any system with "stdio that's not quite std," because of the following
lines in doio.c:
1192 #if defined(STDSTDIO) || defined(atarist) /* this will work with atariST
1193 fstat(fileno(stio->ifp),&statcache);
1194 if (S_ISDIR(statcache.st_mode)) /* handle NFS glitch */
1195 return arg->arg_type == O_FTTEXT ? &str_no : &str_yes;
1196 if (stio->ifp->_cnt <= 0) {
1197 i = getc(stio->ifp);
1198 if (i != EOF)
1199 (void)ungetc(i,stio->ifp);
1200 }
1201 if (stio->ifp->_cnt <= 0) /* null file is anything */
1202 return &str_yes;
1203 len = stio->ifp->_cnt + (stio->ifp->_ptr - stio->ifp->_base)
1204 s = stio->ifp->_base;
1205 #else
1206 fatal("-T and -B not implemented on filehandles");
1207 #endif
(Configure looks for _cnt in <stdio.h> to determine whether or not it can
get away with this code. If you don't have it, then your stdio isn't
very std, I guess.)
Ahem. Has any complained about this yet?
Perl version is 4.035.
-Calvin