Midnight Commander for Win32
[reactos.git] / rosapps / mc / doc / readme.nt
diff --git a/rosapps/mc/doc/readme.nt b/rosapps/mc/doc/readme.nt
new file mode 100644 (file)
index 0000000..8f13dd6
--- /dev/null
@@ -0,0 +1,126 @@
+
+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.
+