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