Midnight Commander for Win32
[reactos.git] / rosapps / mc / doc / readme.nt
1
2 Midnight Commander for Windows NT and Windows '95
3 -------------------------------------------------
4
5 0. Hello
6 1. Compiling
7 2. Changes made
8
9 0. Hello
10 --------
11 Hello, this is the Midnight Commander port to Win32. It has many bugs, but is
12 quite stable now. Maybe you can help as an beta tester or as a programmer. In
13 either case you would like subscribe to mc-devel list
14 (see readme files in main doc on how to do this) and contact us.
15
16 1. Compiling
17 ------------
18
19 1.1. Compiler
20 ----------------
21 Microsoft Visual C++ for Windows NT (all versions, including 4.x) are supported.
22 In nt/makefile you can find an external makefile, and in nt/makefile.vc1.nt, vc4.nt
23 projects for the visual IDE. Two makefiles are add since the version 3.5.39. They
24 are produced from MS VC 4.x and are named as ntaxp.mak (for Windows NT AXP)
25 and ntint.mak (for Windows NT Intel). If you want to use them, you will have to
26 change the path coded in these two files.
27
28 Other compilers such as Watcom, or Borland tools should be quite
29 straightforward, but has not been tested.
30
31 Under Cygnus tools, apparently everything works just fine.
32
33 1.2. General issues
34 --------------------
35 Preprocessor
36 Define:
37 LIBDIR
38 _OS_NT - OS flag
39 OS2_NT - Flag for OS/2 and NT
40 HAVE_CONFIG_H - config.h flag
41
42 Includes:
43 So as to avoid chaos in include files, I decided to create some
44 fake includes for UNIX counterparts. The empty files you need to create are:
45 pwd.h grp.h
46 sys/param.h sys/time.h
47
48 1.3 Windowing Library
49 --------------------------------
50 Currently only support for S-lang windowing library is given. I know no curses
51 public library ported to Win32 consoles, and I think it is useless to port
52 it now. You may want to download the complete distribution it from
53 ftp://space.mit.edu/pub/davis.
54
55
56 2. Changes made
57 ---------------
58
59 2.1. Changes to main code
60 -------------------------
61 They are enclosed in #ifdef _OS_NT or OS2_NT blocks.
62
63 Wrote something similar to statfs in UTIL.C
64 Wrote truncate.
65 Changed (almost) all references to "/" path slash with PATH_CHAR and strPATH_CHAR.
66 Changed name of CONTROL_FILE.
67 Changed name of shell and call to shell.
68
69 In some cases we supressed code. This is temporal (so that mc can compile). In
70 the future we will provide fake or true interfaces for these features.
71 - Links: creation and information on links are not supported in NT. We
72 should provide a fake interface for the local filesystem and
73 a true one for networked.
74 - GID/UID queries (get_user, owner, preserve UID/GID on copy, ...).
75 - TERMinals: all the code directly done with terminals must be supressed.
76 - Signals: deleted. Should support the native ones.
77 - pipes: had some trouble in ext.c and with error_pipes but soon will be fixed.
78 - Chown command: Not supported yet.
79
80 2.2. Files rewritten
81 --------------------
82 There are 3 files with so many changes that they have been moved to independent
83 archives (or OS dependent).
84 - Chmod.nt.c: this command will query and change attributes (hidden, system,
85 archive,...). Maybe we should write a real chmod (and also a
86 chown). It is not finished, but works almost fine. Look that
87 the stat st_mode member is filled with attributes, not modes.
88 - Cons.handler.nt.c: Supports same API as linux cons.handler.c. It allocates
89 a new console buffer and switches between the two when doing a
90 shell. The new allocated one is the used by Midnight commander.
91 (look that to make this we should also redirect standard handles)
92 - Key.nt.c: a static table maps Virtual Key codes to Curses-like Key codes.
93 Also mouse events are supported.
94 still preliminar.
95 - utilnt.c: Contains utilunix.c functions, with Win32 implementation
96
97 2.3. New files
98 --------------
99 - drive.nt.c: A Change Drive command has been implemented. Two lines
100 in main.c were included (in the left/right panel menus).
101 The funcs drive_cmd_a/b are implemented in this new file.
102 It will build a dialog with available drives as buttons.
103 bug: too many drives are not supported (think just 7). have
104 to rewrite to support more than one line.
105
106 - util.debug.c: developers-only utilities to trace Win32 API call error codes
107 - util.WinNT.c: Windows NT specific functions:
108 getuid(): Will check your priviledges and return 0 (root)
109 if you have Administrator priviledges.
110 - util.Win32.c: Windows NT & 95 utilities: (specific to Win32, no UNIX counterpart)
111 getEXEtype(): check if executable is CUI or GUI.
112
113 2.4. Changes made from me (Alexander Dong, ado@software-ag.de)
114 --------------------
115
116 I have hacked some codes for Windows NT AXP and NT Intel.
117 Drive.nt.c was rewritten for a beautiful Drive_Change dialog window.
118
119 All main source changed from me are marked with the comment /* .ado */.
120
121 I have also included two own Makefiles:
122 ntaxp.mak (for Windows NT Alpha) and
123 ntint.mak (for Windows 95/NT Intel).
124 You will have to change the path in these files before use them. They
125 are both for Microsoft Visual C++ 4.x.
126