[About me] Last modified 01 Jun 98 --------------------------------------------------------------------------- Do You want to run or port unix software to Windows NT? It's so easy!-) The first place You have to visit is Cygnus Solutions's Gnu-win32 project. --------------------------------------------------------------------------- My fixes for latest B19.X snapshot and a precompiled binaries. newlib/libc/string/strchr.c.diff * Do unsigned char comparisons. mixed-case.diff * Modified Paul's patch to implement case-sensitive file opens and removals on NTFS partitions. You must add "mixed" to your CYGWIN32 variable to enable this feature. Note: drive letters in mount table must be in upper case! windows.diff * /dev/windows device implementation - an access to windows message queue with unix-style calls. It's possible now to make a select() call on a mix of file/device handles and windows messages! The following unix-style calls are supported: open ("/dev/windows", flags, mode=0) - create a unix fd for message queue. O_NONBLOCK flag controls the read() call behavior. read (fd, buf, len) - return next message from queue. buf must point to MSG structure, len must be >= sizeof (MSG). If read is set to non-blocking and the queue is empty, read call returns -1 immediately with errno set to EAGAIN, otherwise it blocks untill the message will be received. write (fd, buf, len) - send a message pointed by buf. len argument ignored. ioctl (fd, command, *param) - control read()/write() behavior. ioctl (fd, WINDOWS_POST, NULL) - write() will PostMessage(); ioctl (fd, WINDOWS_SEND, NULL) - write() will SendMessage(); ioctl (fd, WINDOWS_HWND, &hWnd)- read() messages for hWnd window. select() call marks read fd when any message posted to queue. * Fixed a bug with mtime field of stat structure on fat partitions. New b-19 specific patch for MIT X11R6.3 release. What's new in this patch: * avoided tons of "not in XXX directory" messages; * dlls are built stripped; * search for cpp in a default location; * fixed problem with missed netinet/tcp.h; * xterm compiles and works; * more libs are built as a dlls; * all dlls have different base addresses; See compilation instructions at the beginning of the diff. Precompiled binaries are also available. B-19 specific patch for Open Group X11R6.4 release. See compilation instructions at the beginning of the diff. If you have no enough disk space to compile X11, download precompiled binaries. The archive remote.tar.gz (last update 04.26.98) contains a remote access suite for cygwin b19 - rxvt and xterm X terminal emulators (You need cygwin-compiled X11R6.3 or X11R6.4 distribution to be installed to /usr/X11R6.3(4) to run rxvt and xterm), inetd, telnetd, tftpd, talkd, rexecd, ftp, telnet, tftp, talk and login. The login and rexecd programs are for NT only. Unapck the archive to /usr directory. If you want to compile rxvt yourself, download the sources, and apply this patch. How to run inetd: Windows 95: rename /usr/local/bin/login.w95 to /usr/local/bin/login. Run /usr/local/sbin/inetd -d. WARNING: provided "login" script does not make any authentication of remote user! Write Your own login program. Windows NT: remove "Simple TCP/IP services" (if any) - inetd have the same functionality built-in. Start /usr/local/sbin/inetd as a service using srvany utility from Windows NT Resource Kit, or freeware AutoexNT or invoker utility. Inetd should be started with "-d" option (see corresponding manuals how to provide command line options for started applications). You will have no easy ability to stop inetd service running without -d option (kill from resource kit will help you). The account of a service must have a valid cygwin's mount table. The account's rights required are "Act as part of operation system" (SE_TCB_NAME) for LogonUser call, and "Replace a process level token" (SE_ASSIGNPRIMARYTOKEN_NAME) and "Increase quotas" (SE_INCREASE_QUOTA_NAME) for CreateProcessAsUser call. Note: "Administrator" account have no all neccessary rights by default. Source code for login utility and the diff to inetutils-1.3.1 package are available. Ssh-1.2.22 precompiled binary and a diff to original ssh-1.2.22 package. Both ssh and sshd works! Sshd runs on NT only and uses NT's authentication. You need binary mounts to run this programs and set CYGWIN32 to "tty" to run ssh. X11 forwarding works, IP port forwarding was not tested. Many people asked about a port of csh for cygwin environment. It's available here . The archive contains precompiled binary, manual page and config.h required for compilation. You need CYGWIN32 environment variable set to "tty" in order to run tcsh - it was compiled with job control features enabled. Enter "unhash" command after starting tcsh to avoid .exe suffix problems. Crypt() function missed in cygwinb19.dll. Do you need crypt() implementation? Thanx to Andy Piper! libcrypt.a is a compilation of the GNU libc md5-based crypt package suitable for use with gnu-win32. In particular CVS in server mode requires a crypt() function in order to operate properly. Passwords encrypted using this library will not correspond to a UNIX password file since a different algorithm is used. However, under windows NT this is of little consequence. Use crypt.exe to generate suitable encrypted passwords. crypt.exe takes a salt string as its first argument and the password to be encrypted as its second. libcrypt.a is covered by the GPL. One more crypt() implementation for cygwin by Alexey Truhan. This is DES based Ultra Fast Crypt, which is used on Linux for couple of years, just ported to CygWin. It behaves just as "man 3 crypt" says and does not depend on platform used (for 32 bit proc:-). It works, can be easily linked together with MD5 (truly it calls md5_crypt() when salt begins with "$1$"). Hope to be useful enough. New info for perlers: Qub Group: prebuild cygperl5.004_04 with some extensions and addons. Some ports of well known unix tools. [Image] Back to Wizards Guild [Image] --------------------------------------------------------------------------- Sergey Okhapkin