🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #170

fifth try

#170
From: Glen Herrmannsfeldt
Date: Mon, 20 Jul 1992 16:36
1152 lines
35731 bytes
Fifth try at this bug report.  

In trying to help track this down, and with the availability of
source code for libgcc, I got from getc to __srget, to __makebuf,
to fstat, and finally to Dos32QueryFileInfo, the OS/2 routine.
The program shown below has the same effect as the original.
As I do not yet have the official IBM documentation, I do not
know if the problem is in the calling sequence or in Dos32QueryFileInfo
itself.

Bug report for gcc version 2.1 for the Intel 386 under OS/2 2.0

I compiled it with 

    gcc -c why4.c 

and linked with

    link386 why4;

I am running OS/2 2.0 on a 33 MHz, 80486 clone machine.
Linking with link836 version 2.00.000.

I installed the compiler from the ZOO distribution from hobbes.nmsu.edu

I made no changes to the distributed files, and set my environment
variables, following the new-vars.cmd, modified to the actual
disk partition where gcc was installed.

Calling getchar(), with stdin redirected to a file, 
clobbers the variables stored after __textbuf in
memory.   This problem was traced to this point by finding which
statement clobbered the static variable.  It turned out to 
contain getchar().  Then I found that the clobbered variable was
immediately after __textbuf in the link map.

Looking through the distributed lib source, it would seem 
that getchar, or getc(stdin) calls __srget, which calls __makebuf,
which calls fstat, which calls Dos32QueryFileInfo.

I am using the HPFS file system, which may affect 
the st_blksize value.

OK, here is a program which demonstrates the problem, after
processing with

gcc -E why4.c | grep -v ^$

In stdio, __textbuf is dimensioned 8096, and therefore one should
not expect bytes after 8096 to change.  This program demonstates
that they do.

It should be run as

why4 <somefile

and as

why4 x <somefile

When an argument is supplied, Dos32QueryFileInfo is not called, 
and __textbuf does not get clobbered.

With no argument, __textbuf is clobbered.

Note that increasing the size of __textbuf in this sample program
shifts the clobber point down by an equivalent amount.  This,
in fact, contradicts my previous assertion that it is __textbuf
that is doing the clobbering.

Here is the sample program, before running through gcc -E.

#define INCL_DOSFILEMGR
#define INCL_DOSERRORS
#include <os2.h>
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
ULONG Dos32QueryFileInfo() asm ("Dos32QueryFileInfo");

unsigned char __textbuf[50000];
main(argc) 
int argc;
{
int i,j;
char c;
struct stat st;
FILESTATUS fs;
ULONG rc;
struct tm tim;
ULONG HandType;
ULONG FlagWord;

if(argc==1) rc = Dos32QueryFileInfo (0, 1, (PBYTE)&fs, sizeof (FILESTATUS));

for(j=8097;j<50000;j++) if(__textbuf[j]) printf("%d %02x\n",j,__textbuf[j]);
}


Here is the sample program, after running through

gcc -E why4.c | grep -v ^$ >why4.out

(The grep is to remove the large number of blank lines that
otherwise appear in cpp output.)


