]> granicus.if.org Git - nethack/commitdiff
Windows CE port fixes/enhancements (from <Someone>)
authornethack.allison <nethack.allison>
Thu, 22 Oct 2009 02:59:35 +0000 (02:59 +0000)
committernethack.allison <nethack.allison>
Thu, 22 Oct 2009 02:59:35 +0000 (02:59 +0000)
A few other fixes:
- bug: text window does not scroll left on left arrow
- pcmain.c: fix warning: _fileno() returns void* in Windows CE SDK

3.5.0 only:
- files.c: compile error: don't include <signal.h> if NO_SIGNAL is defined. WinMo does not support POSIX signals
- version.c: compile error: append_port_id() is undeclared
- link error: mktime() is unsupported -> define it in celib.c

-<Someone>

13 files changed:
include/extern.h
include/wceconf.h
src/files.c
sys/share/pcmain.c
sys/wince/celib.c
sys/wince/cesetup.bat
sys/wince/mhcmd.c
sys/wince/mhmain.c
sys/wince/mhtext.c
sys/wince/resource.h
sys/wince/winMS.h
sys/wince/winhack.c
sys/wince/winhcksp.rc

index c51c314be341c5291d136b92fdec209e018e50b7..d6c855abe2cf4b2cac5437e8f92d80346052b28a 100644 (file)
@@ -2400,6 +2400,10 @@ E unsigned long FDECL(get_feature_notice_ver, (char *));
 E unsigned long NDECL(get_current_feature_ver);
 E const char *FDECL(copyright_banner_line, (int));
 
+#ifdef RUNTIME_PORT_ID
+E void FDECL(append_port_id, (char *));
+#endif
+
 /* ### video.c ### */
 
 #ifdef MSDOS
index 0798774490e68734ac5fa24f078af74594f18767..1df61faf807a43cf785296f7efba69700bdfec65 100644 (file)
@@ -1,5 +1,4 @@
 /* NetHack 3.5 wceconf.h       $Date$  $Revision$ */
