Article View: gnu.gcc.bug
Article #170fifth try
From: Glen Herrmannsfeldt
Date: Mon, 20 Jul 1992 16:36
Date: Mon, 20 Jul 1992 16:36
1152 lines
35731 bytes
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!gahShow 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