# 1 "why4.c"
# 1 "E:/GNU/OS2-INCLUDE/os2.h" 1 3
# 1 "E:/GNU/OS2-INCLUDE/os2def.h" 1 3
typedef unsigned short BOOL;
typedef unsigned long BOOL32;
typedef unsigned char BYTE;
typedef  void  *HSEM;
typedef HSEM *PHSEM;
typedef  void  *LHANDLE;
typedef BYTE *NPBYTE;
typedef unsigned char *NPCH;
typedef int _NPFN();
typedef _NPFN *NPFN;
typedef unsigned char *NPSZ;
typedef BOOL *PBOOL;
typedef BOOL32 *PBOOL32;
typedef BYTE *PBYTE;
typedef unsigned char *PCH;
typedef  char  *PCHAR;
typedef int _PFN();
typedef _PFN *PFN;
typedef   int  *PINT;
typedef  long  *PLONG;
typedef short  *PSHORT;
typedef unsigned char *PSZ;
typedef  void  *PVOID;
typedef unsigned short SEL;
typedef unsigned long SHANDLE;
typedef unsigned char UCHAR;
typedef unsigned int UINT;
typedef unsigned long ULONG;
typedef unsigned short USHORT;
typedef ULONG ERRORID;
typedef ERRORID *PERRORID;
typedef  long  COLOR;
typedef LHANDLE HAB;
typedef LHANDLE HBITMAP;
typedef LHANDLE HDC;
typedef LHANDLE HMF;
typedef SHANDLE HMODULE;
typedef LHANDLE HPAL;
typedef LHANDLE HPS;
typedef LHANDLE HRGN;
typedef LHANDLE HWND;
typedef COLOR *PCOLOR;
typedef HAB *PHAB;
typedef HBITMAP *PHBITMAP;
typedef HDC *PHDC;
typedef HMF *PHMF;
typedef HMODULE *PHMODULE;
typedef HPAL *PHPAL;
typedef HPS *PHPS;
typedef HRGN *PHRGN;
typedef HWND *PHWND;
typedef SHANDLE PID;
typedef PID *PPID;
typedef PVOID *PPVOID;
typedef SEL *PSEL;
typedef UCHAR *PUCHAR;
typedef UINT *PUINT;
typedef ULONG *PULONG;
typedef USHORT *PUSHORT;
typedef USHORT SGID;
typedef  char  STR8[8];
typedef SHANDLE TID;
typedef STR8 *PSTR8;
typedef TID *PTID;
typedef struct _DRIVDATA {
	 long  cb;
	 long  lVersion;
	 char  szDeviceName[32];
	 char  abGeneralData[1];
} DRIVDATA, *PDRIVDATA;
typedef struct _DEVOPENSTRUC {
	PSZ       pszLogAddress;
	PSZ       pszDriverName;
	PDRIVDATA pdriv;
	PSZ       pszDataType;
	PSZ       pszComment;
	PSZ       pszQueueProcName;
	PSZ       pszQueueProcParams;
	PSZ       pszSpoolerParams;
	PSZ       pszNetworkParams;
} DEVOPENSTRUC, *PDEVOPENSTRUC;
typedef struct _FATTRS {
	USHORT usRecordLength;
	USHORT fsSelection;
	 long    lMatch;
	 char    szFacename[32 ];
	USHORT idRegistry;
	USHORT usCodePage;
	 long    lMaxBaselineExt;
	 long    lAveCharWidth;
	USHORT fsType;
	USHORT fsFontUse;
} FATTRS, *PFATTRS;
typedef struct _PANOSE {
	BYTE bFamilyType;
	BYTE bSerifStyle;
	BYTE bWeight;
	BYTE bProportion;
	BYTE bContrast;
	BYTE bStrokeVariation;
	BYTE bArmStyle;
	BYTE bLetterform;
	BYTE bMidline;
	BYTE bXHeight;
	BYTE abReserved[2];
} PANOSE;
typedef struct _POINTL {
	 long  x;
	 long  y;
} POINTL, *PPOINTL, *NPPOINTL;
typedef struct _POINTS {
	short  x;
	short  y;
} POINTS, *PPOINTS;
typedef struct _QWORD {
	ULONG ulLo;
	ULONG ulHi;
} QWORD, *PQWORD;
typedef struct _RECTL {
	 long  xLeft;
	 long  yBottom;
	 long  xRight;
	 long  yTop;
} RECTL, *PRECTL, *NPRECTL;
typedef struct _FONTMETRICS {
	 char    szFamilyname[32 ];
	 char    szFacename[32 ];
	USHORT idRegistry;
	USHORT usCodePage;
	 long    lEmHeight;
	 long    lXHeight;
	 long    lMaxAscender;
	 long    lMaxDescender;
	 long    lLowerCaseAscent;
	 long    lLowerCaseDescent;
	 long    lInternalLeading;
	 long    lExternalLeading;
	 long    lAveCharWidth;
	 long    lMaxCharInc;
	 long    lEmInc;
	 long    lMaxBaselineExt;
	short   sCharSlope;
	short   sInlineDir;
	short   sCharRot;
	USHORT usWeightClass;
	USHORT usWidthClass;
	short   sXDeviceRes;
	short   sYDeviceRes;
	short   sFirstChar;
	short   sLastChar;
	short   sDefaultChar;
	short   sBreakChar;
	short   sNominalPointSize;
	short   sMinimumPointSize;
	short   sMaximumPointSize;
	USHORT fsType;
	USHORT fsDefn;
	USHORT fsSelection;
	USHORT fsCapabilities;
	 long    lSubscriptXSize;
	 long    lSubscriptYSize;
	 long    lSubscriptXOffset;
	 long    lSubscriptYOffset;
	 long    lSuperscriptXSize;
	 long    lSuperscriptYSize;
	 long    lSuperscriptXOffset;
	 long    lSuperscriptYOffset;
	 long    lUnderscoreSize;
	 long    lUnderscorePosition;
	 long    lStrikeoutSize;
	 long    lStrikeoutPosition;
	short   sKerningPairs;
	short   sFamilyClass;
	 long    lMatch;
	PANOSE panose;
} FONTMETRICS, *PFONTMETRICS;
typedef struct _WPOINT {
	short  x;
	short  dummy1;
	short  y;
	short  dummy2;
} WPOINT, *PWPOINT, *NPWPOINT;
typedef struct _WRECT {
	short  xLeft;
	short  dummy1;
	short  yBottom;
	short  dummy2;
	short  xRight;
	short  dummy3;
	short  yTop;
	short  dummy4;
} WRECT, *PWRECT, *NPWRECT;
# 1 "E:/GNU/OS2-INCLUDE/os2.h" 2 3
# 1 "E:/GNU/OS2-INCLUDE/bse.h" 1 3
# 1 "E:/GNU/OS2-INCLUDE/bsedos.h" 1 3
# 19 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
ULONG DosBeep(ULONG, ULONG) asm ("DosBeep");
ULONG DosExit(ULONG, ULONG) asm ("DosExit");
# 107 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
#pragma pack(1)
typedef struct _DENA1 {
	UCHAR reserved;
	UCHAR cbName;
	USHORT cbValue;
	UCHAR szName[1];
} DENA1, *PDENA1;
#pragma pack(4)
typedef struct _EASIZEBUF {
	USHORT cbMaxEASize;
	ULONG cbMaxEAListSize;
} EASIZEBUF, *PEASIZEBUF;
typedef struct _FDATE {
	UINT day :5;
	UINT month :4;
	UINT year :7;
} FDATE, *PFDATE;
typedef struct _FEA {
	BYTE fEA;
	BYTE cbName;
	USHORT cbValue;
} FEA, *PFEA;
#pragma pack(1)
typedef struct _FEA2 {
	ULONG oNextEntryOffset;
	BYTE fEA;
	BYTE cbName;
	USHORT cbValue;
	 char  szName[1];
} FEA2, *PFEA2;
typedef FEA2 DENA2;
typedef PFEA2 PDENA2;
typedef struct _FEA2LIST {
	ULONG cbList;
	FEA2 list[1];
} FEA2LIST, *PFEA2LIST;
#pragma pack(4)
typedef struct _FEALIST {
	ULONG cbList;
	FEA list[1];
} FEALIST, *PFEALIST;
typedef struct _FILELOCK {
	 long  lOffset;
	 long  lRange;
} FILELOCK, *PFILELOCK;
typedef struct _FSALLOCATE {
	ULONG idFileSystem;
	ULONG cSectorUnit;
	ULONG cUnit;
	ULONG cUnitAvail;
	USHORT cbSector;
} FSALLOCATE, *PFSALLOCATE;
typedef struct _FSQBUFFER {
	USHORT iType;
	USHORT cbName;
	UCHAR szName[1];
	USHORT cbFSDName;
	UCHAR szFSDName[1];
	USHORT cbFSAData;
	UCHAR rgFSAData[1];
} FSQBUFFER, *PFSQBUFFER;
typedef struct _FSQBUFFER2 {
	USHORT iType;
	USHORT cbName;
	USHORT cbFSDName;
	USHORT cbFSAData;
	UCHAR szName[1];
	UCHAR szFSDName[1];
	UCHAR rgFSAData[1];
} FSQBUFFER2, *PFSQBUFFER2;
typedef struct _FTIME {
	UINT twosecs :5;
	UINT minutes :6;
	UINT hours :5;
} FTIME, *PFTIME;
typedef struct _FILEFINDBUF {
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	USHORT attrFile;
	UCHAR cchName;
	 char  achName[				256 ];
} FILEFINDBUF, *PFILEFINDBUF;
#pragma pack(2)
typedef struct _FILEFINDBUF2 {
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	USHORT attrFile;
	ULONG cbList;
	UCHAR cchName;
	 char  achName[				256 ];
} FILEFINDBUF2, *PFILEFINDBUF2;
#pragma pack(4)
typedef struct _FILEFINDBUF3 {
	ULONG oNextEntryOffset;
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	ULONG attrFile;
	UCHAR cchName;
	 char  achName[				256 ];
} FILEFINDBUF3, *PFILEFINDBUF3;
typedef struct _FILEFINDBUF4 {
	ULONG oNextEntryOffset;
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	ULONG attrFile;
	ULONG cbList;
	UCHAR cchName;
	 char  achName[				256 ];
} FILEFINDBUF4, *PFILEFINDBUF4;
typedef struct _FILESTATUS {
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	USHORT attrFile;
} FILESTATUS, *PFILESTATUS;
typedef struct _FILESTATUS2 {
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	USHORT attrFile;
	ULONG cbList;
} FILESTATUS2, *PFILESTATUS2;
typedef struct _FILESTATUS3 {
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	ULONG attrFile;
} FILESTATUS3, *PFILESTATUS3;
typedef struct _FILESTATUS4 {
	FDATE fdateCreation;
	FTIME ftimeCreation;
	FDATE fdateLastAccess;
	FTIME ftimeLastAccess;
	FDATE fdateLastWrite;
	FTIME ftimeLastWrite;
	ULONG cbFile;
	ULONG cbFileAlloc;
	ULONG attrFile;
	ULONG cbList;
} FILESTATUS4, *PFILESTATUS4;
typedef struct _GEA {
	BYTE cbName;
	 char  szName[1];
} GEA, *PGEA;
#pragma pack(1)
typedef struct _GEA2 {
	ULONG oNextEntryOffset;
	BYTE cbName;
	 char  szName[1];
} GEA2, *PGEA2;
typedef struct _GEA2LIST {
	ULONG cbList;
	GEA2 list[1];
} GEA2LIST, *PGEA2LIST;
#pragma pack(4)
typedef struct _GEALIST {
	ULONG cbList;
	GEA list[1];
} GEALIST, *PGEALIST;
typedef struct _EAOP {
	PGEALIST fpGEAList;
	PFEALIST fpFEAList;
	ULONG oError;
} EAOP, *PEAOP;
#pragma pack(1)
typedef struct _EAOP2 {
	PGEA2LIST fpGEA2List;
	PFEA2LIST fpFEA2List;
	ULONG oError;
} EAOP2, *PEAOP2;
#pragma pack(4)
typedef SHANDLE HDIR;
typedef HDIR *PHDIR;
typedef ULONG HEV;
typedef HEV *PHEV;
typedef SHANDLE HFILE;
typedef HFILE *PHFILE;
typedef struct _SPOOLATTACH {
	USHORT hNmPipe;
	ULONG ulKey;
} SPOOLATTACH, *PSPOOLATTACH;
typedef struct _VOLUMELABEL {
	BYTE cch;
	 char  szVolLabel[12];
} VOLUMELABEL, *PVOLUMELABEL;
typedef struct _FSINFO {
	FDATE fdateCreation;
	FTIME ftimeCreation;
	VOLUMELABEL vol;
} FSINFO, *PFSINFO;
ULONG DosCancelLockRequest(HFILE, PFILELOCK) asm ("DosCancelLockRequest");
ULONG DosClose(HFILE) asm ("DosClose");
ULONG DosCopy(PSZ, PSZ, ULONG) asm ("DosCopy");
ULONG DosCreateDir(PSZ, PEAOP2) asm ("DosCreateDir");
ULONG DosDelete(PSZ) asm ("DosDelete");
ULONG DosDeleteDir(PSZ) asm ("DosDeleteDir");
ULONG DosDupHandle(HFILE, PHFILE) asm ("DosDupHandle");
ULONG DosEditName(ULONG, PSZ, PSZ, PBYTE, ULONG) asm ("DosEditName");
ULONG DosEnumAttribute(ULONG, PVOID, ULONG, PVOID, ULONG, PULONG, ULONG) asm ("DosEnumAttribute");
ULONG DosFileIO(HFILE, PVOID, ULONG, PLONG) asm ("DosFileIO");
ULONG DosFindClose(HDIR) asm ("DosFindClose");
ULONG DosFindFirst(PSZ, PHDIR, ULONG, PVOID, ULONG, PULONG, ULONG) asm ("DosFindFirst");
ULONG DosFindNext(HDIR, PVOID, ULONG, PULONG) asm ("DosFindNext");
ULONG DosFSAttach(PSZ, PSZ, PVOID, ULONG, ULONG) asm ("DosFSAttach");
ULONG DosMove(PSZ, PSZ) asm ("DosMove");
ULONG DosOpen(PSZ, PHFILE, PULONG, ULONG, ULONG, ULONG, ULONG, PEAOP2) asm ("DosOpen");
ULONG DosFSCtl(PVOID, ULONG, PULONG, PVOID, ULONG, PULONG, ULONG, PSZ, HFILE, ULONG) asm ("DosFSCtl");
ULONG DosQueryCurrentDir(ULONG, PBYTE, PULONG) asm ("DosQueryCurrentDir");
ULONG DosQueryCurrentDisk(PULONG, PULONG) asm ("DosQueryCurrentDisk");
ULONG DosQueryFHState(HFILE, PULONG) asm ("DosQueryFHState");
ULONG DosQueryFileInfo(HFILE, ULONG, PVOID, ULONG) asm ("DosQueryFileInfo");
ULONG DosQueryFSAttach(PSZ, ULONG, ULONG, PFSQBUFFER2, PULONG) asm ("DosQueryFSAttach");
ULONG DosQueryFSInfo(ULONG, ULONG, PVOID, ULONG) asm ("DosQueryFSInfo");
ULONG DosQueryHType(HFILE, PULONG, PULONG) asm ("DosQueryHType");
ULONG DosQueryPathInfo(PSZ, ULONG, PVOID, ULONG) asm ("DosQueryPathInfo");
ULONG DosQueryVerify(PBOOL32) asm ("DosQueryVerify");
ULONG DosRead(HFILE, PVOID, ULONG, PULONG) asm ("DosRead");
ULONG DosResetBuffer(HFILE) asm ("DosResetBuffer");
ULONG DosSetCurrentDir(PSZ) asm ("DosSetCurrentDir");
ULONG DosSetDefaultDisk(ULONG) asm ("DosSetDefaultDisk");
ULONG DosSetFHState(HFILE, ULONG) asm ("DosSetFHState");
ULONG DosSetFileInfo(HFILE, ULONG, PVOID, ULONG) asm ("DosSetFileInfo");
ULONG DosSetFileLocks(HFILE, PFILELOCK, PFILELOCK, PHEV, ULONG, PULONG) asm ("DosSetFileLocks");
ULONG DosSetFilePtr(HFILE,  long , ULONG, PULONG) asm ("DosSetFilePtr");
ULONG DosSetFileSize(HFILE, ULONG) asm ("DosSetFileSize");
ULONG DosSetFSInfo(ULONG, ULONG, PVOID, ULONG) asm ("DosSetFSInfo");
ULONG DosSetMaxFH(ULONG) asm ("DosSetMaxFH");
ULONG DosSetPathInfo(PSZ, ULONG, PVOID, ULONG, ULONG) asm ("DosSetPathInfo");
ULONG DosSetRelMaxFH(PLONG, PULONG) asm ("DosSetRelMaxFH");
ULONG DosSetVerify(BOOL32) asm ("DosSetVerify");
ULONG DosShutdown(ULONG) asm ("DosShutdown");
ULONG DosWrite(HFILE, PVOID, ULONG, PULONG) asm ("DosWrite");
ULONG DosAllocMem(PPVOID, ULONG, ULONG) asm ("DosAllocMem");
ULONG DosAllocSharedMem(PPVOID, PSZ, ULONG, ULONG) asm ("DosAllocSharedMem");
ULONG DosFreeMem(PVOID) asm ("DosFreeMem");
ULONG DosGetNamedSharedMem(PPVOID, PSZ, ULONG) asm ("DosGetNamedSharedMem");
ULONG DosGetSharedMem(PVOID, ULONG) asm ("DosGetSharedMem");
ULONG DosGiveSharedMem(PVOID, PID, ULONG) asm ("DosGiveSharedMem");
ULONG DosQueryMem(PVOID, PULONG, PULONG) asm ("DosQueryMem");
ULONG DosSetMem(PVOID, ULONG, ULONG) asm ("DosSetMem");
ULONG DosSubAllocMem(PVOID, PPVOID, ULONG) asm ("DosSubAllocMem");
ULONG DosSubFreeMem(PVOID, PVOID, ULONG) asm ("DosSubFreeMem");
ULONG DosSubSetMem(PVOID, ULONG, ULONG) asm ("DosSubSetMem");
ULONG DosSubUnsetMem(PVOID) asm ("DosSubUnsetMem");
# 1 "E:/GNU/OS2-INCLUDE/bsememf.h" 1 3
# 564 "E:/GNU/OS2-INCLUDE/bsedos.h" 2 3
typedef struct _PSEMRECORD {
	HSEM hsemCur;
	ULONG ulUser;
} SEMRECORD, *PSEMRECORD;
# 626 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
typedef struct _DATETIME {
	UCHAR hours;
	UCHAR minutes;
	UCHAR seconds;
	UCHAR hundredths;
	UCHAR day;
	UCHAR month;
	USHORT year;
	short  timezone;
	UCHAR weekday;
} DATETIME, *PDATETIME;
ULONG DosGetDateTime(PDATETIME) asm ("DosGetDateTime");
ULONG DosSetDateTime(PDATETIME) asm ("DosSetDateTime");
# 657 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 671 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 741 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 760 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 790 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 839 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 914 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 967 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 1048 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 1073 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 1086 "E:/GNU/OS2-INCLUDE/bsedos.h" 3
# 8 "E:/GNU/OS2-INCLUDE/bse.h" 2 3
# 1 "E:/GNU/OS2-INCLUDE/bseerr.h" 1 3
# 14 "E:/GNU/OS2-INCLUDE/bse.h" 2 3
# 4 "E:/GNU/OS2-INCLUDE/os2.h" 2 3
# 1 "E:/GNU/OS2-INCLUDE/pm.h" 1 3
# 13 "E:/GNU/OS2-INCLUDE/pm.h" 3
# 1 "E:/GNU/OS2-INCLUDE/pmwin.h" 1 3
# 65 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
typedef HMODULE HLIB;
typedef PHMODULE PHLIB;
typedef LHANDLE HPOINTER;
typedef  void  *MPARAM;
typedef MPARAM *PMPARAM;
typedef  void  *MRESULT;
typedef MRESULT *PMRESULT;
typedef MRESULT FNWP(HWND, USHORT, MPARAM, MPARAM);
typedef FNWP *PFNWP;
typedef struct _SWP {
	ULONG fl;
	short  cy;
	short  cx;
	short  y;
	short  x;
	HWND hwndInsertBehind;
	HWND hwnd;
	ULONG ulReserved1;
	ULONG ulReserved2;
} SWP, *PSWP;
HWND WinCreateWindow(HWND, PSZ, PSZ, ULONG, short , short , short , short , HWND, HWND, USHORT, PVOID, PVOID) asm ("WinCreateWindow");
BOOL WinDrawBitmap(HPS, HBITMAP, PRECTL, PPOINTL,  long ,  long , USHORT) asm ("WinDrawBitmap");
BOOL WinDrawBorder(HPS, PRECTL, short , short ,  long ,  long , ULONG) asm ("WinDrawBorder");
short  WinDrawText(HPS, short , PCH, PRECTL,  long ,  long , ULONG) asm ("WinDrawText");
BOOL WinEnableWindow(HWND, BOOL) asm ("WinEnableWindow");
BOOL WinEnableWindowUpdate(HWND, BOOL) asm ("WinEnableWindowUpdate");
BOOL WinInvalidateRect(HWND, PRECTL, USHORT) asm ("WinInvalidateRect");
BOOL WinInvalidateRegion(HWND, HRGN, USHORT) asm ("WinInvalidateRegion");
BOOL WinInvertRect(HPS, PRECTL) asm ("WinInvertRect");
BOOL WinIsChild(HWND, HWND) asm ("WinIsChild");
BOOL WinIsWindow(HAB, HWND) asm ("WinIsWindow");
BOOL WinIsWindowEnabled(HWND) asm ("WinIsWindowEnabled");
BOOL WinIsWindowVisible(HWND) asm ("WinIsWindowVisible");
short  WinLoadMessage(HAB, HMODULE, USHORT, short , PSZ) asm ("WinLoadMessage");
short  WinLoadString(HAB, HMODULE, USHORT, short , PSZ) asm ("WinLoadString");
short  WinMultWindowFromIDs(HWND, PHWND, USHORT, USHORT) asm ("WinMultWindowFromIDs");
HWND WinQueryDesktopWindow(HAB, HDC) asm ("WinQueryDesktopWindow");
HWND WinQueryObjectWindow(HWND) asm ("WinQueryObjectWindow");
HWND WinQueryWindow(HWND, short ) asm ("WinQueryWindow");
BOOL WinQueryWindowPos(HWND, PSWP) asm ("WinQueryWindowPos");
BOOL WinQueryWindowProcess(HWND, PPID, PTID) asm ("WinQueryWindowProcess");
short  WinQueryWindowText(HWND, short , PCH) asm ("WinQueryWindowText");
short  WinQueryWindowTextLength(HWND) asm ("WinQueryWindowTextLength");
BOOL WinSetMultWindowPos(HAB, PSWP, USHORT) asm ("WinSetMultWindowPos");
BOOL WinSetOwner(HWND, HWND) asm ("WinSetOwner");
BOOL WinSetParent(HWND, HWND, BOOL) asm ("WinSetParent");
BOOL WinSetWindowPos(HWND, HWND, short , short , short , short , ULONG) asm ("WinSetWindowPos");
BOOL WinSetWindowText(HWND, PSZ) asm ("WinSetWindowText");
BOOL WinUpdateWindow(HWND) asm ("WinUpdateWindow");
HWND WinWindowFromID(HWND, USHORT) asm ("WinWindowFromID");
typedef struct _QVERSDATA {
	USHORT environment;
	USHORT version;
} QVERSDATA, *PQVERSDATA;
HPS WinBeginPaint(HWND, HPS, PRECTL) asm ("WinBeginPaint");
MRESULT WinDefWindowProc(HWND, USHORT, MPARAM, MPARAM) asm ("WinDefWindowProc");
BOOL WinDestroyWindow(HWND) asm ("WinDestroyWindow");
BOOL WinEndPaint(HPS) asm ("WinEndPaint");
BOOL WinFillRect(HPS, PRECTL,  long ) asm ("WinFillRect");
HPS WinGetClipPS(HWND, HWND, USHORT) asm ("WinGetClipPS");
HPS WinGetPS(HWND) asm ("WinGetPS");
HAB WinInitialize(USHORT) asm ("WinInitialize");
BOOL WinIsWindowShowing(HWND) asm ("WinIsWindowShowing");
HDC WinOpenWindowDC(HWND) asm ("WinOpenWindowDC");
HAB WinQueryAnchorBlock(HWND) asm ("WinQueryAnchorBlock");
ULONG WinQueryVersion(HAB) asm ("WinQueryVersion");
BOOL WinQueryWindowRect(HWND, PRECTL) asm ("WinQueryWindowRect");
BOOL WinRegisterClass(HAB, PSZ, PFNWP, ULONG, USHORT) asm ("WinRegisterClass");
BOOL WinReleasePS(HPS) asm ("WinReleasePS");
short  WinScrollWindow(HWND, short , short , PRECTL, PRECTL, HRGN, PRECTL, USHORT) asm ("WinScrollWindow");
BOOL WinShowWindow(HWND, BOOL) asm ("WinShowWindow");
BOOL WinTerminate(HAB) asm ("WinTerminate");
BOOL WinSetActiveWindow(HWND, HWND) asm ("WinSetActiveWindow");
# 391 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
typedef LHANDLE HMQ;
typedef struct _MQINFO {
	USHORT cb;
	PID pid;
	TID tid;
	USHORT cmsgs;
	PVOID pReserved;
} MQINFO, *PMQINFO;
typedef struct _QMSG {
	HWND hwnd;
	USHORT msg;
	MPARAM mp1;
	MPARAM mp2;
	ULONG time;
	POINTL ptl;
} QMSG, *PQMSG;
BOOL WinCancelShutdown(HMQ, BOOL) asm ("WinCancelShutdown");
HMQ WinCreateMsgQueue(HAB, short ) asm ("WinCreateMsgQueue");
BOOL WinDestroyMsgQueue(HMQ) asm ("WinDestroyMsgQueue");
MRESULT WinDispatchMsg(HAB, PQMSG) asm ("WinDispatchMsg");
BOOL WinGetMsg(HAB, PQMSG, HWND, USHORT, USHORT) asm ("WinGetMsg");
BOOL WinPeekMsg(HAB, PQMSG, HWND, USHORT, USHORT, USHORT) asm ("WinPeekMsg");
BOOL WinPostMsg(HWND, USHORT, MPARAM, MPARAM) asm ("WinPostMsg");
BOOL WinQueryQueueInfo(HMQ, PMQINFO, USHORT) asm ("WinQueryQueueInfo");
BOOL WinRegisterUserDatatype(HAB, short , short , PSHORT) asm ("WinRegisterUserDatatype");
BOOL WinRegisterUserMsg(HAB, USHORT, short , short , short , short , short ) asm ("WinRegisterUserMsg");
MRESULT WinSendMsg(HWND, USHORT, MPARAM, MPARAM) asm ("WinSendMsg");
BOOL WinSetMsgMode(HAB, PSZ, short ) asm ("WinSetMsgMode");
BOOL WinSetSynchroMode(HAB, short ) asm ("WinSetSynchroMode");
# 595 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
BOOL WinFocusChange(HWND, HWND, USHORT) asm ("WinFocusChange");
BOOL WinSetFocus(HWND, HWND) asm ("WinSetFocus");
# 748 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
BOOL WinAlarm(HWND, USHORT) asm ("WinAlarm");
MRESULT WinDefDlgProc(HWND, USHORT, MPARAM, MPARAM) asm ("WinDefDlgProc");
BOOL WinDismissDlg(HWND, USHORT) asm ("WinDismissDlg");
USHORT WinDlgBox(HWND, HWND, PFNWP, HMODULE, USHORT, PVOID) asm ("WinDlgBox");
HWND WinLoadDlg(HWND, HWND, PFNWP, HMODULE, USHORT, PVOID) asm ("WinLoadDlg");
USHORT WinMessageBox(HWND, HWND, PSZ, PSZ, USHORT, ULONG) asm ("WinMessageBox");
BOOL WinQueryDlgItemShort(HWND, USHORT, PSHORT, BOOL) asm ("WinQueryDlgItemShort");
USHORT WinQueryDlgItemText(HWND, USHORT, short , PSZ) asm ("WinQueryDlgItemText");
short  WinQueryDlgItemTextLength(HWND, USHORT) asm ("WinQueryDlgItemTextLength");
BOOL WinSetDlgItemShort(HWND, USHORT, USHORT, BOOL) asm ("WinSetDlgItemShort");
BOOL WinSetDlgItemText(HWND, USHORT, PSZ) asm ("WinSetDlgItemText");
# 892 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 914 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 968 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1034 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1111 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1218 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1258 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
typedef struct _FRAMECDATA {
	USHORT cb;
	ULONG flCreateFlags;
	HMODULE hmodResources;
	USHORT idResources;
} FRAMECDATA, *PFRAMECDATA;
HWND WinCreateStdWindow(HWND, ULONG, PULONG, PSZ, PSZ, ULONG, HMODULE, USHORT, PHWND) asm ("WinCreateStdWindow");
# 1408 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1435 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1633 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1646 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1682 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1715 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1774 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1795 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
BOOL WinCreateCursor(HWND, short , short , short , short , USHORT, PRECTL) asm ("WinCreateCursor");
BOOL WinDestroyCursor(HWND) asm ("WinDestroyCursor");
BOOL WinShowCursor(HWND, BOOL) asm ("WinShowCursor");
# 1825 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1926 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1986 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1996 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 1 "E:/GNU/OS2-INCLUDE/pmshl.h" 1 3
typedef LHANDLE HINI;
typedef HINI *PHINI;
typedef LHANDLE HPROGRAM;
typedef HPROGRAM *PHPROGRAM;
typedef struct _PRFPROFILE {
	ULONG cchUserName;
	PSZ pszUserName;
	ULONG cchSysName;
	PSZ pszSysName;
} PRFPROFILE, *PPRFPROFILE;
typedef struct _XYWINSIZE {
	short  x;
	short  y;
	short  cx;
	short  cy;
	USHORT fsWindow;
} XYWINSIZE, *PXYWINSIZE;
# 128 "E:/GNU/OS2-INCLUDE/pmshl.h" 3
typedef LHANDLE HSWITCH;
typedef HSWITCH *PHSWITCH;
typedef LHANDLE HAPP;
typedef struct _SWCNTRL {
	HWND hwnd;
	HWND hwndIcon;
	HPROGRAM hprog;
	PID idProcess;
	USHORT idSession;
	UCHAR uchVisibility;
	UCHAR fbJump;
	 char  szSwtitle[				60 +1];
	BYTE bProgType;
} SWCNTRL, *PSWCNTRL;
HSWITCH WinAddSwitchEntry(PSWCNTRL) asm ("WinAddSwitchEntry");
HAPP WinHAPPfromPID(USHORT) asm ("WinHAPPfromPID");
USHORT WinRemoveSwitchEntry(HSWITCH) asm ("WinRemoveSwitchEntry");
# 186 "E:/GNU/OS2-INCLUDE/pmshl.h" 3
# 215 "E:/GNU/OS2-INCLUDE/pmshl.h" 3
# 1998 "E:/GNU/OS2-INCLUDE/pmwin.h" 2 3
# 2018 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 2037 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 2048 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 2086 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 2166 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 2219 "E:/GNU/OS2-INCLUDE/pmwin.h" 3
# 15 "E:/GNU/OS2-INCLUDE/pm.h" 2 3
# 1 "E:/GNU/OS2-INCLUDE/pmgpi.h" 1 3
# 19 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
typedef  long  FIXED;
typedef USHORT FIXED114;
typedef USHORT FIXED88;
typedef FIXED *PFIXED;
#pragma pack(2)
typedef struct _SIZEL {
	 long  cx;
	 long  cy;
} SIZEL, *PSIZEL;
#pragma pack(4)
BOOL GpiAssociate(HPS, HDC) asm ("GpiAssociate");
HPS GpiCreatePS(HAB, HDC, PSIZEL, ULONG) asm ("GpiCreatePS");
BOOL GpiDestroyPS(HPS) asm ("GpiDestroyPS");
BOOL GpiErase(HPS) asm ("GpiErase");
HDC GpiQueryDevice(HPS) asm ("GpiQueryDevice");
BOOL GpiRestorePS(HPS,  long ) asm ("GpiRestorePS");
 long  GpiSavePS(HPS) asm ("GpiSavePS");
# 124 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 149 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 191 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 216 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 268 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 293 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 352 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
BOOL GpiSetColor(HPS,  long ) asm ("GpiSetColor");
 long  GpiQueryColor(HPS) asm ("GpiQueryColor");
 long  GpiBox(HPS,  long , PPOINTL,  long ,  long ) asm ("GpiBox");
BOOL GpiMove(HPS, PPOINTL) asm ("GpiMove");
 long  GpiLine(HPS, PPOINTL) asm ("GpiLine");
 long  GpiPolyLine(HPS,  long , PPOINTL) asm ("GpiPolyLine");
BOOL GpiSetPattern(HPS,  long ) asm ("GpiSetPattern");
 long  GpiQueryPattern(HPS) asm ("GpiQueryPattern");
BOOL GpiBeginArea(HPS, ULONG) asm ("GpiBeginArea");
 long  GpiEndArea(HPS) asm ("GpiEndArea");
 long  GpiCharString(HPS,  long , PCH) asm ("GpiCharString");
 long  GpiCharStringAt(HPS, PPOINTL,  long , PCH) asm ("GpiCharStringAt");
# 779 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 869 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 1 "E:/GNU/OS2-INCLUDE/pmbitmap.h" 1 3
# 178 "E:/GNU/OS2-INCLUDE/pmbitmap.h" 3
# 873 "E:/GNU/OS2-INCLUDE/pmgpi.h" 2 3
# 898 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 963 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 1027 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 1040 "E:/GNU/OS2-INCLUDE/pmgpi.h" 3
# 16 "E:/GNU/OS2-INCLUDE/pm.h" 2 3
# 1 "E:/GNU/OS2-INCLUDE/pmdev.h" 1 3
typedef PSZ *PDEVOPENDATA;
HMF DevCloseDC(HDC) asm ("DevCloseDC");
HDC DevOpenDC(HAB,  long , PSZ,  long , PDEVOPENDATA, HDC) asm ("DevOpenDC");
BOOL DevQueryCaps(HDC,  long ,  long , PLONG) asm ("DevQueryCaps");
# 208 "E:/GNU/OS2-INCLUDE/pmdev.h" 3
# 17 "E:/GNU/OS2-INCLUDE/pm.h" 2 3
# 8 "E:/GNU/OS2-INCLUDE/os2.h" 2 3
# 3 "why4.c" 2
# 1 "E:/GNU/GCC-INCLUDE/stdio.h" 1 3
 