-/*     SCCS Id: @(#)wceconf.h  3.5     2005/01/23      */
 /* Copyright (C) 2001 by Alex Kompel    */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -272,6 +271,7 @@ struct tm {
 
 extern struct tm * __cdecl localtime(const time_t *);
 extern time_t __cdecl time(time_t *);
+extern time_t __cdecl mktime(struct tm * tb);
 
 /* __stdio.h__ */
 #ifndef BUFSIZ
index 2db4e8424ddde794647b242b8f8e490cccf30440..13fe43ff509a0b5f9a3c6f072c22b7bbf7f7ab5c 100644 (file)
@@ -45,7 +45,7 @@ extern int errno;
 #include <stdlib.h>
 #endif
 
-#if defined(UNIX) || defined(VMS) || defined(_MSC_VER)
+#if defined(UNIX) || defined(VMS) || !defined(NO_SIGNAL)
 #include <signal.h>
 #endif
 
index ae1de43529e0bd72bd470761c2384572d90606ed..da1873f819289838e3b030a18ce0391f5f88957b 100644 (file)
@@ -1,5 +1,4 @@
 /* NetHack 3.5 pcmain.c        $Date$  $Revision$ */
-/*     SCCS Id: @(#)pcmain.c   3.5     2008/01/30      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -236,7 +235,7 @@ char *argv[];
                 */
                if (!strncmp(argv[1], "-s", 2)) {
 #if defined(MSWIN_GRAPHICS) || defined(WIN32CON)
-                       int sfd = _fileno(stdout);
+                       int sfd = (int)_fileno(stdout);
                        redirect_stdout = (sfd >= 0) ? !isatty(sfd) : 0;
 
 # ifdef MSWIN_GRAPHICS
index 75d60cff9210664aa68c807c48a25c5cb62eb829..4c0d0b487a2d9ef60a230b7ec9d53651d37f19ea 100644 (file)
@@ -1,5 +1,4 @@
 /* NetHack 3.5 celib.c $Date$  $Revision$ */
-/*     SCCS Id: @(#)celib.c    3.5     2005/01/23      */
 /* Copyright (C) 2001 by Alex Kompel    */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -67,6 +66,21 @@ time_t __cdecl time(time_t * timeptr)
        return _t_cnv.t_val;
 }
 
+time_t __cdecl mktime(struct tm * tb)
+{
+       if(!tb) return (time_t)-1;
+
+       _t_cnv.tm_val.yr = tb->tm_year; 
+       _t_cnv.tm_val.mo = tb->tm_mon; 
+       _t_cnv.tm_val.dd = tb->tm_mday; 
+       _t_cnv.tm_val.hh = tb->tm_hour; 
+       _t_cnv.tm_val.mm = tb->tm_min; 
+       _t_cnv.tm_val.ss = tb->tm_sec; 
+       _t_cnv.tm_val.wd = tb->tm_wday; 
+
+       return _t_cnv.t_val;
+}
+
 /*------------------------------------------------------------------------------*/
 /* __io.h__ */
 /* Hack io.h function with stdio.h functions */
index e459a04175dc2f1cfa95de0814668842f582bceb..9f7215434c1abb157da95e5898039aeb6c229c38 100755 (executable)
@@ -17,6 +17,7 @@ copy ..\..\win\win32\mnunsel.uu  ..\..\wince\mnunsel.uu
 copy ..\..\win\win32\petmark.uu  ..\..\wince\petmark.uu
 copy ..\..\sys\wince\menubar.uu    ..\..\wince\menubar.uu
 copy ..\..\sys\wince\keypad.uu    ..\..\wince\keypad.uu
+copy ..\..\sys\wince\nhico.uu    ..\..\wince\nhico.uu
 REM
 REM  Get these files from sys\wince
 REM
index e27da34dbf44002e1408ac80d54eed3949f04f4e..8000db9ad19db41265938c1a4f00615a430b48e6 100644 (file)
@@ -1,3 +1,4 @@
+/* NetHack 3.5 mhcmd.c $Date$  $Revision$ */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "winMS.h"
@@ -218,7 +219,7 @@ NHCmdPadCell cells_layout_item_handling[NH_CMDPAD_CELLNUM] =
        { -1, "T", "T", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
        { -1, "R", "R", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
        { -1, "D", "D", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
-       { -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
+       { -1, "=", "=", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
        { -1, "i", "i", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
        { -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
        { -1, "A", "A", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
index e725ee7c2b65788f8cdb8b9c1aa6b0151406dfe1..dc1c91c475d92a212c65aebe67b7542d492a8d04 100644 (file)
@@ -876,21 +876,6 @@ LRESULT onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
                   DialogBox(GetNHApp()->hApp, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
                   break;
 
-               case IDM_CMD_DLG: {
-                       char input[BUFSZ];
-                       char* p;
-                       boolean ctrl = FALSE;
-                       mswin_getlin("Enter command", input);
-                       for(p=input; *p; p++) {
-                               if( *p == '^' ) {
-                                       ctrl = TRUE;
-                                       continue;
-                               }
-                               NHEVENT_KBD(ctrl? C(*p) : *p);
-                               ctrl = FALSE;
-                       }
-                       } break;
-
                case IDM_EXIT:
                   done2();
                   break;
@@ -1090,7 +1075,7 @@ void mswin_select_map_mode(int mode)
        /* update "Fit To Screen" item text */
        {
                TCHAR wbuf[BUFSZ];
-               MENUITEMINFO mi;
+               TBBUTTONINFO tbbi;
 
                ZeroMemory( wbuf, sizeof(wbuf) );
                if( !LoadString( 
@@ -1101,17 +1086,15 @@ void mswin_select_map_mode(int mode)
                        panic("cannot load main menu strings");
                }
 
-               ZeroMemory( &mi, sizeof(mi) );
-               mi.cbSize = sizeof(mi);
-               mi.fType = MFT_STRING;
-               mi.fMask = MIIM_TYPE;
-               mi.dwTypeData = wbuf;
-               mi.cch = wcslen(wbuf);
-               if( !SetMenuItemInfo( 
-                               hmenuMap, 
+               ZeroMemory( &tbbi, sizeof(tbbi) );
+               tbbi.cbSize = sizeof(tbbi);
+               tbbi.dwMask = TBIF_TEXT;
+               tbbi.pszText = wbuf;
+               if( !SendMessage( 
+                               GetNHApp()->hMenuBar, 
+                               TB_SETBUTTONINFO, 
                                IDM_MAP_FIT_TO_SCREEN, 
-                               FALSE, 
-                               &mi) ) {
+                               (LPARAM)&tbbi) ) {
                        error( "Cannot update IDM_MAP_FIT_TO_SCREEN menu item." );
                }
        }
index 43ade1b505043547f17a2f4f507439042afec960..01581df62fc0c73e522bdaabea21061349c70639 100644 (file)
@@ -259,6 +259,10 @@ void LayoutText(HWND hWnd)
 LRESULT CALLBACK NHTextControlWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 {
        switch(message) {
+       /* tell Windows not to process arrow keys (we want them) */
+       case WM_GETDLGCODE: 
+               return DLGC_WANTARROWS;
+
        case WM_KEYDOWN:
                switch( wParam ) {
                case VK_SPACE:
index babfb343f5319aa8fded626ab6dc6350325e364f..25c7179f3683067259de4e4f03daead8122f8e59 100644 (file)
 #define IDM_HELP_MENU                   32828
 #define IDM_VIEW_OPTIONS                32829
 #define IDM_DIRECT_COMMAND              32830
-#define IDM_CMD_DLG                     32832
-#define IDS_TEXT_WRAP                   32833
-#define IDS_TEXT_UNWRAP                 32834
+#define IDS_TEXT_WRAP                   32831
+#define IDS_TEXT_UNWRAP                 32832
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        155
-#define _APS_NEXT_COMMAND_VALUE         32831
+#define _APS_NEXT_COMMAND_VALUE         32833
 #define _APS_NEXT_CONTROL_VALUE         1334
 #define _APS_NEXT_SYMED_VALUE           110
 #endif
index f2ac5a3fb837aae62e6297ac20c4ea354728fee9..4d85c446738df29d2fac5a2ace2721f9589fd36a 100644 (file)
@@ -182,4 +182,7 @@ void mswin_write_reg(void);
 BOOL mswin_has_keyboard(void);
 
 void mswin_set_fullscreen(BOOL is_fullscreen);
+
+extern winid WIN_STATUS;
+
 #endif /* WINmswin_H */
index d94b09e175a62737854c1d0975699ce3bad8a562..17ecf17ebd943d986c512b5df339564accfd20da 100644 (file)
@@ -24,7 +24,7 @@ static void win_hack_init(int, char **);
 static void __cdecl mswin_moveloop(void *);
 static BOOL setMapTiles(const char* fname);
 
-extern void FDECL(pcmain, (int,char **));
+extern boolean FDECL(pcmain, (int,char **));
 
 #define MAX_CMDLINE_PARAM 255
 
@@ -41,6 +41,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
        TCHAR* p;
        TCHAR wbuf[NHSTR_BUFSIZE];
        char buf[NHSTR_BUFSIZE];
+    boolean resuming;
 
        sys_early_init();
 
@@ -122,9 +123,9 @@ int APIENTRY WinMain(HINSTANCE hInstance,
        GetModuleFileName(NULL, wbuf, BUFSZ);
        argv[0] = _strdup(NH_W2A(wbuf, buf, BUFSZ));
 
-       pcmain(argc,argv);
+       resuming = pcmain(argc,argv);
 
-       moveloop();
+       moveloop(resuming);
 
        return 0;
 }
index ddc3bf54c283d42d482f82791017a992d48b459a..04b335ffa0ddae08c23c53615475dd5f4c84cf75 100644 (file)
@@ -37,12 +37,12 @@ IDI_WINHACK             ICON    DISCARDABLE     "..\\..\\wince\\NETHACK.ICO"
 
 IDC_WINHACK MENU DISCARDABLE 
 BEGIN
-    MENUITEM "Type Cmd",                    IDM_DIRECT_COMMAND
+    MENUITEM "Entire Map",                  IDM_MAP_FIT_TO_SCREEN
     POPUP "Menu"
     BEGIN
         MENUITEM "Options",                     IDM_VIEW_OPTIONS
         MENUITEM "Keypad",                      IDM_VIEW_KEYPAD
-        MENUITEM "Cmd",                         IDM_CMD_DLG
+        MENUITEM "Cmd",                         IDM_DIRECT_COMMAND
        MENUITEM SEPARATOR
         MENUITEM "ASCII",                       IDM_MAP_ASCII8X8
         MENUITEM "Tiles",                                              IDM_MAP_TILES
@@ -232,7 +232,7 @@ END
 IDC_WINHACK SHMENUBAR DISCARDABLE 
 BEGIN
     IDC_WINHACK, 2,
-    I_IMAGENONE, IDM_DIRECT_COMMAND, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDM_DIRECT_COMMAND, 0, NOMENU, 
+    I_IMAGENONE, IDM_MAP_FIT_TO_SCREEN, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDM_MAP_FIT_TO_SCREEN, 0, NOMENU, 
     I_IMAGENONE, ID_VIEW, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_VIEW, 0, 1,
 END
 
@@ -313,7 +313,6 @@ END
 STRINGTABLE DISCARDABLE 
 BEGIN
     IDM_MAP_FIT_TO_SCREEN   "Entire Map"
-    IDM_DIRECT_COMMAND   "Type Cmd"
     IDS_CAP_FILE            "File"
     IDS_CAP_HELP            "Help"
     IDS_CAP_MAP             "Map"