Mail Archives: cygwin/2003/02/25/11:54:47
--------------070308020100050705050903
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hi all,
This code is supposed to use 'write' to write in binary format a float
array of 12
elements (thus 4*12=48 bytes) to stdout (on execution it is redirected
to a file):
/* ************************************* */
#include <stdio.h>
main() {
float const vector[12]={1.,0.2,2.,0.,1.,-1.,512.,512.,0.01,100.,1.,0.};
fprintf(stderr," %ld bytes writen to stdout\n",write(1,vector,48));
}
/* *************************************** */
- I compile it with gcc 3.2-3 under cygwin 1.3.17-1.
- The fprintf command tell us that the program has written to stdout 48
bytes. But looking
at the actual file size, it is of 49 bytes.
- Examining the file with an hex viewer, there is an extra byte 0D
between the 8th and the 9th element of the array. This makes the file
useless to be used by external applications.
- The extra byte does not appear if you change some of the numbers (for
example replace 0.01 by
0.001) but if you try to write a large enough array, extra bytes always
appear somewhere.
- The same behavior appears by using fwrite(...,stdout). It does not
happen if fwrite writes to a file open with fopen. I've tried the same
code under gcc and
linux Suse7.*, several versions of c compilers under SGI and HP unix,
... ,and the extra bytes never appear.
if you try to read the file generated under cygwin with read (or
fread(...,stdin)) the behavior is still
more curious: the following code reads 'vector' from stdin (which on
execution is conected to the binary file written before):
/* ************************************** */
#include <stdio.h>
main() {
float vector[12];
int i;
fprintf(stderr,"%ld bytes read\n",read(0,vector,48));
for( i=0; i<12; i++){fprintf(stderr,"%f ", vector[i]);}
}
/* ************************************** */
The fprintf statement tell us that the program has read 47 bytes, which
reflects some error. But in fact it has read 49, since all the numbers
in the file have been read correctly.
Still more: if you read stdin from a file written by the first program under
linux, where it behaves correctly and outputs 48 bytes, the reading
program also
reads in the numbers correctly, and reports the correct byte count.
All of this is quite puzzling, and frustrating when trying to use cygwin
to write binary to be piped to other applications. Any insight?
I attach the output of 'cygcheck -s -v -r > cygcheck.out'
--
Emilio Hernandez-Garcia
Instituto Mediterraneo de Estudios Avanzados (IMEDEA) Tel:34 971 171307
CSIC-UIB, Campus Universitat Illes Balears Fax:34 971 172309
E-07122 Palma de Mallorca e-mail: emilio AT imedea DOT uib DOT es
Spain http://www.imedea.uib.es/~emilio/
--------------070308020100050705050903
Content-Type: text/plain;
name="cygcheck.out"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="cygcheck.out"
Cygwin Win95/NT Configuration Diagnostics
Current System Time: Tue Feb 25 17:04:07 2003
Windows XP Professional Ver 5.1 Build 2600
Path: C:\cygwin\usr\local\bin
C:\cygwin\bin
C:\cygwin\bin
c:\Archivos de programa\texmf\miktex\bin
c:\WINDOWS\system32
c:\WINDOWS
c:\WINDOWS\System32\Wbem
c:\Archivos de programa\Archivos comunes\Adaptec Shared\System
c:\WINDOWS\system32\config\systemprofile\bin
d:\Users\Emilio\bin
c:\matlab6p5\bin\win32
SysDir: C:\WINDOWS\System32
WinDir: C:\WINDOWS
HOME = `C:\cygwin\home\Emilio'
MAKE_MODE = `unix'
PWD = `/home/Emilio/Mis Documentos/cgle/coupled/WritingCFtests'
USER = `Emilio'
ALLUSERSPROFILE = `C:\Documents and Settings\All Users'
APPDATA = `D:\Users\Emilio\Datos de programa'
CLASSPATH = `"C:\Archivos de programa\JavaSoft\JRE\1.3.1_02\lib\ext\QTJava.zip"'
CLIENTNAME = `Console'
COMMONPROGRAMFILES = `C:\Archivos de programa\Archivos comunes'
COMPUTERNAME = `EMILIOPC'
COMSPEC = `C:\WINDOWS\system32\cmd.exe'
HOMEDRIVE = `C:'
HOMEPATH = `\Users\Emilio'
LOGONSERVER = `\\EMILIOPC'
MANPATH = `:/usr/ssl/man'
NUMBER_OF_PROCESSORS = `1'
OLDPWD = `/home/Emilio/Mis Documentos/cgle/coupled'
OS = `Windows_NT'
PATHEXT = `.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH'
PROCESSOR_ARCHITECTURE = `x86'
PROCESSOR_IDENTIFIER = `x86 Family 15 Model 2 Stepping 4, GenuineIntel'
PROCESSOR_LEVEL = `15'
PROCESSOR_REVISION = `0204'
PROGRAMFILES = `C:\Archivos de programa'
PROMPT = `$P$G'
PS1 = `\[\033]0;\w\007
\033[32m\]\u@\h \[\033[33m\w\033[0m\]
$ '
QTJAVA = `"C:\Archivos de programa\JavaSoft\JRE\1.3.1_02\lib\ext\QTJava.zip"'
SESSIONNAME = `Console'
SHLVL = `1'
SYSTEMDRIVE = `C:'
SYSTEMROOT = `C:\WINDOWS'
TEMP = `d:\Users\Emilio\CONFIG~1\Temp'
TERM = `cygwin'
TMP = `d:\Users\Emilio\CONFIG~1\Temp'
USERDOMAIN = `EMILIOPC'
USERNAME = `Emilio'
USERPROFILE = `D:\Users\Emilio'
WINDIR = `C:\WINDOWS'
_ = `/usr/bin/cygcheck'
HKEY_CURRENT_USER\Software\Cygnus Solutions
HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin
HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2
HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\Program Options
HKEY_CURRENT_USER\Software\CygnusSoftware
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\AutoExploreSettings
(default) = 0x00000001
FindNumber = 0x00000000
SavePoint = 0x0000001e
BaseName = `D:\transfer3\Fract&Chaos\cygnus\Fractal eXtreme\autofound0000.fx'
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\LeftButton
(default) = 0x00000000
ShiftClick = 0x00000001
CtrlClick = 0x00000002
AltClick = 0x00000003
CtrlShiftClick = 0x00000004
AltShiftClick = 0x00000005
CtrlAltClick = 0x00000005
CtrlShiftAltClick = 0x00000005
DoubleClick = 0x00000000
ShiftDoubleClick = 0x00000002
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\ProjectSettings
(default) = `False'
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\RightButton
(default) = 0x00000000
ShiftClick = 0x00000001
CtrlClick = 0x00000002
AltClick = 0x00000003
CtrlShiftClick = 0x00000004
AltShiftClick = 0x00000005
CtrlAltClick = 0x00000005
CtrlShiftAltClick = 0x00000005
DoubleClick = 0x00000004
ShiftDoubleClick = 0x00000006
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\StatusInfo
(default) = `False'
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\VariousSettings
(default) = `0.000000'
ZoomName = `'
MaxCalcSize = 0x00000003
MaxDragCalcSize = 0x00000001
MaxDragFrameRate = 0x00000005
CustomZoom = `True'
Advanced = `False'
ShowSplash = `True'
ZoomSpeed = 0x00000002
PaletteLoading = 0x00000000
ZoomDest = 0x00000001
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\WindowPositions
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\WindowPositions\About
(default) = 0x0000004d
TopEdge = 0x00000073
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\WindowPositions\FractalSelector
(default) = 0x0000001a
TopEdge = 0x0000004f
Width = 0x00000167
Height = 0x00000154
Zoomed = `False'
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\WindowPositions\MainWindow
(default) = 0x00000016
TopEdge = 0x0000001d
Width = 0x0000041a
Height = 0x000002e6
Zoomed = `False'
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\WindowPositions\PreSale
(default) = 0x0000001a
TopEdge = 0x0000004f
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\WindowPositions\Reminder
(default) = 0x0000001a
TopEdge = 0x0000004f
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\WindowPositions\TipOfTheDay
(default) = 0x0000001a
TopEdge = 0x0000004f
HKEY_CURRENT_USER\Software\CygnusSoftware\FractaleXtreme\ZoomSettings
(default) = `D:\transfer3\Fract&Chaos\cygnus\Fractal eXtreme\Movies\'
StartZoom = 0x00000000
HKEY_CURRENT_USER\Software\CygnusSoftware\FXMPlay
HKEY_CURRENT_USER\Software\CygnusSoftware\FXMPlay\WindowPositions
HKEY_CURRENT_USER\Software\CygnusSoftware\FXMPlay\WindowPositions\ZoomPlayer
(default) = 0x00000000
TopEdge = 0x00000104
Width = 0x000002da
Height = 0x000001a3
Zoomed = `False'
HKEY_CURRENT_USER\Software\CygnusSoftware\FXMPlay\WindowPositions\ZoomPlayerDialog
(default) = 0x00000000
TopEdge = 0x00000000
Width = 0x0000015a
Height = 0x00000104
Zoomed = `False'
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2
(default) = `/cygdrive'
cygdrive flags = 0x00000020
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/
(default) = `C:\cygwin'
flags = 0x00000008
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/bin
(default) = `C:\cygwin/bin'
flags = 0x00000008
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/lib
(default) = `C:\cygwin/lib'
flags = 0x00000008
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\Program Options
a: fd N/A N/A
c: hd NTFS 10001Mb 64% CP CS UN PA FC Cdisk
d: hd NTFS 35000Mb 19% CP CS UN PA FC Ddisk
e: cd N/A N/A
f: net NTFS 228856Mb 20% CP CS PA emilio
C:\cygwin / system textmode
C:\cygwin/bin /usr/bin system textmode
C:\cygwin/lib /usr/lib system textmode
. /cygdrive user textmode,cygdrive
Found: C:\cygwin\bin\bash.exe
Found: C:\cygwin\bin\cat.exe
Found: C:\cygwin\bin\cpp.exe
Found: C:\cygwin\bin\find.exe
Found: C:\cygwin\bin\gcc.exe
Found: C:\cygwin\bin\gdb.exe
Found: C:\cygwin\bin\ld.exe
Found: C:\cygwin\bin\ls.exe
Found: C:\cygwin\bin\make.exe
Found: C:\cygwin\bin\sh.exe
644k 2002/12/08 C:\cygwin\bin\cygcrypto.dll - os=4.0 img=1.0 sys=4.0
"cygcrypto.dll" v0.0 ts=2002/12/8 20:57
45k 2001/04/25 C:\cygwin\bin\cygform5.dll - os=4.0 img=1.0 sys=4.0
"cygform5.dll" v0.0 ts=2001/4/25 7:28
35k 2002/01/09 C:\cygwin\bin\cygform6.dll - os=4.0 img=1.0 sys=4.0
"cygform6.dll" v0.0 ts=2002/1/9 7:03
19k 2002/02/20 C:\cygwin\bin\cyggdbm.dll - os=4.0 img=1.0 sys=4.0
"cyggdbm.dll" v0.0 ts=2002/2/20 4:05
17k 2001/06/28 C:\cygwin\bin\cyghistory4.dll - os=4.0 img=1.0 sys=4.0
"cyghistory4.dll" v0.0 ts=2001/1/7 5:34
20k 2002/10/10 C:\cygwin\bin\cyghistory5.dll - os=4.0 img=1.0 sys=4.0
"cyghistory5.dll" v0.0 ts=2002/10/10 19:28
929k 2002/06/24 C:\cygwin\bin\cygiconv-2.dll - os=4.0 img=1.0 sys=4.0
"cygiconv-2.dll" v0.0 ts=2002/6/24 20:24
22k 2001/12/13 C:\cygwin\bin\cygintl-1.dll - os=4.0 img=1.0 sys=4.0
"cygintl-1.dll" v0.0 ts=2001/12/13 10:28
28k 2002/09/20 C:\cygwin\bin\cygintl-2.dll - os=4.0 img=1.0 sys=4.0
"cygintl-2.dll" v0.0 ts=2002/9/20 5:13
26k 2001/04/25 C:\cygwin\bin\cygmenu5.dll - os=4.0 img=1.0 sys=4.0
"cygmenu5.dll" v0.0 ts=2001/4/25 7:27
20k 2002/01/09 C:\cygwin\bin\cygmenu6.dll - os=4.0 img=1.0 sys=4.0
"cygmenu6.dll" v0.0 ts=2002/1/9 7:03
156k 2001/04/25 C:\cygwin\bin\cygncurses++5.dll - os=4.0 img=1.0 sys=4.0
"cygncurses++5.dll" v0.0 ts=2001/4/25 7:29
175k 2002/01/09 C:\cygwin\bin\cygncurses++6.dll - os=4.0 img=1.0 sys=4.0
"cygncurses++6.dll" v0.0 ts=2002/1/9 7:03
226k 2001/04/25 C:\cygwin\bin\cygncurses5.dll - os=4.0 img=1.0 sys=4.0
"cygncurses5.dll" v0.0 ts=2001/4/25 7:17
202k 2002/01/09 C:\cygwin\bin\cygncurses6.dll - os=4.0 img=1.0 sys=4.0
"cygncurses6.dll" v0.0 ts=2002/1/9 7:03
15k 2001/04/25 C:\cygwin\bin\cygpanel5.dll - os=4.0 img=1.0 sys=4.0
"cygpanel5.dll" v0.0 ts=2001/4/25 7:27
12k 2002/01/09 C:\cygwin\bin\cygpanel6.dll - os=4.0 img=1.0 sys=4.0
"cygpanel6.dll" v0.0 ts=2002/1/9 7:03
40k 2001/11/21 C:\cygwin\bin\cygpcre.dll - os=4.0 img=1.0 sys=4.0
"cygpcre.dll" v0.0 ts=2001/11/21 23:15
39k 2001/11/21 C:\cygwin\bin\cygpcreposix.dll - os=4.0 img=1.0 sys=4.0
"cygpcreposix.dll" v0.0 ts=2001/11/21 23:15
22k 2002/06/09 C:\cygwin\bin\cygpopt-0.dll - os=4.0 img=1.0 sys=4.0
"cygpopt-0.dll" v0.0 ts=2002/6/9 7:45
108k 2001/06/28 C:\cygwin\bin\cygreadline4.dll - os=4.0 img=1.0 sys=4.0
"cygreadline4.dll" v0.0 ts=2001/1/7 5:34
127k 2002/10/10 C:\cygwin\bin\cygreadline5.dll - os=4.0 img=1.0 sys=4.0
"cygreadline5.dll" v0.0 ts=2002/10/10 19:28
165k 2002/12/08 C:\cygwin\bin\cygssl.dll - os=4.0 img=1.0 sys=4.0
"cygssl.dll" v0.0 ts=2002/12/8 20:57
550k 2002/12/16 C:\cygwin\bin\cygtcl83.dll - os=4.0 img=1.0 sys=4.0
"cygtcl83.dll" v0.0 ts=2002/12/16 3:49
12k 2002/12/16 C:\cygwin\bin\cygtclpip83.dll - os=4.0 img=1.0 sys=4.0
217k 2002/12/16 C:\cygwin\bin\cygtix4183.dll - os=4.0 img=1.0 sys=4.0
"cygtix4183.dll" v0.0 ts=2002/12/16 3:53
830k 2002/12/16 C:\cygwin\bin\cygtk83.dll - os=4.0 img=1.0 sys=4.0
"cygtk83.dll" v0.0 ts=2002/12/16 3:52
50k 2002/03/12 C:\cygwin\bin\cygz.dll - os=4.0 img=1.0 sys=4.0
"cygz.dll" v0.0 ts=2002/3/12 5:38
923k 2002/11/27 C:\cygwin\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
"cygwin1.dll" v0.0 ts=2002/11/28 0:54
Cygwin DLL version info:
DLL version: 1.3.17
DLL epoch: 19
DLL bad signal mask: 19005
DLL old termios: 5
DLL malloc env: 28
API major: 0
API minor: 67
Shared data: 3
DLL identifier: cygwin1
Mount registry: 2
Cygnus registry name: Cygnus Solutions
Cygwin registry name: Cygwin
Program options name: Program Options
Cygwin mount registry name: mounts v2
Cygdrive flags: cygdrive flags
Cygdrive prefix: cygdrive prefix
Cygdrive default prefix:
Build date: Wed Nov 27 18:54:29 EST 2002
Shared id: cygwin1S3
Cygwin Package Information
Last downloaded files to: D:\src\cygwin
Last downloaded files from: ftp://ftp.rediris.es/mirror/cygwin
Package Version
_update-info-dir 00102-1
ash 20020731-1
base-files 1.1-1
base-passwd 1.0-1
bash 2.05b-8
bc 1.06-1
binutils 20021117-1
clear 1.0-1
cygutils 1.1.3-1
cygwin 1.3.17-1
cygwin-doc 1.2-1
diff 1.0-1
diffutils 2.8.1-1
fileutils 4.1-1
findutils 4.1.7-4
gawk 3.1.1-5
gcc 3.2-3
gcc-mingw 20020817-3
gdb 20021215-1
gdbm 1.8.0-4
grep 2.5-1
groff 1.18.1-2
gzip 1.3.3-4
less 378-1
libiconv2 1.8-2
libintl1 0.10.40-1
libintl2 0.11.5-1
libncurses5 5.2-1
libncurses6 5.2-8
libpopt0 1.6.4-4
libreadline4 4.1-2
libreadline5 4.3-2
login 1.7-1
make 3.79.1-7
man 1.5j-1
mingw-runtime 2.2-1
more 2.11o-1
ncurses 5.2-8
newlib-man 20020801
openssl 0.9.6h-1
pcre 3.7-1
readline 4.3-2
sed 4.0.1-1
sh-utils 2.0-3
tar 1.13.25-1
tcsh 6.11.00-5
termcap 20020930-1
terminfo 5.2-3
texinfo 4.2-4
textutils 2.0.21-1
w32api 2.1-1
wget 1.8.2-1
which 1.5-1
zlib 1.1.4-1
Use -h to see help about each section
--------------070308020100050705050903
Content-Type: text/plain; charset=us-ascii
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
--------------070308020100050705050903--
- Raw text -