# 1 "E:/GNU/GCC-INCLUDE/sys/cdefs.h" 1 3
 
 
# 76 "E:/GNU/GCC-INCLUDE/sys/cdefs.h" 3
# 42 "E:/GNU/GCC-INCLUDE/stdio.h" 2 3
# 1 "E:/GNU/GCC-INCLUDE/machine/ansi.h" 1 3
 
 
# 44 "E:/GNU/GCC-INCLUDE/stdio.h" 2 3
typedef	long unsigned int		size_t;
typedef long fpos_t;		 
 
 
struct __sbuf {
	unsigned char *_base;
	int	_size;
};
 
typedef	struct __sFILE {
	unsigned char *_p;	 
	int	_r;		 
	int	_w;		 
	short	_flags;		 
	short	_file;		 
	struct	__sbuf _bf;	 
	int	_lbfsize;	 
	 
	void	*_cookie;	 
	int	(*_close) (void *)		;
	int	(*_read)  (void *, char *, int)		;
	fpos_t	(*_seek)  (void *, fpos_t, int)		;
	int	(*_write) (void *, const char *, int)		;
	 
	struct	__sbuf _ub;	 
	unsigned char *_up;	 
	int	_ur;		 
	 
	unsigned char _ubuf[3];	 
	unsigned char _nbuf[1];	 
	 
	struct	__sbuf _lb;	 
	 
	int	_blksize;	 
	int	_offset;	 
} FILE;
 
extern FILE __sF[];
 
	 
 
 
 
 
 
void	 clearerr (FILE *)		;
int	 fclose (FILE *)		;
int	 feof (FILE *)		;
int	 ferror (FILE *)		;
int	 fflush (FILE *)		;
int	 fgetc (FILE *)		;
int	 fgetpos (FILE *, fpos_t *)		;
char	*fgets (char *, size_t, FILE *)		;
FILE	*fopen (const char *, const char *)		;
int	 fprintf (FILE *, const char *, ...)		;
int	 fputc (int, FILE *)		;
int	 fputs (const char *, FILE *)		;
int	 fread (void *, size_t, size_t, FILE *)		;
FILE	*freopen (const char *, const char *, FILE *)		;
int	 fscanf (FILE *, const char *, ...)		;
int	 fseek (FILE *, long, int)		;
int	 fsetpos (FILE *, const fpos_t *)		;
long	 ftell (const FILE *)		;
int	 fwrite (const void *, size_t, size_t, FILE *)		;
int	 getc (FILE *)		;
int	 getchar (void)		;
char	*gets (char *)		;
extern int sys_nerr;			 
extern char *sys_errlist[];
void	 perror (const char *)		;
int	 printf (const char *, ...)		;
int	 putc (int, FILE *)		;
int	 putchar (int)		;
int	 puts (const char *)		;
int	 remove (const char *)		;
int	 rename  (const char *, const char *)		;
void	 rewind (FILE *)		;
int	 scanf (const char *, ...)		;
void	 setbuf (FILE *, char *)		;
int	 setvbuf (FILE *, char *, int, size_t)		;
int	 sprintf (char *, const char *, ...)		;
int	 sscanf (char *, const char *, ...)		;
FILE	*tmpfile (void)		;
char	*tmpnam (char *)		;
int	 ungetc (int, FILE *)		;
int	 vfprintf (FILE *, const char *, char *			)		;
int	 vprintf (const char *, char *			)		;
int	 vsprintf (char *, const char *, char *			)		;
 
 
 
