🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Glen Herrmannsfeldt Mon, 20 Jul 1992 16:36
fifth try
#170
Author: 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]);
}
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads