1If you read this file _as_is_, just ignore the funny characters you 2see. It is written in the POD format (see pod/perlpod.pod) which is 3specially designed to be readable as is. 4 5=head1 NAME 6 7README.cygwin - Perl for Cygwin 8 9=head1 SYNOPSIS 10 11This document will help you configure, make, test and install Perl 12on Cygwin. This document also describes features of Cygwin that will 13affect how Perl behaves at runtime. 14 15B<NOTE:> There are pre-built Perl packages available for Cygwin and a 16version of Perl is provided in the normal Cygwin install. If you do 17not need to customize the configuration, consider using one of those 18packages. 19 20 21=head1 PREREQUISITES FOR COMPILING PERL ON CYGWIN 22 23=head2 Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it) 24 25The Cygwin tools are ports of the popular GNU development tools for Win32 26platforms. They run thanks to the Cygwin library which provides the UNIX 27system calls and environment these programs expect. More information 28about this project can be found at: 29 30 F<http://www.cygwin.com/> 31 32A recent net or commercial release of Cygwin is required. 33 34At the time this document was last updated, Cygwin 1.5.24 was current. 35 36 37=head2 Cygwin Configuration 38 39While building Perl some changes may be necessary to your Cygwin setup so 40that Perl builds cleanly. These changes are B<not> required for normal 41Perl usage. 42 43B<NOTE:> The binaries that are built will run on all Win32 versions. 44They do not depend on your host system (Win9x/WinME, WinNT/Win2K) 45or your Cygwin configuration (I<ntea>, I<ntsec>, binary/text mounts). 46The only dependencies come from hard-coded pathnames like C</usr/local>. 47However, your host system and Cygwin configuration will affect Perl's 48runtime behavior (see L</"TEST">). 49 50=over 4 51 52=item * C<PATH> 53 54Set the C<PATH> environment variable so that Configure finds the Cygwin 55versions of programs. Any Windows directories should be removed or 56moved to the end of your C<PATH>. 57 58=item * I<nroff> 59 60If you do not have I<nroff> (which is part of the I<groff> package), 61Configure will B<not> prompt you to install I<man> pages. 62 63=item * Permissions 64 65On WinNT with either the I<ntea> or I<ntsec> C<CYGWIN> settings, directory 66and file permissions may not be set correctly. Since the build process 67creates directories and files, to be safe you may want to run a 68C<chmod -R +w *> on the entire Perl source tree. 69 70Also, it is a well known WinNT "feature" that files created by a login 71that is a member of the I<Administrators> group will be owned by the 72I<Administrators> group. Depending on your umask, you may find that you 73can not write to files that you just created (because you are no longer 74the owner). When using the I<ntsec> C<CYGWIN> setting, this is not an 75issue because it "corrects" the ownership to what you would expect on 76a UNIX system. 77 78=back 79 80=head1 CONFIGURE PERL ON CYGWIN 81 82The default options gathered by Configure with the assistance of 83F<hints/cygwin.sh> will build a Perl that supports dynamic loading 84(which requires a shared F<libperl.dll>). 85 86This will run Configure and keep a record: 87 88 ./Configure 2>&1 | tee log.configure 89 90If you are willing to accept all the defaults run Configure with B<-de>. 91However, several useful customizations are available. 92 93=head2 Stripping Perl Binaries on Cygwin 94 95It is possible to strip the EXEs and DLLs created by the build process. 96The resulting binaries will be significantly smaller. If you want the 97binaries to be stripped, you can either add a B<-s> option when Configure 98prompts you, 99 100 Any additional ld flags (NOT including libraries)? [none] -s 101 Any special flags to pass to g++ to create a dynamically loaded library? 102 [none] -s 103 Any special flags to pass to gcc to use dynamic linking? [none] -s 104 105or you can edit F<hints/cygwin.sh> and uncomment the relevant variables 106near the end of the file. 107 108=head2 Optional Libraries for Perl on Cygwin 109 110Several Perl functions and modules depend on the existence of 111some optional libraries. Configure will find them if they are 112installed in one of the directories listed as being used for library 113searches. Pre-built packages for most of these are available from 114the Cygwin installer. 115 116=over 4 117 118=item * C<-lcrypt> 119 120The crypt package distributed with Cygwin is a Linux compatible 56-bit 121DES crypt port by Corinna Vinschen. 122 123Alternatively, the crypt libraries in GNU libc have been ported to Cygwin. 124 125The DES based Ultra Fast Crypt port was done by Alexey Truhan: 126 127 ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Okhapkin_Sergey/cw32crypt-dist-0.tgz 128 129NOTE: There are various export restrictions on DES implementations, 130see the glibc README for more details. 131 132The MD5 port was done by Andy Piper: 133 134 ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Okhapkin_Sergey/libcrypt.tgz 135 136=item * C<-lgdbm_compat> (C<use GDBM_File>) 137 138GDBM is available for Cygwin. 139 140NOTE: The GDBM library only works on NTFS partitions. 141 142=item * C<-ldb> (C<use DB_File>) 143 144BerkeleyDB is available for Cygwin. 145 146NOTE: The BerkeleyDB library only completely works on NTFS partitions 147and db-4.3 is flawed. 148 149=item * C<cygserver> (C<use IPC::SysV>) 150 151A port of SysV IPC is available for Cygwin. 152 153NOTE: This has B<not> been extensively tested. In particular, 154C<d_semctl_semun> is undefined because it fails a Configure test 155and on Win9x the I<shm*()> functions seem to hang. It also creates 156a compile time dependency because F<perl.h> includes F<<sys/ipc.h>> 157and F<<sys/sem.h>> (which will be required in the future when compiling 158CPAN modules). CURRENTLY NOT SUPPORTED! 159 160=item * C<-lutil> 161 162Included with the standard Cygwin netrelease is the inetutils package 163which includes libutil.a. 164 165=back 166 167=head2 Configure-time Options for Perl on Cygwin 168 169The F<INSTALL> document describes several Configure-time options. Some of 170these will work with Cygwin, others are not yet possible. Also, some of 171these are experimental. You can either select an option when Configure 172prompts you or you can define (undefine) symbols on the command line. 173 174=over 4 175 176=item * C<-Uusedl> 177 178Undefining this symbol forces Perl to be compiled statically. 179 180=item * C<-Uusemymalloc> 181 182By default Perl uses the C<malloc()> included with the Perl source. If you 183want to force Perl to build with the system C<malloc()> undefine this symbol. 184 185=item * C<-Uuseperlio> 186 187Undefining this symbol disables the PerlIO abstraction. PerlIO is now the 188default; it is not recommended to disable PerlIO. 189 190=item * C<-Dusemultiplicity> 191 192Multiplicity is required when embedding Perl in a C program and using 193more than one interpreter instance. This works with the Cygwin port. 194 195=item * C<-Duse64bitint> 196 197By default Perl uses 32 bit integers. If you want to use larger 64 198bit integers, define this symbol. 199 200=item * C<-Duselongdouble> 201 202I<gcc> supports long doubles (12 bytes). However, several additional 203long double math functions are necessary to use them within Perl 204(I<{atan2, cos, exp, floor, fmod, frexp, isnan, log, modf, pow, sin, sqrt}l, 205strtold>). 206These are B<not> yet available with Cygwin. 207 208=item * C<-Dusethreads> 209 210POSIX threads are implemented in Cygwin, define this symbol if you want 211a threaded perl. 212 213=item * C<-Duselargefiles> 214 215Cygwin uses 64-bit integers for internal size and position calculations, 216this will be correctly detected and defined by Configure. 217 218=item * C<-Dmksymlinks> 219 220Use this to build perl outside of the source tree. This works with Cygwin. 221Details can be found in the F<INSTALL> document. This is the recommended 222way to build perl from sources. 223 224=back 225 226=head2 Suspicious Warnings on Cygwin 227 228You may see some messages during Configure that seem suspicious. 229 230=over 4 231 232=item * Win9x and C<d_eofnblk> 233 234Win9x does not correctly report C<EOF> with a non-blocking read on a 235closed pipe. You will see the following messages: 236 237 But it also returns -1 to signal EOF, so be careful! 238 WARNING: you can't distinguish between EOF and no data! 239 240 *** WHOA THERE!!! *** 241 The recommended value for $d_eofnblk on this machine was "define"! 242 Keep the recommended value? [y] 243 244At least for consistency with WinNT, you should keep the recommended 245value. 246 247=item * Compiler/Preprocessor defines 248 249The following error occurs because of the Cygwin C<#define> of 250C<_LONG_DOUBLE>: 251 252 Guessing which symbols your C compiler and preprocessor define... 253 try.c:<line#>: missing binary operator 254 255This failure does not seem to cause any problems. With older gcc 256versions, "parse error" is reported instead of "missing binary 257operator". 258 259=back 260 261=head1 MAKE ON CYGWIN 262 263Simply run I<make> and wait: 264 265 make 2>&1 | tee log.make 266 267=head1 TEST ON CYGWIN 268 269There are two steps to running the test suite: 270 271 make test 2>&1 | tee log.make-test 272 273 cd t; ./perl harness 2>&1 | tee ../log.harness 274 275The same tests are run both times, but more information is provided when 276running as C<./perl harness>. 277 278Test results vary depending on your host system and your Cygwin 279configuration. If a test can pass in some Cygwin setup, it is always 280attempted and explainable test failures are documented. It is possible 281for Perl to pass all the tests, but it is more likely that some tests 282will fail for one of the reasons listed below. 283 284=head2 File Permissions on Cygwin 285 286UNIX file permissions are based on sets of mode bits for 287{read,write,execute} for each {user,group,other}. By default Cygwin 288only tracks the Win32 read-only attribute represented as the UNIX file 289user write bit (files are always readable, files are executable if they 290have a F<.{com,bat,exe}> extension or begin with C<#!>, directories are 291always readable and executable). On WinNT with the I<ntea> C<CYGWIN> 292setting, the additional mode bits are stored as extended file attributes. 293On WinNT with the default I<ntsec> C<CYGWIN> setting, permissions use the 294standard WinNT security descriptors and access control lists. Without one of 295these options, these tests will fail (listing not updated yet): 296 297 Failed Test List of failed 298 ------------------------------------ 299 io/fs.t 5, 7, 9-10 300 lib/anydbm.t 2 301 lib/db-btree.t 20 302 lib/db-hash.t 16 303 lib/db-recno.t 18 304 lib/gdbm.t 2 305 lib/ndbm.t 2 306 lib/odbm.t 2 307 lib/sdbm.t 2 308 op/stat.t 9, 20 (.tmp not an executable extension) 309 310=head2 NDBM_File and ODBM_File do not work on FAT filesystems 311 312Do not use NDBM_File or ODBM_File on FAT filesystem. They can be 313built on a FAT filesystem, but many tests will fail: 314 315 ../ext/NDBM_File/ndbm.t 13 3328 71 59 83.10% 1-2 4 16-71 316 ../ext/ODBM_File/odbm.t 255 65280 ?? ?? % ?? 317 ../lib/AnyDBM_File.t 2 512 12 2 16.67% 1 4 318 ../lib/Memoize/t/errors.t 0 139 11 5 45.45% 7-11 319 ../lib/Memoize/t/tie_ndbm.t 13 3328 4 4 100.00% 1-4 320 run/fresh_perl.t 97 1 1.03% 91 321 322If you intend to run only on FAT (or if using AnyDBM_File on FAT), 323run Configure with the -Ui_ndbm and -Ui_dbm options to prevent 324NDBM_File and ODBM_File being built. 325 326With NTFS (and no CYGWIN=nontsec), there should be no problems even if 327perl was built on FAT. 328 329=head2 C<fork()> failures in io_* tests 330 331A C<fork()> failure may result in the following tests failing: 332 333 ext/IO/lib/IO/t/io_multihomed.t 334 ext/IO/lib/IO/t/io_sock.t 335 ext/IO/lib/IO/t/io_unix.t 336 337See comment on fork in L<Miscellaneous> below. 338 339=head1 Specific features of the Cygwin port 340 341=head2 Script Portability on Cygwin 342 343Cygwin does an outstanding job of providing UNIX-like semantics on top of 344Win32 systems. However, in addition to the items noted above, there are 345some differences that you should know about. This is a very brief guide 346to portability, more information can be found in the Cygwin documentation. 347 348=over 4 349 350=item * Pathnames 351 352Cygwin pathnames can be separated by forward (F</>) or backward (F<\\>) 353slashes. They may also begin with drive letters (F<C:>) or Universal 354Naming Codes (F<//UNC>). DOS device names (F<aux>, F<con>, F<prn>, 355F<com*>, F<lpt?>, F<nul>) are invalid as base filenames. However, they 356can be used in extensions (e.g., F<hello.aux>). Names may contain all 357printable characters except these: 358 359 : * ? " < > | 360 361File names are case insensitive, but case preserving. A pathname that 362contains a backslash or drive letter is a Win32 pathname (and not subject 363to the translations applied to POSIX style pathnames). 364 365For conversion we have C<Cygwin::win_to_posix_path()> and 366C<Cygwin::posix_to_win_path()>. 367 368Pathnames may not contain Unicode characters. C<Cygwin> still uses the 369ANSI API calls and no Unicode calls because of newlib deficiencies. 370There's an unofficial unicode patch for cygwin at 371F<http://www.okisoft.co.jp/esc/utf8-cygwin/> 372 373=item * Text/Binary 374 375When a file is opened it is in either text or binary mode. In text mode 376a file is subject to CR/LF/Ctrl-Z translations. With Cygwin, the default 377mode for an C<open()> is determined by the mode of the mount that underlies 378the file. See C<Cygwin::is_binmount()>. Perl provides a C<binmode()> function 379to set binary mode on files that otherwise would be treated as text. 380C<sysopen()> with the C<O_TEXT> flag sets text mode on files that otherwise 381would be treated as binary: 382 383 sysopen(FOO, "bar", O_WRONLY|O_CREAT|O_TEXT) 384 385C<lseek()>, C<tell()> and C<sysseek()> only work with files opened in binary 386mode. 387 388The text/binary issue is covered at length in the Cygwin documentation. 389 390=item * PerlIO 391 392PerlIO overrides the default Cygwin Text/Binary behaviour. A file will 393always be treated as binary, regardless of the mode of the mount it lives 394on, just like it is in UNIX. So CR/LF translation needs to be requested in 395either the C<open()> call like this: 396 397 open(FH, ">:crlf", "out.txt"); 398 399which will do conversion from LF to CR/LF on the output, or in the 400environment settings (add this to your .bashrc): 401 402 export PERLIO=crlf 403 404which will pull in the crlf PerlIO layer which does LF -> CRLF conversion 405on every output generated by perl. 406 407=item * F<.exe> 408 409The Cygwin C<stat()>, C<lstat()> and C<readlink()> functions make the F<.exe> 410extension transparent by looking for F<foo.exe> when you ask for F<foo> 411(unless a F<foo> also exists). Cygwin does not require a F<.exe> 412extension, but I<gcc> adds it automatically when building a program. 413However, when accessing an executable as a normal file (e.g., I<cp> 414in a makefile) the F<.exe> is not transparent. The I<install> included 415with Cygwin automatically appends a F<.exe> when necessary. 416 417=item * Cygwin vs. Windows process ids 418 419Cygwin processes have their own pid, which is different from the 420underlying windows pid. Most posix compliant Proc functions expect 421the cygwin pid, but several Win32::Process functions expect the 422winpid. E.g. C<$$> is the cygwin pid of F</usr/bin/perl>, which is not 423the winpid. Use C<Cygwin::winpid_to_pid()> and C<Cygwin::winpid_to_pid()> 424to translate between them. 425 426=item * Cygwin vs. Windows errors 427 428Under Cygwin, $^E is the same as $!. When using L<Win32 API Functions|Win32>, 429use C<Win32::GetLastError()> to get the last Windows error. 430 431=item * C<chown()> 432 433On WinNT C<chown()> can change a file's user and group IDs. On Win9x C<chown()> 434is a no-op, although this is appropriate since there is no security model. 435 436=item * Miscellaneous 437 438File locking using the C<F_GETLK> command to C<fcntl()> is a stub that 439returns C<ENOSYS>. 440 441Win9x can not C<rename()> an open file (although WinNT can). 442 443The Cygwin C<chroot()> implementation has holes (it can not restrict file 444access by native Win32 programs). 445 446Inplace editing C<perl -i> of files doesn't work without doing a backup 447of the file being edited C<perl -i.bak> because of windowish restrictions, 448therefore Perl adds the suffix C<.bak> automatically if you use C<perl -i> 449without specifying a backup extension. 450 451Using C<fork()> after loading multiple dlls may fail with an internal cygwin 452error like the following: 453 454 C:\CYGWIN\BIN\PERL.EXE: *** couldn't allocate memory 0x10000(4128768) for 'C:\CYGWIN\LIB\PERL5\5.6.1\CYGWIN-MULTI\AUTO\SOCKET\SOCKET.DLL' alignment, Win32 error 8 455 456 200 [main] perl 377147 sync_with_child: child -395691(0xB8) died before initialization with status code 0x1 457 1370 [main] perl 377147 sync_with_child: *** child state child loading dlls 458 459Use the rebase utility to resolve the conflicting dll addresses. The 460rebase package is included in the Cygwin netrelease. Use setup.exe from 461F<http://www.cygwin.com/setup.exe> to install it and run rebaseall. 462 463=back 464 465=head2 Prebuilt methods: 466 467=over 4 468 469=item C<Cwd::cwd> 470 471Returns the current working directory. 472 473=item C<Cygwin::pid_to_winpid> 474 475Translates a cygwin pid to the corresponding Windows pid (which may or 476may not be the same). 477 478=item C<Cygwin::winpid_to_pid> 479 480Translates a Windows pid to the corresponding cygwin pid (if any). 481 482=item C<Cygwin::win_to_posix_path> 483 484Translates a Windows path to the corresponding cygwin path respecting 485the current mount points. With a second non-null argument returns an 486absolute path. Double-byte characters will not be translated. 487 488=item C<Cygwin::posix_to_win_path> 489 490Translates a cygwin path to the corresponding cygwin path respecting 491the current mount points. With a second non-null argument returns an 492absolute path. Double-byte characters will not be translated. 493 494=item C<Cygwin::mount_table()> 495 496Returns an array of [mnt_dir, mnt_fsname, mnt_type, mnt_opts]. 497 498 perl -e 'for $i (Cygwin::mount_table) {print join(" ",@$i),"\n";}' 499 /bin c:\cygwin\bin system binmode,cygexec 500 /usr/bin c:\cygwin\bin system binmode 501 /usr/lib c:\cygwin\lib system binmode 502 / c:\cygwin system binmode 503 /cygdrive/c c: system binmode,noumount 504 /cygdrive/d d: system binmode,noumount 505 /cygdrive/e e: system binmode,noumount 506 507=item C<Cygwin::mount_flags> 508 509Returns the mount type and flags for a specified mount point. 510A comma-separated string of mntent->mnt_type (always 511"system" or "user"), then the mntent->mnt_opts, where 512the first is always "binmode" or "textmode". 513 514 system|user,binmode|textmode,exec,cygexec,cygdrive,mixed, 515 notexec,managed,nosuid,devfs,proc,noumount 516 517If the argument is "/cygdrive", then just the volume mount settings, 518and the cygdrive mount prefix are returned. 519 520User mounts override system mounts. 521 522 $ perl -e 'print Cygwin::mount_flags "/usr/bin"' 523 system,binmode,cygexec 524 $ perl -e 'print Cygwin::mount_flags "/cygdrive"' 525 binmode,cygdrive,/cygdrive 526 527=item C<Cygwin::is_binmount> 528 529Returns true if the given cygwin path is binary mounted, false if the 530path is mounted in textmode. 531 532=back 533 534=head1 INSTALL PERL ON CYGWIN 535 536This will install Perl, including I<man> pages. 537 538 make install 2>&1 | tee log.make-install 539 540NOTE: If C<STDERR> is redirected C<make install> will B<not> prompt 541you to install I<perl> into F</usr/bin>. 542 543You may need to be I<Administrator> to run C<make install>. If you 544are not, you must have write access to the directories in question. 545 546Information on installing the Perl documentation in HTML format can be 547found in the F<INSTALL> document. 548 549=head1 MANIFEST ON CYGWIN 550 551These are the files in the Perl release that contain references to Cygwin. 552These very brief notes attempt to explain the reason for all conditional 553code. Hopefully, keeping this up to date will allow the Cygwin port to 554be kept as clean as possible. 555 556=over 4 557 558=item Documentation 559 560 INSTALL README.cygwin README.win32 MANIFEST 561 pod/perl.pod pod/perlport.pod pod/perlfaq3.pod 562 pod/perldelta.pod pod/perl5004delta.pod pod/perl56delta.pod 563 pod/perl561delta.pod pod/perl570delta.pod pod/perl572delta.pod 564 pod/perl573delta.pod pod/perl58delta.pod pod/perl581delta.pod 565 pod/perl590delta.pod pod/perlhist.pod pod/perlmodlib.pod 566 pod/perltoc.pod pod.lst Porting/Glossary pod/perlrepository.pod 567 Porting/checkAUTHORS.pl 568 ext/Compress-Raw-Zlib/Changes ext/Compress-Raw-Zlib/README 569 ext/Compress-Zlib/Changes cpan/Cwd/Changes ext/DB_File/Changes 570 ext/Encode/Changes ext/Sys-Syslog/Changes ext/Time-HiRes/Changes 571 ext/Win32API-File/Changes lib/CGI/Changes lib/ExtUtils/CBuilder/Changes 572 lib/ExtUtils/Changes lib/ExtUtils/NOTES lib/ExtUtils/PATCHING 573 lib/ExtUtils/README lib/Module/Build/Changes lib/Net/Ping/Changes 574 lib/Test/Harness/Changes 575 lib/Term/ANSIColor/ChangeLog lib/Term/ANSIColor/README 576 README.symbian symbian/TODO 577 578=item Build, Configure, Make, Install 579 580 cygwin/Makefile.SHs 581 ext/IPC/SysV/hints/cygwin.pl 582 ext/NDBM_File/hints/cygwin.pl 583 ext/ODBM_File/hints/cygwin.pl 584 hints/cygwin.sh 585 Configure - help finding hints from uname, 586 shared libperl required for dynamic loading 587 Makefile.SH Cross/Makefile-cross-SH 588 - linklibperl 589 Porting/patchls - cygwin in port list 590 installman - man pages with :: translated to . 591 installperl - install dll, install to 'pods' 592 makedepend.SH - uwinfix 593 regen_lib.pl - file permissions 594 595 NetWare/Makefile 596 plan9/mkfile 597 symbian/sanity.pl symbian/sisify.pl 598 hints/uwin.sh 599 vms/descrip_mms.template 600 win32/Makefile win32/makefile.mk 601 602=item Tests 603 604 t/io/fs.t - no file mode checks if not ntsec 605 skip rename() check when not check_case:relaxed 606 t/io/tell.t - binmode 607 t/lib/cygwin.t - builtin cygwin function tests 608 t/op/groups.t - basegroup has ID = 0 609 t/op/magic.t - $^X/symlink WORKAROUND, s/.exe// 610 t/op/stat.t - no /dev, skip Win32 ftCreationTime quirk 611 (cache manager sometimes preserves ctime of file 612 previously created and deleted), no -u (setuid) 613 t/op/taint.t - can't use empty path under Cygwin Perl 614 t/op/time.t - no tzset() 615 616=item Compiled Perl Source 617 618 EXTERN.h - __declspec(dllimport) 619 XSUB.h - __declspec(dllexport) 620 cygwin/cygwin.c - os_extras (getcwd, spawn, and several Cygwin:: functions) 621 perl.c - os_extras, -i.bak 622 perl.h - binmode 623 doio.c - win9x can not rename a file when it is open 624 pp_sys.c - do not define h_errno, init _pwent_struct.pw_comment 625 util.c - use setenv 626 util.h - PERL_FILE_IS_ABSOLUTE macro 627 pp.c - Comment about Posix vs IEEE math under Cygwin 628 perlio.c - CR/LF mode 629 perliol.c - Comment about EXTCONST under Cygwin 630 631=item Compiled Module Source 632 633 ext/Compress-Raw-Zlib/Makefile.PL 634 - Can't install via CPAN shell under Cygwin 635 ext/Compress-Raw-Zlib/zlib-src/zutil.h 636 - Cygwin is Unix-like and has vsnprintf 637 ext/Errno/Errno_pm.PL - Special handling for Win32 Perl under Cygwin 638 ext/POSIX/POSIX.xs - tzname defined externally 639 ext/SDBM_File/sdbm/pair.c 640 - EXTCONST needs to be redefined from EXTERN.h 641 ext/SDBM_File/sdbm/sdbm.c 642 - binary open 643 ext/Sys/Syslog/Syslog.xs 644 - Cygwin has syslog.h 645 ext/Sys/Syslog/win32/compile.pl 646 - Convert paths to Windows paths 647 ext/Time-HiRes/HiRes.xs 648 - Various timers not available 649 ext/Time-HiRes/Makefile.PL 650 - Find w32api/windows.h 651 ext/Win32/Makefile.PL - Use various libraries under Cygwin 652 ext/Win32/Win32.xs - Child dir and child env under Cygwin 653 ext/Win32API-File/File.xs 654 - _open_osfhandle not implemented under Cygwin 655 ext/Win32CORE/Win32CORE.c 656 - __declspec(dllexport) 657 658=item Perl Modules/Scripts 659 660 ext/B/t/OptreeCheck.pm - Comment about stderr/stdout order under Cygwin 661 ext/Digest-SHA/bin/shasum 662 - Use binary mode under Cygwin 663 ext/Sys/Syslog/win32/Win32.pm 664 - Convert paths to Windows paths 665 ext/Time-HiRes/HiRes.pm 666 - Comment about various timers not available 667 ext/Win32API-File/File.pm 668 - _open_osfhandle not implemented under Cygwin 669 ext/Win32CORE/Win32CORE.pm 670 - History of Win32CORE under Cygwin 671 lib/CGI.pm - binmode and path separator 672 lib/CPANPLUS/Dist/MM.pm - Commented out code that fails under Win32/Cygwin 673 lib/CPANPLUS/Internals/Constants/Report.pm 674 - OS classifications 675 lib/CPANPLUS/Internals/Constants.pm 676 - Contants for Cygwin 677 lib/CPANPLUS/Internals/Report.pm 678 - Example of Cygwin report 679 lib/CPANPLUS/Module.pm 680 - Abort if running on old Cygwin version 681 lib/Cwd.pm - hook to internal Cwd::cwd 682 lib/ExtUtils/CBuilder/Platform/cygwin.pm 683 - use gcc for ld, and link to libperl.dll.a 684 lib/ExtUtils/CBuilder.pm 685 - Cygwin is Unix-like 686 lib/ExtUtils/Install.pm - Install and rename issues under Cygwin 687 lib/ExtUtils/MM.pm - OS classifications 688 lib/ExtUtils/MM_Any.pm - Example for Cygwin 689 lib/ExtUtils/MakeMaker.pm 690 - require MM_Cygwin.pm 691 lib/ExtUtils/MM_Cygwin.pm 692 - canonpath, cflags, manifypods, perl_archive 693 lib/File/Fetch.pm - Comment about quotes using a Cygwin example 694 lib/File/Find.pm - on remote drives stat() always sets st_nlink to 1 695 lib/File/Spec/Cygwin.pm - case_tolerant 696 lib/File/Spec/Unix.pm - preserve //unc 697 lib/File/Spec/Win32.pm - References a message on cygwin.com 698 lib/File/Spec.pm - Pulls in lib/File/Spec/Cygwin.pm 699 lib/File/Temp.pm - no directory sticky bit 700 lib/Module/Build/Compat.pm - Comment references 'make' under Cygwin 701 lib/Module/Build/Platform/cygwin.pm 702 - Use '.' for man page separator 703 lib/Module/Build.pm - Cygwin is Unix-like 704 lib/Module/CoreList.pm - List of all module files and versions 705 lib/Net/Domain.pm - No domainname command under Cygwin 706 lib/Net/Netrc.pm - Bypass using stat() under Cygwin 707 lib/Net/Ping.pm - ECONREFUSED is EAGAIN under Cygwin 708 lib/Pod/Find.pm - Set 'pods' dir 709 lib/Pod/Perldoc/ToMan.pm - '-c' switch for pod2man 710 lib/Pod/Perldoc.pm - Use 'less' pager, and use .exe extension 711 lib/Term/ANSIColor.pm - Cygwin terminal info 712 lib/perl5db.pl - use stdin not /dev/tty 713 utils/perlbug.PL - Add CYGWIN environment variable to report 714 715=item Perl Module Tests 716 717 ext/Compress-Zlib/t/14gzopen.t 718 cpan/Cwd/t/cwd.t 719 ext/DB_File/t/db-btree.t 720 ext/DB_File/t/db-hash.t 721 ext/DB_File/t/db-recno.t 722 ext/DynaLoader/t/DynaLoader.t 723 ext/File-Glob/t/basic.t 724 ext/GDBM_File/t/gdbm.t 725 ext/POSIX/t/sysconf.t 726 ext/POSIX/t/time.t 727 ext/SDBM_File/t/sdbm.t 728 ext/Sys/Syslog/t/syslog.t 729 ext/Time-HiRes/t/HiRes.t 730 ext/Win32/t/Unicode.t 731 ext/Win32API-File/t/file.t 732 ext/Win32CORE/t/win32core.t 733 lib/AnyDBM_File.t 734 lib/Archive/Extract/t/01_Archive-Extract.t 735 lib/Archive/Tar/t/02_methods.t 736 lib/CPANPLUS/t/05_CPANPLUS-Internals-Fetch.t 737 lib/CPANPLUS/t/20_CPANPLUS-Dist-MM.t 738 lib/ExtUtils/t/Embed.t 739 lib/ExtUtils/t/eu_command.t 740 lib/ExtUtils/t/MM_Cygwin.t 741 lib/ExtUtils/t/MM_Unix.t 742 lib/File/Compare.t 743 lib/File/Copy.t 744 lib/File/Find/t/find.t 745 lib/File/Path.t 746 lib/File/Spec/t/crossplatform.t 747 lib/File/Spec/t/Spec.t 748 lib/Module/Build/t/destinations.t 749 lib/Net/hostent.t 750 lib/Net/Ping/t/110_icmp_inst.t 751 lib/Net/Ping/t/500_ping_icmp.t 752 lib/Net/t/netrc.t 753 lib/Pod/Simple/t/perlcyg.pod 754 lib/Pod/Simple/t/perlcygo.txt 755 lib/Pod/Simple/t/perlfaq.pod 756 lib/Pod/Simple/t/perlfaqo.txt 757 lib/User/grent.t 758 lib/User/pwent.t 759 760=back 761 762=head1 BUGS ON CYGWIN 763 764Support for swapping real and effective user and group IDs is incomplete. 765On WinNT Cygwin provides C<setuid()>, C<seteuid()>, C<setgid()> and C<setegid()>. 766However, additional Cygwin calls for manipulating WinNT access tokens 767and security contexts are required. 768 769=head1 AUTHORS 770 771Charles Wilson <cwilson@ece.gatech.edu>, 772Eric Fifer <egf7@columbia.edu>, 773alexander smishlajev <als@turnhere.com>, 774Steven Morlock <newspost@morlock.net>, 775Sebastien Barre <Sebastien.Barre@utc.fr>, 776Teun Burgers <burgers@ecn.nl>, 777Gerrit P. Haase <gp@familiehaase.de>, 778Reini Urban <rurban@cpan.org>, 779Jan Dubois <jand@activestate.com>, 780Jerry D. Hedden <jdhedden@cpan.org>. 781 782=head1 HISTORY 783 784Last updated: 2007-09-25 785