char	*ctermid (char *)		;
FILE	*fdopen (int, const char *)		;
int	 fileno (FILE *)		;
 
 
 
char	*fgetline (FILE *, size_t *)		;
int	 fpurge (FILE *)		;
int	 getw (FILE *)		;
int	 pclose (FILE *)		;
FILE	*popen (const char *, const char *)		;
int	 putw (int, FILE *)		;
void	 setbuffer (FILE *, char *, int)		;
int	 setlinebuf (FILE *)		;
char	*tempnam (const char *, const char *)		;
int	 snprintf (char *, size_t, const char *, ...)		;
int	 vsnprintf (char *, size_t, const char *, char *			)		;
int	 vscanf (const char *, char *			)		;
int	 vsscanf (const char *, const char *, char *			)		;
 
 
 
 
FILE	*funopen (const void *,
		int (*)(void *, char *, int),
		int (*)(void *, const char *, int),
		fpos_t (*)(void *, fpos_t, int),
		int (*)(void *))		;
 
 
 
int	__srget (FILE *)		;
int	__svfscanf (FILE *, const char *, char *			)		;
int	__swbuf (int, FILE *)		;
 
 
static inline int __sputc(int _c, FILE *_p) {
	if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
		return (*_p->_p++ = _c);
	else
		return (__swbuf(_c, _p));
}
# 331 "E:/GNU/GCC-INCLUDE/stdio.h" 3
# 4 "why4.c" 2
# 1 "E:/GNU/GCC-INCLUDE/time.h" 1 3
 
