Midnight Commander for Windows NT and Windows '95 ------------------------------------------------- 0. Hello 1. Compiling 2. Changes made 0. Hello -------- Hello, this is the Midnight Commander port to Win32. It has many bugs, but is quite stable now. Maybe you can help as an beta tester or as a programmer. In either case you would like subscribe to mc-devel list (see readme files in main doc on how to do this) and contact us. 1. Compiling ------------ 1.1. Compiler ---------------- Microsoft Visual C++ for Windows NT (all versions, including 4.x) are supported. In nt/makefile you can find an external makefile, and in nt/makefile.vc1.nt, vc4.nt projects for the visual IDE. Two makefiles are add since the version 3.5.39. They are produced from MS VC 4.x and are named as ntaxp.mak (for Windows NT AXP) and ntint.mak (for Windows NT Intel). If you want to use them, you will have to change the path coded in these two files. Other compilers such as Watcom, or Borland tools should be quite straightforward, but has not been tested. Under Cygnus tools, apparently everything works just fine. 1.2. General issues -------------------- Preprocessor Define: LIBDIR _OS_NT - OS flag OS2_NT - Flag for OS/2 and NT HAVE_CONFIG_H - config.h flag Includes: So as to avoid chaos in include files, I decided to create some fake includes for UNIX counterparts. The empty files you need to create are: pwd.h grp.h sys/param.h sys/time.h 1.3 Windowing Library -------------------------------- Currently only support for S-lang windowing library is given. I know no curses public library ported to Win32 consoles, and I think it is useless to port it now. You may want to download the complete distribution it from ftp://space.mit.edu/pub/davis. 2. Changes made --------------- 2.1. Changes to main code ------------------------- They are enclosed in #ifdef _OS_NT or OS2_NT blocks. Wrote something similar to statfs in UTIL.C Wrote truncate. Changed (almost) all references to "/" path slash with PATH_CHAR and strPATH_CHAR. Changed name of CONTROL_FILE. Changed name of shell and call to shell. In some cases we supressed code. This is temporal (so that mc can compile). In the future we will provide fake or true interfaces for these features. - Links: creation and information on links are not supported in NT. We should provide a fake interface for the local filesystem and a true one for networked. - GID/UID queries (get_user, owner, preserve UID/GID on copy, ...). - TERMinals: all the code directly done with terminals must be supressed. - Signals: deleted. Should support the native ones. - pipes: had some trouble in ext.c and with error_pipes but soon will be fixed. - Chown command: Not supported yet. 2.2. Files rewritten -------------------- There are 3 files with so many changes that they have been moved to independent archives (or OS dependent). - Chmod.nt.c: this command will query and change attributes (hidden, system, archive,...). Maybe we should write a real chmod (and also a chown). It is not finished, but works almost fine. Look that the stat st_mode member is filled with attributes, not modes. - Cons.handler.nt.c: Supports same API as linux cons.handler.c. It allocates a new console buffer and switches between the two when doing a shell. The new allocated one is the used by Midnight commander. (look that to make this we should also redirect standard handles) - Key.nt.c: a static table maps Virtual Key codes to Curses-like Key codes. Also mouse events are supported. still preliminar. - utilnt.c: Contains utilunix.c functions, with Win32 implementation 2.3. New files -------------- - drive.nt.c: A Change Drive command has been implemented. Two lines in main.c were included (in the left/right panel menus). The funcs drive_cmd_a/b are implemented in this new file. It will build a dialog with available drives as buttons. bug: too many drives are not supported (think just 7). have to rewrite to support more than one line. - util.debug.c: developers-only utilities to trace Win32 API call error codes - util.WinNT.c: Windows NT specific functions: getuid(): Will check your priviledges and return 0 (root) if you have Administrator priviledges. - util.Win32.c: Windows NT & 95 utilities: (specific to Win32, no UNIX counterpart) getEXEtype(): check if executable is CUI or GUI. 2.4. Changes made from me (Alexander Dong, ado@software-ag.de) -------------------- I have hacked some codes for Windows NT AXP and NT Intel. Drive.nt.c was rewritten for a beautiful Drive_Change dialog window. All main source changed from me are marked with the comment /* .ado */. I have also included two own Makefiles: ntaxp.mak (for Windows NT Alpha) and ntint.mak (for Windows 95/NT Intel). You will have to change the path in these files before use them. They are both for Microsoft Visual C++ 4.x.