rommel@lan.informatik.tu-muenchen.dbp.de (Kai-Uwe Rommel) (02/20/90)
This is a small "qtime" application for MS Windows (hacked last night).
It can be toggled between qtime and standard ctime display by double mouse
clicks or by pressing ENTER or SPACE when it has the focus. It adjusts its
window size to the line length and centers itself at the current X position.
Note that you can't move it with the mouse because it does not have a caption
bar. You CAN move it with ALT-F7 and the cursor keys.
I use a slightly modified <windows.h> which saves me from putting all the
window/dialog-box functions in my programs into the definition file's export
section (or forgetting it :-). It uses the _export attribute of MS C 5.1
like the CALLBACK define in the OS/2 PM headers. The context diff to the
standard <windows.h> of the SDK 2.1 is included.
-- (This may be of general interest besides qtime.)
I put qtime.exe into a .zip archive because of the CRC protection.
Hope you all have PKZIP 1.0x otherwise you have to compile.
Kai Uwe Rommel
Munich
rommel@lan.informatik.tu-muenchen.dbp.de
---- Cut Here and unpack ----
#!/bin/sh
# SHAR: Shell Archiver (v1.23)
#
# Run the following text with /bin/sh to create:
# qtime.doc
# qtime.c
# qtimesub.c
# qtime.def
# qtime.cs
# qtime.uu
# windows.dif
#
echo "x - extracting qtime.doc (Text)"
sed 's/^X//' << 'SHAR_EOF' > qtime.doc &&
XThis is a small "qtime" application for MS Windows (hacked last night).
XIt can be toggled between qtime and standard ctime display by double mouse
Xclicks or by pressing ENTER or SPACE when it has the focus. It adjusts its
Xwindow size to the line length and centers itself at the current X position.
XNote that you can't move it with the mouse because it does not have a caption
Xbar. You CAN move it with ALT-F7 and the cursor keys.
X
XI use a slightly modified <windows.h> which saves me from putting all the
Xwindow/dialog-box functions in my programs into the definition file's export
Xsection (or forgetting it :-). It uses the _export attribute of MS C 5.1
Xlike the CALLBACK define in the OS/2 PM headers. The context diff to the
Xstandard <windows.h> of the SDK 2.1 is included.
X
XI put qtime.exe into a .zip archive because of the CRC protection.
XHope you all have PKZIP 1.0x otherwise you have to compile.
X
XKai Uwe Rommel
XMunich
Xrommel@lan.informatik.tu-muenchen.dbp.de
SHAR_EOF
chmod 0666 qtime.doc || echo "restore of qtime.doc fails"
echo "x - extracting qtime.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > qtime.c &&
X/* QTIME.C
X *
X * Windows "English" Clock
X *
X * Autor: Kai Uwe Rommel
X * Date: Sun 18-Feb-1990
X *
X * Compiler: MS C 5.10
X * System: PC/MS-DOS ab 3.20, MS-Windows ab 2.00
X *
X */
X
X#define LABEL "qtime.c"
X#define VERSION "1.0"
X
X#define WINEXPORT
X#define NOMINMAX
X#include <windows.h>
X
X#include <time.h>
X#include <string.h>
X
X
Xchar *szAppName = "QTIME";
Xshort xChar, yChar, xWidth, yHeight, timetype;
X
Xextern void qtime(char *buf);
X
X
Xvoid ShowQTIME(HWND hWnd)
X{
X HDC hDC;
X RECT rect;
X PAINTSTRUCT ps;
X char cBuffer[64];
X short nWidth;
X time_t clock;
X
X if ( timetype )
X {
X time(&clock);
X strcpy(cBuffer, ctime(&clock));
X cBuffer[24] = 0;
X }
X else
X qtime(cBuffer);
X
X nWidth = strlen(cBuffer) * xChar + GetSystemMetrics(SM_CXDLGFRAME) * 4;
X
X if ( nWidth != xWidth )
X {
X GetWindowRect(hWnd, &rect);
X rect.left += (rect.right - rect.left) / 2 - nWidth / 2;
X SetWindowPos(hWnd, NULL, rect.left, rect.top,
X nWidth, yHeight, SWP_NOACTIVATE);
X xWidth = nWidth;
X }
X
X hDC = BeginPaint(hWnd, &ps);
X
X GetClientRect(hWnd, &rect);
X DrawText(hDC, cBuffer, -1, &rect,
X DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_NOCLIP);
X
X EndPaint(hWnd, &ps);
X}
X
X
XLONG EXPORT WindowProc(HWND hWnd, unsigned iMessage, WORD wParam, LONG lParam)
X{
X switch ( iMessage )
X {
X case WM_DESTROY:
X KillTimer(hWnd, 1);
X PostQuitMessage(0);
X break;
X
X case WM_CHAR:
X if ( (wParam != ' ') && (wParam != '\r') )
X break;
X /* else fall through */
X
X case WM_LBUTTONDBLCLK:
X timetype = !timetype;
X /* fall through */
X
X case WM_TIMER:
X InvalidateRect(hWnd, NULL, FALSE);
X break;
X
X case WM_PAINT:
X ShowQTIME(hWnd);
X break;
X
X default:
X return DefWindowProc(hWnd, iMessage, wParam, lParam);
X }
X
X return 0L;
X}
X
X
Xint WinInit(HANDLE hInst)
X{
X WNDCLASS wclass;
X
X wclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
X wclass.lpfnWndProc = WindowProc;
X wclass.cbClsExtra = 0;
X wclass.cbWndExtra = 0;
X wclass.hInstance = hInst;
X wclass.hIcon = NULL;
X wclass.hCursor = LoadCursor(NULL, IDC_ARROW);
X wclass.hbrBackground = GetStockObject(WHITE_BRUSH);
X wclass.lpszMenuName = NULL;
X wclass.lpszClassName = szAppName;
X
X return RegisterClass(&wclass);
X}
X
X
Xint PASCAL WinMain(HANDLE hInst, HANDLE hPrevInstance,
X LPSTR lpszCmdLine, int nCmdShow)
X{
X HWND hWnd;
X HDC hDC;
X TEXTMETRIC tm;
X MSG msg;
X short xPos, yPos;
X
X if ( hPrevInstance )
X return FALSE;
X
X if ( !WinInit(hInst) )
X return FALSE;
X
X hDC = CreateDC("DISPLAY", NULL, NULL, NULL);
X GetTextMetrics(hDC, &tm);
X xChar = tm.tmAveCharWidth;
X yChar = tm.tmHeight;
X DeleteDC(hDC);
X
X xWidth = GetSystemMetrics(SM_CXDLGFRAME) * 2 + xChar;
X yHeight = GetSystemMetrics(SM_CYDLGFRAME) * 2 + yChar * 3 / 2;
X xPos = (GetSystemMetrics(SM_CXSCREEN) - xWidth) / 2;
X yPos = GetSystemMetrics(SM_CYSCREEN) - yHeight - 2;
X
X hWnd = CreateWindow(szAppName, szAppName, WS_POPUP | WS_DLGFRAME | WS_SYSMENU,
X xPos, yPos, xWidth, yHeight, NULL, NULL, hInst, NULL);
X
X if ( !SetTimer(hWnd, 1, 60000, NULL) )
X return FALSE;
X
X ShowWindow(hWnd, SW_SHOWNOACTIVATE);
X UpdateWindow(hWnd);
X
X while ( GetMessage(&msg, NULL, 0, 0) )
X {
X TranslateMessage(&msg);
X DispatchMessage(&msg);
X }
X
X return msg.wParam;
X}
X
X
X/* End of QTIME.C */
SHAR_EOF
chmod 0666 qtime.c || echo "restore of qtime.c fails"
echo "x - extracting qtimesub.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > qtimesub.c &&
X#include <stdio.h>
X#include <sys/types.h>
X#include <time.h>
X
X/* because the width of twelve BONG's is about 60 char's,
X * this is limited in the QTIME_SUBROUTINE to one `BONG!', resp. `BING!'.
X */
X
X#define QTIME_SUBROUTINE
X
X/* qtime.c Displays time in real English, also chimes
X** This version current from 18/9/89
X**
X** 09/89 Ade Lovett Complete rewrite
X** 04/86 Mark Dapoz Converted to C for UNIX
X** 12/79-12/82 Mike Cowlishaw
X**
X** mod's by erik schoenfelder (schoenfr@tubsibr.uucp) for xqtime
X** mod's by Kai Uwe Rommel for MS Windows qtime and PM qtime
X*/
X
Xstatic char *minutesaying[] =
X{
X "","just after ","a little after ","nearly ","almost "
X};
Xstatic char *fiveminsaying[] =
X{
X "","five past ","ten past ","a quarter past ","twenty past ",
X "twenty-five past ","half past ","twenty-five to ","twenty to ",
X "a quarter to ","ten to ","five to ",""
X};
Xstatic char *hoursaying[] =
X{
X "one","two","three","four","five","six","seven","eight","nine",
X "ten","eleven",""
X};
X
X
X#ifdef QTIME_SUBROUTINE
X
Xvoid qtime(char *qtime) /* run qtime as a subroutine */
X{
X
X#else
X
Xvoid main()
X{
X char qtime[200];
X
X#endif
X
X int i, hr, mn;
X time_t clock, time();
X struct tm *tm, *localtime();
X
X time(&clock);
X tm = localtime(&clock);
X mn = tm->tm_min+(tm->tm_sec>29);
X hr = tm->tm_hour+(mn>32);
X
X#ifdef QTIME_SUBROUTINE
X
X *qtime = '\0';
X
X /*
X * the shorten'd Bing, resp. Bong;
X */
X
X if (! (mn%15))
X if (mn%60)
X strcat(qtime, "Bing! ");
X else
X strcat(qtime, "Bong! ");
X
X strcat(qtime, "It's "); /* not too late for the dog */
X#else
X strcpy(qtime, "It's ");
X#endif
X
X strcat(qtime, minutesaying[mn%5]);
X strcat(qtime, fiveminsaying[mn/5+(mn%5>2)]);
X
X if (hr%12) {
X strcat(qtime, hoursaying[(hr -= (hr>12)*12+1)]);
X strcat(qtime, (mn%60) ? "." : " o'clock.");
X } else {
X strcat(qtime, (hr == 12) ? "Noon." : "Midnight.");
X hr = 12;
X }
X
X#ifndef QTIME_SUBROUTINE
X
X if (!(mn%15))
X if (mn%60)
X printf("(Ding-Dong!)\n\n");
X else {
X printf("(");
X for (i=hr; i>=0; i--)
X printf("Bong%s",(i==0 ? "!)\n\n" : ","));
X }
X printf("%s\n",qtime);
X
X#endif
X}
X
X/*
X * end of the fun.
X */
SHAR_EOF
chmod 0666 qtimesub.c || echo "restore of qtimesub.c fails"
echo "x - extracting qtime.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > qtime.def &&
XNAME QTIME
XDESCRIPTION 'Windows QTIME, (c) Kai Uwe Rommel 1990'
X
XEXETYPE WINDOWS
XSTUB 'WINSTUB.EXE'
X
XCODE MOVEABLE
XDATA MOVEABLE MULTIPLE
X
XHEAPSIZE 1024
XSTACKSIZE 4096
SHAR_EOF
chmod 0666 qtime.def || echo "restore of qtime.def fails"
echo "x - extracting qtime.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > qtime.cs &&
Xqtime.c
Xqtimesub.c
Xqtime.def
Xqtime.exe
X-AS -OWIN -LW -S4096
SHAR_EOF
chmod 0666 qtime.cs || echo "restore of qtime.cs fails"
echo "x - extracting qtime.uu (Text)"
sed 's/^X//' << 'SHAR_EOF' > qtime.uu &&
Xbegin 600 qtime.zip
XM4$L#!`H````&`.I;4Q2S?_[J6Q```&H<```)````451)344N15A%#P`2`R05
XM-B<X.6I[3)UN'PD&`1,TY?:6]YMJ50OPP;&#&/;__PD0'Q#BNFL%P@]0"?01
XM\'_!@`=%OQ(@5;1IYX*$*_?M6;EAVX*46S9NW33$0=\T[1CIY[XU2Q?DU;1N
XMR;Z].]=E0X4DM3K\2#MA\Y"X`S(A+C<!_Q<,>%&G10L&[`N0(L"E16E:%PA0
XMP*0K1.H/`V1;LPX$J"+1'$JPFP7(%F!D`M5*8)O]XTP!XI<(L<'PC@,"'ABQ
XM(?.!!:-23=JTR/4*KR9U2O3I5:A2GPYAVH1'")"!\0;*7@K<,QUXE&A2@E6G
XM+!_P?\#F/P.2#.!=\@"2JYJ;<%T2!-*<)4B48U."7!HV+<BJ=\N"E/JV;=NR
XM;$'&S)D3QI.!7'4Q^\'LX5ZU.MBG,+ZFN[.Q4>Y0T<-7.)BX@&3N&D&R+\:^
XM>']CNYP98W<,/)<L/Q.X?-?WHZ_,?]A_]/3R2T],+I^T<:.T`:Y?"`E^3O"O
XM%P#O:@]JGK.5!P>G/_3&?O"'A@^?=''PQ<KOFT0^<&#PQ$8UAS8^,$?Q=(W^
XMMTO`?\D6H6HR[_Y%T6=>*3PZ_L7(DK>\PCIFOC)X@.3,K1<C[M@I";>^3>(#
XMU4*0QT<I7=$<7-%$UT.J&HJYL(1YM?^F.=J2`:R)>7BO7Q>7[SH<LD>LD(M<
XMR3TZPO-&&?9(\G0M]I`%TWV2?$"Z(GM.(+YFSX$"Z9)<KV1_AVJ*IJK*F*\$
XMGGD]TL%^%8*D:Z#8&]9]5T4-N!'X?>RCA75E[0,(%G6^?MJSHP?LSTV^'EE:
XM[D!X!L(K$!Z!\`;"^>!V?KK\QZY-E2L$"*D,7.-QH^87`B`>77?$JP>0[.R(
XMU9V?E8";AZ>\?`!@<[0`_PB)I-<VD;R]K2)>G_#X0UMH=OZ,O?JS\^;@B-'9
XMPN8ZZC(TCT"]:!>N8$O.$#WA?V'Y0N!TUWM$BQ'`7U21X9+>.!0_(8Q:_2C,
XMKWCPHY6UV8UEB5J\!RV>1P<_T(!V8W"U"&B_9];YARKO\\)V8:#/'N]1CF]'
XM)`V@1\V^7ED8_2P`:>F^I0"X';F'VT_($7.T2`$YGBJ'PASO6^,I@&=EX!6\
XMM]<_(%JPZJ)12;[NP'3\D>]=+8'?)[T]@:9PY)D=F4@&]V8X?YL\A^8EJ@HT
XM@]VJ?'JY_>X#M,62/4FRZ+V_VWKPSXY^#?""N'X@I"E6Z%$[_AXX?;\%I%5`
XMM-C!]2_V2M#X@3TY_LRY2O?[^1=*K\N#F?-@9HG[[X@!UQ.$_!MC`,#01:[3
XM8,`OSE88.1OS3Q<O:PS\]P=T`$<V+T"V+]8>??SBST(#E'KXV0/(@_4+2/*[
XMDLRW4:,'8EM:F2P-H.NSGP&=*2O\&&!.I_K>A`"]-L^##1<\T!1E4GU9JYFR
XM`(0@XKA+!%%QGPR0R-(/4`Z-:*SU,ZS3?XQ^?J.?T")`28SP8U22-HR<\>C/
XM`7$#K'%\8H^+MK#!Q@$H>LZ7U`W\0?06/RYV2'K@>)>.#78.:'*Q398`BQLT
XM/9"Q]IG;;?[W*'K@W`+?IX>HT`;UJJA]UR>LFDW73CMH?[Q-Q\%G_C<)N`=M
XMS.*([MMOP/FFZ2YHZC]<:=V,Z\L;]'@@[.__-AV0->;(K/T5^@&1JA9_#^AW
XM3=P!GZ+^EU$3&6JY"NT+!TRW(.!'T`-=FO>\;]<#?PF/7C0`9%(Q@$U37ZSS
XM+^'1]ZG&Z8S!K*69-F.-S9P"_@E:S1?H*;&O6^!($Z"M*MMW:=[V#WE=+DV0
XMM@^X'RI>/CK8%N8JLOV9']R5Z6E9/1:WN$A-7L+ZCX!](CN\Z3;T"#IY`.J5
XM!Z0UK<-WWI^K\,D9;SC>_O_HZ^4YJ\/![PDN+KBPR"-<_O^.Z]T/>SBZ^%H9
XM6%#/L'E"\WCDQ?J[;#/6*$IEF^!O</'WQ4X1CF?(6D%;#Z#2^&4"GZ]Z\;`Y
XM4.?8MYGQ;.YZK_5Y]H'+%_O3-S*NF,COGUQGT?]W"4CYI$G`CN*43Z</$+%8
XM?Z-G\F<Z_%GS6/COYYF0[GVH/%NHSW-EG23,,^?=CRQARMW@V$>7)GLOLFP[
XM;E@'9I]XS;<>+"V+<\?"_N2Z!^\QZWUM6=<)20)6NTW?`1?:>]EY4>D"V;F.
XMWL$GU,7X0L<'&]M9Q?9T5?ZGB3Z?Q=.=Q_TH:8Z`<_:L6_Y*ND]%?T+=#02R
XM6ZN^<=``H\G>#"<E2;,?LZT5V)83A(F8H!%F2QZP,.4I*&_,*!=.8)9)!&#F
XMOZ'A/5$&@H#*9%L>P3*N?V4RY6*C27!VQ8>-#D1<(%1+5B[)%R48].@@4IOO
XM^,1.^0\^7N"J.*.!_3^_/I)L2]Y.,BG@<$NFDOP89*;U"JR:C%5><()&&OV3
XM:9-&2D7_\S^NI$HRJJL%7$F)!R"$%..X`OF1E$DJE2K';J'EH@?^*]"YQ+\.
XM^1H,_!.@Z;D&OD]?.,"J#WBF[O`!I5B\[RC]3?34"8Y&.4#ZJ+HV/^E#*0_$
XM\A>V<<\5.T_'ARQ+G<EZ]$L+YJ)_%_U3HU!M]XQG>6*K]C3K`@%E^AN0XUEJ
XME?]ZDX&.0S]0<NHIS7,3Z&5:P;5&'71]@"[O`+O/GS]`OM0#&TA>]H%S,T=_
XM8.9DF.D&S!QR`&9>T+<Z,+MO@@,#NZB>[8&W,"7-3WC]Z"$,>19#1I'<]<$U
XM',[8H(F-.L!0U^<D*K`OQL9$VN3T!PFG5]=&Y.EAZT&^[HP-JJ#=PW"DTP[S
XM:!)&#]%A)JS1MR;&(J()JWF&C=/@Y(W$Y#W(`='05I+:0_1MZ,HLD^AQ_<#C
XM+96/*?('I.R)+:IHWJ`+4QX@+O$>']Z@5?2P`5C1%T7&5U;>!GD.W&C1YX`G
XM4G/S%ZVMB^%=UG4)_.'U+F;20!*,EZ!_9P"=2FO8HH75%AV`.P?@3A\G"J'/
XM6;:E`G:V6Z6MHE%<^^+XM%D<!V%6A%%6'$SXXE"A7.M.[5@L\CPO@/WBZ8N=
XM<;MP*-\>.#WO@U'1?RK;&3P&1S"6)PKKQ`>]K*H5-:RB&O31&\#D#20_[+:H
XM0'?<,`?$Y?SBPFJ.`OI2QWZHSL$/U8I!68@A7G5?:E@5J4I_0)(_]>P"2M?+
XM"QS5YQ/UV5<(UM\'>@<T.]/]@*R*#V+BN(7BSP,2K)L`FVYQ<T/-_Z'FV,[Q
XM"ET+I#_0&$MV(F$_7U_8O@Z*>UB.IXFQD8=B'>AH('F$.G4^F"_"@7W`VC4`
XM9$_H!_E2R#K0;P)GN79`_O/QG8_-[H'_"S_HM\*VUGVXF"L"E^F''.<"7;]>
XM(21GTH`=]/XQ+!GE)C',OEZXD<73=ROCQD4^UMDR$W*`>'BZ`!;K/&JE^PI-
XM=7]?\PFSL\._".MR8)Z@0+X68KI.&+OMJIVOO#Q7[0'YJNMDN"0/(LDLL%!N
XM3FT(05?$`;I>W>0V2WLUL);_%C#;&[M-5$3HHM92#GA$L:D*WN#U:L!<8FBG
XM).N&PKH"W6O:+'GRB;V:1]\CN[33R*8M7S;M[[M[)#>"5U/^6#D'5[YX]!<#
XMA'GP$ZV**YY<\>:(5@=$^T#D$[4'#L8H!YZ&*0=TJCZB5W;X>FQ&.GK5_4/Y
XM_HM\WQ3HKD.K(@_%%M6H020>PH*RXN7M-GWAM'?GU3S]^3:=,+!;=;YM1_<A
XM=9%]LP!^"D_/W\;O&_$(]@1>7BSO#C1:#11I`D_;-8G@&A5VS/U\KX"QS=YG
XM2K\?3R*;P<C8IZ_'H6S6;M4`M&W,HV>/KCXZ]H7;Z]+C=OCWS2J,1&2_;TY0
XME\MPA_AW#\HUN,-\.UYNZ"T_03FN3>6X=H!;LN+"$0P,]G5'**BFWDOIOV!L
XM':=-'3LR9XGZ`<=\G-3-HZ=><3+`0V@RB!B:#+=D+DSYIWF''!!!&;"105F&
XM1^!DY`(G2\]OS*6"%11/H'@#0F=E_.N6*B,VOH$0+.-1`%BQAH6K@0>0;UU)
XM?"Z&^VWF-&`PO_O`V"Q"M[/-4<4O!O]_/.S_NV'[$[Z?\/PQ@;`425NX``T6
XMIUN5$8;WQ`XAE>8V)0WOD]+P'BWA^`UBDC77)!.]/OI^'G'$`N2#@$D;X.7C
XM&YCU7[T-CVG8+0U;O*N/5[@+M$?WZ_%7G=GN9CD`R.6+T2W2`8=!QZBO!S>1
XMF,O2&008QJQ+F.%PRR#G`F`TCIMI.%3<8@',8.`%XHJ@A_)+K-P)E%,\).G/
XM:,0\P(II1[%'0CL9*`8(*P7\L4'/`W6Y:9P69N%T4Q`H1AR!"DP+#[`2/=<A
XM?`:+-QO]_J-']C3P`#J>7!S]%]?[#@S0L<=..M$8`LFS(=TW-][7'G4BK>BD
XMG9RT<Y&VG+A(NB1Y<I%P"UU/+L0?E)6RZY.V0TIPR_DQ,*>?&!UUP+K*UP?`
XM-_A7P/N);M<%3[.#![\-'BU]_24:&57MR@.O'XU^CGC`XOVO%+^8^&A>$ZP/
XMW&_QH,W$/X<.+6Z#KEFKDOJZ^MQR&V\)EKKRJNB"*WG^%P"X#UR?%Y(\\XMO
XMX_9K3;F8IMR+WGZB*57E%U3`F4N';K`J[JF.*\G#%L%\L2!S%_.N`MQOS5-!
XMAIFGL\V3EN:UF5-VY(\?V%TWZ<F'URIER7QG?G'ZQ?F3_##"81RB8V,1S#X4
XMRX0."!=YPOJ+7@9*8O+O'[W\@`3^CU=_)R#LW_9+M9]%/Q!_8A</.A2Y8^\S
XM[2<=/S$PSYU#(._$?@$6+7(D6GR[5!R`_%UX7T<"J*4:5)PTNF-+8#M^S;'K
XMZ&D#9'/L((X]SK$O?Z#Z!SAV%<\NYUQ"NA<X=D+';N#8<1W[@6.G\.U\KN5H
XM[W/LW:[]P;'/._8(Q_X0XH![GN7;[G7?PLN.';N49V=P[`;.W<.Q?WK*01Q[
XMO6,/<>SECOW$L6<X=Q3'GN[>4QP[@[==Q;$K%<`[USAV=-_>ZMAI??NL8X=P
XM[#F.G<VW$\G;=LS_CLRK/=FW'+O\`-=?.78LW][E:?GWJ@`%$DQVS@$$@RZP
XM#!^5:M*F10%"N/JD4Z$R#9H%>K5UY](%&=8LW;)R]#HL2+9IZ=)E6^89=ULV
XMK%RV>:Z=;=LWY<:^V;1VN(<;9EG`=Y-,U!^WSGGPDDW>T9YN'F;H%OCP:)K>
XM##<(@5$^2EFH1F`SMNU8TM$`WVR5N[\9'JW<,LF;?5M7#C<'.#<MGN'+(.\6
XM8-FT9]%8(+M-@R[.RJ::`Q0"_=D00"_TC3%/XEG/*=Z%'7Y[<BS;MV/7)._T
XM37;%-TU+ULV_)!?YMOBW!"`!5J>;<`\@3H_Y.DT=H&2`G>9@&\C&`3H'>!T@
XM=H#<`8(':,ZF#A`^0/H`]=$?L&#`!(=_`,#^J]&D3(M^3>K4Z!,L@!!,4@08
XM.'#@`'D`'L#NZ_\ASDB0(())E"B"K1D5C$8*$4(P-&%"P1@TD;:QS8)!^J8%
XM"PH6S"T8I&X%063`"@;<)-4Z@+?2,(TWS!C"P]0AS$'&S'D3QF-TI@;CG0"U
XM`OC]+P.L#9`ZP'F[<4`8F/"`;8)HV>O(@]\%:!D`BW@Z0'F_?<"7`9M\9G($
XMD0K0*=RG4AF>R/"`X2"^`Z0Y$.?`J77=-K&\]O:K9<E215O7J-RT4\-L;D>Y
XMT;)BFYC.0>'**3ZO$O*$9QNT[MFI9>$^'4L'<;=+M.R8_T9C89=A!?102P$"
XM"@`*````!@#J6U,4LW_^ZEL0``!J'```"0```````````"``````````451)
X<344N15A%4$L%!@`````!``$`-P```((0````````
X`
Xend
SHAR_EOF
chmod 0666 qtime.uu || echo "restore of qtime.uu fails"
echo "x - extracting windows.dif (Text)"
sed 's/^X//' << 'SHAR_EOF' > windows.dif &&
X*** windows.h
X--- windows.old
X**************
X*** 94,99
X #define LONG long
X #define VOID void
X
X typedef unsigned char BYTE;
X typedef unsigned short WORD;
X typedef unsigned long DWORD;
X--- 94,103 -----
X #define LONG long
X #define VOID void
X
X+ #ifdef WINEXPORT
X+ #define EXPORT FAR PASCAL _export /* K.U.R. */
X+ #endif
X+
X typedef unsigned char BYTE;
X typedef unsigned short WORD;
X typedef unsigned long DWORD;
X**************
X*** 556,561
X typedef HANDLE NEAR *SPHANDLE;
X typedef HANDLE FAR *LPHANDLE;
X
X typedef int (FAR PASCAL *FARPROC)();
X typedef int (NEAR PASCAL *NEARPROC)();
X typedef HANDLE GLOBALHANDLE;
X--- 560,568 -----
X typedef HANDLE NEAR *SPHANDLE;
X typedef HANDLE FAR *LPHANDLE;
X
X+ #ifdef WINEXPORT
X+ typedef int (FAR PASCAL _export *FARPROC)(); /* K.U.R. */
X+ #else
X typedef int (FAR PASCAL *FARPROC)();
X+ #endif
X typedef int (NEAR PASCAL *NEARPROC)();
X**************
X*** 614,619
X #ifndef NOBRUSH
X typedef struct tagWNDCLASS {
X WORD style;
X long (FAR PASCAL *lpfnWndProc)();
X int cbClsExtra;
X int cbWndExtra;
X--- 622,630 -----
X #ifndef NOBRUSH
X typedef struct tagWNDCLASS {
X WORD style;
X+ #ifdef WINEXPORT
X+ long (FAR PASCAL _export *lpfnWndProc)(); /* K.U.R. */
X+ #else
X long (FAR PASCAL *lpfnWndProc)();
X+ #endif
X int cbClsExtra;
SHAR_EOF
chmod 0666 windows.dif || echo "restore of windows.dif fails"
exit 0
----
EOF