typedef	unsigned long			clock_t;
typedef	long				time_t;
struct tm {
	int	tm_sec;		 
	int	tm_min;		 
	int	tm_hour;	 
	int	tm_mday;	 
	int	tm_mon;		 
	int	tm_year;	 
	int	tm_wday;	 
	int	tm_yday;	 
	int	tm_isdst;	 
	long	tm_gmtoff;	 
	char	*tm_zone;	 
};
 
char *asctime (const struct tm *)		;
clock_t clock (void)		;
char *ctime (const time_t *)		;
double difftime (time_t, time_t)		;
struct tm *gmtime (const time_t *)		;
struct tm *localtime (const time_t *)		;
time_t mktime (struct tm *)		;
size_t strftime (char *, size_t, const char *, const struct tm *)		;
time_t time (time_t *)		;
void tzset (void)		;
char *timezone (int, int)		;
void tzsetwall (void)		;
 
# 5 "why4.c" 2
# 1 "E:/GNU/GCC-INCLUDE/sys/types.h" 1 3
 
typedef	unsigned char	u_char;
typedef	unsigned short	u_short;
typedef	unsigned int	u_int;
typedef	unsigned long	u_long;
typedef	unsigned short	ushort;		 
typedef	char *	caddr_t;		 
typedef	long	daddr_t;		 
typedef	short	dev_t;			 
typedef	u_long	ino_t;			 
typedef	long	off_t;			 
typedef	u_short	nlink_t;		 
typedef	long	swblk_t;		 
typedef	long	segsz_t;		 
typedef	u_short	uid_t;			 
typedef	u_short	gid_t;			 
typedef	short	pid_t;			 
typedef	u_short	mode_t;			 
typedef u_long	fixpt_t;		 
typedef	struct	_uquad	{ u_long val[2]; } u_quad;
typedef	struct	_quad	{   long val[2]; } quad;
typedef	long *	qaddr_t;	 
# 1 "E:/GNU/GCC-INCLUDE/machine/types.h" 1 3
 
typedef struct _physadr {
	int r[1];
} *physadr;
typedef struct label_t {
	int val[6];
} label_t;
typedef	u_long	vm_offset_t;
typedef	u_long	vm_size_t;
# 71 "E:/GNU/GCC-INCLUDE/sys/types.h" 2 3
 
typedef long	fd_mask;
typedef	struct fd_set {
	fd_mask	fds_bits[(((256 )+(( (sizeof(fd_mask) * 8		)	)-1))/( (sizeof(fd_mask) * 8		)	)) ];
} fd_set;
# 132 "E:/GNU/GCC-INCLUDE/sys/types.h" 3
# 6 "why4.c" 2
# 1 "E:/GNU/GCC-INCLUDE/sys/stat.h" 1 3
 
struct stat
{
	dev_t	st_dev;			 
	ino_t	st_ino;			 
	mode_t	st_mode;		 
	nlink_t	st_nlink;		 
	uid_t	st_uid;			 
	gid_t	st_gid;			 
	dev_t	st_rdev;		 
	off_t	st_size;		 
	time_t	st_atime;		 
	long	st_spare1;
	time_t	st_mtime;		 
	long	st_spare2;
	time_t	st_ctime;		 
	long	st_spare3;
	long	st_blksize;		 
	long	st_blocks;		 
	u_long	st_flags;		 
	u_long	st_gen;			 
};
					 
 
mode_t	umask (mode_t)		;
int	chmod (const char *, mode_t)		;
int	fstat (int, struct stat *)		;
int	mkdir (const char *, mode_t)		;
int	mkfifo (const char *, mode_t)		;
int	stat (const char *, struct stat *)		;
int	fchmod (int, mode_t)		;
int	lstat (const char *, struct stat *)		;
 
# 7 "why4.c" 2
ULONG Dos32QueryFileInfo() asm ("Dos32QueryFileInfo");
unsigned char __textbuf[50000];
main(argc) 
int argc;
{
int i,j;
char c;
struct stat st;
FILESTATUS fs;
ULONG rc;
struct tm tim;
ULONG HandType;
ULONG FlagWord;
if(argc==1) rc = Dos32QueryFileInfo (0, 1, (PBYTE)&fs, sizeof (FILESTATUS));
for(j=8097;j<50000;j++) if(__textbuf[j]) printf("%d %02x\n",j,__textbuf[j]);
}
Technical Details
Message-ID: <2a6aeb74.egn@egn.hood.caltech.edu>
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!egn.hood.CAltech.EDU!gah

Show Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!egn.hood.CAltech.EDU!gah
From: gah@egn.hood.CAltech.EDU (Glen Herrmannsfeldt)
Subject: fifth try
Message-ID: <2a6aeb74.egn@egn.hood.caltech.edu>
Sender: gnulists@ai.mit.edu
Organization: GNUs Not Usenet
Distribution: gnu
Date: Mon, 20 Jul 1992 16:36:01 GMT
Approved: bug-gcc@prep.ai.mit.edu
Lines: 1154