diff options
Diffstat (limited to 'winsup/doc')
41 files changed, 0 insertions, 14759 deletions
diff --git a/winsup/doc/ChangeLog b/winsup/doc/ChangeLog deleted file mode 100644 index be3eed930..000000000 --- a/winsup/doc/ChangeLog +++ /dev/null @@ -1,1179 +0,0 @@ -2009-08-26 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml (ov-new1.7-posix): Add "KOI8-R" and "KOI8-U" - charsets. - -2009-08-22 Corinna Vinschen <corinna@vinschen.de> - - * setup2.sgml (setup-locale-charsetlist): Add KOI8-R and KOI8-U to list - of supported charsets. - -2009-08-22 Corinna Vinschen <corinna@vinschen.de> - - * setup2.sgml (setup-locale-charsetlist): Add description of - case-insensitivity of charsets. Fix a typo. Add "UTF8" to the list. - -2009-08-12 Dave Korn <dave.korn.cygwin@gmail.com> - - * faq-using.xml (faq.using.bloda): Typofix MacAfee -> McAfee. - -2009-07-23 Corinna Vinschen <corinna@vinschen.de> - - * faq-using.xml (faq.using.ipv6): Try to clarify OS specific support. - * faq-what.xml (faq.what.supported): Add Windows 7 and 2008 R2. - * new-features.sgml: Add "and later" to rcmd news. - -2009-07-20 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in (all): Fix wrong target names. - (cygwin-ug-net/cygwin-ug-net-nochunks.html.gz): Ditto. - (cygwin-ug-net/cygwin-ug-net.pdf): Convert to use docbook2pdf. - (cygwin-api/cygwin-api.pdf): Ditto. - -2009-07-20 Corinna Vinschen <corinna@vinschen.de> - - * faq: Throughout, revert references to User's Guide to default URL. - -2009-07-20 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml (ov-new1.7-misc): Add stdc++ new/delete wrappers. - -2009-07-20 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml (ov-new1.7-posix): Add WCONTINUED, WIFCONTINUED. - -2009-07-20 Corinna Vinschen <corinna@vinschen.de> - - * setup2.sgml (setup-locale-charsetlist): Fix ISO88-59-13 and -15 - codepage numbers. - -2009-07-08 Christopher Faylor <me+cygwin@cgf.cx> - - * pathnames.sgml: Fix typo. - -2009-07-03 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml (ov-new1.7-file): Add fpurge and mkstemps to new - API functions. - -2009-07-01 Christopher Faylor <me+cygwin@cgf.cx> - - Clean up some sources.redhat.com references. - -2009-06-24 Corinna Vinschen <corinna@vinschen.de> - - * faq-setup.xml (faq.setup.setup-fails-on-ts): Fix another typo. - -2009-06-24 Corinna Vinschen <corinna@vinschen.de> - - * faq-setup.xml (faq.setup.setup-fails-on-ts): Fix typo. - -2009-06-23 Corinna Vinschen <corinna@vinschen.de> - - * faq-setup.xml (faq.setup.setup-failes-on-ts): Change rebaseall to - rebase. - -2009-06-23 Corinna Vinschen <corinna@vinschen.de> - - * faq-setup.xml (faq.setup.setup-failes-on-ts): New FAQ entry. - -2009-06-19 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml (ov-new1.7-misc): Add new link libs. - * setup2.sgml (setup-locale-ov): Explain locale-specific wcwidth - feature. - -2009-06-12 Ken Brown <kbrown@cornell.edu> - - * faq-using.xml (faq.using.emacs): Update. - -2009-06-04 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml: Add changes to console BS and Space key. - -2009-05-26 Christopher Faylor <me+cygwin@cgf.cx> - - Change explicitely to explicitly throughout. - -2009-05-15 Corinna Vinschen <corinna@vinschen.de> - - * setup2.sgml (setup-locale-console): Disable section for now. - -2009-05-14 Corinna Vinschen <corinna@vinschen.de> - - * faq-setup.xml (faq.setup.upgrade-mountpoints): New entry. - * faq-using.xml (faq.using.directory-structure): Align example to - latest mount output. - * pathnames.sgml (mount-table): Add note about upgrade helper scripts - to create /etc/fstab and /etc/fstab.f/${USER}. - -2009-05-14 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml: Add automounting of /, /usr/bin, and /usr/lib. - * pathnames.sgml (pathnames-intro): Be more verbose about POSIX and - Win32 paths. - (mount-table): Add "auto" flag. Add a paragraph about /usr/bin and - /usr/lib. - (pathnames-mount-ex): Enhance flags output. - -2009-05-13 Corinna Vinschen <corinna@vinschen.de> - Christopher Faylor <me+cygwin@cgf.cx> - - * pathnames.sgml (mount-table): Sort mount options and add override - option. Add description of root mount handling. - -2009-05-13 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml (pathnames-unusual): Talk about using UTF-8 in C - locale. - * setup2.sgml (setup-locale-problems): Ditto. - -2009-05-06 Corinna Vinschen <corinna@vinschen.de> - - * faq-setup.xml: Fix entry explaing how the homedir is evaluated - according to recent change. - -2009-04-07 Corinna Vinschen <corinna@vinschen.de> - - * setup2.sgml (setup-locale-console): New section to explain - console character set setting. - * faq: Throughout, change references to User's Guide to references - to 1.7 User's Guide temporarily. - * faq-setup.html (faq.using.unicode): Rephrase slightly. - (faq.using.weirdchars): New FAQ entry for console charset problems. - -2009-04-06 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml (ov-new1.7-posix): Remove JIS from supported - charsets. - * setup2.sgml (setup-locale-charsetlist): Ditto. - -2009-04-06 Corinna Vinschen <corinna@vinschen.de> - - * setup2.sgml (setup-locale-problems): Change title to be more clear - when referencing this section. - -2009-04-03 Kevin Buettner <kevinb@redhat.com> - - * Various syntactical and semantical fixes throughout. - -2009-04-01 Corinna Vinschen <corinna@vinschen.de> - - * faq-using.xml (faq.using.symlinkstoppedworking): Rename. - (faq.using.ipv6): New IPv6 FAQ. - * gdb.sgml: Remove incorrect statement about Insight. - -2009-03-31 Corinna Vinschen <corinna@vinschen.de> - - * setup2.sgml (setup-locale-problems): Fix an incomplete sentence. - -2009-03-31 Corinna Vinschen <corinna@vinschen.de> - - * faq-using.xml (faq.using.unicode): Modernize. - (faq.api.symlinkstoppedworking): Move here from faq-api.xml. - -2009-03-30 Dave Korn <dave.korn.cygwin@gmail.com> - - * faq-using.xml (faq.using.bloda): Update with new entries. - -2009-03-26 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add text to explain new UTF-16 symlinks. - * faq-api.xml: Add FAQ entry "Why do some of my old symlinks don't - work anymore?" - * new-features.sgml: Fix symlink text. Add new UTF-16 symlinks. - * overview2.sgml: Add text about new UTF-16 symlinks and potential - problems with old symlinks. - * pathnames.sgml: Fix typo. - * setup2.sgml: Extend text about problems with symlinks. - -2009-03-26 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml: Replace GB2312 with GBK. - * setup2.sgml: Ditto. - -2009-03-25 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Add a note that ASCII SO handling isn't foolproof - under all circumstances. - -2009-03-25 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml: Add missing GB2312 and eucKR character sets. - * pathnames.sgml: Change "DOS devices" title to "Invalid filenames" - and rephrase that section. - Add section "Filenames with unusual (foreign) characters". - Fix an emphasis. - * setup-net.sgml: Integrate setup-locale section. - * setup2.sgml: Add locale variables to section "Environment Variables". - Add section "Internationalization". - -2009-03-24 Corinna Vinschen <corinna@vinschen.de> - - * new-features.sgml: Add section about chaged (no)winsymlink default. - -2009-03-24 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Move "codepage:xxx" to the removed options section. - Change text accordingly. - * new-features.sgml: Try to explain new way to define character sets. - -2009-03-18 Corinna Vinschen <corinna@vinschen.de> - - * cygwin-ug-net.in.sgml: Update date. - * cygwinenv.sgml: Fix codepage:utf8 text in terms of setting - environment variables. - * new-features.sgml: New file describing new Cygwin 1.7 features. - Layout is preliminiary only. - * overview.sgml: Insert content of new-features.sgml. - -2009-03-18 Corinna Vinschen <corinna@vinschen.de> - - * overview2.sgml: Remove reference to CYGWIN=binmode. - * textbinary.sgml: Ditto. Rephrase certain paragraphs to match - Cygwin 1.7 behaviour. Add popen(3) and pipe(2) behaviour. Make - quite clear that binmode is preferred. Add *mode.o files to - description for developers. - -2009-03-09 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Try to be more clear explain raw devices. - -2009-03-03 Corinna Vinschen <corinna@vinschen.de> - - * faq-using.xml: Rework UTF FAQ to accommodate latest setlocale - change in newlib. - -2009-03-03 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Remove reference to managed mountpoints in mount - entry example. - -2009-02-23 Dr. Volker Zell <dr.volker.zell@oracle.com> - - * faq-using.xml: Rework XEmacs FAQ. - -2009-02-14 Corinna Vinschen <corinna@vinschen.de> - - * faq-using.xml: Fix usage of ampersand in NT emacs script. - -2009-02-14 Jari Aalto <jari.aalto@cante.net> - - * faq-using.xml: Expand Emacs entries. - -2009-02-13 Nahor <nahor.j+gmane@gmail.com> - - * overview.sgml: Fix 1.7 release date. - -2009-02-13 Corinna Vinschen <corinna@vinschen.de> - - * cygwin-api.in.sgml: Fix API section layout. - -2009-02-13 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Add a cygdrive section. - -2009-02-13 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Replace "binmode" with new "binary" output of mount. - -2009-02-12 Corinna Vinschen <corinna@vinschen.de> - - * faq-using.xml: First cut on Emacs. - -2009-02-12 Corinna Vinschen <corinna@vinschen.de> - - * faq-setup.xml: Revamp for Cygwin 1.7. - * faq-using.xml: Ditto. - -2009-02-11 Corinna Vinschen <corinna@vinschen.de> - - * faq-programming.xml: Revamp (mostely) for Cygwin 1.7. - * faq-what.xml: Ditto. - -2009-02-11 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in (FAQ_SOURCES): Define FAQ sources. - (faq/faq.html): Depend on FAQ sources. - (faq/faq-nochunks.html): Ditto. - * faq-api.xml: Revamp for Cygwin 1.7. - * faq-problems.xml: Remove. - * faq-sections.xml: Accommodate removal of faq-problems.xml. - * faq.xml: Ditto. - -2009-02-03 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Rephrase the "Case sensitive filenames" chapter - slightly. - -2009-01-24 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Add requirement for world-readability of special - /etc files. - -2009-01-24 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Add section about accessing /etc files. - -2009-01-21 Corinna Vinschen <corinna@vinschen.de> - - * cygserver.sgml: Remove the "How to use the Cygserver services" - section. - * cygwinenv.sgml: Move "(no)server" to the removed options section. - * faq-programming.xml: Remove CYGWIN=server requirement for running - the Cygwin testsuite. - * ntsec.sgml: Ditto for using `passwd -R'. - -2008-12-15 Corinna Vinschen <corinna@vinschen.de> - - * gcc.sgml: Use 'bash$' as Cygwin prompt throughout. - * gdb.sgml: Ditto. - * pathnames.sgml: Ditto. Fix the @ expansion example. - -2008-12-13 Christopher Faylor <me+cygwin@cgf.cx> - - * pathnames.sgml: Convert some backslashes to slashes. - -2008-12-11 Christian Franke <franke@computer.org> - - * pathnames.sgml: New section for /proc/registry. Document registry - name encoding. - -2008-12-04 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Fix typo. - -2008-12-03 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Revamp parts of the doc for clearness. - -2008-12-02 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Fix a few typos. - -2008-12-02 Corinna Vinschen <corinna@vinschen.de> - - * cygserver.sgml: Fix cross reference to the ntsec documentation. - -2008-12-02 Corinna Vinschen <corinna@vinschen.de> - - * cygserver.sgml: Document new feature to store hidden passwords - for seteuid. - -2008-12-02 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Finishing up changes for 1.7. - -2008-12-01 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Further changes for 1.7. Switch from "NT" to "Windows". - Add preliminary text. Try to be more clear in description. Remove - useless chapters. Finish the permission related chapters. - -2008-11-30 Christopher Faylor <me+cygwin@cgf.cx> - - * faq-using.xml: Remove assertion that lpr doesn't exist. - * faq-what.xml: Remove ancient who's who data. - -2008-11-25 Christopher Faylor <me+cygwin@cgf.cx> - - * overview2.sgml: Reorganize and make minor wording changes. - -2008-11-25 Christopher Faylor <me+cygwin@cgf.cx> - - * overview2.sgml: Clarify unix-specific automatic updates section. - -2008-11-25 Corinna Vinschen <corinna@vinschen.de> - - Suggested by Valerio Bigiani <vbigiani@yahoo.it>: - * overview2.sgml: Add text that no automatic updates are provided. - -2008-11-11 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add description for upcaseenv option. - -2008-09-22 Christopher Faylor <me+cygwin@cgf.cx> - - * setup2.sgml: Clarify heap allocation. - -2008-08-13 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Move description for (cyg,not)exec mount options - from utils.sgml here. Clarify nouser mount points. - -2008-07-18 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Move binmode option to list of removed options. - -2008-07-17 Corinna Vinschen <corinna@vinschen.de> - - * Revamp documentation for Cygwin 1.7, part 1. - -2008-07-01 Christopher Faylor <me+cygwin@cgf.cx> - - * Makefile.in: Temporarily add ability to generate pdfs. - -2008-06-26 Fred Korz <korz_fred@emc.com> - - * effectively.sgml: Correct subject-verb agreement, missing verb - (typo), preposition and (definite vs indefinite) article use. - -2008-06-19 Christopher Faylor <me+cygwin@cgf.cx> - - * faq-using.xml: Add more words about multiple cygwins. - -2008-04-24 Corinna Vinschen <corinna@vinschen.de> - - * cygwin-api.in.sgml: Add std-susv4 section to Compatibility chapter. - -2008-04-13 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Drop description of "transparent_exe" option. - -2007-29-12 Dave Korn <dave.korn@artimi.com> - - * faq-using.xml (faq.using.bloda): New entry. - (faq.using.firewall, faq.using.anti-virus): Link to faq.using.bloda. - * faq-setup.xml (faq.setup.hang): Likewise link to faq.using.bloda. - -2007-12-16 Christopher Faylor <me+cygwin@cgf.cx> - - * pathnames.xml: Fix a typo. - -2007-09-25 Corinna Vinschen <corinna@vinschen.de> - - * faq-what.xml: Remove paragraph about and link to stoneage old - history.html file. - -2007-08-24 Christopher Faylor <me+cygwin@cgf.cx> - - * dll.sgml: myprog.ca -> myprog.c - -2007-08-12 Christopher Faylor <me+cygwin@cgf.cx> - - * faq-programming.xml: Clarify where to run "make check". - -2007-07-18 Brian Dessent <brian@dessent.net> - - * faq-using.xml (faq.using.console-window): Mention FHS location of - docs and remove outdated reference to ash. - -2007-06-29 Corinna Vinschen <corinna@vinschen.de> - - * cygwin-api.in.sgml: Remove authorgroup and revhistory. - * cygwin-ug.in.sgml: Add Joshua Daniel Franklin to authorgroup. - Remove revhistory. - * legal.sgml: Update dates. - -2007-06-05 Corinna Vinschen <corinna@vinschen.de> - - * cygwin-api.in.sgml: Accommodate new "Compatibility" section layout. - -2006-12-12 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Drop description of "traverse" option. - -2006-08-25 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-setup.xml (faq.setup.uninstall): Mention Safe Mode - requirement for accessing the Security tab in XP Home. - * faq-using.xml (faq.using.chmod): Mention FAT32. - -2006-08-09 Christopher Faylor <cgf@timesys.com> - - * overview2.sgml: Remove inaccurate "full support for windows - pathnames" clause. - -2006-08-01 Christopher Faylor <cgf@timesys.com> - - * cygwinenv.sgml: Document [no]dosfilewarning option. - -2006-07-18 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Change text for the order in which executables - are evaluated. - -2006-06-01 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-setup.xml (faq.setup.automated): New FAQ. - -2006-05-30 Dave Korn <dave.korn@artimi.com> - - * faq-api.xml (faq.api.winsock): Replace references to depracated - Win32_Winsock macro with __USE_W32_WINSOCK, and enlarge on details. - -2006-05-24 Christopher Faylor <cgf@timesys.com> - - * configure.in: Update to newer autoconf. - (thanks to Steve Ellcey) - * configure: Regenerate. - * aclocal.m4: New file. - -2006-04-04 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-programming.xml (faq.programming.adjusting-heap): - Clarify argument parameter sizes. - * faq-using.xml (faq.using.chmod): - Improve chmod FAQ. - -2006-03-18 Christopher Faylor <cgf@timesys.com> - - * cygwinenv.sgml: Rename fork_retry to proc_retry since it has turned - out to be more general than just fork. - -2006-03-13 Christopher Faylor <cgf@timesys.com> - - * cygwinenv.sgml: Explain about new fork_retry CYGWIN environment - variable setting. - -2006-03-07 Bas van Gompel <cygwin-patch.buzz<at>bavag.tmfweb.nl> - - * cygwinenv.sgml: Add missing </para> at transparent_exe. - -2006-02-05 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Explain transparent_exe option. - -2006-02-01 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-setup.xml (faq.setup.what-packages): - Mention new cygcheck -p option. - -2006-01-27 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-programming.xml (faq.programming.building-cygwin): - Move cocom to the build requirements. - -2006-01-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-programming.xml (faq.programming.building-cygwin): - Simplify instructions, and remove tar usage basics. - -2006-01-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-programming.xml (faq.programming.ipc): Add new FAQ about - cygserver and its relation to the "Bad system call" error. - * faq-setup.xml (faq.setup.uninstall-all): Mention postgresql. - * overview2.sgml: Update security info on shared memory. - -2006-01-25 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-programming.xml (faq.programming.building-cygwin): Add - list of packages required for building and exact check instructions. - * faq-setup.xml (faq.setup.uninstall-service): New instructions - on uninstalling a cygwin service. - (faq.setup.uninstall-all): Reference new service uninstall FAQ. - -2006-01-25 Igor Peshansky <pechtcha@cs.nyu.edu> - - * faq-setup.xml (faq.setup.snapshots): Rename DLL using Windows tools. - -2006-01-18 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * Makefile.in : Remove references to old texinfo FAQ. - * calls.texinfo : Remove. - * changes.texinfo : Remove. - * copy.texinfo : Remove. - * faq.texinfo : Remove. - * history.texinfo : Remove. - * how-api.texinfo : Remove. - * how-programming.texinfo : Remove. - * how-resources.texinfo : Remove. - * how-using.texinfo : Remove. - * how.texinfo : Remove. - * install.texinfo : Remove. - * readme.texinfo : Remove. - * relnotes.texinfo : Remove. - * what.texinfo : Remove. - * who.texinfo : Remove. - -2006-01-12 Igor Peshansky <pechtcha@cs.nyu.edu> - - * doctool.c (scan_directory): Ignore "CVS" directories. - * faq-setup.xml (faq.setup.setup): Correct URL typo. - (faq.setup.snapshots): Clarify. - -2005-12-30 Christopher Faylor <cgf@timesys.com> - - * relnotes.texinfo: Remove entry about hyperthreaded processor. - -2005-12-30 Christopher Faylor <cgf@timesys.com> - - * faq-problems.html: Remove entry about hyperthreaded processor. - -2005-12-12 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-programming.xml: Add note about struct stat64. - -2005-12-03 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-setup.xml: Add note about clean_setup.pl. - * faq-using.xml: Remove unnecessary line of elisp. - -2005-10-02 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq-what.xml: Add 2003 and WOW64 to "supported" FAQ. - * faq-programming.xml: Fix cygexec FAQ, building link. - -2005-09-25 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq.xml: Remove copyright section, link to license.html - * faq-sections.xml: Remove copyright section, link to license.html - * faq-programming.xml: Remove confusing reference to Red Hat. - * faq-what.xml: Reword "supported" FAQ. - -2005-09-15 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml (ntea): Add some wording to scare people away - from using this option. - -2005-08-26 Brian Dessent <brian@dessent.net> - - * faq-using.xml: Add 'net use' hint to network shares FAQ. - -2005-08-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * Makefile.in: Remove extra anchor to make NN4 happy. - * faq.xml: Link to cygwin.com/license.html - * faq-resources.xml: Link instead of duplicating info. - * faq-using.xml: Split out services and network shares FAQ. - * faq-what.xml: Link to cygwin.com/license.html - -2005-08-17 Christopher Faylor <cgf@timesys.com> - - * textbinary.sgml: Correct incorrect information about ability to - specify text mode in fopen(). - -2005-08-05 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygwin.dsl: Add default DOCTYPE and output filename. - * Makefile: Update to switch FAQ from texinfo to DocBook. - * faq.xml: New file. - * faq-api.xml: New file. - * faq-problems.xml: New file. - * faq-programming.xml: New file. - * faq-resources.xml: New file. - * faq-sections.xml: New file. - * faq-setup.xml: New file. - * faq-using.xml: New file. - * faq-what.xml: New file. - -2005-07-10 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygwinenv.sgml: Update tty section to mention rxvt and xterm. - * how-programming.texinfo: Update GPL section of CVS FAQ. - * how-using.texinfo: Expand FAQ about out of date packages. - * setup-net.sgml: Add troubleshooting setup.exe section. - -2005-07-08 Corinna Vinschen <corinna@vinschen.de> - - * how-using.texinfo: Fix typos. - -2005-06-20 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-resources.texinfo: Update section on cygwin-developers. - * how-using.texinfo: Add FAQ about firewall software. Update - section on mounting and specifically note using managed mounts. - -2005-06-03 Max Kaehn <slothman@electric-cloud.com> - - * how-programming.texinfo: Add "How do I load cygwin1.dll dynamically - from a Visual Studio or MinGW application?" - -2005-05-28 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-using.texinfo : Update the mkdir -p section to reflect - changes in handling network drives. - -2005-05-18 Brian Dessent <brian@dessent.net> - - * install.texinfo ("How do I uninstall..."): Rewrite to cover - removing services, dealing with permissions, and other common - tasks for removing Cygwin completely. - -2005-05-08 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-programming.texinfo: Replace MAKE_MODE entry with FAQ about - execvp errors and cygexec. - -2005-04-20 Brian Dessent <brian@dessent.net> - - * pathnames.sgml (mount-table): Indicate that user-specific - mounts override system-wide. - -2005-04-20 Gerd Spalink <Gerd.Spalink@t-online.de> - - * fhandler-tut.txt: Update description to cygwin 1.5.13 - -2005-04-19 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Mention that check_case is deprecated. - -2005-04-16 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add new words for (no)traverse option. - -2005-03-30 Christopher Faylor <cgf@timesys.com> - - * how-using.texinfo: Add more words to the "multiple DLL" section. - -2005-03-25 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-programming.texinfo: Mention generic-build-script in - packaging FAQ. - -2005-03-19 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-programming.texinfo: Remove incorrect libm.a note. - -2005-03-05 Christopher Faylor <cgf@timesys.com> - - * pathnames.sgml: Clarify binmode/textmode behavior slightly. - * textbinary.sgml: Ditto. - -2005-03-03 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-api.texinfo: Add Pierre's security text. - -2005-02-23 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * README: New file. - -2005-01-31 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add words for (no)traverse option. - -2005-01-29 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * install.texinfo: Update setup.exe snapshot URL. - * ntsec.sgml: Add Pierre's Windows 2003 text. - -2005-01-28 Corinna Vinschen <corinna@vinschen.de> - - * how-using.texinfo: Change text about using shortcuts. - -2005-01-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-api.texinfo: Make snapshot URL an HTML link. - * how-programming.texinfo: Add details about building a - debugging version of the DLL. - * how-using.texinfo: Correct rxvt README location. - * install.texinfo: Add mount -m note to uninstall instructions. - -2005-01-21 Christopher Faylor <cgf@timesys.com> - - * how-programming.texinfo: Remove obsolete w32api instructions and add - some words about unpacking net release .tar.bz2. - -2004-12-30 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * path.sgml: Encode programming example with CDATA. - * overview.sgml: Add notes about SUS, newlib, and ash. - * overview2.sgml: Add notes about /usr/share/doc/Cygwin. - -2004-12-27 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * Makefile.in: Update to use xmlto. - * cygwin.dsl: Change into DocBook XSL stylesheet for xmlto. - * pathnames.sgml: Correct documentation of mount behavior. - -2004-12-24 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygserver.sgml: Cleanup markup for XML validity. - * cygwin-api.in.sgml: Cleanup markup for XML validity. - * cygwin-ug-net.in.sgml: Cleanup markup for XML validity. - * cygwin-ug.in.sgml: Cleanup markup for XML validity. - * cygwinenv.sgml: Cleanup markup for XML validity. - * dll.sgml: Cleanup markup for XML validity. - * effectively.sgml: Cleanup markup for XML validity. - * filemodes.sgml: Cleanup markup for XML validity. - * legal.sgml: Cleanup markup for XML validity. - * ntsec.sgml: Cleanup markup for XML validity. - * overview.sgml: Cleanup markup for XML validity. - * overview2.sgml: Cleanup markup for XML validity. - * pathnames.sgml: Cleanup markup for XML validity. - * setup-net.sgml: Cleanup markup for XML validity. - * setup2.sgml: Cleanup markup for XML validity. - * textbinary.sgml: Cleanup markup for XML validity. - * utils.sgml: Cleanup markup for XML validity. - -2004-12-02 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygserver.sgml: Cleanup minor markup problem. - * how-resources.texinfo: Add man and info to documentation FAQ. - * how-using.texinfo: Add more detail to Unicode FAQ. - * install.texinfo: Finally apply Pierre's patch from 2003-03-03. - * relnotes.texinfo: Add note about hyperthreading reports. - -2004-09-30 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-using.texinfo: Fix typo. Add note about "Install For All Users" - -2004-09-30 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-programming.texinfo: Add gcj note to WinMain@16 FAQ. - * how-using.texinfo: Add FAQ about network shares and authentication. - * install.texinfo: Add "Where is make" to FAQ subtitle. - -2004-09-24 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: smbntsec is not on by default. - -2004-09-14 Christopher Faylor <cgf@timesys.com> - - * what.texinfo: Fix two typos reported on cygwin list. - -2004-09-02 Corinna Vinschen <corinna@vinschen.de> - - * textbinary.sgml: Change default mode for non-mounted paths to binary. - -2004-07-16 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-resources.texinfo: Update documentation to /usr/share/doc. - * how-using.texinfo: Add paragraph about find -noleaf. - -2004-06-14 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-programming.texinfo: Add section about Visual Studio linking. - -2004-06-13 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * faq.texinfo: Move outdated calls.texinfo to readme.texinfo. - * how-api.texinfo: Fix typos. - * how-programming.texinfo: Fix typos. - * how-resources.texinfo: Fix typos. - * how-using.texinfo: Fix typos. - * install.texinfo: Fix typos. - * readme.texinfo: Move outdated calls.texinfo to readme.texinfo. - -2004-05-21 Brian Ford <ford@vss.fsi.com> - - * pathnames.sgml: Remove /dev/kmem from the supported POSIX - device list. - - * cygwinenv.sgml: Fix typo in check_case description. - -2004-03-30 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * ntsec.sgml: Replace chapter numbers with <link>s, - replace release-numbers in <title>s with descriptions. - -2004-03-30 Ronald Landheer-Cieslak <ronald@landheer.com> - - * ntsec.sgml: Fix typos, correct chapter numbers. - -2004-03-29 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Fix /dev/srX description. - -2004-03-28 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-programming.texinfo: Make list in .lib FAQ enumerative. - -2004-03-28 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * how-programming.texinfo: Add note about gcc .lib linking. - * pathnames.sgml: Mention create_devices.sh for /dev/ creation. - -2004-03-27 Corinna Vinschen <corinna@vinschen.de> - - * cygserver.sgml: New file. - * using.sgml: Include Cygserver docs. - -2004-03-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygwinenv.sgml: Add example for CYGWIN=error_start. - * pathnames.sgml: Update list of /dev/ devices. - -2004-02-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * Makefile.in: Fix problem links in faq0.html file. - * what.texinfo: Remove outdated 'recent' history. - -2004-02-19 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygwinenv.sgml: Remove incorrect ^Z information. Add - some tags to server option description. - * textbinary.sgml: Remove incorrect ^Z information. - -2004-02-16 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add server option description. - -2004-02-04 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * Makefile.in: Generate monolithic faq0.html file. - -2004-01-24 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygwinenv.sgml: Cleanup minor markup problems. - * dll.sgml: Cleanup minor markup problems. - * effectively.sgml: Cleanup minor markup problems. - * gcc.sgml: Cleanup minor markup problems. - * ntsec.sgml: Cleanup minor markup problems. - * pathnames.sgml: Cleanup minor markup problems. - * setup-net.sgml: Cleanup minor markup problems. - * textbinary.sgml: Cleanup minor markup problems. - * windres.sgml: Cleanup minor markup problems. - -2004-01-20 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * Makefile.in: Remove unused cygwin-ug and cygwin-api-int - targets from default build. - * how-using.texinfo: Add information about 8-bit character - display to FAQ. - * setup2.sgml: Add information about 8-bit character display - to "Setting up Cygwin". - -2004-01-15 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * setup-net.sgml: Add "internet-setup" id anchor. - * overview.sgml: Update "What is it?" section. Add links to - "Is it free software?" section. Update "Brief History" section. - * overview2.sgml: Rewrite "Expectations for {Windows,Unix}" - as "Quick Start for those more experienced with {Windows,Unix}". - -2004-01-11 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * Makefile.in: Add new target for single-file User's Guide, use new - cygwin.dsl for output. - * cygwin.dsl: New file, DSSSL stylesheet for custom Cygwin output. - * cygwin-api.in.sgml: Update to DocBook SGML 4.2 DTD. - * cygwin-ug-net.in.sgml: Update to DocBook SGML 4.2 DTD. - * cygwin-ug.in.sgml: Update to DocBook SGML 4.2 DTD. - * cygwinenv.sgml: Correct some tags. Add description of default values - to ntsec, export, and error_start items. - * dll.sgml: Add explanation of cyg prefix for DLLs. - * effectively.sgml: Use systemitem tag for names of Cygwin packages. - * how-programming.texinfo: Add example to FAQ entry. - * pathnames.sgml: Add discussion of /proc filesystem. - * setup-net.sgml: Correct some typos and grammar. - -2003-09-01 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Remove description how to mount raw devices and - dicourage it. Desparately try to make usage of raw devices a bit - clearer. - -2003-07-31 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * effectively.sgml: New file, "Using Cygwin Effectively with Windows". - * legal.sgml: Update year in copyright notice. - * using.sgml: Include "Using Cygwin Effectively with Windows" section. - -2003-07-15 Christopher Faylor <cgf@redhat.com> - - * pathnames.sgml: Use correct registry key. Clarify '@' operation. - -2003-07-03 Christopher Faylor <cgf@redhat.com> - - * ntsec.sgml: Reword references to "ntsec patch". - -2003-05-08 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygwin-ug-net.in.sgml: Remove outdated revision information and - author's names. - -2003-04-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * gcc.sgml: Remove outdated "WinMainCRTStartup" references. Add a - hellogui.c example. - -2003-03-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * setup-net.sgml: Make suggested additions to setup.exe documentation - -2003-03-23 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * setup-net.sgml: Improve setup.exe documentation - -2003-03-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * setup-net.sgml: Document setup.exe - -2003-02-07 Christopher Faylor <cgf@redhat.com> - - * how.texinfo: Add more w32api words. - -2003-02-07 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * ntsec.sgml: Add note on special names for missing user/group. - -2002-12-18 Christopher Faylor <cgf@redhat.com> - - * overview2.sgml: Remove CTRL-Z discussion. - * cygwinenv.sgml: Expand on CYGWIN=binmode. - -2002-11-10 Christopher Faylor <cgf@redhat.com> - - * how-programming.texinfo: Document _WIN32 more fully. - -2002-10-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * ntsec.sgml: Correct some minor grammatical errors. - -2002-10-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * dll.sgml: Simplify dll build instructions. - -2002-09-11 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.html: Add chapter for switching user context w/o password. - -2002-08-29 Christopher Faylor <cgf@redhat.com> - - * how-api.texinfo: Remove a line from the CRLF discussion about lseek - not working. Answer thread safe question more simply. - -2002-08-27 Nicholas Wourms <nwourms@netscape.net> - - * calls.texinfo: Add getc_unlocked, getchar_unlocked, putc_unlocked - and putchar_unlocked. - -2002-08-21 Christopher Faylor <cgf@redhat.com> - - * dll.sgml: Remove indirect reference to older gccs. - -2002-06-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * dll.sgml: Refine dll build instructions. - -2002-08-21 Christopher Faylor <cgf@redhat.com> - - * ntsec.html: Correct some typos. - -2002-07-23 Nicholas Wourms <nwourms@netscape.net> - - * calls.texinfo: Add fcloseall and fcloseall_r. - -2002-06-24 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Clean up text for examples of /etc/passwd and /etc/group. - Add examples with SIDs. Warn about changing them crudely. - -2002-06-21 Christopher Faylor <cgf@redhat.com> - - * what.texinfo: Fix typo. - -2002-06-02 Christopher Faylor <cgf@redhat.com> - - * how-programming.texinfo: Add more words to the "how to build". - -2002-03-01 Christopher Faylor <cgf@redhat.com> - - * overview.sgml: Fix 'more more' typo. - -2002-01-12 Christopher Faylor <cgf@redhat.com> - - * overview.sgml: Fix Red Hat cygwin contract link. - * what.texinfo: Ditto. - -2002-01-01 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Duh. Actually use bzip2 to create the tarball. Don't - just change the name. - -2002-01-01 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Make .bz2 tarball. - -2001-12-11 Christopher Faylor <cgf@redhat.com> - - * what.texinfo: Clarify XP. - -2001-12-03 Christopher Faylor <cgf@redhat.com> - - Cleanup copyrights and Cygnus'isms throughout. - * setup.sgml: Nuke ancient instructions. - -Tue Oct 16 18:02:00 2001 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Cleanup raw device text to be more coherent. - -Tue Oct 16 17:14:00 2001 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Add description for new fixed device paths. - -Fri Sep 7 12:47:47 2001 Michael Schaap <cygwin@mscha.com> - - * how-resources.texinfo: Add some additional words about where to find - documentation. - -Wed Jun 13 13:54:35 2001 Christopher Faylor <cgf@cygnus.com> - - * who.texinfo: Oops. Add a couple of important folk. - -Wed Jun 13 13:45:44 2001 Christopher Faylor <cgf@cygnus.com> - - * who.texinfo: Remove email addresses. Modernize. - -Tue May 29 21:30:07 2001 Christopher Faylor <cgf@cygnus.com> - - * Makefile.in: Tweak to attempt to accomodate older texi2html. - -Tue May 29 16:24:46 2001 Christopher Faylor <cgf@cygnus.com> - - * Makefile.in: Accomodate newer versions of docbook and openjade. - -Thu Apr 12 23:52:00 2001 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add text for `check_case' option. - -Fri Mar 2 12:42:00 2001 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add text for `winsymlinks' option. - * how-api.texinfo: Add text to explain new symlinks==shortcuts - and the CYGWIN setting `(no)winsymlinks'. - * how-using.texinfo: Add text that Cygwin now treats shortcuts - as symlinks. - -2001-02-07 Eric M. Monsler <emonsler@beamreachnetworks.com> - - * setup2.sgml: Add docs about domain accounts. - -Thu Dec 21 15:03:29 2000 Edward M. Lee <tailbert@yahoo.com> - - * cygwinenv.sgml: Fix typo in <filename>. Add missing </para>. - -Tue Dec 19 21:06:00 2000 Corinna Vinschen <corinna@vinschen.de> - - * cygwinenv.sgml: Add text for `smbntsec' option. - -Sat Nov 18 23:50:12 2000 Christopher Faylor <cgf@cygnus.com> - - * cygwinenv.sgml: Remove CYGWIN=strace option. Update CYGWIN options. - * setup2.sgml: Remove CYGWIN=strace example. - * how-programming.texinfo: Remove stuff about CYGWIN=strace. - -Thu Oct 26 10:00:00 2000 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Slight changes. Fix some errors. - -Thu Oct 26 9:35:00 2000 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Changed the (now incorrect) hint that ntsec only - uses access allowed ACEs. - -Fri Sep 29 23:52:00 2000 Corinna Vinschen <corinna@vinschen.de> - - * pathnames.sgml: Add documentation about raw block special - devices and tape devices to the "POSIX devices" chapter. - -Fri Aug 18 15:51:06 2000 Christopher Faylor <cgf@cygnus.com> - - * fhandler-tut.txt: hinfo -> dtable. - -Thu Jul 20 13:01:00 2000 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Add description for the new setuid ability - of Cygwin since release 1.1.3. - * overview2.sgml: Add description for new chroot functionality. - * calls.texinfo: Add missing calls. Change comments for - setuid, setgid, seteuid, setegid, chroot. - -Tue May 3 0:25:00 2000 Corinna Vinschen <corinna@vinschen.de> - - * ntsec.sgml: Revisited description of `ntsec' according to - the changes in release 1.1. - * setup.sgml: Include ntsec. - * setup-net.sgml: Ditto. diff --git a/winsup/doc/Makefile.in b/winsup/doc/Makefile.in deleted file mode 100644 index 774628ac4..000000000 --- a/winsup/doc/Makefile.in +++ /dev/null @@ -1,91 +0,0 @@ -# -*- Makefile -*- for winsup/doc -# Copyright (c) 1998-2000,2001 Red Hat, Inc. -# -# This file is part of Cygwin. -# -# This software is a copyrighted work licensed under the terms of the -# Cygwin license. Please consult the file "CYGWIN_LICENSE" for -# details. - -SHELL = @SHELL@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -SGMLDIRS = -d $(srcdir) -d $(utils_source) -d $(cygwin_source) - -CC:=@CC@ -CC_FOR_TARGET:=@CC@ -exeext:=@build_exeext@ - -include $(srcdir)/../Makefile.common - -TOCLEAN:=faq.txt ./*.html readme.txt doctool.o doctool.exe *.junk \ - cygwin-ug.sgml cygwin-ug cygwin-ug-net.html.gz \ - cygwin-ug-net.sgml cygwin-ug-net cygwin-ug-net.html \ - cygwin-api.sgml cygwin-api cygwin-api-int.sgml cygwin-api-int \ - faq - -FAQ_SOURCES:= faq-api.xml faq-programming.xml faq-resources.xml \ - faq-sections.xml faq-setup.xml faq-using.xml faq-what.xml faq.xml - -.SUFFIXES: - -all : \ - cygwin-ug-net/cygwin-ug-net.html \ - cygwin-ug-net/cygwin-ug-net-nochunks.html.gz \ - cygwin-api/cygwin-api.html \ - faq/faq.html faq/faq-nochunks.html \ - cygwin-ug-net/cygwin-ug-net.pdf \ - cygwin-api/cygwin-api.pdf - -clean: - rm -Rf $(TOCLEAN) - -install: all - -cygwin-ug-net/cygwin-ug-net-nochunks.html.gz : cygwin-ug-net.sgml doctool - -xmlto html-nochunks -m $(srcdir)/cygwin.dsl $< - -cp cygwin-ug-net.html cygwin-ug-net/cygwin-ug-net-nochunks.html - -rm -f cygwin-ug-net/cygwin-ug-net-nochunks.html.gz - -gzip cygwin-ug-net/cygwin-ug-net-nochunks.html - -cygwin-ug-net/cygwin-ug-net.html : cygwin-ug-net.sgml doctool - -xmlto html -o cygwin-ug-net/ -m $(srcdir)/cygwin.dsl $< - -# Some versions of jw hang with the -o option -cygwin-ug-net/cygwin-ug-net.pdf : cygwin-ug-net.sgml - -cd cygwin-ug-net && docbook2pdf ../$< - -cygwin-ug-net.sgml : cygwin-ug-net.in.sgml ./doctool Makefile - -./doctool -m $(SGMLDIRS) -s $(srcdir) -o $@ $< - -cygwin-api/cygwin-api.html : cygwin-api.sgml - -xmlto html -o cygwin-api/ -m $(srcdir)/cygwin.dsl $< - -cygwin-api/cygwin-api.pdf : cygwin-api.sgml - -cd cygwin-api && docbook2pdf ../$< - -cygwin-api.sgml : cygwin-api.in.sgml ./doctool Makefile - -./doctool -m $(SGMLDIRS) -s $(srcdir) -o $@ $< - -faq/faq.html : $(FAQ_SOURCES) - -xmlto html -o faq -m $(srcdir)/cygwin.dsl $(srcdir)/faq-sections.xml - -sed -i 's;</a><a name="id[0-9]*"></a>;</a>;g' faq/faq.*.html - -faq/faq-nochunks.html : $(FAQ_SOURCES) - -xmlto html -o faq -m $(srcdir)/cygwin.dsl $(srcdir)/faq.xml - -sed -i 's;</a><a name="id[0-9]*"></a>;</a>;g' faq/faq-nochunks.html - -./doctool : doctool.c - gcc -g $< -o $@ - -TBFILES = cygwin-ug-net.dvi cygwin-ug-net.rtf cygwin-ug-net.ps \ - cygwin-ug-net.pdf cygwin-ug-net.sgml \ - cygwin-api.dvi cygwin-api.rtf cygwin-api.ps \ - cygwin-api.pdf cygwin-api.sgml -TBDIRS = cygwin-ug-net cygwin-api -TBDEPS = cygwin-ug-net/cygwin-ug-net.html cygwin-api/cygwin-api.html - -tarball : cygwin-docs.tar.bz2 -cygwin-docs.tar.bz2 : $(TBFILES) $(TBDEPS) - find $(TBFILES) $(TBDIRS) \! -type d | sort | tar -T - -cf - | bzip2 > cygwin-docs.tar.bz2 diff --git a/winsup/doc/README b/winsup/doc/README deleted file mode 100644 index 1f1e15419..000000000 --- a/winsup/doc/README +++ /dev/null @@ -1,30 +0,0 @@ -The cygwin-doc source files are kept in CVS. Please see -http://cygwin.com/cvs.html for more information. - -BUILD REQUIREMENTS: - -ash -bzip2 -coreutils -cygwin -docbook-xml42 -docbook-xsl -gzip -make -texinfo -perl -xmlto - - -OTHER NOTES: - -You may use docbook2X to convert the DocBook files into info pages. -I have not been able to get a working docbook2X installation on Cygwin, -so currently I convert the files on a machine running GNU/Linux. PDF -generation is also problematic; I use 'jw -b pdf' right now but have -also used 'xmlto pdf' and jade. - -A few handmade files (cygwin.texi, intro.3, etc.) are found in the -cygwin-doc-x.y-z-src.tar.bz2 package. It also contains the utilities for -building the cygwin-doc-x.y-z "binary" package--simply run each step in -the cygwin-doc-x.y-z.sh script. diff --git a/winsup/doc/aclocal.m4 b/winsup/doc/aclocal.m4 deleted file mode 100644 index ecef4244c..000000000 --- a/winsup/doc/aclocal.m4 +++ /dev/null @@ -1,875 +0,0 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p6 - -dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - -# lib-prefix.m4 serial 4 (gettext-0.14.2) -dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) - -# lib-link.m4 serial 6 (gettext-0.14.3) -dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_PREREQ(2.50) - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L. -AC_DEFUN([AC_LIB_RPATH], -[ - dnl Tell automake >= 1.10 to complain if config.rpath is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE(rpath, - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) - -# lib-ld.m4 serial 3 (gettext-0.13) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - acl_cv_prog_gnu_ld=yes ;; -*) - acl_cv_prog_gnu_ld=no ;; -esac]) -with_gnu_ld=$acl_cv_prog_gnu_ld -]) - -dnl From libtool-1.4. Sets the variable LD. -AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) - -dnl This provides configure definitions used by all the winsup -dnl configure.in files. - -# FIXME: We temporarily define our own version of AC_PROG_CC. This is -# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We -# are probably using a cross compiler, which will not be able to fully -# link an executable. This should really be fixed in autoconf -# itself. - -AC_DEFUN([LIB_AC_PROG_CC_GNU], -[AC_CACHE_CHECK(whether we are using GNU C, ac_cv_prog_gcc, -[dnl The semicolon is to pacify NeXT's syntax-checking cpp. -cat > conftest.c <<EOF -#ifdef __GNUC__ - yes; -#endif -EOF -if AC_TRY_COMMAND(${CC-cc} -E conftest.c) | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi])]) - -AC_DEFUN([LIB_AC_PROG_CC], -[AC_BEFORE([$0], [AC_PROG_CPP])dnl -AC_CHECK_TOOL(CC, gcc, gcc) -: ${CC:=gcc} -AC_PROG_CC -test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) -]) - -AC_DEFUN([LIB_AC_PROG_CXX], -[AC_BEFORE([$0], [AC_PROG_CPP])dnl -AC_CHECK_TOOL(CXX, g++, g++) -if test -z "$CXX"; then - AC_CHECK_TOOL(CXX, g++, c++, , , ) - : ${CXX:=g++} - AC_PROG_CXX - test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) -fi - -CXXFLAGS='$(CFLAGS)' -]) - diff --git a/winsup/doc/configure b/winsup/doc/configure deleted file mode 100755 index 769de69ae..000000000 --- a/winsup/doc/configure +++ /dev/null @@ -1,3291 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. -# -# Copyright (C) 2003 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="cygwin-api.in.sgml" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC ac_ct_CC CFLAGS LDFLAGS CPPFLAGS EXEEXT OBJEXT build_exeext LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in ../.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ../.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ../.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 -if test "${ac_cv_target+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 -target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_CC" && ac_cv_prog_ac_ct_CC="gcc" -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -: ${CC:=gcc} -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5 -echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} - { (exit 1); exit 1; }; } - - - - - ac_config_files="$ac_config_files Makefile" -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed - - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Report bugs to <bug-autoconf@gnu.org>." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - - - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_os,;t t -s,@CC@,$CC,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@build_exeext@,$build_exeext,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/winsup/doc/configure.in b/winsup/doc/configure.in deleted file mode 100644 index 7079d96ee..000000000 --- a/winsup/doc/configure.in +++ /dev/null @@ -1,22 +0,0 @@ -dnl Autoconf configure script for winsup/regexp -dnl Copyright 1997,1998,1999,2000,2001 Red Hat, Inc. -dnl -dnl This file is part of Cygwin. -dnl -dnl This software is a copyrighted work licensed under the terms of the -dnl Cygwin license. Please consult the file "CYGWIN_LICENSE" for -dnl details. - -dnl Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.59) -AC_INIT(cygwin-api.in.sgml) -AC_CONFIG_AUX_DIR(../..) - -AC_CANONICAL_SYSTEM - -LIB_AC_PROG_CC - -AC_SUBST(build_exeext) - -AC_OUTPUT(Makefile) diff --git a/winsup/doc/cygserver.sgml b/winsup/doc/cygserver.sgml deleted file mode 100644 index b78a93ac4..000000000 --- a/winsup/doc/cygserver.sgml +++ /dev/null @@ -1,232 +0,0 @@ -<sect1 id="using-cygserver"><title>Cygserver</title> - -<sect2 id="what-is-cygserver"><title>What is Cygserver?</title> - -<para> - Cygserver is a program which is designed to run as a background service. - It provides Cygwin applications with services which require security - arbitration or which need to persist while no other cygwin application - is running. -</para> -<para> - The implemented services so far are: -</para> -<itemizedlist mark="bullet"> - <listitem><para>Control slave tty/pty handle dispersal from tty owner to other - processes without compromising the owner processes' security.</para></listitem> - <listitem><para>XSI IPC Message Queues.</para></listitem> - <listitem><para>XSI IPC Semaphores.</para></listitem> - <listitem><para>XSI IPC Shared Memory.</para></listitem> - <listitem><para>Allows non-privileged users to store obfuscated - passwords in the registry to be used by <command>setuid</command> and - <command>seteuid</command> calls to create user tokens with network - credentials. This service is used by <command><link - linkend="passwd">passwd</link> -R</command>. Using the stored - passwords in <command>set(e)uid</command> does not require running - Cygserver. For details, see <xref linkend="ntsec-setuid-overview"></xref>. - </para></listitem> -</itemizedlist> - -</sect2> - -<sect2 id="cygserver-command-line"><title>Cygserver command line options</title> - -<para> - Options to Cygserver take the normal UNIX-style `-X' or `--longoption' form. - Nearly all options have a counterpart in the configuration file (see below) - so setting them on the command line isn't really necessary. Command line - options override settings from the Cygserver configuration file. -</para> -<para> - The one-character options are prepended by a single dash, the long variants - are prepended with two dashes. Arguments to options are marked in angle - brackets below. These are not part of the actual syntax but are used only to - denote the arguments. Note that all arguments are required. Cygserver - has no options with optional arguments. -</para> -<para> - The recognized options are: -</para> - -<itemizedlist spacing="compact"> -<listitem> - <screen>-f, --config-file <file></screen> - <para> - Use <file> as configuration file instead of the default configuration - line. The default configuration file is /etc/cygserver.conf. - The --help and --version options will print the default configuration - pathname. - </para> - <para> - This option has no counterpart in the configuration file, for obvious - reasons. - </para> -</listitem> -<listitem> - <screen>-c, --cleanup-threads <num></screen> - <para> - Number of threads started to perform cleanup tasks. Default is 2. - Configuration file option: kern.srv.cleanup_threads - </para> -</listitem> -<listitem> - <screen>-r, --request-threads <num></screen> - <para> - Number of threads started to serve application requests. Default is 10. - The -c and -r options can be used to play with Cygserver's performance - under heavy load conditions or on slow machines. - Configuration file option: kern.srv.request_threads - </para> -</listitem> -<listitem> - <screen>-d, --debug</screen> - <para> - Log debug messages to stderr. These will clutter your stderr output with - a lot of information, typically only useful to developers. - </para> -</listitem> -<listitem> - <screen>-e, --stderr</screen> - <para> - Force logging to stderr. This is the default if stderr is connected to - a tty. Otherwise, the default is logging to the system log. By using - the -e, -E, -y, -Y options (or the appropriate settings in the - configuration file), you can explicitly set the logging output as you - like, even to both, stderr and syslog. - Configuration file option: kern.log.stderr - </para> -</listitem> -<listitem> - <screen>-E, --no-stderr</screen> - <para> - Don't log to stderr. Configuration file option: kern.log.stderr - </para> -</listitem> -<listitem> - <screen>-y, --syslog</screen> - <para> - Force logging to the system log. This is the default, if stderr is not - connected to a tty, e. g. redirected to a file. - Configuration file option: kern.log.syslog - </para> -</listitem> -<listitem> - <screen>-Y, --no-syslog</screen> - <para> - Don't log to syslog. Configuration file option: kern.log.syslog - </para> -</listitem> -<listitem> - <screen>-l, --log-level <level></screen> - <para> - Set the verbosity level of the logging output. Valid values are between - 1 and 7. The default level is 6, which is relatively chatty. If you set - it to 1, you will get only messages which are printed under severe conditions, - which will result in stopping Cygserver itself. - Configuration file option: kern.log.level - </para> -</listitem> -<listitem> - <screen>-m, --no-sharedmem</screen> - <para> - Don't start XSI IPC Shared Memory support. If you don't need XSI IPC - Shared Memory support, you can switch it off here. - Configuration file option: kern.srv.sharedmem - </para> -</listitem> -<listitem> - <screen>-q, --no-msgqueues</screen> - <para> - Don't start XSI IPC Message Queues. - Configuration file option: kern.srv.msgqueues - </para> -</listitem> -<listitem> - <screen>-s, --no-semaphores</screen> - <para> - Don't start XSI IPC Semaphores. - Configuration file option: kern.srv.semaphores - </para> -</listitem> -<listitem> - <screen>-S, --shutdown</screen> - <para> - Shutdown a running daemon and exit. Other methods are sending a SIGHUP - to the Cygserver PID or, if running as service, calling `net stop - cygserver' or `cygrunsrv -E cygserver'. - </para> -</listitem> -<listitem> - <screen>-h, --help</screen> - <para> - Output usage information and exit. - </para> -</listitem> -<listitem> - <screen>-v, --version</screen> - <para> - Output version information and exit. - </para> -</listitem> -</itemizedlist> - -</sect2> - -<sect2 id="start-cygserver"><title>How to start Cygserver</title> - -<para> - Before you run Cygserver for the first time, you should run the - /usr/bin/cygserver-config script once. It creates the default - configuration file and, upon request, installs Cygserver as service. - The script only performs a default install, with no further options - given to Cygserver when running as service. Due to the wide - configurability by changing the configuration file, that's typically - not necessary. -</para> -<para> - You should always run Cygserver as a service under LocalSystem account. - This is the way it is installed for you by the /usr/bin/cygserver-config - script. -</para> - -</sect2> - -<sect2 id="cygserver-config"><title>The Cygserver configuration file</title> - -<para> - Cygserver has many options, which allow you to customize the server - to your needs. Customization is accomplished by editing the configuration - file, which is by default /etc/cygserver.conf. This file is only read - once, at startup of Cygserver. There's no option to re-read the file at - runtime by, say, sending a signal to Cygserver. -</para> -<para> - The configuration file determines how Cygserver operates. There are - options which set the number of threads running in parallel, options - for setting how and what to log and options to set various maximum - values for the IPC services. -</para> -<para> - The default configuration file delivered with Cygserver is installed - to /etc/defaults/etc. The /usr/bin/cygserver-config script copies it to - /etc, giving you the option to overwrite an already existing file or to - leave it alone. Therefore, the /etc file is safe to be changed by you, - since it will not be overwritten by a later update installation. -</para> -<para> - The default configuration file contains many comments which describe - everything needed to understand the settings. A comment at the start of the - file describes the syntax rules for the file. The default options are shown - in the file but are commented out. -</para> -<para> - It is generally a good idea to uncomment only options which you intend to - change from the default values. Since reading the options file on Cygserver - startup doesn't take much time, it's also considered good practice to keep - all other comments in the file. This keeps you from searching for clues - in other sources. -</para> - -</sect2> - -</sect1> diff --git a/winsup/doc/cygwin-api.in.sgml b/winsup/doc/cygwin-api.in.sgml deleted file mode 100644 index 2b5ec9d9c..000000000 --- a/winsup/doc/cygwin-api.in.sgml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" -"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"[]> - -<book id="cygwin-api"> - - <bookinfo> - <date>1998-08-31</date> - <title>Cygwin API Reference</title> - - DOCTOOL-INSERT-legal - - </bookinfo> - - <toc></toc> - -<chapter id="compatibility"><title>Compatibility</title> -DOCTOOL-INSERT-std-susv4 -DOCTOOL-INSERT-std-bsd -DOCTOOL-INSERT-std-gnu -DOCTOOL-INSERT-std-solaris -DOCTOOL-INSERT-std-deprec -DOCTOOL-INSERT-std-notimpl -DOCTOOL-INSERT-std-notes -</chapter> - -<chapter id="cygwin-functions"><title>Cygwin Functions</title> - -<para>These functions are specific to Cygwin itself, and probably -won't be found anywhere else. </para> - -DOCTOOL-INSERT-func- - -</chapter> - -</book> diff --git a/winsup/doc/cygwin-ug-net.in.sgml b/winsup/doc/cygwin-ug-net.in.sgml deleted file mode 100644 index daab7ccb8..000000000 --- a/winsup/doc/cygwin-ug-net.in.sgml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" -"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"[]> - -<book id="cygwin-ug-net"> - - <bookinfo> - <date>2009-03-18</date> - <title>Cygwin User's Guide</title> - -DOCTOOL-INSERT-legal - - </bookinfo> - - <toc></toc> - -DOCTOOL-INSERT-overview - -DOCTOOL-INSERT-setup-net - -DOCTOOL-INSERT-using - -DOCTOOL-INSERT-programming - -</book> diff --git a/winsup/doc/cygwin-ug.in.sgml b/winsup/doc/cygwin-ug.in.sgml deleted file mode 100644 index 65902e903..000000000 --- a/winsup/doc/cygwin-ug.in.sgml +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"[ - <!ENTITY cygnus-copyright "<year>1999,2000,2001,2002,2003,2004,2005,2006,2007,2008</year> - <holder>Red Hat, Inc.</holder>"> - <!ENTITY cygnus-code-copyright " -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Copyright (C) 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, - 2008 Red Hat, Inc. - -This is copyrighted software that may only -be reproduced, modified, or distributed -under license from Red Hat, Inc. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -"> - ]> - -<book id="cygwin-ug"> - - <bookinfo> - <date>2001-22-03</date> - <title>Cygwin User's Guide</title> - <authorgroup> - <author> - <firstname>Joshua Daniel</firstname> - <surname>Franklin</surname> - </author> - <author> - <firstname>Corinna</firstname> - <surname>Vinschen</surname> - </author> - <author> - <firstname>Christopher</firstname> - <surname>Faylor</surname> - </author> - <author> - <firstname>DJ</firstname> - <surname>Delorie</surname> - </author> - <author> - <firstname>Pierre</firstname> - <surname>Humblet</surname> - </author> - <author> - <firstname>Geoffrey</firstname> - <surname>Noer</surname> - </author> - </authorgroup> - -DOCTOOL-INSERT-legal - - </bookinfo> - - <toc></toc> - -DOCTOOL-INSERT-overview - -DOCTOOL-INSERT-setup - -DOCTOOL-INSERT-using - -DOCTOOL-INSERT-programming - -</book> diff --git a/winsup/doc/cygwin.dsl b/winsup/doc/cygwin.dsl deleted file mode 100644 index 35156d73f..000000000 --- a/winsup/doc/cygwin.dsl +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version='1.0'?> -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:fo="http://www.w3.org/1999/XSL/Format" - version='1.0'> - -<!-- See /usr/share/docbook-xsl/params/ --> -<xsl:param name="chunker.output.doctype-public" - select="'-//W3C//DTD HTML 4.01 Transitional//EN'" /> -<xsl:param name="html.stylesheet" select="'docbook.css'"/> -<xsl:param name="use.id.as.filename" select="1" /> -<xsl:param name="root.filename" select="@id" /> - -<!-- TODO: make URLs and paths wrap with PDF output --> - -</xsl:stylesheet> - diff --git a/winsup/doc/cygwinenv.sgml b/winsup/doc/cygwinenv.sgml deleted file mode 100644 index afd5392af..000000000 --- a/winsup/doc/cygwinenv.sgml +++ /dev/null @@ -1,234 +0,0 @@ -<sect1 id="using-cygwinenv"><title>The <envar>CYGWIN</envar> environment -variable</title> - -<sect2 id="cygwinenv-implemented-options"> -<title>Implemented options</title> - -<para>The <envar>CYGWIN</envar> environment variable is used to configure -many global settings for the Cygwin runtime system. It contains the options -listed below, separated by blank characters. Many options can be turned off -by prefixing with <literal>no</literal>.</para> - -<itemizedlist mark="bullet"> - -<listitem> -<para><envar>(no)dosfilewarning</envar> - If set, Cygwin will warn the -first time a user uses an "MS-DOS" style path name rather than a POSIX-style -path name. Defaults to set.</para> -</listitem> - -<listitem> -<para><envar>(no)envcache</envar> - If set, environment variable -conversions (between Win32 and POSIX) are cached. Note that this may -cause problems if the mount table changes, as the cache is not invalidated -and may contain values that depend on the previous mount table -contents. Defaults to set.</para> -</listitem> - -<listitem> -<para><envar>(no)export</envar> - If set, the final values of these -settings are re-exported to the environment as <envar>CYGWIN</envar> again. -Defaults to off.</para> -</listitem> - -<listitem> -<para> -<envar>error_start:Win32filepath</envar> - if set, runs -<filename>Win32filepath</filename> when cygwin encounters a fatal error, -which is useful for debugging. <filename>Win32filepath</filename> is -usually set to the path to <command>gdb</command> or -<command>dumper</command>, for example -<filename>C:\cygwin\bin\gdb.exe</filename>. -There is no default set. -</para> -</listitem> - -<listitem> -<para><envar>forkchunk:32768</envar> - causes <function>fork()</function> -to copy memory some number of bytes at a time, in the above example -32768 bytes (32Kb) at a time. The default is to copy as many bytes as -possible, which is preferable in most cases but may slow some older systems -down. -</para> -</listitem> - -<listitem> -<para><envar>proc_retry:n</envar> - causes <function>fork()</function> and -<function>exec*()</function> to retry n times when a child process fails -due to certain windows-specific errors. These errors usually occur when -processes are being started while a user is logging off. -</para> -</listitem> - -<listitem> -<para><envar>(no)glob[:ignorecase]</envar> - if set, command line arguments -containing UNIX-style file wildcard characters (brackets, question mark, -asterisk, escaped with \) are expanded into lists of files that match -those wildcards. -This is applicable only to programs running from a DOS command line prompt. -Default is set.</para> -<para>This option also accepts an optional <literal>[no]ignorecase</literal> modifer. -If supplied, wildcard matching is case insensitive. The default is <literal>noignorecase</literal></para> -</listitem> - -<listitem> -<para><envar>(no)reset_com</envar> - if set, serial ports are reset -to 9600-8-N-1 with no flow control when used. This is done at open -time and when handles are inherited. Defaults to set.</para> -</listitem> - -<listitem> -<para><envar>(no)strip_title</envar> - if set, strips the directory -part off the window title, if any. Default is not set.</para> -</listitem> - -<listitem> -<para><envar>(no)title</envar> - if set, the title bar -reflects the name of the program currently running. Default is not -set.</para> -</listitem> - -<listitem> -<para><envar>(no)tty</envar> - if set, Cygwin enables extra support -(i.e., termios) for UNIX-like ttys in the Windows console. -It is not compatible with some Windows programs. -Defaults to not set, in which case the tty is opened in text mode. -Note that this has been changed such that ^D works as -expected instead of ^Z, and is settable via <command>stty</command>. -This option must be specified before starting a Cygwin shell -and it cannot be changed in the shell. It should not be set when using -other terminals (i.e., rxvt or xterm). -</para> -</listitem> - -<listitem> -<para><envar>(no)upcaseenv</envar> - if set, Cygwin converts all -environment variables to all-uppercase, when a Cygwin process is started -from a non-Cygwin native Windows process. This was the default behavior in -releases prior to Cygwin 1.7. If not set, Cygwin does not change the case -of environment variables, except for a restricted set to maintain minimal -backward compatibility and for correct handling of certain essential -variables. The current list of always uppercased variables is:</para> -<screen> - ALLUSERSPROFILE - COMMONPROGRAMFILES - COMPUTERNAME - COMSPEC - HOME - HOMEDRIVE - HOMEPATH - NUMBER_OF_PROCESSORS - OS - PATH - PATHEXT - PROCESSOR_ARCHITECTURE - PROCESSOR_IDENTIFIER - PROCESSOR_LEVEL - PROCESSOR_REVISION - PROGRAMFILES - SYSTEMDRIVE - SYSTEMROOT - TEMP - TERM - TMP - TMPDIR - WINDIR -</screen> -<para>Defaults to not set.</para> -</listitem> - -<listitem> -<para><envar>(no)winsymlinks</envar> - if set, Cygwin creates -symlinks as Windows shortcuts with a special header and the R/O attribute -set. If not set, Cygwin creates symlinks as plain files with a magic number, -a path and the system attribute set. Defaults to not set since plain -file symlinks are faster to write and faster to read. The new style of -plain file symlinks is incompatible with older Cygwin releases because -the new symlinks use UTF-16 to encode the target filename, while the -old symlinks used the current ANSI or OEM charset.</para> -</listitem> - -</itemizedlist> - -</sect2> - -<sect2 id="cygwinenv-removed-options"> -<title>Obsolete options</title> - -<para> -Certain CYGWIN options available in past releases have been removed in -Cygwin 1.7 for one reason or another. These obsolete options are listed -below.</para> - -<itemizedlist mark="bullet"> - -<listitem> -<para><envar>(no)binmode</envar> - This option has been removed because -all file opens default to binary mode, unless the open mode has been specified -explicitly in the open(2) call. -</para> -</listitem> - -<listitem> -<para><envar>check_case</envar> - This option has been removed in favor of -real case sensitivity and the per-mount option "posix=[0|1]". For more -information, read the documentation in <xref linkend="mount-table"></xref> and -<xref linkend="pathnames-casesensitive"></xref>.</para> -</listitem> - -<listitem> -<para><envar>codepage:[ansi|oem]</envar> - This option controled -which character set is used for file and console operations. Since Cygwin -is now doing all character conversion by itself, depending on the -application call to the <function>setlocale()</function> function, and in -turn by the setting of the environment variables <envar>$LANG</envar>, -<envar>$LC_ALL</envar>, or <envar>$LC_CTYPE</envar>, this setting -became superfluous.</para> -</listitem> - -<listitem> -<para><envar>(no)ntea</envar> - This option has been removed since it -only fakes security which is considered dangerous and useless. It also -created an uncontrollably large file on FAT and was entirely useless -on FAT32.</para> -</listitem> - -<listitem> -<para><envar>(no)ntsec</envar> - This option has been removed in favor of -the per-mount option "acl"/"noacl". For more information, read the -documentation in <xref linkend="mount-table"></xref>.</para> -</listitem> - -<listitem> -<para><envar>(no)server</envar> - Originally this option had to be -enabled on the client side to use features only available when running -<command>cygserver</command>. This option has been removed because Cygwin now -always tries to contact cygserver if a function is called which requires -cygserver being available. For more information, read the documentation -in <xref linkend="using-cygserver"></xref>.</para> -</listitem> - -<listitem> -<para><envar>(no)smbntsec</envar> - This option has been removed in favor of -the per-mount option "acl"/"noacl". For more information, read the -documentation in <xref linkend="mount-table"></xref>.</para> -</listitem> - -<listitem> -<para><envar>(no)transparent_exe</envar> - This option has been removed -because the behaviour it switched on is now the standard behaviour in -Cygwin.</para> -</listitem> - -<listitem> -<para><envar>(no)traverse</envar> - This option has been removed because -traverse checking is not quite correctly implemented by Microsoft and -it's behaviour has been getting worse with each new OS version. This -complicates its usage so the option has been removed for now.</para> -</listitem> - -</itemizedlist> - -</sect2> - -</sect1> diff --git a/winsup/doc/dll.sgml b/winsup/doc/dll.sgml deleted file mode 100644 index 2575c6858..000000000 --- a/winsup/doc/dll.sgml +++ /dev/null @@ -1,141 +0,0 @@ -<sect1 id="dll"><title>Building and Using DLLs</title> - -<para>DLLs are Dynamic Link Libraries, which means that they're linked -into your program at run time instead of build time. There are three -parts to a DLL:</para> - -<itemizedlist spacing="compact"> -<listitem><para> the exports </para></listitem> -<listitem><para> the code and data </para></listitem> -<listitem><para> the import library </para></listitem> -</itemizedlist> - -<para>The code and data are the parts you write - functions, -variables, etc. All these are merged together, like if you were -building one big object files, and put into the dll. They are not -put into your .exe at all.</para> - -<para>The exports contains a list of functions and variables that the -dll makes available to other programs. Think of this as the list of -"global" symbols, the rest being hidden. Normally, you'd create this -list by hand with a text editor, but it's possible to do it -automatically from the list of functions in your code. The -<filename>dlltool</filename> program creates the exports section of -the dll from your text file of exported symbols.</para> - -<para>The import library is a regular UNIX-like -<filename>.a</filename> library, but it only contains the tiny bit of -information needed to tell the OS how your program interacts with -("imports") the dll. This information is linked into your -<filename>.exe</filename>. This is also generated by -<filename>dlltool</filename>.</para> - -<sect2 id="dll-build"><title>Building DLLs</title> - -<para>This page gives only a few simple examples of gcc's DLL-building -capabilities. To begin an exploration of the many additional options, -see the gcc documentation and website, currently at -<ulink url="http://gcc.gnu.org/">http://gcc.gnu.org/</ulink> -</para> - -<para>Let's go through a simple example of how to build a dll. -For this example, we'll use a single file -<filename>myprog.c</filename> for the program -(<filename>myprog.exe</filename>) and a single file -<filename>mydll.c</filename> for the contents of the dll -(<filename>mydll.dll</filename>).</para> - -<para>Fortunately, with the latest gcc and binutils the process for building a dll -is now pretty simple. Say you want to build this minimal function in mydll.c:</para> - -<screen> -#include <stdio.h> - -int -hello() -{ - printf ("Hello World!\n"); -} -</screen> - -<para>First compile mydll.c to object code:</para> - -<screen>gcc -c mydll.c</screen> - -<para>Then, tell gcc that it is building a shared library:</para> - -<screen>gcc -shared -o mydll.dll mydll.o</screen> - -<para> -That's it! To finish up the example, you can now link to the -dll with a simple program: -</para> - -<screen> -int -main () -{ - hello (); -} -</screen> - -<para> -Then link to your dll with a command like: -</para> - -<screen>gcc -o myprog myprog.c -L./ -lmydll</screen> - -<para>However, if you are building a dll as an export library, -you will probably want to use the complete syntax:</para> - -<screen>gcc -shared -o cyg${module}.dll \ - -Wl,--out-implib=lib${module}.dll.a \ - -Wl,--export-all-symbols \ - -Wl,--enable-auto-import \ - -Wl,--whole-archive ${old_libs} \ - -Wl,--no-whole-archive ${dependency_libs}</screen> - -<para> -The name of your library is <literal>${module}</literal>, prefixed with -<literal>cyg</literal> for the DLL and <literal>lib</literal> for the -import library. Cygwin DLLs use the <literal>cyg</literal> prefix to -differentiate them from native-Windows MinGW DLLs, see -<ulink url="http://mingw.org">the MinGW website</ulink> for more details. -<literal>${old_libs}</literal> are all -your object files, bundled together in static libs or single object -files and the <literal>${dependency_libs}</literal> are import libs you -need to link against, e.g -<userinput>'-lpng -lz -L/usr/local/special -lmyspeciallib'</userinput>. -</para> -</sect2> - -<sect2 id="dll-link"><title>Linking Against DLLs</title> - -<para>If you have an existing DLL already, you need to build a -Cygwin-compatible import library. If you have the source to compile -the DLL, see <xref linkend="dll-build"></xref> for details on having -<filename>gcc</filename> build one for you. If you do not have the -source or a supplied working import library, you can get most of -the way by creating a .def file with these commands (you might need to -do this in <filename>bash</filename> for the quoting to work -correctly):</para> - -<screen> -echo EXPORTS > foo.def -nm foo.dll | grep ' T _' | sed 's/.* T _//' >> foo.def -</screen> - -<para>Note that this will only work if the DLL is not stripped. -Otherwise you will get an error message: "No symbols in -foo.dll".</para> - -<para>Once you have the <filename>.def</filename> file, you can create -an import library from it like this:</para> - -<screen> -dlltool --def foo.def --dllname foo.dll --output-lib foo.a -</screen> - -</sect2> - -</sect1> diff --git a/winsup/doc/doctool.c b/winsup/doc/doctool.c deleted file mode 100644 index 0a5060c76..000000000 --- a/winsup/doc/doctool.c +++ /dev/null @@ -1,622 +0,0 @@ -/* doctool.c - - Copyright 1998,1999,2000,2001,2006 Red Hat, Inc. - -This file is part of Cygwin. - -This software is a copyrighted work licensed under the terms of the -Cygwin license. Please consult the file "CYGWIN_LICENSE" for -details. */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <dirent.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <utime.h> - -/* Building native in a cross-built directory is tricky. Be careful, -and beware that you don't have the full portability stuff available to -you (like libiberty) */ - -/*****************************************************************************/ - -/* The list of extensions that may contain SGML snippets. We check - both cases in case the file system isn't case sensitive enough. */ - -struct { - char *upper; - char *lower; - int is_sgml; -} extensions[] = { - { ".C", ".c", 0 }, - { ".CC", ".cc", 0 }, - { ".H", ".h", 0 }, - { ".SGML", ".sgml", 1 }, - { 0, 0, 0 } -}; - -/*****************************************************************************/ - -void -show_help() -{ - printf("Usage: doctool [-m] [-i] [-d dir] [-o outfile] [-s prefix] \\\n"); - printf(" [-b book_id] infile\n"); - printf(" -m means to adjust Makefile to include new dependencies\n"); - printf(" -i means to include internal snippets\n"); - printf(" -d means to recursively scan directory for snippets\n"); - printf(" -o means to output to file (else stdout)\n"); - printf(" -s means to suppress source dir prefix\n"); - printf(" -b means to change the <book id=\"book_id\">\n"); - printf("\n"); - printf("doctool looks for DOCTOOL-START and DOCTOOL-END lines in source,\n"); - printf("saves <foo id=\"bar\"> blocks, and looks for DOCTOOL-INSERT-bar\n"); - printf("commands to insert selected sections. IDs starting with int-\n"); - printf("are internal only, add- are added at the end of relevant sections\n"); - printf("or add-int- for both. Inserted sections are chosen by prefix,\n"); - printf("and sorted when inserted.\n"); - exit(1); -} - -/*****************************************************************************/ - -typedef struct Section { - struct Section *next; - struct OneFile *file; - char *name; - char internal; - char addend; - char used; - char **lines; - int num_lines; - int max_lines; -} Section; - -typedef struct OneFile { - struct OneFile *next; - char *filename; - int enable_scan; - int used; - Section *sections; -} OneFile; - -OneFile *file_list = 0; - -char *output_name = 0; -FILE *output_file = 0; - -char *source_dir_prefix = ""; -char *book_id = 0; - -int internal_flag = 0; - -/*****************************************************************************/ - -char * -has_string(char *line, char *string) -{ - int i; - while (*line) - { - for (i=0; line[i]; i++) - { - if (!string[i]) - return line; - if (line[i] != string[i]) - break; - } - line++; - } - return 0; -} - -int -starts_with(char *line, char *string) -{ - int i=0; - while (1) - { - if (!string[i]) - return 1; - if (!line[i] || line[i] != string[i]) - return 0; - i++; - } -} - -/*****************************************************************************/ - -#ifdef S_ISLNK -#define STAT lstat -#else -#define STAT stat -#endif - -void -scan_directory(dirname) - char *dirname; -{ - struct stat st; - char *name; - struct dirent *de; - DIR *dir = opendir(dirname); - if (!dir) - return; - while (de = readdir(dir)) - { - if (strcmp(de->d_name, ".") == 0 - || strcmp(de->d_name, "..") == 0) - continue; - - name = (char *)malloc(strlen(dirname)+strlen(de->d_name)+3); - strcpy(name, dirname); - strcat(name, "/"); - strcat(name, de->d_name); - - STAT(name, &st); - - if (S_ISDIR(st.st_mode) && strcmp(de->d_name, "CVS") != 0) - { - scan_directory(name); - } - - else if (S_ISREG(st.st_mode)) - { - char *dot = strrchr(de->d_name, '.'); - int i; - - if (dot) - { - for (i=0; extensions[i].upper; i++) - if (strcmp(dot, extensions[i].upper) == 0 - || strcmp(dot, extensions[i].lower) == 0) - { - OneFile *one = (OneFile *)malloc(sizeof(OneFile)); - one->next = file_list; - file_list = one; - one->filename = name; - one->enable_scan = ! extensions[i].is_sgml; - one->used = 0; - one->sections = 0; - } - } - } - } - closedir (dir); -} - -/*****************************************************************************/ - -void -scan_file(OneFile *one) -{ - FILE *f = fopen(one->filename, "r"); - int enabled = ! one->enable_scan; - char line[1000], *tag=0, *id=0, *tmp; - int taglen = 0; - Section *section = 0; - Section **prev_section_ptr = &(one->sections); - - if (!f) - { - perror(one->filename); - return; - } - - while (fgets(line, 1000, f)) - { - if (one->enable_scan) - { - /* source files have comment-embedded docs, check for them */ - if (has_string(line, "DOCTOOL-START")) - enabled = 1; - if (has_string(line, "DOCTOOL-END")) - enabled = 0; - } - if (!enabled) - continue; - - /* DOCTOOL-START - -<sect1 id="dt-tags"> -this is the doctool tags section. -</sect1> - - DOCTOOL-END */ - - if (!tag && line[0] == '<') - { - tag = (char *)malloc(strlen(line)+1); - id = (char *)malloc(strlen(line)+1); - if (sscanf(line, "<%s id=\"%[^\"]\">", tag, id) == 2) - { - if (strcmp(tag, "book") == 0 || strcmp(tag, "BOOK") == 0) - { - /* Don't want to "scan" these */ - return; - } - taglen = strlen(tag); - section = (Section *)malloc(sizeof(Section)); - /* We want chunks within single files to appear in that order */ - section->next = 0; - section->file = one; - *prev_section_ptr = section; - prev_section_ptr = &(section->next); - section->internal = 0; - section->addend = 0; - section->used = 0; - section->name = id; - if (starts_with(section->name, "add-")) - { - section->addend = 1; - section->name += 4; - } - if (starts_with(section->name, "int-")) - { - section->internal = 1; - section->name += 4; - } - section->lines = (char **)malloc(10*sizeof(char *)); - section->num_lines = 0; - section->max_lines = 10; - } - else - { - free(tag); - free(id); - tag = id = 0; - } - } - - if (tag && section) - { - if (section->num_lines >= section->max_lines) - { - section->max_lines += 10; - section->lines = (char **)realloc(section->lines, - section->max_lines * sizeof (char *)); - } - section->lines[section->num_lines] = (char *)malloc(strlen(line)+1); - strcpy(section->lines[section->num_lines], line); - section->num_lines++; - - if (line[0] == '<' && line[1] == '/' - && memcmp(line+2, tag, taglen) == 0 - && (isspace(line[2+taglen]) || line[2+taglen] == '>')) - { - /* last line! */ - tag = 0; - } - } - } - fclose(f); -} - -/*****************************************************************************/ - -Section ** -enumerate_matching_sections(char *name_prefix, int internal, int addend, int *count_ret) -{ - Section **rv = (Section **)malloc(12*sizeof(Section *)); - int count = 0, max=10, prefix_len = strlen(name_prefix); - OneFile *one; - int wildcard = 0; - - if (name_prefix[strlen(name_prefix)-1] == '-') - wildcard = 1; - - for (one=file_list; one; one=one->next) - { - Section *s; - for (s=one->sections; s; s=s->next) - { - int matches = 0; - if (wildcard) - { - if (starts_with(s->name, name_prefix)) - matches = 1; - } - else - { - if (strcmp(s->name, name_prefix) == 0) - matches = 1; - } - if (s->internal <= internal - && s->addend == addend - && matches - && ! s->used) - { - s->used = 1; - if (count >= max) - { - max += 10; - rv = (Section **)realloc(rv, max*sizeof(Section *)); - } - rv[count++] = s; - rv[count] = 0; - } - } - } - if (count_ret) - *count_ret = count; - return rv; -} - -/*****************************************************************************/ - -#define ID_CHARS "~@$%&()_-+[]{}:." - -void include_section(char *name, int addend); - -char * -unprefix(char *fn) -{ - int l = strlen(source_dir_prefix); - if (memcmp(fn, source_dir_prefix, l) == 0) - { - fn += l; - while (*fn == '/' || *fn == '\\') - fn++; - return fn; - } - return fn; -} - -void -parse_line(char *line, char *filename) -{ - char *cmd = has_string(line, "DOCTOOL-INSERT-"); - char *sname, *send, *id, *save; - if (!cmd) - { - if (book_id - && (starts_with(line, "<book") || starts_with(line, "<BOOK"))) - { - cmd = strchr(line, '>'); - if (cmd) - { - cmd++; - fprintf(output_file, "<book id=\"%s\">", book_id); - fputs(cmd, output_file); - return; - } - } - fputs(line, output_file); - return; - } - if (cmd != line) - fwrite(line, cmd-line, 1, output_file); - save = (char *)malloc(strlen(line)+1); - strcpy(save, line); - line = save; - - sname = cmd + 15; /* strlen("DOCTOOL-INSERT-") */ - for (send = sname; - *send && isalnum(*send) || strchr(ID_CHARS, *send); - send++); - id = (char *)malloc(send-sname+2); - memcpy(id, sname, send-sname); - id[send-sname] = 0; - include_section(id, 0); - - fprintf(output_file, "<!-- %s -->\n", unprefix(filename)); - - fputs(send, output_file); - free(save); -} - -int -section_sort(const void *va, const void *vb) -{ - Section *a = *(Section **)va; - Section *b = *(Section **)vb; - int rv = strcmp(a->name, b->name); - if (rv) - return rv; - return a->internal - b->internal; -} - -void -include_section(char *name, int addend) -{ - Section **sections, *s; - int count, i, l; - - sections = enumerate_matching_sections(name, internal_flag, addend, &count); - - qsort(sections, count, sizeof(sections[0]), section_sort); - for (i=0; i<count; i++) - { - s = sections[i]; - s->file->used = 1; - fprintf(output_file, "<!-- %s -->\n", unprefix(s->file->filename)); - for (l=addend; l<s->num_lines-1; l++) - parse_line(s->lines[l], s->file->filename); - if (!addend) - { - include_section(s->name, 1); - parse_line(s->lines[l], s->file->filename); - } - } - - free(sections); -} - -void -parse_sgml(FILE *in, char *input_name) -{ - static char line[1000]; - while (fgets(line, 1000, in)) - { - parse_line(line, input_name); - } -} - -/*****************************************************************************/ - -void -fix_makefile(char *output_name) -{ - FILE *in, *out; - char line[1000]; - int oname_len = strlen(output_name); - OneFile *one; - int used_something = 0; - struct stat st; - struct utimbuf times; - - stat("Makefile", &st); - - in = fopen("Makefile", "r"); - if (!in) - { - perror("Makefile"); - return; - } - - out = fopen("Makefile.new", "w"); - if (!out) - { - perror("Makefile.new"); - return; - } - - while (fgets(line, 1000, in)) - { - if (starts_with(line, output_name) - && strcmp(line+oname_len, ": \\\n") == 0) - { - /* this is the old dependency */ - while (fgets(line, 1000, in)) - { - if (strcmp(line+strlen(line)-2, "\\\n")) - break; - } - } - else - fputs(line, out); - } - fclose(in); - - for (one=file_list; one; one=one->next) - if (one->used) - { - used_something = 1; - break; - } - - if (used_something) - { - fprintf(out, "%s:", output_name); - for (one=file_list; one; one=one->next) - if (one->used) - fprintf(out, " \\\n\t%s", one->filename); - fprintf(out, "\n"); - } - - fclose(out); - - times.actime = st.st_atime; - times.modtime = st.st_mtime; - utime("Makefile.new", ×); - - if (rename("Makefile", "Makefile.old")) - return; - if (rename("Makefile.new", "Makefile")) - rename("Makefile.old", "Makefile"); -} - -/*****************************************************************************/ - -int -main(argc, argv) - int argc; - char **argv; -{ - int i; - OneFile *one; - FILE *input_file; - int fix_makefile_flag = 0; - - while (argc > 1 && argv[1][0] == '-') - { - if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) - { - show_help(); - } - else if (strcmp(argv[1], "-i") == 0) - { - internal_flag = 1; - } - else if (strcmp(argv[1], "-m") == 0) - { - fix_makefile_flag = 1; - } - else if (strcmp(argv[1], "-d") == 0 && argc > 2) - { - scan_directory(argv[2]); - argc--; - argv++; - } - else if (strcmp(argv[1], "-o") == 0 && argc > 2) - { - output_name = argv[2]; - argc--; - argv++; - } - else if (strcmp(argv[1], "-s") == 0 && argc > 2) - { - source_dir_prefix = argv[2]; - argc--; - argv++; - } - else if (strcmp(argv[1], "-b") == 0 && argc > 2) - { - book_id = argv[2]; - argc--; - argv++; - } - - argc--; - argv++; - } - - for (one=file_list; one; one=one->next) - { - scan_file(one); - } - - input_file = fopen(argv[1], "r"); - if (!input_file) - { - perror(argv[1]); - return 1; - } - - if (output_name) - { - output_file = fopen(output_name, "w"); - if (!output_file) - { - perror(output_name); - return 1; - } - } - else - { - output_file = stdout; - output_name = "<stdout>"; - } - - parse_sgml(input_file, argv[1]); - - if (output_file != stdout) - fclose(output_file); - - if (fix_makefile_flag) - fix_makefile(output_name); - - return 0; -} diff --git a/winsup/doc/doctool.txt b/winsup/doc/doctool.txt deleted file mode 100644 index c89e39243..000000000 --- a/winsup/doc/doctool.txt +++ /dev/null @@ -1,146 +0,0 @@ -Doctool - -DJ Delorie <dj@cygnus.com> - -These are the instructions for using doctool. Yes, I should have -written them *in* DocBook, but hey, I was in a hurry. - -OK, doctool is a program that gathers snippets of a docbook document and -puts them all together in the right order. There are three -places that it gets snippets from: - -1. The document that you tell it you want "finished" - -2. blocks of SGML in *.sgml files - -3. comments in source code - -The first of these is the template file, which is to say, it's a -normal SGML file (sort of). This file is the first one read, and -includes such things as your <book> tags etc. It contains commands to -doctool to tell it where to put the other parts. - -The second, the *.sgml files, contain one or more blocks of SGML. -To work with doctool, each of these snippets must begin and end -with matching tags, must have an id="" attribute, and the start/end -tags must begin at the beginning of the line. For example: - -<foo id="frob-45"> - stuff goes here -</foo> -<bar id="frob-48"> - stuff goes here -</bar> - -In this example, the file contains two snippets, one marked by "foo" -and one barked by "bar", with id's "from-45" and "from-48". Note that -I made up the foo and bar tags. You'd usually use a <sect1> tag or -something useful like that. Stuff outside the blocks is ignored. - -The third is simply an encapsulation of the second in comments, like this: - -/* DOCTOOL-START -<foo id="frob-45"> - stuff goes here -</foo> -DOCTOOL-END */ - -The DOCTOOL-START and DOCTOOL-END things are special. Doctool uses -those to know which parts of which comments are useful, and which -parts are the useless source code stuff ;-) - - -OK, so now we've got all these snippets of SGML floating around. What -do we do with them? Well, inside the template document (#1 in our -list up there) you'd put text snippets that said "ok, put them -here". Each text snippet looks like this: - -DOCTOOL-INSERT-frob- - -Note that the "frob-" part tells doctool to pull in all the snippets -with IDs that start with "frob-", in alphabetical (well, asciibetical -at the moment) order. So, by saying "DOCTOOL-INSERT-frob-" you'd get -all the "frob-*" snippets, like "frob-45" and "frob-48". - -If you just said DOCTOOL-INSERT-frob, it inserts the snippet named -"frob" and no others. - -Note that no snippet will ever be inserted more than once, no matter -how many DOCTOOL-INSERTs you have. - -There's two other tricks doctool has. If it finds a snippet with an ID -like "int-*" (i.e. int-frob-45) that means that snippet of documentation -is for the "internal" version only. The "int-" is discarded, and if -the -i option is given to doctool, this snippet is treated as if the -int- wasn't there. Without the -i, the int-* snippets are ignored -completely. - -If a snippet has "add-" on it, like "add-frob-45", that's an addendum. -Each time a snippet named without the add- is found, doctool looks for -an addendum with exactly that same name (i.e. frob-45 looks for -add-frob-45). If it finds any, it puts them just before the last line -of the non-add snippet (so that it's *inside* the main snippet's -block, not after it). Example: - -<sect1 id="frob-45"> - some text -</sect1> -<sect1 id="add-frob-45"> - more text -</sect1> - -This would yield: - -<sect1 id="frob-45"> - some text - more text -</sect1> - -You should use the same outermost tags as the main snippet, but only -because it sets the proper nesting rules for what's enclosed. - -You can use add- and int- at the same time, but always do add-int- and -not int-add- (i.e. "add-int-frob-45"). - - -OK, now for doctool command line options. - --m tells doctool to "fix" the Makefile (not makefile) to include the -extra dependencies needed by the file you're generating. You need to -manually include dependencies on the Makefile itself and the template -file; doctool only includes the snippet files (sources etc) that it -actually pulled content from. Note: this isn't perfect! Someone can -come along and add a new snippet to a source file, and doctool would -never know. Sometimes, it's best to just rebuild the docs all the -time. - --i means to include snippets with the "int-" prefix on their IDs. Use -with -b to make internal and public versions from the same sources. - -"-d dir" tells doctool to scan all the files in that directory (and -subdirectories, recursively) for files that might contain snippets of -SGML. These include *.c, *.cc, *.h, and *.sgml. The idea is that -most of the documentation would be in a *.sgml file named after the -source (i.e. foo.c -> foo.sgml) but some commentary within the source -might be useful in the docs as well. SGML files (*.sgml) do not need -the DOCTOOL-START/END tags but the others do. - --o sets the output file. Without -o, the file goes to stdout (ick). - --s tells doctool to supress a "source directory prefix". What this -means is that, in the generated output doctool puts comments that say -where each snippet comes from (for debugging), which includes the full -path sometimes, but if you use -s, you can tell doctool to cut off -that prefix. For example, -/usr/people/dj/src/cygnus/latest/devo/winsup/foo.c might get shortened -to winsup/foo.c if you gave "-s -/usr/people/dj/src/cygnus/latest/devo/". Cygnus makefiles could -just use -s $(srcdir) most of the time. - --b changes the ID for the <book> tag. db2html uses the <book> tag's -ID as the default subdirectory name and/or html file name to create -the book with. You'd need this to generate two books (internal vs -public) from the same source. - -The only other thing you'd add to the command line is the ONE template -file you want to pull in. diff --git a/winsup/doc/effectively.sgml b/winsup/doc/effectively.sgml deleted file mode 100644 index b1e38c35c..000000000 --- a/winsup/doc/effectively.sgml +++ /dev/null @@ -1,215 +0,0 @@ -<sect1 id="using-effectively"> -<title>Using Cygwin effectively with Windows</title> - -<para> -Cygwin is not a full operating system, and so must rely on Windows for -accomplishing some tasks. For example, Cygwin provides a POSIX view -of the Windows filesystem, but does not provide filesystem drivers of -its own. Therefore part of using Cygwin effectively is learning to use -Windows effectively. -Many Windows utilities provide a good way to interact with Cygwin's -predominately command-line environment. For example, -<command>ipconfig.exe</command> provides information about network -configuration, and <command>net.exe</command> views and configures -network file and printer resources. Most of these tools -support the <literal>/?</literal> switch to display usage information. -</para> - -<para> -Unfortunately, no standard set of tools included with all versions of -Windows exists. If you are unfamiliar with the tools available -on your system, here is a general guide. Windows NT 4.0 has only a basic -set of tools, which later versions of Windows expanded. -Microsoft also provides free downloads for Windows NT 4.0 (the Resource Kit -Support Tools), Windows 2000 (the Resource Kit Tools), and XP (the -Windows Support Tools). Generally, the younger the Windows version, the -more complete are the on-board tools. Additionally, many independent sites -such as -<ulink url="http://download.com">download.com</ulink>, -<ulink url="http://simtel.net">simtel.net</ulink>, -and Microsoft's own -<ulink url="http://technet.microsoft.com/en-us/sysinternals/default.aspx">Sysinternals</ulink> -provide quite useful command-line utilities, as far as they are not -already provided by Cygwin. A few Windows tools, such as -<command>find.exe</command>, <command>link.exe</command> and -<command>sort.exe</command>, may conflict with the Cygwin versions -make sure that you use the full path (<command>/usr/bin/find</command>) -or that your Cygwin <literal>bin</literal> directory comes first in your -<envar>PATH</envar>. -</para> - -<sect2 id="using-pathnames-effectively"> <title>Pathnames</title> - -<para> -Windows programs do not understand POSIX pathnames, so any arguments -that reference the filesystem must be in Windows (or DOS) format or -translated. Cygwin provides the <command>cygpath</command> utility for -converting between Windows and POSIX paths. A complete description of its -options and examples of its usage are in <xref linkend="cygpath"></xref>, -including a shell script for starting Windows Explorer in any directory. -The same format works for most Windows programs, for example -<screen> -<literal>notepad.exe "$(cygpath -aw "Desktop/Phone Numbers.txt")"</literal> -</screen> -A few programs require a Windows-style, semicolon-delimited path list, -which <command>cygpath</command> can translate from a POSIX path with the -<literal>-p</literal> option. For example, a Java compilation from -<command>bash</command> might look like this: -<screen> -<literal>javac -cp "$(cygpath -pw "$CLASSPATH")" hello.java</literal> -</screen> -Since using quoting and subshells is somewhat awkward, it is often -preferable to use <command>cygpath</command> in shell scripts. -</para> - -</sect2> - -<sect2 id="using-console"> <title>Console Programs</title> -<para> -Another issue is receiving output from or giving input to console-based -Windows programs. Unfortunately, interacting with Windows console -applications is not a simple matter of using a translation utility. Windows -console applications are designed to run under -<command>cmd.exe</command>, and some do not deal gracefully with other -situations. Cygwin can receive console input only if it -is also running in a console window since Windows does not provide -any way to attach to the backend of the console device. Another -traditional Unix input/output method, ptys (pseudo-terminals), is -supported by Cygwin but not entirely by Windows. The basic problem is -that a Cygwin pty is a pipe and some Windows applications do not like -having their input or output redirected to pipes. -</para> - -<para> -To help deal with these issues, Cygwin supports customizable levels of -Windows versus Unix compatibility behavior. To be most compatible with -Windows programs, use a DOS prompt, running only the occasional Cygwin -command or script. Next would be to run <command>bash</command> within -a default DOS box. To make Cygwin more Unix compatible in this case, -set <envar>CYGWIN=tty</envar> (see <xref linkend="using-cygwinenv"></xref>). -Alternatively, the optional <systemitem>rxvt</systemitem> package provides -a native-Windows version of the popular X11 terminal emulator (it is not -necessary to set <envar>CYGWIN=tty</envar> with <command>rxvt</command>). -Using <command>rxvt.exe</command> provides the most Unix-like environment, -but expect some compatibility problems with Windows programs. -</para> - -</sect2> - -<sect2 id="using-net"> <title>Cygwin and Windows Networking</title> -<para> -Many popular Cygwin packages, such as <systemitem>ncftp</systemitem>, -<systemitem>lynx</systemitem>, and <systemitem>wget</systemitem>, require a -network connection. Since Cygwin relies on Windows for connectivity, -if one of these tools is not working as expected you may need to -troubleshoot using Windows tools. The first test is to see if you -can reach the URL's host with <command>ping.exe</command>, one of the -few utilities included with every Windows version since Windows 95. -If you chose to install the <systemitem>inetutils</systemitem> package, -you may have both -Windows and Cygwin versions of utilities such as <command>ftp</command> -and <command>telnet</command>. If you are having problems using one -of these programs, see if the alternate one works as expected. -</para> - -<para> -There are a variety of other programs available for specific situations. -If your system does not have an always-on network connection, you -may be interested in <command>rasdial.exe</command> for automating dialup -connections. -Users who frequently change their network -configuration can script these changes with <command>netsh.exe</command> -(Windows 2000 and later). For proxy users, the open source -<ulink url="http://apserver.sourceforge.net"> -NTLM Authorization Proxy Server</ulink> or the no-charge -<ulink url="http://www.hummingbird.com/products/nc/socks/index.html"> -Hummingbird SOCKS Proxy</ulink> may allow you to use Cygwin network -programs in your environment. -</para> - -</sect2> - -<sect2 id="using-cygutils"><title>The cygutils package</title> - -<para> -The optional <systemitem>cygutils</systemitem> package contains -miscellaneous tools that are small enough to not require their own package. -It is not included in a default Cygwin install; select it from the Utils -category in <command>setup.exe</command>. Several of the -<systemitem>cygutils</systemitem> tools are useful for interacting with -Windows.</para> - -<para> -One of the hassles of Unix-Windows interoperability is the different line -endings on text files. As mentioned in <xref linkend="using-textbinary"></xref>, -Unix tools such as <command>tr</command> can convert between CRLF and LF -endings, but <systemitem>cygutils</systemitem> provides several dedicated programs: -<command>conv</command>, <command>d2u</command>, <command>dos2unix</command>, -<command>u2d</command>, and <command>unix2dos</command>. Use the -<literal>--help</literal> switch for usage information. -</para> -</sect2> - -<sect2 id="using-shortcuts"><title>Creating shortcuts with cygutils</title> -<para> -Another problem area is between Unix-style links, which link one file -to another, and Microsoft .lnk files, which provide a shortcut to a -file. They seem similar at first glance but, in reality, are fairly -different. By default, Cygwin uses a mechanism that creates symbolic -links that are compatible with standard Microsoft .lnk files. However, -they do not include much of the information that is available in a -standard Microsoft shortcut, such as the working directory, an icon, -etc. The <systemitem>cygutils</systemitem> package includes a -<command>mkshortcut</command> -utility for creating standard Microsoft .lnk files. -</para> - -<para> -If Cygwin handled these native shortcuts like any other symlink, -you could not archive Microsoft .lnk files into <command>tar</command> -archives and keep all the information in them. After unpacking, -these shortcuts would have lost all the extra information and would -be no different than standard Cygwin symlinks. Therefore these two types -of links are treated differently. Unfortunately, this means that the -usual Unix way of creating and using symlinks does not work with -Windows shortcuts. -</para> -</sect2> - -<sect2 id="using-printing"><title>Printing with cygutils</title> -<para> -There are several options for printing from Cygwin, including the -<command>lpr</command> found in <systemitem>cygutils</systemitem> (not to be confused with the -native Windows <command>lpr.exe</command>). The easiest way to use <systemitem>cygutils</systemitem>' -<command>lpr</command> is to specify a default device name in the -<envar>PRINTER</envar> environment variable. You may also specify a device -on the command line with the <literal>-d</literal> or <literal>-P</literal> -options, which will override the environment variable setting. -</para> - -<para> -A device name -may be a UNC path (<literal>\\server_name\printer_name</literal>), a reserved -DOS device name (<literal>prn</literal>, <literal>lpt1</literal>), or a -local port name that is mapped to a printer share. Note that forward slashes -may be used in a UNC path (<literal>//server_name/printer_name</literal>), -which is helpful when using <command>lpr</command> from a shell that uses -the backslash as an escape character. -</para> - -<para> -<command>lpr</command> sends raw data to the printer; no formatting is done. -Many, but not all, printers accept plain text as input. If your printer -supports PostScript, packages such as -<systemitem>a2ps</systemitem> and <systemitem>enscript</systemitem> can prepare -text files for printing. The <systemitem>ghostscript</systemitem> package also -provides some translation -from PostScript to various native printer languages. Additionally, a native -Windows application for printing PostScript, <command>gsprint</command>, is -available from the <ulink url="http://www.cs.wisc.edu/~ghost/">Ghostscript -website</ulink>. -</para> - -</sect2> - -</sect1> diff --git a/winsup/doc/faq-api.xml b/winsup/doc/faq-api.xml deleted file mode 100644 index ff6ef2052..000000000 --- a/winsup/doc/faq-api.xml +++ /dev/null @@ -1,322 +0,0 @@ -<!-- faq-api.xml --> -<qandaentry id="faq.api.everything"> -<question><para>How does everything work?</para></question> -<answer> - -<para>There's a C library which provides a POSIX-style API. The -applications are linked with it and voila - they run on Windows. -</para> -<para>The aim is to add all the goop necessary to make your apps run on -Windows into the C library. Then your apps should (ideally) run on POSIX -systems (Unix/Linux) and Windows with no changes at the source level. -</para> -<para>The C library is in a DLL, which makes basic applications quite small. -And it allows relatively easy upgrades to the Win32/POSIX translation -layer, providing that DLL changes stay backward-compatible. -</para> -<para>For a good overview of Cygwin, you may want to read the Cygwin -User's Guide. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.snapshots"> -<question><para>Are development snapshots for the Cygwin library available?</para></question> -<answer> - -<para>Yes. They're made whenever anything interesting happens inside the -Cygwin library (usually roughly on a nightly basis, depending on how much -is going on). They are only intended for those people who wish to -contribute code to the project. If you aren't going to be happy -debugging problems in a buggy snapshot, avoid these and wait for a real -release. The snapshots are available from -<ulink url="http://cygwin.com/snapshots/">http://cygwin.com/snapshots/</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.cr-lf"> -<question><para>How is the DOS/Unix CR/LF thing handled?</para></question> -<answer> - -<para>Let's start with some background. -</para> -<para>On POSIX systems, a file is a file and what the file contains is -whatever the program/programmer/user told it to put into it. In Windows, -a file is also a file and what the file contains depends not only on the -program/programmer/user but also the file processing mode. -</para> -<para>When processing in text mode, certain values of data are treated -specially. A \n (new line, NL) written to the file will prepend a \r -(carriage return, CR) so that if you `printf("Hello\n") you in fact get -"Hello\r\n". Upon reading this combination, the \r is removed and the -number of bytes returned by the read is 1 less than was actually read. -This tends to confuse programs dependent on ftell() and fseek(). A -Ctrl-Z encountered while reading a file sets the End Of File flags even -though it truly isn't the end of file. -</para> -<para>One of Cygwin's goals is to make it possible to mix Cygwin-ported -POSIX programs with generic Windows programs. As a result, Cygwin allows -to open files in text mode. In the accompanying tools, tools that deal -with binaries (e.g. objdump) operate in POSIX binary mode and many (but -not all) tools that deal with text files (e.g. bash) operate in text mode. -There are also some text tools which operate in a mixed mode. They read -files always in text mode, but write files in binary mode, or they write -in the mode (text or binary) which is specified by the underlying mount -point. For a description of mount points, see the Cygwin User's Guide. -</para> -<para>Actually there's no really good reason to do text mode processing -since it only slows down reading and writing files. Additionally many -Windows applications can deal with POSIX \n line endings just fine -(unfortunate exception: Notepad). So we suggest to use binary mode -as much as possible and only convert files from or to DOS text mode -using tools specifically created to do that job, for instance, d2u and -u2d from the util-linux package. -</para> -<para>It is rather easy for the porter of a Unix package to fix the source -code by supplying the appropriate file processing mode switches to the -open/fopen functions. Treat all text files as text and treat all binary -files as binary. To be specific, you can select binary mode by adding -<literal>O_BINARY</literal> to the second argument of an -<literal>open</literal> call, or <literal>"b"</literal> to second argument -of an <literal>fopen</literal> call. You can also call -<literal>setmode (fd, O_BINARY)</literal>. To select text mode add -<literal>O_TEXT</literal> to the second argument of an <literal>open</literal> -call, or <literal>"t"</literal> to second argument of an -<literal>fopen</literal> call, or just call -<literal>setmode (fd, O_TEXT)</literal>. -</para> -<para>You can also avoid to change the source code at all by linking -an additional object file to your executable. Cygwin provides various -object files in the <filename>/usr/lib</filename> directory which, -when linked to an executable, changes the default open modes of any -file opened within the executed process itself. The files are -<screen> - binmode.o - Open all files in binary mode. - textmode.o - Open all files in text mode. - textreadmode.o - Open all files opened for reading in text mode. - automode.o - Open all files opened for reading in text mode, - all files opened for writing in binary mode. -</screen> -</para> -<para> -<note> - Linking against these object files does <emphasis>not</emphasis> change - the open mode of files propagated to a process by its parent process, - for instance, if the process is part of a shell pipe expression. -</note> -</para> -<para>Note that of the above flags only the "b" fopen flags are defined by -ANSI. They exist under most flavors of Unix. However, using O_BINARY, -O_TEXT, or the "t" flag is non-portable. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.threads"> -<question><para>Is the Cygwin library multi-thread-safe?</para></question> -<answer> - -<para>Yes. -</para> -<para>There is also extensive support for 'POSIX threads', see the file -<literal>cygwin.din</literal> for the list of POSIX thread functions provided. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.fork"> -<question><para>How is fork() implemented?</para></question> -<answer> - -<para>Cygwin fork() essentially works like a non-copy on write version -of fork() (like old Unix versions used to do). Because of this it -can be a little slow. In most cases, you are better off using the -spawn family of calls if possible. -</para> -<para>Here's how it works: -</para> -<para>Parent initializes a space in the Cygwin process table for child. -Parent creates child suspended using Win32 CreateProcess call, giving -the same path it was invoked with itself. Parent calls setjmp to save -its own context and then sets a pointer to this in the Cygwin shared -memory area (shared among all Cygwin tasks). Parent fills in the child's -.data and .bss subsections by copying from its own address space into -the suspended child's address space. Parent then starts the child. -Parent waits on mutex for child to get to safe point. Child starts and -discovers if has been forked and then longjumps using the saved jump -buffer. Child sets mutex parent is waiting on and then blocks on -another mutex waiting for parent to fill in its stack and heap. Parent -notices child is in safe area, copies stack and heap from itself into -child, releases the mutex the child is waiting on and returns from the -fork call. Child wakes from blocking on mutex, recreates any mmapped -areas passed to it via shared area and then returns from fork itself. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.globbing"> -<question><para>How does wildcarding (globbing) work?</para></question> -<answer> - -<para>If the DLL thinks it was invoked from a DOS style prompt, it runs a -`globber' over the arguments provided on the command line. This means -that if you type <literal>LS *.EXE</literal> from DOS, it will do what you might -expect. -</para> -<para>Beware: globbing uses <literal>malloc</literal>. If your application defines -<literal>malloc</literal>, that will get used. This may do horrible things to you. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.symlinks"> -<question><para>How do symbolic links work?</para></question> -<answer> - -<para>Cygwin knows of two ways to create symlinks. -</para> -<para>The default method generates link files with a magic header. When you -open a file or directory that is a link to somewhere else, it opens the file -or directory listed in the magic header. Because we don't want to have to -open every referenced file to check symlink status, Cygwin marks symlinks -with the system attribute. Files without the system attribute are not -checked. Because remote samba filesystems do not enable the system -attribute by default, symlinks do not work on network drives unless you -explicitly enable this attribute or use the second method to create symlinks. -</para> - -<para>The second method is enabled if `winsymlinks' is set in the environment -variable CYGWIN. -Using this method, Cygwin generates symlinks by creating Windows shortcuts. -Cygwin created shortcuts have a special header (which is in that way never -created by Explorer) and the R/O attribute set. A DOS path is stored in -the shortcut as usual and the description entry is used to store the POSIX -path. While the POSIX path is stored as is, the DOS path has perhaps to be -rearranged to result in a valid path. This may result in a divergence -between the DOS and the POSIX path when symlinks are moved crossing mount -points. When a user changes the shortcut, this will be detected by Cygwin -and it will only use the DOS path then. While Cygwin shortcuts are shown -without the ".lnk" suffix in `ls' output, non-Cygwin shortcuts are shown -with the suffix. However, both are treated as symlinks. -</para> - -<para>Both, types of symlinks can live peacefully together since Cygwin -treats both as symlinks regardless of the setting of `(no)winsymlinks' in -the environment variable CYGWIN. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.executables"> -<question><para>Why do some files, which are not executables have the 'x' type.</para></question> -<answer> - -<para>When working out the POSIX-style attribute bits on a file stored on -certain filesystems (FAT, FAT32), the library has to fill out some information -not provided by these filesystems. -</para> -<para>It guesses that files ending in .exe and .bat are executable, as are -ones which have a "#!" as their first characters. This guessing doesn't -take place on filesystems providing real permission information (NTFS, NFS), -unless you switch the permission handling off using the mount flag "noacl" -on these filesystems. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.secure"> -<question><para>How secure is Cygwin in a multi-user environment?</para></question> -<answer> - -<para>As of version 1.5.13, the Cygwin developers are not aware of any feature -in the cygwin dll that would allow users to gain privileges or to access -objects to which they have no rights under Windows. However there is no -guarantee that Cygwin is as secure as the Windows it runs on. Cygwin -processes share some variables and are thus easier targets of denial of -service type of attacks. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.net-functions"> -<question><para>How do the net-related functions work?</para></question> -<answer> - -<para>The network support in Cygwin is supposed to provide the POSIX API, not -the Winsock API. -</para> -<para>There are differences between the semantics of functions with the same -name under the API. -</para> -<para>E.g., the POSIX select system call can wait on a standard file handles -and handles to sockets. The select call in Winsock can only wait on -sockets. Because of this, the Cygwin dll does a lot of nasty stuff behind -the scenes, trying to persuade various Winsock/Win32 functions to do what -a Unix select would do. -</para> -<para>If you are porting an application which already uses Winsock, then -porting the application to Cygwin means to port the application to using -the POSIX net functions. You should never mix Cygwin net functions with -direct calls to Winsock functions. If you use Cygwin, use the POSIX API. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.winsock"> -<question><para>I don't want Unix sockets, how do I use normal Win32 winsock?</para></question> -<answer> - -<para>You don't. Look for the MingW project to port applications using -native Win32/Winsock functions. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.versions"> -<question><para>What version numbers are associated with Cygwin?</para></question> -<answer> - -<para>Cygwin versioning is relatively complicated because of its status as a -shared library. First of all, since October 1998 every Cygwin DLL has -been named <literal>cygwin1.dll</literal> and has a 1 in the release name. -Additionally, there are DLL major and minor numbers that correspond to -the name of the release, and a release number. In other words, -cygwin-1.7.1-2 is <literal>cygwin1.dll</literal>, major version 7, minor -version 1, release 2. -</para> -<para>The <literal>cygwin1.dll</literal> major version number gets incremented -only when a change is made that makes existing software incompatible. For -example, the first major version 5 release, cygwin-1.5.0-1, added 64-bit -file I/O operations, which required many libraries to be recompiled and -relinked. The minor version changes every time we make a new backward -compatible Cygwin release available. There is also a -<literal>cygwin1.dll</literal> release version number. The release number -is only incremented if we update an existing release in a way that does not -effect the DLL (like a missing header file). -</para> -<para>There are also Cygwin API major and minor numbers. The major number -tracks important non-backward-compatible interface changes to the API. -An executable linked with an earlier major number will not be compatible -with the latest DLL. The minor number tracks significant API additions -or changes that will not break older executables but may be required by -newly compiled ones. -</para> -<para>Then there is a shared memory region compatibility version number. It is -incremented when incompatible changes are made to the shared memory -region or to any named shared mutexes, semaphores, etc. For more exciting -Cygwin version number details, check out the -<literal>/usr/include/cygwin/version.h</literal> file. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.timezone"> -<question><para>Why isn't timezone set correctly?</para></question> -<answer> - -<para><emphasis role='bold'>(Please note: This section has not yet been updated for the latest net release.)</emphasis> -</para> -<para>Did you explicitly call tzset() before checking the value of timezone? -If not, you must do so. -</para> -</answer></qandaentry> - -<qandaentry id="faq.api.mouse"> -<question><para>Is there a mouse interface?</para></question> -<answer> - -<para>If you're using X then use the X API to handle mouse events. -In a Windows console window you can enable and capture mouse events -using the xterm escape sequences for mouse events. -</para> -</answer></qandaentry> - diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml deleted file mode 100644 index 948c59d52..000000000 --- a/winsup/doc/faq-programming.xml +++ /dev/null @@ -1,854 +0,0 @@ -<!-- faq-programming.xml --> - -<qandaentry id="faq.programming.packages"> -<question><para>How do I contribute a package?</para></question> -<answer> - -<para>If you are willing to be a package maintainer, great! We urgently need -volunteers to prepare and maintain packages, because the priority of the -Cygwin Team is Cygwin itself. -</para> -<para>The Cygwin Package Contributor's Guide at -<ulink url="http://cygwin.com/setup.html">http://cygwin.com/setup.html</ulink> details everything you need to know -about being a package maintainer. The quickest way to get started is to -read the <emphasis>Initial packaging procedure, script-based</emphasis> section on -that page. The <literal>generic-build-script</literal> found there works well for -most packages. -</para> -<para>For questions about package maintenance, use the cygwin-apps mailing -list (start at <ulink url="http://cygwin.com/lists.html">http://cygwin.com/lists.html</ulink>) <emphasis>after</emphasis> -searching and browsing the cygwin-apps list archives, of course. Be -sure to look at the <emphasis>Submitting a package</emphasis> checklist at -<ulink url="http://cygwin.com/setup.html">http://cygwin.com/setup.html</ulink> before sending an ITP (Intent To -Package) email to cygwin-apps. -</para> -<para>You should also announce your intentions to the general cygwin list, in -case others were thinking the same thing. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.contribute"> -<question><para>How do I contribute to Cygwin?</para></question> -<answer> - -<para>If you want to contribute to Cygwin itself, see -<ulink url="http://cygwin.com/contrib.html">http://cygwin.com/contrib.html</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.huge-executables"> -<question><para>Why are compiled executables so huge?!?</para></question> -<answer> - -<para>By default, gcc compiles in all symbols. You'll also find that gcc -creates large executables on UNIX. -</para> -<para>If that bothers you, just use the 'strip' program, part of the binutils -package. Or compile with the <literal>-s</literal> option to gcc. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.glibc"> -<question><para>Where is glibc?</para></question> -<answer> - -<para>Cygwin does not provide glibc. It uses newlib instead, which provides -much (but not all) of the same functionality. Porting glibc to Cygwin -would be difficult. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.objective-c"> -<question><para>Where is Objective C?</para></question> -<answer> - -<para>Objective C hasn't been distributed with the Cygwin version of gcc -for a long time. For several reason Cygwin was stuck with gcc version 3.4.4. -Fortunately the latest gcc maintainer is quite busy to create a working -gcc 4.x release which also comes with an Objective C package. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.make-execvp"> -<question><para>Why does my make fail on Cygwin with an execvp error? </para></question> -<answer> - -<para>First of all, if you are using <literal>make -j[N]</literal>, then stop. It doesn't -work well. Also beware of using non-portable shell features in your -Makefiles (see tips at <ulink -url="http://cygwin.com/faq/faq.using.html#faq.using.shell-scripts" />). -</para> -<para>Errors of <literal>make: execvp: /bin/sh: Illegal Argument</literal> or -<literal>make: execvp: /bin/sh: Argument list too long</literal> are often -caused by the command-line being to long for the Windows execution model. -To circumvent this, mount the path of the executable using the -X switch -to enable cygexec for all executables in that folder; you will also need -to exclude non-cygwin executables with the -x switch. Enabling cygexec -causes cygwin executables to talk directly to one another, which increases -the command-line limit. To enable cygexec for <literal>/bin</literal> and -<literal>/usr/bin</literal>, you can add or change these entries in /etc/fstab: -</para> -<screen> -C:/cygwin/bin /bin ntfs binary,cygexec 0 0 -C:/cygwin/bin /usr/bin ntfs binary,cygexec 0 0 -</screen> - -<para>Note that if you have Tcl/Tk installed, you must additionally -exclude <literal>tclsh84</literal> and <literal>wish84</literal>, which -are linked to the Cygwin DLL but are not actually Cygwin programs: -</para> - -<screen> -C:/cygwin/bin/tclsh84.exe /bin/tclsh84.exe ntfs binary,notexec 0 0 -C:/cygwin/bin/tclsh84.exe /usr/bin/tclsh84.exe ntfs binary,notexec 0 0 -C:/cygwin/bin/wish84.exe /bin/wish84.exe ntfs binary,notexec 0 0 -C:/cygwin/bin/wish84.exe /usr/bin/wish84.exe ntfs binary,notexec 0 0 -</screen> - -<para>If you have added other non-Cygwin programs to a path you want to mount -cygexec, you can find them with a script like this: -</para> -<screen> -#!/bin/sh -cd /bin; for f in `find . -type f -name '*.exe'`; do - cygcheck $f | (fgrep -qi cygwin1.dll || echo $f) -done -</screen> - -<para> -See <ulink url="http://cygwin.com/cygwin-ug-net/using.html#mount-table" /> -for more information on using mount. -</para> - -</answer></qandaentry> - -<qandaentry id="faq.programming.ipc"> -<question><para>How can I use IPC, or why do I get a <literal>Bad system call</literal> -error?</para></question> -<answer> - -<para> -Try running cygserver. Read -<ulink url="http://cygwin.com/cygwin-ug-net/using-cygserver.html" />. If you're -trying to use PostgreSQL, also read -<literal>/usr/share/doc/Cygwin/postgresql-*.README</literal>. -</para> - -</answer></qandaentry> - -<qandaentry id="faq.programming.winmain"> -<question><para>Why the undefined reference to <literal>WinMain@16</literal>?</para></question> -<answer> - -<para>If you're using <literal>gcc</literal>, try adding an empty main() function to one -of your sources. Or, perhaps you have <literal>-lm</literal> too early in the -link command line. It should be at the end: -</para> -<screen> - bash$ gcc hello.c -lm - bash$ ./a.exe - Hello World! -</screen> - -<para>works, but -</para> -<screen> - bash$ gcc -lm hello.c - /c/TEMP/ccjLEGlU.o(.text+0x10):hello.c: multiple definition of `main' - /usr/lib/libm.a(libcmain.o)(.text+0x0):libcmain.c: first defined here - /usr/lib/libm.a(libcmain.o)(.text+0x6a):libcmain.c: undefined reference to `WinMain@16' - collect2: ld returned 1 exit status -</screen> - -<para>If you're using GCJ, you need to pass a "--main" flag: -</para> -<screen> -gcj --main=Hello Hello.java -</screen> - -</answer></qandaentry> - -<qandaentry id="faq.programming.win32-api"> -<question><para>How do I use Win32 API calls?</para></question> -<answer> - -<para>It's pretty simple actually. Cygwin tools require that you explicitly -link the import libraries for whatever Win32 API functions that you -are going to use, with the exception of kernel32, which is linked -automatically (because the startup and/or built-in code uses it). -</para> -<para>For example, to use graphics functions (GDI) you must link -with gdi32 like this: -</para> -<para>gcc -o foo.exe foo.o bar.o -lgdi32 -</para> -<para>or (compiling and linking in one step): -</para> -<para>gcc -o foo.exe foo.c bar.c -lgdi32 -</para> -<para>The regular setup allows you to use the option -mwindows on the -command line to include a set of the basic libraries (and also -make your program a GUI program instead of a console program), -including user32, gdi32 and, IIRC, comdlg32. -</para> -<para>It is a good idea to put import libraries last on your link line, -or at least after all the object files and static libraries that reference them. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.win32-no-cygwin"> -<question><para>How do I compile a Win32 executable that doesn't use Cygwin?</para></question> -<answer> - -<para><emphasis role='bold'>(Please note: This section has not yet been updated for the latest net release.)</emphasis> -</para> -<para>The -mno-cygwin flag to gcc makes gcc link against standard Microsoft -DLLs instead of Cygwin. This is desirable for native Windows programs -that don't need a UNIX emulation layer. -</para> -<para>This is not to be confused with 'MinGW' (Minimalist GNU for Windows), -which is a completely separate effort. That project's home page is -<ulink url="http://www.mingw.org/index.shtml">http://www.mingw.org/index.shtml</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.static-linking"> -<question><para>Can I build a Cygwin program that does not require cygwin1.dll at runtime?</para></question> -<answer> - -<para>No. If your program uses the Cygwin API, then your executable cannot -run without cygwin1.dll. In particular, it is not possible to -statically link with a Cygwin library to obtain an independent, -self-contained executable. -</para> -<para>If this is an issue because you intend to distribute your Cygwin -application, then you had better read and understand -<ulink url="http://cygwin.com/licensing.html">http://cygwin.com/licensing.html</ulink>, which explains the licensing -options. Unless you purchase a special commercial license from Red -Hat, then your Cygwin application must be Open Source. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.msvcrt-and-cygwin"> -<question><para>Can I link with both MSVCRT*.DLL and cygwin1.dll?</para></question> -<answer> - -<para>No, you must use one or the other, they are mutually exclusive. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.no-console-window"> -<question><para>How do I make the console window go away?</para></question> -<answer> - -<para>The default during compilation is to produce a console application. -It you are writing a GUI program, you should either compile with --mwindows as explained above, or add the string -"-Wl,--subsystem,windows" to the GCC command line. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.make-spaces"> -<question><para>Why does make complain about a "missing separator"?</para></question> -<answer> - -<para>This problem usually occurs as a result of someone editing a Makefile -with a text editor that replaces tab characters with spaces. Command -lines must start with tabs. This is not specific to Cygwin. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.win32-headers"> -<question><para>Why can't we redistribute Microsoft's Win32 headers?</para></question> -<answer> - -<para>Subsection 2.d.f of the `Microsoft Open Tools License agreement' looks -like it says that one may not "permit further redistribution of the -Redistributables to their end users". We take this to mean that we can -give them to you, but you can't give them to anyone else, which is -something that we can't agree to. Fortunately, we -have our own Win32 headers which are pretty complete. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.msvs-mingw"> -<question><para>How do I use <literal>cygwin1.dll</literal> with Visual Studio or MinGW?</para></question> -<answer> - -<para>Before you begin, note that Cygwin is licensed under the GNU GPL (as -indeed are many other Cygwin-based libraries). That means that if your -code links against the Cygwin dll (and if your program is calling -functions from Cygwin, it must, as a matter of fact, be linked against -it), you must apply the GPL to your source as well. Of course, this -only matters if you plan to distribute your program in binary form. For -more information, see <ulink url="http://gnu.org/licenses/gpl-faq.html">http://gnu.org/licenses/gpl-faq.html</ulink>. If -that is not a problem, read on. -</para> -<para>If you want to load the DLL dynamically, read -<literal>winsup/cygwin/how-cygtls-works.txt</literal> and the sample code in -<literal>winsup/testsuite/cygload</literal> to understand how this works. -The short version is: -</para> -<orderedlist><listitem><para>Make sure you have 4K of scratch space at the bottom of your stack. -</para></listitem> -<listitem><para>Invoke <literal>cygwin_dll_init()</literal>: -<screen> -HMODULE h = LoadLibrary("cygwin1.dll"); -void (*init)() = GetProcAddress(h, "cygwin_dll_init"); -init(); -</screen> -</para></listitem> -</orderedlist> - -<para>If you want to link statically from Visual Studio, to my knowledge -none of the Cygwin developers have done this, but we have this report -from the mailing list that it can be done this way: -</para> -<orderedlist><listitem><para>Use the impdef program to generate a .def file for the cygwin1.dll -(if you build the cygwin dll from source, you will already have a def -file) -</para> -<screen> -impdef cygwin1.dll > cygwin1.def -</screen> - -</listitem> -<listitem><para>Use the MS VS linker (lib) to generate an import library -</para> -<screen> -lib /def=cygwin1.def /out=cygwin1.lib -</screen> - -</listitem> -<listitem><para>Create a file "my_crt0.c" with the following contents -</para> -<screen> -#include <sys/cygwin.h> -#include <stdlib.h> - -typedef int (*MainFunc) (int argc, char *argv[], char **env); - -void - my_crt0 (MainFunc f) - { - cygwin_crt0(f); - } -</screen> - -</listitem> -<listitem><para>Use gcc in a Cygwin prompt to build my_crt0.c into a DLL - (e.g. my_crt0.dll). Follow steps 1 and 2 to generate .def and - .lib files for the DLL. -</para> -</listitem> -<listitem><para>Download crt0.c from the cygwin website and include it in - your sources. Modify it to call my_crt0() instead of - cygwin_crt0(). -</para> -</listitem> -<listitem><para>Build your object files using the MS VC compiler cl. -</para> -</listitem> -<listitem><para>Link your object files, cygwin1.lib, and my_crt0.lib (or - whatever you called it) into the executable. -</para></listitem> -</orderedlist> - -<para>Note that if you are using any other Cygwin based libraries -that you will probably need to build them as DLLs using gcc and -then generate import libraries for the MS VC linker. -</para> -<para>Thanks to Alastair Growcott (alastair dot growcott at bakbone dot co -dot uk) for this tip. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.linking-lib"> -<question><para>How do I link against a <literal>.lib</literal> file?</para></question> -<answer> - -<para>If your <literal>.lib</literal> file is a normal static or import library with -C-callable entry points, you can list <literal>foo.lib</literal> as an object file for -gcc/g++, just like any <literal>*.o</literal> file. Otherwise, here are some steps: -</para> -<orderedlist><listitem><para>Build a C file with a function table. Put all functions you intend -to use in that table. This forces the linker to include all the object -files from the .lib. Maybe there is an option to force LINK.EXE to -include an object file. -</para></listitem> -<listitem><para>Build a dummy 'LibMain'. -</para></listitem> -<listitem><para>Build a .def with all the exports you need. -</para></listitem> -<listitem><para>Link with your .lib using link.exe. -</para></listitem> -</orderedlist> - -<para>or -</para> -<orderedlist><listitem><para>Extract all the object files from the .lib using LIB.EXE. -</para></listitem> -<listitem><para>Build a dummy C file referencing all the functions you need, either - with a direct call or through an initialized function pointer. -</para></listitem> -<listitem><para>Build a dummy LibMain. -</para></listitem> -<listitem><para>Link all the objects with this file+LibMain. -</para></listitem> -<listitem><para>Write a .def. -</para></listitem> -<listitem><para>Link. -</para></listitem> -</orderedlist> - -<para>You can use these methods to use MSVC (and many other runtime libs) -with Cygwin development tools. -</para> -<para>Note that this is a lot of work (half a day or so), but much less than -rewriting the runtime library in question from specs... -</para> -<para>Thanks to Jacob Navia (root at jacob dot remcomp dot fr) for this explanation. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.building-cygwin"> -<question><para>How do I build Cygwin on my own?</para></question> -<answer> - -<para>First, you need to make sure you have the necessary build tools -installed; you at least need <literal>gcc</literal>, <literal>make</literal>, -<literal>perl</literal>, and <literal>cocom</literal>. If you want to run -the tests, <literal>dejagnu</literal> is also required. -Normally, building ignores any errors in building the documentation, -which requires the <literal>docbook-xml42</literal>, <literal>docbook-xsl</literal>, and -<literal>xmlto</literal> packages. For more information on building the -documentation, see the README included in the <literal>cygwin-doc</literal> package. -</para> - -<para>Next, get the Cygwin source. Ideally, you should check out -what you need from CVS (<ulink url="http://cygwin.com/cvs.html" />). This is the -<emphasis>preferred method</emphasis> for acquiring the sources. Otherwise, if -you are trying to duplicate a cygwin release then you should -download the corresponding source package -(<literal>cygwin-x.y.z-n-src.tar.bz2</literal>). </para> - -<para>You <emphasis>must</emphasis> build cygwin in a separate directory from -the source, so create something like a <literal>build/</literal> directory. -Assuming you checked out the source in <literal>/oss/src/</literal>, and you -also want to install to the temporary location <literal>install</literal>: -</para> -<screen> -mkdir /oss/build -mkdir /oss/install -cd build -(/oss/src/configure --prefix=/oss/install -v; make) >& make.out -make install > install.log 2>&1 -</screen> - -<para>To check a cygwin1.dll, run "make check" in the build/i?86*cygwin/winsup -directory created after running make above. -If that works, install everything <emphasis>except</emphasis> the dll (if -you can). Then, close down all cygwin programs (including bash windows, -inetd, etc.), save your old dll, and copy the new dll to the correct -place. Then start up a bash window, or run a cygwin program from the -Windows command prompt, and see what happens. -</para> -<para>If you get the error "shared region is corrupted" it means that two -different versions of cygwin1.dll are running on your machine at the -same time. Remove all but one. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.debugging-cygwin"> -<question><para>I may have found a bug in Cygwin, how can I debug it (the symbols in gdb look funny)?</para></question> -<answer> - -<para>Debugging symbols are stripped from distibuted Cygwin binaries, so any -symbols that you see in gdb are basically meaningless. It is also a good -idea to use the latest code in case the bug has been fixed, so we -recommend trying the latest snapshot from -<ulink url="http://cygwin.com/snapshots/" /> or building the DLL from CVS. -</para> -<para>To build a debugging version of the Cygwin DLL, you will need to follow -the instructions at <ulink url="http://cygwin.com/faq/faq-nochunks.html#faq.programming.building-cygwin" />. -You can also contact the mailing list for pointers (a simple test case that -demonstrates the bug is always welcome). -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.compiling-unsupported"> -<question><para>How can I compile Cygwin for an unsupported platform (PowerPC, Alpha, ARM, Itanium)?</para></question> -<answer> - -<para>Unfortunately, this will be difficult. Exception handling and signals -support semantics and args have been designed for x86 so you would need -to write specific support for your platform. We don't know of any other -incompatibilities. Please send us patches if you do this work! -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.adjusting-heap"> -<question><para>How can I adjust the heap/stack size of an application?</para></question> -<answer> - -<para>If you need to change the maximum amount of memory available to Cygwin, see -<ulink url="http://cygwin.com/cygwin-ug-net/setup-maxmem.html">http://cygwin.com/cygwin-ug-net/setup-maxmem.html</ulink>. Otherwise, -just pass heap/stack linker arguments to gcc. To create foo.exe with -a heap size of 200MB and a stack size of 8MB, you would invoke -gcc as: -</para> -<para><literal>gcc -Wl,--heap,200000000,--stack,8000000 -o foo foo.c</literal> -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.dll-cygcheck"> -<question><para>How can I find out which DLLs are needed by an executable?</para></question> -<answer> - -<para><literal>objdump -p</literal> provides this information, but is rather verbose. -</para> -<para><literal>cygcheck</literal> will do this much more concisely, and operates -recursively, provided the command is in your path. -</para> - -</answer></qandaentry> - -<qandaentry id="faq.programming.dll-building"> -<question><para>How do I build a DLL?</para></question> -<answer> - -<para>There's documentation that explains the process in the Cygwin User's -Guide here: <ulink url="http://cygwin.com/cygwin-ug-net/dll.html">http://cygwin.com/cygwin-ug-net/dll.html</ulink> -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.breakpoint"> -<question><para>How can I set a breakpoint at MainCRTStartup?</para></question> -<answer> - -<para><emphasis role='bold'>(Please note: This section has not yet been updated for the latest net release.)</emphasis> -</para> -<para>Set a breakpoint at *0x401000 in gdb and then run the program in -question. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.dll-relocatable"> -<question><para>How can I build a relocatable dll?</para></question> -<answer> - -<para><emphasis role='bold'>(Please note: This section has not yet been updated for the latest net release. However, there was a discussion on the cygwin mailing list once that addresses this issue. Read <ulink url="http://cygwin.com/ml/cygwin/2000-06/msg00688.html">http://cygwin.com/ml/cygwin/2000-06/msg00688.html</ulink> and related messages.)</emphasis> -</para> -<para>You must execute the following sequence of five commands, in this -order: -</para> -<screen> -$(LD) -s --base-file BASEFILE --dll -o DLLNAME OBJS LIBS -e ENTRY - -$(DLLTOOL) --as=$(AS) --dllname DLLNAME --def DEFFILE \ - --base-file BASEFILE --output-exp EXPFILE - -$(LD) -s --base-file BASEFILE EXPFILE -dll -o DLLNAME OBJS LIBS -e ENTRY - -$(DLLTOOL) --as=$(AS) --dllname DLLNAME --def DEFFILE \ - --base-file BASEFILE --output-exp EXPFILE - -$(LD) EXPFILE --dll -o DLLNAME OBJS LIBS -e ENTRY -</screen> - -<para>In this example, $(LD) is the linker, ld. -</para> -<para>$(DLLTOOL) is dlltool. -</para> -<para>$(AS) is the assembler, as. -</para> -<para>DLLNAME is the name of the DLL you want to create, e.g., tcl80.dll. -</para> -<para>OBJS is the list of object files you want to put into the DLL. -</para> -<para>LIBS is the list of libraries you want to link the DLL against. For -example, you may or may not want -lcygwin. You may want -lkernel32. -Tcl links against -lcygwin -ladvapi32 -luser32 -lgdi32 -lcomdlg32 --lkernel32. -</para> -<para>DEFFILE is the name of your definitions file. A simple DEFFILE would -consist of ``EXPORTS'' followed by a list of all symbols which should -be exported from the DLL. Each symbol should be on a line by itself. -Other programs will only be able to access the listed symbols. -</para> -<para>BASEFILE is a temporary file that is used during this five stage -process, e.g., tcl.base. -</para> -<para>EXPFILE is another temporary file, e.g., tcl.exp. -</para> -<para>ENTRY is the name of the function which you want to use as the entry -point. This function should be defined using the WINAPI attribute, -and should take three arguments: - int WINAPI startup (HINSTANCE, DWORD, LPVOID) -</para> -<para>This means that the actual symbol name will have an appended @12, so if -your entry point really is named <literal>startup</literal>, the string you should -use for ENTRY in the above examples would be <literal>startup@12</literal>. -</para> -<para>If your DLL calls any Cygwin API functions, the entry function will need -to initialize the Cygwin impure pointer. You can do that by declaring -a global variable <literal>_impure_ptr</literal>, and then initializing it in the -entry function. Be careful not to export the global variable -<literal>_impure_ptr</literal> from your DLL; that is, do not put it in DEFFILE. -</para> -<screen> -/* This is a global variable. */ -struct _reent *_impure_ptr; -extern struct _reent *__imp_reent_data; - -int entry (HINSTANT hinst, DWORD reason, LPVOID reserved) -{ - _impure_ptr = __imp_reent_data; - /* Whatever else you want to do. */ -} -</screen> - -<para>You may put an optional `--subsystem windows' on the $(LD) lines. The -Tcl build does this, but I admit that I no longer remember whether -this is important. Note that if you specify a --subsytem <x> flag to ld, -the -e entry must come after the subsystem flag, since the subsystem flag -sets a different default entry point. -</para> -<para>You may put an optional `--image-base BASEADDR' on the $(LD) lines. -This will set the default image base. Programs using this DLL will -start up a bit faster if each DLL occupies a different portion of the -address space. Each DLL starts at the image base, and continues for -whatever size it occupies. -</para> -<para>Now that you've built your DLL, you may want to build a library so -that other programs can link against it. This is not required: you -could always use the DLL via LoadLibrary. However, if you want to be -able to link directly against the DLL, you need to create a library. -Do that like this: -</para> -<para>$(DLLTOOL) --as=$(AS) --dllname DLLNAME --def DEFFILE --output-lib LIBFILE -</para> -<para>$(DLLTOOL), $(AS), DLLNAME, and DEFFILE are the same as above. Make -sure you use the same DLLNAME and DEFFILE, or things won't work right. -</para> -<para>LIBFILE is the name of the library you want to create, e.g., -libtcl80.a. You can then link against that library using something -like -ltcl80 in your linker command. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.debug"> -<question><para>How can I debug what's going on?</para></question> -<answer> - -<para>You can debug your application using <literal>gdb</literal>. Make sure you -compile it with the -g flag! If your application calls functions in -MS DLLs, gdb will complain about not being able to load debug information -for them when you run your program. This is normal since these DLLs -don't contain debugging information (and even if they did, that debug -info would not be compatible with gdb). -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.system-trace"> -<question><para>Can I use a system trace mechanism instead?</para></question> -<answer> - -<para>Yes. You can use the <literal>strace.exe</literal> utility to run other cygwin -programs with various debug and trace messages enabled. For information -on using <literal>strace</literal>, see the Cygwin User's Guide or the file -<literal>winsup/utils/utils.sgml</literal> in the Cygwin sources. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.gdb-signals"> -<question><para>Why doesn't gdb handle signals?</para></question> -<answer> - -<para>Unfortunately, there is only minimal signal handling support in gdb -currently. Signal handling only works with Windows-type signals. -SIGINT may work, SIGFPE may work, SIGSEGV definitely does. You cannot -'stop', 'print' or 'nopass' signals like SIGUSR1 or SIGHUP to the -process being debugged. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.linker"> -<question><para>The linker complains that it can't find something.</para></question> -<answer> - -<para>A common error is to put the library on the command line before -the thing that needs things from it. -</para> -<para>This is wrong <literal>gcc -lstdc++ hello.cc</literal>. -This is right <literal>gcc hello.cc -lstdc++</literal>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.stat64"> -<question><para>Why do I get an error using <literal>struct stat64</literal>?</para></question> -<answer> - -<para><literal>struct stat64</literal> is not used in Cygwin, just -use <literal>struct stat</literal>. It's 64 bit aware.</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.undeclared-functions"> -<question><para>I use a function I know is in the API, but I still get a link error.</para></question> -<answer> - -<para>The function probably isn't declared in the header files, or -the UNICODE stuff for it isn't filled in. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.libc"> -<question><para>Can you make DLLs that are linked against libc ?</para></question> -<answer> - -<para>Yes. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.malloc-h"> -<question><para>Where is malloc.h?</para></question> -<answer> - -<para>It exists, but you should rather include stdlib.h instead of malloc.h. -stdlib.h is POSIX standard for defining malloc and friends, malloc.h is -definitely non-standard. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.own-malloc"> -<question><para>Can I use my own malloc?</para></question> -<answer> - -<para>If you define a function called <literal>malloc</literal> in your own code, and link -with the DLL, the DLL <emphasis>will</emphasis> call your <literal>malloc</literal>. Needless to -say, you will run into serious problems if your malloc is buggy. -</para> -<para>If you run any programs from the DOS command prompt, rather than from in -bash, the DLL will try and expand the wildcards on the command line. -This process uses <literal>malloc</literal> <emphasis>before</emphasis> your main line is started. -If you have written your own <literal>malloc</literal> to need some initialization -to occur after <literal>main</literal> is called, then this will surely break. -</para> -<para>Moreover, there is an outstanding issue with <literal>_malloc_r</literal> in -<literal>newlib</literal>. This re-entrant version of <literal>malloc</literal> will be called -directly from within <literal>newlib</literal>, by-passing your custom version, and -is probably incompatible with it. But it may not be possible to replace -<literal>_malloc_r</literal> too, because <literal>cygwin1.dll</literal> does not export it and -Cygwin does not expect your program to replace it. This is really a -newlib issue, but we are open to suggestions on how to deal with it. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.msvc-gcc-objects"> -<question><para>Can I mix objects compiled with msvc++ and gcc?</para></question> -<answer> - -<para>Yes, but only if you are combining C object files. MSVC C++ uses a -different mangling scheme than GNU C++, so you will have difficulties -combining C++ objects. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.gdb-msvc"> -<question><para>Can I use the gdb debugger to debug programs built by VC++?</para></question> -<answer> - -<para>No, not for full (high level source language) debugging. -The Microsoft compilers generate a different type of debugging -symbol information, which gdb does not understand. -</para> -<para>However, the low-level (assembly-type) symbols generated by -Microsoft compilers are coff, which gdb DOES understand. -Therefore you should at least be able to see all of your -global symbols; you just won't have any information about -data types, line numbers, local variables etc. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.x86-assembly"> -<question><para>Where can I find info on x86 assembly?</para></question> -<answer> - -<para>CPU reference manuals for Intel's current chips are available in -downloadable PDF form on Intel's web site: -</para> -<para><ulink url="http://developer.intel.com/">http://developer.intel.com/</ulink> -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.make-scripts"> -<question><para>Shell scripts aren't running properly from my makefiles?</para></question> -<answer> - -<para>If your scripts are in the current directory, you must have <literal>.</literal> -(dot) in your $PATH. (It is not normally there by default.) Better yet, -add /bin/sh in front of each and every shell script invoked in your Makefiles. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.preprocessor"> -<question><para>What preprocessor macros do I need to know about?</para></question> -<answer> - -<para>gcc for Cygwin defines __CYGWIN__ when building for a Cygwin -environment. -</para> -<para>Microsoft defines the preprocessor symbol _WIN32 in their Windows -development environment. -</para> -<para>In gcc for Cygwin, _WIN32 is only defined when you use the -mwin32 -gcc command line options. This is because Cygwin is supposed to be a -POSIX emulation environment in the first place and defining _WIN32 confuses -some programs which think that they have to make special concessions for -a Windows environment which Cygwin handles automatically. -</para> -<para>Check out the predefined symbols in detail by running, for example -</para> -<screen> - $ gcc -dM -E -xc /dev/null >gcc.txt - $ gcc -mwin32 -dM -E -xc /dev/null >gcc-mwin32.txt -</screen> -<para>Then use the diff and grep utilities to check what the difference is. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.unix-gui"> -<question><para>How should I port my Unix GUI to Windows?</para></question> -<answer> - -<para>There are two basic strategies for porting Unix GUIs to Windows. -</para> -<para>The first is to use a portable graphics library such as tcl/tk, X11, or -V (and others?). Typically, you will end up with a GUI on Windows that -requires some runtime support. With tcl/tk, you'll want to include the -necessary library files and the tcl/tk DLLs. In the case of X11, you'll -need everyone using your program to have the X11 server installed. -</para> -<para>The second method is to rewrite your GUI using Win32 API calls (or MFC -with VC++). If your program is written in a fairly modular fashion, you -may still want to use Cygwin if your program contains a lot of shared -(non-GUI-related) code. That way you still gain some of the portability -advantages inherent in using Cygwin. -</para> -</answer></qandaentry> - -<qandaentry id="faq.programming.djgpp"> -<question><para>Why not use DJGPP ?</para></question> -<answer> - -<para>DJGPP is a similar idea, but for DOS instead of Win32. DJGPP uses a -"DOS extender" to provide a more reasonable operating interface for its -applications. The Cygwin toolset doesn't have to do this since all of -the applications are native WIN32. Applications compiled with the -Cygwin tools can access the Win32 API functions, so you can write -programs which use the Windows GUI. -</para> -<para>You can get more info on DJGPP by following -<ulink url="http://www.delorie.com/">http://www.delorie.com/</ulink>. -</para></answer></qandaentry> - diff --git a/winsup/doc/faq-resources.xml b/winsup/doc/faq-resources.xml deleted file mode 100644 index 9bf42f722..000000000 --- a/winsup/doc/faq-resources.xml +++ /dev/null @@ -1,51 +0,0 @@ -<!-- faq-resources.xml --> -<qandaentry id="faq.resources.documentation"> -<question><para>Where's the documentation?</para></question> -<answer> - -<para>If you have installed Cygwin, you can find lots of documentation in -<literal>/usr/share/doc/</literal>. Some packages have Cygwin specific -instructions in a file -<literal>/usr/share/doc/Cygwin/<replaceable>package_name</replaceable>.README</literal>. -In addition, many packages ship with standard documentation, which you can -find in -<literal>/usr/share/doc/<replaceable>package_name</replaceable></literal> or -by using the <literal>man</literal> or <literal>info</literal> tools. (Hint: -use <literal>cygcheck -l <replaceable>package_name</replaceable></literal> to -list what man pages the package includes.) Some older packages still keep -their documentation in <literal>/usr/doc/</literal> -instead of <literal>/usr/share/doc/</literal>. -</para> -<para>There are links to quite a lot of documentation on the main Cygwin -project web page, <ulink url="http://cygwin.com/">http://cygwin.com/</ulink>, -including this FAQ. Be sure to at least read any 'Release Notes' or 'Readme' -or 'read this' links on the main web page, if there are any. -</para> -<para>There is a comprehensive Cygwin User's Guide at <ulink -url="http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html">http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html</ulink> -and an API Reference at <ulink -url="http://cygwin.com/cygwin-api/cygwin-api.html">http://cygwin.com/cygwin-api/cygwin-api.html</ulink>. -</para> -<para>You can find documentation for the individual GNU tools at <ulink -url="http://www.fsf.org/manual/">http://www.fsf.org/manual/</ulink>. (You -should read GNU manuals from a local mirror, check <ulink -url="http://www.fsf.org/server/list-mirrors.html">http://www.fsf.org/server/list-mirrors.html</ulink> -for a list of them.) -</para> -</answer></qandaentry> - -<qandaentry id="faq.resources.mailing-lists"> -<question><para>What Cygwin mailing lists can I join?</para></question> -<answer> -<para>Comprehensive information about the Cygwin mailing lists can be found at -<ulink url="http://cygwin.com/lists.html" />. -</para> -</answer></qandaentry> - -<qandaentry id="faq.resources.problems"> -<question><para>What if I have a problem? (Or: Why won't you/the mailing list answer my questions?)</para></question> -<answer> -<para>Comprehensive information about reporting problems with Cygwin can be found at <ulink url="http://cygwin.com/problems.html" />. -</para> -</answer></qandaentry> - diff --git a/winsup/doc/faq-sections.xml b/winsup/doc/faq-sections.xml deleted file mode 100644 index a0bb7ac98..000000000 --- a/winsup/doc/faq-sections.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version='1.0'?> -<!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.2//EN' - "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ - <!-- see http://www.unicode.org/charts/PDF/U0080.pdf --> - <!ENTITY pound "£"> - <!ENTITY brokenpipe "¦"> - - <!-- all the files --> - <!ENTITY FAQ-WHAT SYSTEM "faq-what.xml"> - <!ENTITY FAQ-SETUP SYSTEM "faq-setup.xml"> - <!ENTITY FAQ-RESOURCES SYSTEM "faq-resources.xml"> - <!ENTITY FAQ-USING SYSTEM "faq-using.xml"> - <!ENTITY FAQ-API SYSTEM "faq-api.xml"> - <!ENTITY FAQ-PROGRAMMING SYSTEM "faq-programming.xml"> -]> - -<article id="faq" lang="en"> - <articleinfo> - <title>Cygwin FAQ</title> - </articleinfo> - -<sect1 id="faq.about"> -<title>About Cygwin</title> -<qandaset><?dbhtml toc="1"?> -&FAQ-WHAT; -</qandaset></sect1> - -<sect1 id="faq.setup"> -<title>Setting up Cygwin</title> -<qandaset><?dbhtml toc="1"?> -&FAQ-SETUP; -</qandaset></sect1> - -<sect1 id="faq.resources"> -<title>Further Resources</title> -<qandaset><?dbhtml toc="1"?> -&FAQ-RESOURCES; -</qandaset></sect1> - -<sect1 id="faq.using"> -<title>Using Cygwin</title> -<qandaset><?dbhtml toc="1"?> -&FAQ-USING; -</qandaset></sect1> - -<sect1 id="faq.api"> -<title>Cygwin API Questions</title> -<qandaset><?dbhtml toc="1"?> -&FAQ-API; -</qandaset></sect1> - -<sect1 id="faq.programming"> -<title>Programming Questions</title> -<qandaset><?dbhtml toc="1"?> -&FAQ-PROGRAMMING; -</qandaset></sect1> - -<sect1 id="faq.copyright"> -<title>Copyright</title> -<qandaset><?dbhtml toc="1"?> - - -<qandaentry id="faq.what.copyright"> -<question><para>What are the copyrights?</para></question> -<answer> - -<para>Please see -<ulink url="http://cygwin.com/license.html" /> for more information -about Cygwin copyright and licensing. -</para> - -</answer></qandaentry> -</qandaset></sect1> - -</article> diff --git a/winsup/doc/faq-setup.xml b/winsup/doc/faq-setup.xml deleted file mode 100644 index cf1c8e256..000000000 --- a/winsup/doc/faq-setup.xml +++ /dev/null @@ -1,603 +0,0 @@ -<!-- faq-setup.xml --> -<qandaentry id="faq.setup.setup"> -<question><para>What is the recommended installation procedure?</para></question> -<answer> - -<para>There is only one recommended way to install Cygwin, which is to use the GUI -installer ``Cygwin Setup''. It is flexible and easy to use. -You can pick and choose the packages you wish to install, and update -them individually. Full source code is available for all packages and -tools. More information on using Cygwin Setup may be found at -<ulink url="http://cygwin.com/cygwin-ug-net/setup-net.html" />. -</para> -<para>If you do it any other way, you're on your own! That said, keep in mind -that the GUI installer is a "work in progress", so there might be a few -difficulties, especially if you are behind a firewall or have other -specific requirements. If something doesn't work right for you, and -it's not covered here or in the latest development snapshot at -<ulink url="http://cygwin.com/snapshots/">http://cygwin.com/snapshots/</ulink>, then by all means report it to the -mailing list. -</para> -<para>For a searchable list of packages that can be installed with Cygwin, -see <ulink url="http://cygwin.com/packages/">http://cygwin.com/packages/</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.automated"> -<question><para>What about an automated Cygwin installation?</para></question> -<answer> - -<para>The Cygwin Setup program is designed to be interactive, but there are -a few different ways to automate it. If you are deploying to multiple systems, -the best way is to run through a full installation once, saving the entire -downloaded package tree. Then, on target systems, run setup.exe as a "Local -Install" pointed at your downloaded package tree. You could do this -non-interactively with the command line options -<literal>setup.exe -q -L -l x:\cygwin-local\</literal>, where your downloaded -package tree is in <literal>x:\cygwin-local\</literal> (see the next FAQ for -an explanation of those options.) -</para> -<para> -For other options, search the mailing lists with terms such as -<ulink url="http://www.google.com/search?q=cygwin+automated+setup">cygwin automated setup</ulink> or -<ulink url="http://www.google.com/search?q=automated+cygwin+install">automated cygwin install</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.cli"> -<question><para>Does setup.exe accept command-line arguments?</para></question> -<answer> - -<para>Yes, the full listing is written to the <literal>setup.log</literal> file -when you run <literal>setup.exe --help</literal>. The current options are: -<screen> -Command Line Options: - -D --download Download from internet - -L --local-install Install from local directory - -s --site Download site - -R --root Root installation directory - -q --quiet-mode Unattended setup mode - -h --help print help - -l --local-package-dir Local package directory - -r --no-replaceonreboot Disable replacing in-use files on next - reboot. - -n --no-shortcuts Disable creation of desktop and start - menu shortcuts - -N --no-startmenu Disable creation of start menu shortcut - -d --no-desktop Disable creation of desktop shortcut - -A --disable-buggy-antivirus Disable known or suspected buggy anti - virus software packages during - execution. -</screen> -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.c"> -<question><para>Why not install in C:\?</para></question> -<answer> - -<para>The Cygwin Setup program will prompt you for a "root" directory. -The default is <literal>C:\cygwin</literal>, but you can change it. You are urged not to -choose something like <literal>C:\</literal> (the root directory on the system drive) for -your Cygwin root. If you do, then critical Cygwin system directories -like <literal>etc</literal>, <literal>lib</literal> and <literal>bin</literal> could easily be corrupted by -other (non-Cygwin) applications or packages that use <literal>\etc</literal>, -<literal>\lib</literal> or <literal>\bin</literal>. Perhaps there is no conflict now, but who -knows what you might install in the future? It's also just good common -sense to segregate your Cygwin "filesystems" from the rest of your -Windows system disk. -</para> -<para>(In the past, there had been genuine bugs that would cause problems -for people who installed in <literal>C:\</literal>, but we believe those are gone -now.) -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.old-versions"> -<question><para>Can I use Cygwin Setup to get old versions of packages (like gcc-2.95)?</para></question> -<answer> - -<para>Cygwin Setup can be used to install any packages that are on a -Cygwin mirror, which usually includes one version previous to the -current one. The complete list may be searched at -<ulink url="http://cygwin.com/packages/">http://cygwin.com/packages/</ulink>. There is no complete archive of -older packages. If you have a problem with the current version of -a Cygwin package, please report it to the mailing list using the -guidelines at <ulink url="http://cygwin.com/problems.html">http://cygwin.com/problems.html</ulink>. -</para> -<para>That said, if you really need an older package, you may be able to find -an outdated or archival mirror by searching the web for an old package -version (for example, <literal>gcc2-2.95.3-10-src.tar.bz2</literal>), but keep in -mind that this older version will not be supported by the mailing list -and that installing the older version will not help improve Cygwin. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.upgrade-mountpoints"> -<question><para>After upgrading from Cygwin 1.5 to Cygwin 1.7 my user mount points disappeared! How can I get them back?</para></question> -<answer> - -<para> -When you upgrade an existing older Cygwin installation to Cygwin 1.7, your old -system mount points (stored in the HKEY_LOCAL_MACHINE branch of your registry) -are read by a script and the /etc/fstab file is generated from these entries. -No such automatism exists for the user mount points formerly stored in the -HKEY_CURRENT_USER branch of the registry. There's a bash script for your -convenience, which creates a user-specific /etc/fstab/${USER} file for you, -called /bin/copy-user-registry-fstab. For more information on the new fstab -files see the User's Guide at -<ulink url="http://cygwin.com/cygwin-ug-net/using.html#mount-table">http://cygwin.com/cygwin-ug-net/using.html#mount-table</ulink> -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.virus"> -<question><para>Is Cygwin Setup, or one of the packages, infected with a virus?</para></question> -<answer> - -<para>Unlikely. Unless you can confirm it, please don't report it to the -mailing list. Anti-virus products have been known to detect false -positives when extracting compressed tar archives. If this causes -problems for you, consider disabling your anti-virus software when -running <literal>setup</literal>. Read the next entry for a fairly safe way to do -this. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.hang"> -<question><para>My computer hangs when I run Cygwin Setup!</para></question> -<answer> - -<para>Both Network Associates (formerly McAfee) and Norton anti-virus -products have been reported to "hang" when extracting Cygwin tar -archives. If this happens to you, consider disabling your anti-virus -software when running Cygwin Setup. The following procedure should be -a fairly safe way to do that: -</para> -<orderedlist><listitem><para>Download <literal>setup.exe</literal> and scan it explicitly. -</para> -</listitem> -<listitem><para>Turn off the anti-virus software. -</para> -</listitem> -<listitem><para>Run setup to download and extract all the tar files. -</para> -</listitem> -<listitem><para>Re-activate your anti-virus software and scan everything -in C:\cygwin (or wherever you chose to install), or your entire hard -disk if you are paranoid. -</para> -</listitem> -</orderedlist> - -<para>This should be safe, but only if Cygwin Setup is not substituted by -something malicious, and no mirror has been compromised. -</para> -<para>See also <ulink url="http://cygwin.com/faq/faq.using.html#faq.using.bloda" /> -for a list of applications that have been known, at one time or another, to -interfere with the normal functioning of Cygwin. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.what-packages"> -<question><para>What packages should I download? Where are 'make', 'gcc', 'vi', etc? </para></question> -<answer> -<para>When using Cygwin Setup for the first time, the default is to install -a minimal subset of all available packages. If you want anything beyond that, -you will have to select it explicitly. See -<ulink url="http://cygwin.com/packages/" /> for a searchable list of available -packages, or use <literal>cygcheck -p </literal> as described in the Cygwin -User's Guide at -<ulink url="http://cygwin.com/cygwin-ug-net/using-utils.html#cygcheck" />. -</para> -<para>If you want to build programs, of course you'll need <literal>gcc</literal>, -<literal>binutils</literal>, <literal>make</literal> and probably other packages from the -``Devel'' category. Text editors can be found under ``Editors''. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.everything"> -<question><para>How do I just get everything?</para></question> -<answer> - -<para>Long ago, the default was to install everything, much to the -irritation of most users. Now the default is to install only a basic -core of packages. Cygwin Setup is designed to make it easy to browse -categories and select what you want to install or omit from those -categories. It's also easy to install everything: -</para> -<orderedlist> -<listitem><para>At the ``Select Packages'' screen, in ``Categories'' view, at the line -marked ``All'', click on the word ``default'' so that it changes to -``install''. (Be patient, there is some computing to do at this step. -It may take a second or two to register the change.) This tells Setup -to install <emphasis>everything</emphasis>, not just what it thinks you should have -by default. -</para> -</listitem> -<listitem><para>Now click on the ``View'' button (twice) until you get the -``Partial'' view. This shows exactly which packages are about to be -downloaded and installed. -</para> -</listitem> -</orderedlist> - -<para>This procedure only works for packages that are currently available. -There is no way to tell Cygwin Setup to install all packages by -default from now on. As new packages become available that would not -be installed by default, you have to repeat the above procedure to get -them. -</para> -<para>In general, a better method (in my opinion), is to: -</para> -<orderedlist> -<listitem><para>First download & install all packages that would normally be -installed by default. This includes fundamental packages and any -updates to what you have already installed. Then... -</para> -</listitem> -<listitem><para>Run Cygwin Setup again, and apply the above technique to get all -new packages that would not be installed by default. You can check -the list in the Partial View before proceeding, in case there's -something you really <emphasis>don't</emphasis> want. -</para> -</listitem> -<listitem><para>In the latest version of Cygwin Setup, if you click the ``View'' -button (twice) more, it shows packages not currently installed. You -ought to check whether you <emphasis>really</emphasis> want to install everything! -</para> -</listitem> -</orderedlist> - -</answer></qandaentry> - -<qandaentry id="faq.setup.disk-space"> -<question><para>How much disk space does Cygwin require?</para></question> -<answer> - -<para>That depends, obviously, on what you've chosen to download and -install. A full installation today is probably larger than 1 GB -installed, not including the package archives themselves nor the source -code. -</para> -<para>After installation, the package archives remain in your ``Local -Package Directory'', by default the location of <literal>setup.exe</literal>. You -may conserve disk space by deleting the subdirectories there. These -directories will have very weird looking names, being encoded with -their URLs (named <literal>ftp%3a%2f...</literal>). -</para> -<para>Of course, you can keep them around in case you want to reinstall a -package. If you want to clean out only the outdated packages, Michael Chase -has written a script called <literal>clean_setup.pl</literal>, available -at <ulink url="http://home.ix.netcom.com/~mchase/zip/" />. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.what-upgraded"> -<question><para>How do I know which version I upgraded from?</para></question> -<answer> - -<para>Detailed logs of the most recent Cygwin Setup session can be found in -<literal>/var/log/setup.log.full</literal> and less verbose information about -prior actions is in <literal>/var/log/setup.log</literal>. -</para> - -</answer></qandaentry> - -<qandaentry id="faq.setup.setup-fails"> -<question><para>What if setup fails?</para></question> -<answer> - -<para>First, make sure that you are using the latest version of Cygwin Setup. -The latest version is always available from the 'Install Cygwin now' link on -the Cygwin Home Page at <ulink -url="http://cygwin.com/">http://cygwin.com/</ulink>. </para> -<para>If you are downloading from the Internet, setup will fail if it cannot -download the list of mirrors at <ulink -url="http://cygwin.com/mirrors.html">http://cygwin.com/mirrors.html</ulink>. -It could be that the network is too busy. Something similar could be the -cause of a download site not working. Try another mirror, or try again -later. -</para> -<para>If setup refuses to download a package that you know needs to be -upgraded, try deleting that package's entry from /etc/setup. If you are -reacting quickly to an announcement on the mailing list, it could be -that the mirror you are using doesn't have the latest copy yet. Try -another mirror, or try again tomorrow. -</para> -<para>If setup has otherwise behaved strangely, check the files -<literal>setup.log</literal> and <literal>setup.log.full</literal> in -<literal>/var/log</literal> (<literal>C:\cygwin\var\log</literal> by -default). It may provide some clues as to what went wrong and why. -</para> -<para>If you're still baffled, search the Cygwin mailing list for clues. -Others may have the same problem, and a solution may be posted there. -If that search proves fruitless, send a query to the Cygwin mailing -list. You must provide complete details in your query: version of -setup, options you selected, contents of setup.log and setup.log.full, -what happened that wasn't supposed to happen, etc. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.setup-fails-on-ts"> -<question><para>My installation on a Terminal Server machine goes wrong. What can I do?</para></question> -<answer> - -<para>The problem is that Terminal Server machines do some compatibility -checks when running applications which are not marked as -"Terminal Server-aware", and this compatibility check seems to be buggy, -leaving parts of the application in a non-executable state. Curious enough, -this only happens if DEP (Data Execution Prevention) is turned on for -all applications.</para> - -<para>So far, only few Cygwin packages have their binaries marked as -TS-aware, which means there's a good chance that the postinstall scripts -during the installation will break, and that after installation you -can't start a shell, etc.</para> - -<para>So, for the time being, here's how you install Cygwin on a Terminal -Server. First, switch DEP to "Turn on DEP for essential Windows programs -and services only" and reboot the machine. Then install via setup.exe. -You can leave it at that and run the Terminal Server in the aforementioned -DEP setting. Or use the peflags tool from the rebase package to set -the TS-aware flag in all executables, switch DEP back to "Turn on DEP for -all programs and services except [...]" and reboot again. However, -please keep in mind that a package update might re-install a binary -with the TS-aware flag switched off again. So you will have to re-use -the peflags utility once in a while. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.name-with-space"> -<question><para>My Windows logon name has a space in it, will this cause problems?</para></question> -<answer> - -<para>Most definitely yes! UNIX shells (and thus Cygwin) use the space -character as a word delimiter. Under certain circumstances, it is -possible to get around this with various shell quoting mechanisms, but -you are much better off if you can avoid the problem entirely. -</para> -<para>On Windows NT/2000/XP you have two choices: -</para><orderedlist> -<listitem><para>You can rename the user in the Windows User Manager GUI and then -run mkpasswd. -</para> -</listitem> -<listitem><para>You can simply edit the /etc/passwd file and change the Cygwin user name -(first field). It's also a good idea to avoid spaces in the home directory. -</para> -</listitem> -</orderedlist> - -<para>On Windows 95/98/ME you can create a new user and run mkpasswd, -or you can delete the offending entry from /etc/passwd. -Cygwin will then use the name in the default entry with uid 500. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.home"> -<question><para>My <literal>HOME</literal> environment variable is not what I want.</para></question> -<answer> - -<para>When starting Cygwin from Windows, <literal>HOME</literal> is determined as follows -in order of decreasing priority: -</para> -<orderedlist> -<listitem><para><literal>HOME</literal> from the Windows environment, translated to POSIX form. -</para> -</listitem> -<listitem><para>The entry in /etc/passwd -</para> -</listitem> -<listitem><para>/home/USERNAME -</para> -</listitem> -</orderedlist> - -<para>When using Cygwin from the network (telnet, ssh,...), <literal>HOME</literal> is set -from /etc/passwd. -</para> -<para>If your <literal>HOME</literal> is set to a value such as /cygdrive/c, it is likely -that it was set in Windows. Start a DOS Command Window and type -"set HOME" to verify if this is the case. -</para> -<para>Access to shared drives is often restricted when starting from the network, -thus Domain users may wish to have a different <literal>HOME</literal> in the -Windows environment (on shared drive) than in /etc/passwd (on local drive). -Note that ssh only considers /etc/passwd, disregarding <literal>HOME</literal>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.uninstall-packages"> -<question><para>How do I uninstall individual packages?</para></question> -<answer> - -<para>Run Cygwin Setup as you would to install packages. In the list of -packages to install, browse the relevant category or click on the -``View'' button to get a full listing. Click on the cycle glyph until -the action reads ``Uninstall''. Proceed by clicking ``Next''. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.uninstall-service"> -<question><para>How do I uninstall a Cygwin service?</para></question> -<answer> -<orderedlist> -<listitem><para>List all services you have installed with -<literal>cygrunsrv -L</literal>. If you do not have -<literal>cygrunsrv</literal> installed, skip this FAQ. -</para></listitem> -<listitem><para>Before removing the service, you should stop it with -<literal>cygrunsrv --stop <replaceable>service_name</replaceable></literal>. -If you have <literal>inetd</literal> configured to run as a standalone -service, it will not show up in the list, but -<literal>cygrunsrv --stop inetd</literal> will work to stop it as -well. -</para></listitem> -<listitem><para>Lastly, remove the service with -<literal>cygrunsrv --remove <replaceable>service_name</replaceable></literal>. -</para></listitem> -</orderedlist> -</answer></qandaentry> - -<qandaentry id="faq.setup.uninstall-all"> -<question><para>How do I uninstall <emphasis role='bold'>all</emphasis> of Cygwin?</para></question> -<answer> -<para>Setup has no automatic uninstall facility. The recommended method to remove all -of Cygwin is as follows: -</para> -<orderedlist> -<listitem><para>If you have any Cygwin services running, remove by repeating -the instructions in <ulink -url="http://cygwin.com/faq/faq.setup.html#faq.setup.uninstall-service" /> for -all services that you installed. Common services that might have been -installed are <literal>sshd</literal>, <literal>cron</literal>, -<literal>cygserver</literal>, <literal>inetd</literal>, <literal>apache</literal>, -<literal>postgresql</literal>, and so on. -</para> -</listitem> -<listitem><para>Stop the X11 server if it is running, and terminate any Cygwin programs -that might be running in the background. Exit the command prompt and ensure -that no Cygwin processes remain. Note: If you want to save your mount points for a later -reinstall, first save the output of <literal>mount -m</literal> as described at -<ulink url="http://cygwin.com/cygwin-ug-net/using-utils.html#mount" />. -</para> -</listitem> -<listitem><para>Delete the Cygwin root folder and all subfolders. If you get an error -that an object is in use, then ensure that you've stopped all services and -closed all Cygwin programs. If you get a 'Permission Denied' error then you -will need to modify the permissions and/or ownership of the files or folders -that are causing the error. For example, sometimes files used by system -services end up owned by the SYSTEM account and not writable by regular users. -</para> -<para>The quickest way to delete the entire tree if you run into this problem is to -change the ownership of all files and folders to your account. To do this in -Windows Explorer, right click on the root Cygwin folder, choose Properties, then -the Security tab. If you are using Windows XP Home or Simple File Sharing, -you will need to boot into Safe Mode to access the Security tab. Select -Advanced, then go to the Owner tab and make sure your account is listed as -the owner. Select the 'Replace owner on subcontainers and objects' checkbox -and press Ok. After Explorer applies the changes you should be able to -delete the entire tree in one operation. Note that you can also achieve -this in Cygwin by typing <literal>chown -R user /</literal> or by using other -tools such as <literal>CACLS.EXE</literal>. -</para> -</listitem> -<listitem><para>Delete the Cygwin shortcuts on the Desktop and Start Menu, and anything -left by setup.exe in the download directory. However, if you plan to reinstall -Cygwin it's a good idea to keep your setup.exe download directory since you can -reinstall the packages left in its cache without redownloading them. -</para> -</listitem> -<listitem><para>If you added Cygwin to your system path, you should remove it unless you -plan to reinstall Cygwin to the same location. Similarly, if you set your -CYGWIN environment variable system-wide and don't plan to reinstall, you should -remove it. -</para> -</listitem> -<listitem><para>Finally, if you want to be thorough you can delete the registry tree -<literal>Software\Cygwin</literal> under <literal>HKEY_LOCAL_MACHINE</literal> and/or -<literal>HKEY_CURRENT_USER</literal>. However, if you followed the directions above you -will have already removed everything important. Typically only the installation -directory has been stored in the registry at all. -</para> -</listitem> -</orderedlist> - -</answer></qandaentry> - -<qandaentry id="faq.setup.snapshots"> -<question><para>How do I install snapshots?</para></question> -<answer> - -<para>First, are you sure you want to do this? Snapshots are risky. They -have not been tested. Use them <emphasis role='bold'>only</emphasis> if there is a feature or -bugfix that you need to try, and you are willing to deal with any -problems, or at the request of a Cygwin developer. -</para> -<para>You should generally install the full -<literal>cygwin-inst-YYYYMMDD.tar.bz2</literal> update, rather than just the DLL, -otherwise some components may be out of sync. -</para> -<para>You cannot use Cygwin Setup to install a snapshot. -</para> -<para>First, you will need to download the snapshot from the snapshots -page at <ulink url="http://cygwin.com/snapshots/">http://cygwin.com/snapshots/</ulink>. Note the directory where -you saved the snapshot tarball. -</para> -<para>Before installing a snapshot, you must first Close <emphasis role='bold'>all</emphasis> Cygwin -applications, including shells and services (e.g., <literal>inetd</literal>, <literal>sshd</literal>). -You will not be able to replace <literal>cygwin1.dll</literal> if any Cygwin process is -running. You may have to restart Windows to clear the DLL from memory -(beware of automatic service startup). -</para> -<para>Most of the downloaded snapshot can be installed using <literal>tar</literal>. Cygwin -<literal>tar</literal> won't be able to update <literal>/usr/bin/cygwin1.dll</literal> (because it's -used by <literal>tar</literal> itself), but it should succeed with everything else. If -you are only installing the DLL snapshot, skip the first tar command. Open -a <literal>bash</literal> shell (it should be the only running Cygwin process) and issue -the following commands: -<screen> - /bin/tar -C/ -jxvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.bz2 --exclude=usr/bin/cygwin1.dll - /bin/tar -C/tmp -jxvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.bz2 usr/bin/cygwin1.dll -</screen> -</para> -<para>Exit the bash shell, and use Explorer or the Windows command shell to -first rename <literal>C:\cygwin\bin\cygwin1.dll</literal> to -<literal>C:\cygwin\bin\cygwin1-prev.dll</literal> and then move -<literal>C:\cygwin\tmp\usr\bin\cygwin1.dll</literal> -to <literal>C:\cygwin\bin\cygwin1.dll</literal> (assuming you installed Cygwin in -<literal>C:\cygwin</literal>). -</para> -<para>The operative word in trying the snapshots is "<emphasis>trying</emphasis>". If you -notice a problem with the snapshot that was not present in the release -DLL (what we call a "regression"), please report it to the Cygwin -mailing list (see <ulink url="http://cygwin.com/problems.html">http://cygwin.com/problems.html</ulink> for problem -reporting guidelines). If you wish to go back to the older version of the -DLL, again, close all Cygwin processes, delete -<literal>C:\cygwin\bin\cygwin1.dll</literal>, and -rename <literal>C:\cygwin\bin\cygwin1-prev.dll</literal> back to -<literal>C:\cygwin\bin\cygwin1.dll</literal> (again assuming that your "<literal>/</literal>" is -<literal>C:\cygwin</literal>). To restore the rest of the snapshot -files, reinstall the "<literal>cygwin</literal>" package using Setup. -</para> - -</answer></qandaentry> - -<qandaentry id="faq.setup.mirror"> -<question><para>Can Cygwin Setup maintain a ``mirror''?</para></question> -<answer> - -<para>NO. Cygwin Setup cannot do this for you. Use a tool designed for -this purpose. See <ulink url="http://rsync.samba.org/">http://rsync.samba.org/</ulink>, -<ulink url="http://wget.sunsite.dk/">http://wget.sunsite.dk/</ulink> for utilities that can do this for you. -For more information on setting up a custom Cygwin package server, see -the Cygwin Setup homepage at -<ulink url="http://sourceware.org/cygwin-apps/setup.html">http://sourceware.org/cygwin-apps/setup.html</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.cd"> -<question><para>How can I make my own portable Cygwin on CD?</para></question> -<answer> - -<para>While some users have successfully done this, for example Indiana -University's XLiveCD <ulink url="http://xlivecd.indiana.edu/">http://xlivecd.indiana.edu/</ulink>, there is no -easy way to do it. Full instructions for constructing a portable Cygwin -on CD by hand can be found on the mailing list at -<ulink url="http://www.cygwin.com/ml/cygwin/2003-07/msg01117.html">http://www.cygwin.com/ml/cygwin/2003-07/msg01117.html</ulink> -(Thanks to fergus at bonhard dot uklinux dot net for these instructions.) -Please note that these instructions are rather old and are referring to the -somewhat different setup of a Cygwin 1.5.x release. As soon as somebody set -this up for Cygwin 1.7, we might add this information here. -</para> -</answer></qandaentry> - -<qandaentry id="faq.setup.registry"> -<question><para>How do I save, restore, delete, or modify the Cygwin information stored in the registry?</para></question> -<answer> - -<para>Since Cygwin 1.7, there's nothing important in the registry anymore, -except for the installation directory information stored there for the sake -of setup.exe. There's nothing left to manipulate anymore. -</para></answer></qandaentry> - diff --git a/winsup/doc/faq-using.xml b/winsup/doc/faq-using.xml deleted file mode 100644 index 186a2da06..000000000 --- a/winsup/doc/faq-using.xml +++ /dev/null @@ -1,1158 +0,0 @@ -<!-- faq-problems.xml --> -<qandaentry id="faq.using.missing-dlls"> -<question><para>Why can't my application locate cygncurses-8.dll? or cygintl-3.dll? or cygreadline6.dll? or ...?</para></question> -<answer> - -<para>Well, something has gone wrong somehow... -</para> -<para>To repair the damage, you must run Cygwin Setup again, and re-install the -package which provides the missing DLL package. -</para> -<para>If you already installed the package at one point, Cygwin Setup won't -show the option to install the package by default. In the -``Select packages to install'' dialog, click on the <literal>Full/Part</literal> -button. This lists all packages, even those that are already -installed. Scroll down to locate the missing package, for instance -<literal>libncurses8</literal>. Click on the ``cycle'' glyph until it says -``Reinstall''. Continue with the installation. -</para> -<para>For a detailed explanation of the general problem, and how to extend -it to other missing DLLs and identify their containing packages, see -<ulink url="http://cygwin.com/ml/cygwin/2002-01/msg01619.html">http://cygwin.com/ml/cygwin/2002-01/msg01619.html</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.slow"> -<question><para>Why is Cygwin suddenly <emphasis>so</emphasis> slow?</para></question> -<answer> - -<para>If suddenly <emphasis>every</emphasis> command takes a -<emphasis>very</emphasis> long time, then something is probably attempting to -access a network share. You may have the obsolete <literal>//c</literal> -notation in your PATH or startup files. Using <literal>//c</literal> means -to contact the <emphasis>network server</emphasis> <literal>c</literal>, which -will slow things down tremendously if it does not exist. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.shares"> -<question><para>Why can't my services access network shares?</para></question> -<answer> - -<para>If your service is one of those which switch the user context -(sshd, inetd, etc), then it depends on the method used to switch to -another user. This problem as well as its solution is described in -detail in the Cygwin User's Guide, see -<ulink url="http://cygwin.com/cygwin-ug-net/ntsec.html" />. -</para> -<para>Workarounds include using public network share that does not require -authentication (for non-critical files), providing your password to a -<command>net use</command> command, or running the service as your own -user with <literal>cygrunsrv -u</literal> (see -<literal>/usr/share/doc/Cygwin/cygrunsrv.README</literal> for more -information). -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.path"> -<question><para>How should I set my PATH?</para></question> -<answer> - -<para>This is done for you in the file /etc/profile, which is sourced by bash -when you start it from the Desktop or Start Menu shortcut, created by -<literal>setup.exe</literal>. The line is -</para> -<screen> - PATH="/usr/local/bin:/usr/bin:/bin:$PATH" -</screen> - -<para>Effectively, this <emphasis role='bold'>prepends</emphasis> /usr/local/bin and /usr/bin to your -Windows system path. If you choose to reset your PATH, say in -$HOME/.bashrc, or by editing etc/profile directly, then you should -follow this rule. You <emphasis role='bold'>must</emphasis> have <literal>/usr/bin</literal> in your PATH -<emphasis role='bold'>before</emphasis> any Windows system directories. (And you must not omit -the Windows system directories!) Otherwise you will likely encounter -all sorts of problems running Cygwin applications. -</para> -<para>If you're using another shell than bash (say, tcsh), the mechanism -is the same, just the names of the login scripts are different. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.not-found"> -<question><para>Bash (or another shell) says "command not found", but it's right there!</para></question> -<answer> - -<para>If you compile a program, you might find that you can't run it: -</para> -<screen> - bash$ gcc -o hello hello.c - bash$ hello - bash: hello: command not found -</screen> - -<para>Unlike the Windows default behaviour, Unix shells like bash do not look for programs in <literal>.</literal> (the current -directory) by default. You can add <literal>.</literal> to your PATH (see above), -but this is not recommended (at least on UNIX) for security reasons. -Just tell bash where to find it, when you type it on the command line: -</para> -<screen> - bash$ gcc -o hello hello.c - bash$ ./hello - Hello World! -</screen> - -</answer></qandaentry> - -<qandaentry id="faq.using.converting-paths"> -<question><para>How do I convert between Windows and UNIX paths?</para></question> -<answer> - -<para>Use the 'cygpath' utility. Type '<literal>cygpath --help</literal>' for -information. For example (on my installation): -<screen> - bash$ cygpath --windows ~/.bashrc - D:\starksb\.bashrc - bash$ cygpath --unix C:/cygwin/bin/cygwin.bat - /usr/bin/cygwin.bat - bash$ cygpath --unix C:\\cygwin\\bin\\cygwin.bat - /usr/bin/cygwin.bat -</screen> -Note that bash interprets the backslash '\' as an escape character, so -you must type it twice in the bash shell if you want it to be recognized -as such. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.bashrc"> -<question><para>Why doesn't bash read my .bashrc file on startup?</para></question> -<answer> - -<para>Your .bashrc is read from your home directory specified by the HOME -environment variable. It uses /.bashrc if HOME is not set. So you need -to set HOME (and the home dir in your /etc/passwd entry) correctly. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.bash-insensitive"> -<question><para>How can I get bash filename completion to be case insensitive?</para></question> -<answer> - -<para>Add the following to your <literal>~/.bashrc</literal> file: -</para> -<screen> - shopt -s nocaseglob -</screen> - -<para>and add the following to your <literal>~/.inputrc</literal> file: -</para> -<screen> - set completion-ignore-case on -</screen> - -</answer></qandaentry> - -<qandaentry id="faq.using.filename-spaces"> -<question><para>Can I use paths/filenames containing spaces in them?</para></question> -<answer> - -<para>Cygwin does support spaces in filenames and paths. That said, some -utilities that use the library may not, since files don't typically -contain spaces in Unix. If you stumble into problems with this, you -will need to either fix the utilities or stop using spaces in filenames -used by Cygwin tools. -</para> -<para>In particular, bash interprets space as a word separator. You would have -to quote a filename containing spaces, or escape the space character. -For example: -<screen> - bash-2.03$ cd '/cygdrive/c/Program Files' -</screen> -or -<screen> - bash-2.03$ cd /cygdrive/c/Program\ Files -</screen> -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.shortcuts"> -<question><para>Why can't I cd into a shortcut to a directory?</para></question> -<answer> - -<para>Cygwin does not follow MS Windows Explorer Shortcuts -(*.lnk files). It sees a shortcut as a regular file and this you -cannot "cd" into it. -</para> -<para>Cygwin is also capable to create POSIX symlinks as Windows shortcuts -(see the CYGWIN environment variable option "winsymlinks"), but these -shortcuts are different from shortcuts created by native Windows -applications. Windows applications can usually make use of Cygwin -shortcuts but not vice versa. This is by choice. The reason is that -Windows shortcuts may contain a bunch of extra information which would -get lost, if, for example, Cygwin tar archives and extracts them as -symlinks. -</para> -<para>Changing a Cygwin shortcut in Windows Explorer usually changes a Cygwin -shortcut into a Windows native shortcut. Afterwards, Cygwin will not -recognize it as symlink anymore. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.find"> -<question><para>I'm having basic problems with find. Why?</para></question> -<answer> - -<para>Make sure you are using the find that came with Cygwin and that you -aren't picking up the Win32 find command instead. You can verify that -you are getting the right one by doing a "type find" in bash. -</para> -<para>If the path argument to find, including current directory (default), is -itself a symbolic link, then find will not traverse it unless you -specify the <literal>-follow</literal> option. This behavior is different than most -other UNIX implementations, but is not likely to change. -</para> -<para>If find does not seem to be producing enough results, or seems to be -missing out some directories, you may be experiencing a problem with one -of find's optimisations. The absence of <literal>.</literal> and <literal>..</literal> -directories on some filesystems, such as DVD-R UDF, can confuse find. -See the documentation for the option <literal>-noleaf</literal> in the man page. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.su"> -<question><para>Why doesn't <literal>su</literal> work?</para></question> -<answer> - -<para>The <literal>su</literal> command has been in and out of Cygwin distributions, but -it has not been ported to Cygwin and has never worked. It is -currently installed as part of the sh-utils, but again, it does not work. -</para> -<para>You should rather install <literal>sshd</literal> and use -<literal>ssh username@localhost</literal> as a <literal>su</literal> -replacement. -</para> -<para>For some technical background into why <literal>su</literal> doesn't work, read -<ulink url="http://www.cygwin.com/ml/cygwin/2003-06/msg00897.html">http://www.cygwin.com/ml/cygwin/2003-06/msg00897.html</ulink> and -related messages. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.man"> -<question><para>Why doesn't man -k (or apropos) work?</para></question> -<answer> - -<para>Before you can use <literal>man -k</literal> or <literal>apropos</literal>, you -must create the whatis database. Just run the command -</para> -<screen> - /usr/sbin/makewhatis -</screen> - -<para>(it may take a minute to complete). -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.chmod"> -<question><para>Why doesn't <literal>chmod</literal> work?</para></question> -<answer> - -<para>The most common case is that your <literal>/etc/passwd</literal> -or <literal>/etc/group</literal> files are not properly set up. If -<literal>ls -l</literal> shows a group of <literal>mkpasswd</literal> -or <literal>mkgroup</literal>, you need to run one or both of those -commands. -</para> -<para>If you're using FAT32 instead of NTFS, <literal>chmod</literal> -will fail since FAT32 does not provide any permission information. -You should really consider converting the drive to NTFS with -<literal>CONVERT.EXE</literal>. FAT and FAT32 are barely good enough -for memory cards or USB sticks to exchange pictures... -</para> -<para>For other cases, understand that Cygwin attempts to show UNIX -permissions based on the security features of Windows, so the Windows -ACLs are likely the source of your problem. See the Cygwin User's -Guide at <ulink url="http://cygwin.com/cygwin-ug-net/ntsec.html" /> -for more information on how Cygwin maps Windows permissions. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.shell-scripts"> -<question><para>Why doesn't my shell script work?</para></question> -<answer> - -<para>There are two basic problems you might run into. One is the fact that -<command>/bin/sh</command> is really <command>bash</command>. -It could be missing some features you might expect in -<command>/bin/sh</command>, if you are used to <command>/bin/sh</command> -actually being <command>zsh</command> (MacOS X "Panther") or -<command>ksh</command> (Tru64). -</para> - -<para>Or, it could be a permission problem, and Cygwin doesn't understand -that your script is executable. On NTFS or NFS just make the script -executable using <literal>chmod +x</literal>. However, -<literal>chmod</literal> may not work due to restrictions of the -filesystem (see FAQ entry above). In this case Cygwin must read the -contents of files to determine if they are executable. If your script -does not start with -</para> -<screen> - #! /bin/sh -</screen> - -<para>(or any path to a script interpreter, it does not have to be /bin/sh) -then Cygwin will not know it is an executable script. The Bourne shell -idiom -</para> -<screen> - : - # This is the 2nd line, assume processing by /bin/sh -</screen> - -<para>also works. -</para> -<para>Note that you can use the filesystem flag <literal>cygexec</literal> in -<filename>/etc/fstab</filename> to force Cygwin to treat all files -under the mount point as executable. This can be used for individual -files as well as directories. Then Cygwin will not bother to read files -to determine whether they are executable. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.printing"> -<question><para>How do I print under Cygwin?</para></question> -<answer> - -<para>lpr is available in the <ulink url="http://cygwin.com/setup.exe">setup.exe</ulink> cygutils package. Some <ulink url="http://cygwin.com/ml/cygwin/2008-05/msg00123.html">usage hints</ulink> are available courtesy of Rodrigo Medina. -</para> -<para>Jason Tishler has written a couple of messages that explain how to use -a2ps (for nicely formatted text in PostScript) and ghostscript (to print -PostScript files on non-PostScript Windows printers). Start at -<ulink url="http://cygwin.com/ml/cygwin/2001-04/msg00657.html">http://cygwin.com/ml/cygwin/2001-04/msg00657.html</ulink>. Note that the -<literal>file</literal> command is now available as part of Cygwin setup. -</para> -<para>Alternatively, on NT, you can use the Windows <literal>print</literal> -command. (It does not seem to be available on Win9x.) Type -</para> -<screen> - bash$ print /\? -</screen> - -<para>for usage instructions (note the <literal>?</literal> must be escaped from the -shell). -</para> -<para>Finally, you can simply <literal>cat</literal> the file to the printer's share name: -</para> -<screen> - bash$ cat myfile > //host/printer -</screen> - -<para>You may need to press the formfeed button on your printer or append the -formfeed character to your file. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.unicode"> -<question><para>Why don't international (Unicode) characters work?</para></question> -<answer> - -<para>Internationalization is a complex issue. The short answer is that -Cygwin relies on the setting of the setting of LANG/LC_xxx environment -variables. The long answer can be found in the User's Guide in the -section <ulink url="http://cygwin.com/cygwin-ug-net/setup-locale.html">Internationalization</ulink> -</para> - -<para>To get UTF-8 support you must set the LANG, LC_ALL, or LC_CTYPE -environment variables. To get UTF-8 support you can set, for instance, -$LANG to "en_US.UTF-8". This will give you support for the UTF-8 character -set. Note that the language part has to contain a valid language specifier, -but is otherwise so far ignored. There's no support for correct -language-specific collation, monetary or date/time-related -string handling. This is planned for a later release, though.</para> - -<para>To type international characters (£äö) in -<literal>bash</literal>, check if the following settings are available in -your <literal>bash</literal>, and if not, add them to your -<literal>~/.inputrc</literal> file and restart <literal>bash</literal>: -</para> -<screen> - set meta-flag on - set convert-meta off - set output-meta on - set input-meta on -</screen> - -<para>These are options to the <literal>readline</literal> library, which -you can read about in the <literal>bash(1)</literal> and -<literal>readline(3)</literal> man pages. Other tools that do not use -<literal>readline</literal> for display, such as <literal>less</literal> -and <literal>ls</literal>, might require additional settings for doublebyte -or multibyte charsets, which could be put -in your <literal>~/.bashrc</literal>, for instance: -<screen> -alias less='/bin/less -r' -alias ls='/bin/ls -F --color=tty --show-control-chars' -</screen> -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.weirdchars"> -<question><para>My application prints international characters but I only -see gray boxes</para></question> -<answer> -<para>Very likely you didn't set your Console character set to the preferred -character set before the first Cygwin application was started in the -console. To make sure the console is using the desired character set, -maile sure that one of the internationalization environment variables -LC_ALL, LC_CTYPE, or LANG is set before the first Cygwin process starts. -You can do that, for instance, by setting the variable in your -<literal>Cygwin.bat</literal> file from which you start your Cygwin shell. -</para> - -<para> -For a more detailed explanation see the section -<ulink url="http://cygwin.com/cygwin-ug-net/setup-locale.html#setup-locale-console">The Windows Console character set</ulink> in the Cygwin User's Guide.</para> -</answer></qandaentry> - -<qandaentry id="faq.using.multiple-copies"> -<question><para>Is it OK to have multiple copies of the DLL?</para></question> -<answer> -<para>You should only have one copy of the Cygwin DLL on your system. If you -have multiple versions, they will conflict and cause problems. -</para> -<para>If you get the error "shared region is corrupted" or "shared region -version mismatch" it means you have multiple versions of cygwin1.dll -running at the same time which conflict with each other. This could happen, -for example, if you update cygwin1.dll without exiting -<emphasis>all</emphasis> Cygwin apps (including inetd) beforehand. -</para> -<para>The only DLL that is sanctioned by the Cygwin project is the one that -you get by running <ulink url="http://cygwin.com/setup.exe">setup.exe</ulink>, -installed in the directory controlled by this program. If you have other -versions on your system and desire help from the cygwin project, you should -delete or rename all DLLs that are not installed by -<filename>setup.exe</filename>. -</para> -<para>If you're trying to find multiple versions of the DLL that are causing -this problem, reboot first, in case DLLs still loaded in memory are the -cause. Then use the Windows System find utility to search your whole -machine, not just components in your PATH (as 'type' would do) or -cygwin-mounted filesystems (as Cygwin 'find' would do). -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.third-party.multiple-copies"> -<question><para> -I read the above but I want to bundle Cygwin with a product, and ship it -to customer sites. How can I do this without conflicting with any -Cygwin installed by the user? -</para></question> -<answer><para> -Third party developers who wish to use Cygwin should check if -there is a version of cygwin installed and use the installed -version if it is newer, or conditionally upgrade if it is not. -(If you write a tool to make this easy, consider contributing -it for others to use) -</para></answer></qandaentry> - -<qandaentry id="faq.using.bundling-cygwin"> -<question><para> -Can I bundle Cygwin with my product for free? -</para></question> -<answer><para> -Only if you comply with Cygwin's <ulink -url="http://cygwin.com/license.html">license</ulink> very carefully. If you -choose to distribute cygwin1.dll, you must be willing to distribute the -exact source code used to build that copy of cygwin1.dll as per the -terms of the GPL. If you ship applications that link with cygwin1.dll, -you must either provide those applications' source code under a -GPL-compatible license, *or* purchase a cygwin license from Red Hat. -</para></answer></qandaentry> - -<qandaentry id="faq.using.private-cygwin"> -<question><para> -So I can't install a private version of the Cygwin DLL without -conflicting with the system cygwin? -</para></question> -<answer><para> -Actually, if you are very careful, you can have two different versions -of the Cygwin DLL installed on your system at the same time but they -must be run serially. The only exception from this rule is, if one of -the DLLs is a pre-1.7 DLL and the other is a 1.7.0 or later DLL. These -DLLs can work concurrently without knowing about each other due to -massive changes using shared resources in Cygwin 1.7. However, -processes using different DLLs will not interact with each other -correctly, so keep them separate except you really really know what -you're doing. -</para> -<para>This usage is not recommeded for novices. Only limited support will be -provided in the <ulink url="http://cygwin.com/lists.html">mailing lists</ulink> -if you run into problems. -</para></answer></qandaentry> - -<qandaentry id="faq.using.older-cygwin-conflict"> -<question><para> -But doesn't that mean that if some application installs an older Cygwin -DLL on top of a newer DLL, my application will break? -</para></question> -<answer><para> -It depends on what you mean by "break". If the application installs a -version of the Cygwin DLL in another location than Cygwin's /bin -directory then the rules in -<xref linkend="faq.using.third-party.multiple-copies"></xref> apply. -If the application installs an older version of the DLL in /bin then you -should complain loudly to the application provider. -</para><para> -Remember that the Cygwin DLL strives to be backwards compatible so a -newer version of the DLL should always work with older executables. So, -in general, it is always best to keep one version of the DLL on your -system and it should always be the latest version which matches your -installed distribution. -</para></answer></qandaentry> - -<qandaentry id="faq.using.missing-packages"> -<question><para>Why isn't package XYZ available in Cygwin?</para></question> -<answer> - -<para>Probably because there is nobody willing or able to maintain it. It -takes time, and the priority for the Cygwin Team is the Cygwin package. -The rest is a volunteer effort. Want to contribute? See -<ulink url="http://cygwin.com/setup.html">http://cygwin.com/setup.html</ulink>. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.old-packages"> -<question><para>Why is the Cygwin package of XYZ so out of date?</para></question> -<answer> - -<para>(Also: Why is the version of package XYZ older than the version that I -can download from the XYZ web site? Why is the version of package XYZ -older than the version that I installed on my linux system? Is there -something special about Cygwin which requires that only an older version -of package XYZ will work on it?) -</para> -<para>Every package in the Cygwin distribution has a maintainer who is -responsible for sending out updates of the package. This person is a -volunteer who is rarely the same person as the official developer of the -package. If you notice that a version of a package seems to be out of -date, the reason is usually pretty simple -- the person who is -maintaining the package hasn't gotten around to updating it yet. Rarely, -the newer package actually requires complex changes that the maintainer -is working out. -</para> -<para>If you urgently need an update, sending a polite message to the cygwin -mailing list pinging the maintainer is perfectly acceptable. There are -no guarantees that the maintainer will have time to update the package -or that you'll receive a response to your request, however. -</para> -<para>Remember that the operative term here is "volunteer". -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.accessing-drives"> -<question><para>How can I access other drives?</para></question> -<answer> - -<para>You have some flexibility here. -</para> -<para>Cygwin has a builtin "cygdrive prefix" for drives that are not mounted. -You can access any drive, say Z:, as '/cygdrive/z/'. -</para> -<para>In some applications (notably bash), you can use the familiar windows -<drive>:/path/, using posix forward-slashes ('/') instead of Windows -backward-slashes ('\'). (But see the warning below!) This maps in the -obvious way to the Windows path, but will be converted internally to use -the Cygwin path, following mounts (default or explicit). For example: -<screen> - bash$ cd C:/Windows - bash$ pwd - /cygdrive/c/Windows -</screen> -and -<screen> - bash$ cd C:/cygwin - bash$ pwd - / -</screen> -for a default setup. You could also use backward-slashes in the -Windows path, but these would have to be escaped from the shell. -</para> -<para><emphasis role='bold'>Warning:</emphasis> There is some ambiguity in going from a Windows path -to the posix path, because different posix paths, through different -mount points, could map to the same Windows directory. This matters -because different mount points may be binmode or textmode, so the -behavior of Cygwin apps will vary depending on the posix path used to -get there. -</para> -<para>You can avoid the ambiguity of Windows paths, and avoid typing -"/cygdrive", by explicitly mounting drives to posix paths. For example: -<screen> - bash$ mkdir /c - bash$ mount c:/ /c - bash$ ls /c -</screen> -Then <literal>/cygdrive/c/Windows</literal> becomes <literal>/c/Windows</literal> which is a -little less typing. -</para> -<para>Note that you have to enter the mount point into the -<filename>/etc/fstab</filename> file to keep it indefinitely. -The mount command will only add the mount point for the lifetime -of your current Cygwin session. -</para> -<para>You can change the default <literal>cygdrive</literal> prefix and whether it is binmode or textmode using the <filename>/etc/fstab</filename> file -as well. See the Cygwin User's Guide at -<ulink url="http://cygwin.com/cygwin-ug-net/using.html#mount-table">http://cygwin.com/cygwin-ug-net/using.html#mount-table</ulink> -for more details. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.copy-and-paste"> -<question><para>How can I copy and paste into Cygwin console windows?</para></question> -<answer> - -<para>First, consider using rxvt or mintty instead of the standard console -window. In rxvt/mintty, selecting with the left-mouse also copies, -and middle-mouse pastes. It couldn't be easier! -</para> -<para>In Windows's console window, open the properties dialog. -The options contain a toggle button, named "Quick edit mode". It must -be ON. Save the properties. -</para> -<para>You can also bind the insert key to paste from the clipboard by adding -the following line to your .inputrc file: -<screen> - "\e[2~": paste-from-clipboard -</screen> -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.firewall"> -<question><para>What firewall should I use with Cygwin? </para></question> -<answer> - -<para>We have had good reports about Kerio Personal Firewall, ZoneLabs -Integrity Desktop, and the built-in firewall in Windows XP. Other -well-known products including ZoneAlarm and Norton Internet Security have -caused problems for some users but work fine for others. At last report, -Agnitum Outpost did not work with Cygwin. If you are having strange -connection-related problems, disabling the firewall is a good -troubleshooting step (as is closing or disabling all other running -applications, especially resource-intensive processes such as indexed -search). -</para> -<para>On the whole, Cygwin doesn't care which firewall is used. The few rare -exceptions have to do with socket code. -Cygwin uses sockets to implement many of its functions, such as IPC. -Some overzealous firewalls install themselves deeply into the winsock -stack (with the 'layered service provider' API) and install hooks -throughout. Sadly the mailing list archives are littered with examples -of poorly written firewall-type software that causes things to break. -Note that with many of these products, simply disabling the firewall -does not remove these changes; it must be completely uninstalled. -</para> -<para>See also <ulink url="http://cygwin.com/faq/faq.using.html#faq.using.bloda" /> -for a list of applications that have been known, at one time or another, to -interfere with the normal functioning of Cygwin. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.sharing-files"> -<question><para>How can I share files between Unix and Windows?</para></question> -<answer> - -<para>During development, we have Linux boxes running Samba and NFS as well -as Windows machines. We often build with cross-compilers under Linux and copy -binaries and source to the Windows system or just toy with them -directly off the Samba-mounted partition. Or, we use the Microsoft NFS -client and just use NFS shares on Linux from Windows. And then there are -tools like <literal>scp</literal>, <literal>ftp</literal>, -<literal>rsync</literal>, ... -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.case-sensitive"> -<question><para>Is Cygwin case-sensitive??</para></question> -<answer> - -<para>Several Unix programs expect to be able to use to filenames -spelled the same way, but with different case. A prime example -of this is perl's configuration script, which wants -<literal>Makefile</literal> and <literal>makefile</literal>. Windows can't -tell the difference between files with just different case, so the -configuration fails. -</para> -<para>To help with this problem, Cygwin supports casesensitivity -starting with Cygwin 1.7.0. For a detailed description how to use that -feature see the Cygwin User's Guilde at -<ulink url="http://cygwin.com/cygwin-ug-net/using-specialnames.html">http://cygwin.com/cygwin-ug-net/using-specialnames.html</ulink>. -</para> - -</answer></qandaentry> - -<qandaentry id="faq.using.dos-filenames"> -<question><para>What about DOS special filenames?</para></question> -<answer> - -<para>In Windows, files cannot be named com1, lpt1, or aux (to name a few); -either as the root filename or as the extension part. If you do, you'll have -trouble. Unix programs don't avoid these names which can make things -interesting. E.g., the perl distribution has a file called -<literal>aux.sh</literal>. The perl configuration tries to make sure that -<literal>aux.sh</literal> is there, but an operation on a file with the magic -letters 'aux' in it will hang. -</para> -<para>At least that's what happens when using native Windows tools. Cygwin -1.7.0 and later can deal with these filenames just fine. Again, see the -User's Guide at -<ulink url="http://cygwin.com/cygwin-ug-net/using-specialnames.html">http://cygwin.com/cygwin-ug-net/using-specialnames.html</ulink> -for a detailed description of what's possible with filenames and what is not. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.hangs"> -<question><para>When it hangs, how do I get it back?</para></question> -<answer> - -<para>If something goes wrong and the tools hang on you for some reason (easy -to do if you try and read a file called aux.sh), first try hitting ^C to -return to bash or the cmd prompt. -</para> -<para>If you start up another shell, and applications don't run, it's a good -bet that the hung process is still running somewhere. Use the Task -Manager, pview, or a similar utility to kill the process. -</para> -<para>And, if all else fails, there's always the reset button/power switch. -In theory this should never be necessary, though. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.directory-structure"> -<question><para>Why the weird directory structure?</para></question> -<answer> - -<para>Why do /lib and /usr/lib (and /bin, /usr/bin) point to the same thing? -</para> -<para>Why use mounts instead of symbolic links? -</para> -<para>Can I use a disk root (e.g., C:\) as Cygwin root? Why is this discouraged? -</para> -<para>After a new installation in the default location, your mount points will -look something like this: -</para> -<screen> - bash$ mount - C:\cygwin\bin on /usr/bin type ntfs (binary,auto) - C:\cygwin\lib on /usr/lib type ntfs (binary,auto) - C:\cygwin on / type ntfs (binary,auto) - C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto) -</screen> - -<para>Note that /bin and /usr/bin point to the same location, as do /lib and -/usr/lib. This is intentional, and you should not undo these mounts -unless you <emphasis>really</emphasis> know what you are doing. -</para> -<para>Various applications and packages may expect to be installed in /lib or -/usr/lib (similarly /bin or /usr/bin). Rather than distinguish between -them and try to keep track of them (possibly requiring the occasional -duplication or symbolic link), it was decided to maintain only one -actual directory, with equivalent ways to access it. -</para> -<para>Symbolic links had been considered for this purpose, but were dismissed -because they do not always work on Samba drives. Also, mounts are -faster to process because no disk access is required to resolve them. -</para> -<para>Note that non-cygwin applications will not observe Cygwin mounts (or -symlinks for that matter). For example, if you use WinZip to unpack the -tar distribution of a Cygwin package, it may not get installed to the -correct Cygwin path. <emphasis>So don't do this!</emphasis> -</para> -<para>It is strongly recommended not to make the Cygwin root directory the -same as your drive's root directory, unless you know what you are doing -and are prepared to deal with the consequences. It is generally easier -to maintain the Cygwin hierarchy if it is isolated from, say, C:\. For -one thing, you avoid possible collisions with other (non-cygwin) -applications that may create (for example) \bin and \lib directories. -(Maybe you have nothing like that installed now, but who knows about -things you might add in the future?) -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.anti-virus"> -<question><para>How do anti-virus programs like Cygwin?</para></question> -<answer> - -<para>Users have reported that NAI (formerly McAfee) VirusScan for NT (and -others?) is incompatible with Cygwin. This is because it tries to scan -the newly loaded shared memory in cygwin1.dll, which can cause fork() to -fail, wreaking havoc on many of the tools. (It is not confirmed that -this is still a problem, however.) -</para> -<para>There have been several reports of NAI VirusScan causing the system to -hang when unpacking tar.gz archives. This is surely a bug in VirusScan, -and should be reported to NAI. The only workaround is to disable -VirusScan when accessing these files. This can be an issue during -setup, and is discussed in that FAQ entry. -</para> -<para>Some users report a significant performance hit using Cygwin when their -anti-virus software is enabled. Rather than disable the anti-virus -software completely, it may be possible to specify directories whose -contents are exempt from scanning. In a default installation, this -would be <literal>C:\cygwin\bin</literal>. Obviously, this could be -exploited by a hostile non-Cygwin program, so do this at your own risk. -</para> -<para>See also <ulink url="http://cygwin.com/faq/faq.using.html#faq.using.bloda" /> -for a list of applications that have been known, at one time or another, to -interfere with the normal functioning of Cygwin. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.emacs"> -<question><para>Is there a Cygwin port of GNU Emacs?</para></question> -<answer> - -<para>Yes. Install the emacs package. This provides everything you -need in order to run GNU emacs in a terminal window. If you also want -to be able to use the X11 -(<ulink url="http://cygwin.com/xfree/">http://cygwin.com/xfree/</ulink>) -GUI, install the emacs-X11 package. In either case, you run emacs by -typing 'emacs' or '/usr/bin/emacs'. If you run emacs in the cygwin -console, be sure that your CYGWIN environment variable contains tty. -See /usr/share/doc/Cygwin/emacs.README for further information. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.xemacs"> -<question><para>Is there a Cygwin port of XEmacs?</para></question> -<answer> - -<para>Yes. It can be used in three different modes:</para> -<para><itemizedlist> -<listitem><para>X11 (<ulink url="http://cygwin.com/xfree/">http://cygwin.com/xfree/</ulink>) GUI</para></listitem> -</itemizedlist></para> -<para>You have to <emphasis>set</emphasis> the DISPLAY environment variable -before starting xemacs.</para> -<screen> - bash$ DISPLAY=127.0.0.1:0 xemacs & -</screen> -<para><itemizedlist> -<listitem><para>Windows native GUI</para></listitem> -</itemizedlist></para> -<para>You have to <emphasis>unset</emphasis> the DISPLAY environment variable -before starting xemacs.</para> -<screen> - bash$ DISPLAY= xemacs & -</screen> -<para><itemizedlist> -<listitem><para>Console mode</para></listitem> -</itemizedlist></para> -<para>Start xemacs with -nw in a terminal (native or X11) window</para> -<screen> - bash$ xemacs -nw -</screen> -<para>The current stable Cygwin version of XEmacs is 21.4.x. But there is also a -Cygwin test release version (21.5.x) available for download via setup.exe. -</para> -<para>To use all the standard packages with XEmacs you should download the following -two packages:</para> -<para><itemizedlist> -<listitem><para>xemacs-sumo - XEmacs standard packages</para></listitem> -<listitem><para>xemacs-mule-sumo - XEmacs MULE (MUlti Lingual Emacs) packages</para></listitem> -</itemizedlist></para> -<para>An alternative <emphasis>native</emphasis> distribution of XEmacs for -Windows based systems can be downloaded from -<ulink url="http://xemacs.org/Download/win32/index.html">http://xemacs.org/Download/win32/index.html</ulink>. -It uses an <emphasis>InnoSetup Kit</emphasis> based installer.</para> -</answer></qandaentry> - -<qandaentry id="faq.using.ntemacs"> -<question><para>What about NT Emacs?</para></question> -<answer> - -<para>If you want GNU Emacs with a native Microsoft GUI interface, -then you can either use XEmacs (see above), or native -NT Emacs: see section -<ulink url="http://www.gnu.org/software/emacs/windows/Getting-Emacs.html#Getting-Emacs">Where can I get pre-compiled versions?</ulink> in NT Emacs FAQ. - -</para> -<para>NT Emacs uses the Windows command shell by default. Since it is not a -Cygwin application, it has no knowledge of Cygwin mounts. With those -points in mind, you need to add the following code to your ~/.emacs -(or ~/_emacs) file in order to use Cygwin bash. This is particularly useful -for the JDEE package (<ulink url="http://jdee.sunsite.dk/">http://jdee.sunsite.dk/</ulink>). The following -settings are for Emacs 21.1: -</para> -<screen> - - ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; Initial setup - ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; This assumes that Cygwin is installed in C:\cygwin (the - ;; default) and that C:\cygwin\bin is not already in your - ;; Windows Path (it generally should not be). - - (setq exec-path (cons "C:/cygwin/bin" exec-path)) - (setenv "PATH" (concat "C:\\cygwin\\bin;" (getenv "PATH"))) - - ;; LOGNAME and USER are expected in many Emacs packages - ;; Check these environment variables. - - (if (and (null (getenv "USER")) - ;; Windows includes variable USERNAME, which is copied to - ;; LOGNAME and USER respectively. - (getenv "USERNAME")) - (setenv "USER" (getenv "USERNAME"))) - - (if (and (getenv "LOGNAME") - ;; Bash shell defines only LOGNAME - (null (getenv "USER"))) - (setenv "USER" (getenv "LOGNAME"))) - - (if (and (getenv "USER") - (null (getenv "LOGNAME"))) - (setenv "LOGNAME" (getenv "USER"))) - - ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; (A) M-x shell: This change M-x shell permanently - ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; Would call Windows command interpreter. Change it. - - (setq shell-file-name "bash") - (setenv "SHELL" shell-file-name) - (setq explicit-shell-file-name shell-file-name) - - ;; Remove C-m (^M) characters that appear in output - - (add-hook 'comint-output-filter-functions - 'comint-strip-ctrl-m) - - ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; (B) *OR* call following function with M-x my-bash - ;; The M-x shell would continue to run standard Windows shell - ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (defun my-bash (&optional buffer) - "Run Cygwin Bash shell in optional BUFFER; default *shell-bash*." - (autoload 'comint-check-proc "comint") - (interactive - (let ((name "*shell-bash*")) - (if current-prefix-arg - (setq name (read-string - (format "Cygwin shell buffer (default %s): " name) - (not 'initial-input) - (not 'history) - name))) - (list name))) - (or buffer - (setq buffer "*shell-bash*")) - (if (comint-check-proc buffer) - (pop-to-buffer buffer) - (let* ((shell-file-name "bash") - (explicit-shell-file-name shell-file-name) - (explicit-sh-args '("--login" "-i")) - (explicit-bash-args explicit-sh-args) - (w32-quote-process-args ?\"));; Use Cygwin quoting rules. - (shell buffer) - ;; By default Emacs sends "\r\n", but bash wants plain "\n" - (set-buffer-process-coding-system 'undecided-dos 'undecided-unix) - ;; With TAB completion, add slash path separator, none to filenames - (make-local-variable 'comint-completion-addsuffix) - (setq comint-completion-addsuffix '("/" . "")) - ;; This variable is local to buffer - (setq comint-prompt-regexp "^[ \n\t]*[$] ?")))) - -</screen> - -<para>If you want NT Emacs to understand Cygwin paths, get -cygwin-mount.el from <ulink url="http://www.emacswiki.org/elisp/index.html">http://www.emacswiki.org/elisp/index.html</ulink>. -</para> -<para>Note that all of this ``just works'' if you use the Cygwin port of -Emacs or XEmacs from Cygwin Setup. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.console-window"> -<question><para>Is there a better alternative to the standard console window?</para></question> -<answer> - -<para>Yes! Use rxvt or mintty instead. Both are optional packages in -Cygwin Setup. You can use rxvt with or without X11, while mintty is a -Cygwin application providing a native GUI. -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.symlinkstoppedworking"> -<question><para>Why do some of my old symlinks don't work anymore?</para></question> -<answer> - -<para>Beginning with Cygwin 1.7, Cygwin supports multiple character sets. -Symlinks created with Cygwin 1.7 are using the UTF-16 character set, which is -portable across all character sets. Old symlinks were written using your -current Windows codepage, which is not portable across all character sets. -If the target of the symlink doesn't resolve anymore, it's very likely that -the symlink points to a target filename using native, non-ASCII characters, -and you're now using another character set than way back when you created -the symlink.</para> - -<para>Solution: Delete the symlink and create it again under you new Cygwin. -The new symlink will be correctly point to the target no matter what character -set you're using in future.</para> -</answer></qandaentry> - -<qandaentry id="faq.using.symlinks-samba"> -<question><para>Why don't symlinks work on samba-mounted filesystems?</para></question> -<answer> - -<para>Symlinks are marked with "system" file attribute. Samba does not -enable this attribute by default. To enable it, consult your Samba -documentation and then add these lines to your samba configuration -file: -</para> -<screen> - map system = yes - create mask = 0775 -</screen> - -<para>Note that the 0775 can be anything as long as the 0010 bit is set. -</para> -<para>Alternatively, use Windows shortcuts as symlinks. See the CYGWIN -environment variable option "winsymlinks" -<ulink url="http://cygwin.com/cygwin-ug-net/using-cygwinenv.html">http://cygwin.com/cygwin-ug-net/using-cygwinenv.html</ulink> -</para> -</answer></qandaentry> - -<qandaentry id="faq.using.tcl-tk"> -<question><para>Why doesn't Cygwin tcl/tk understand Cygwin paths?</para></question> -<answer> - -<para>The versions of Tcl/Tk distributed with Cygwin (e.g. cygtclsh80.exe, -cygwish80.exe) are not actually "Cygwin versions" of those tools. -They are built as native libraries, which means they do not understand -Cygwin mounts or symbolic links. -</para> -<para>See the entry "How do I convert between Windows and UNIX paths?" -elsewhere in this FAQ. -</para></answer></qandaentry> - -<qandaentry id="faq.using.ipv6"> -<question><para>Why do I get "Address family not supported" errors when playing with IPv6?</para></question> -<answer> - -<para>IPv6 is only fully supported and available right from the start -beginning with Windows Vista and Windows Server 2008.</para> - -<para>The previous generation of Windows, -Windows XP and Windows Server 2003, only support IPv6 on an "experimental" -basis. On these Windows versions, the IPv6 TCP/IP stack is not installed -automatically, rather the system administrator has to install it manually. -Unless this has already been done on your machine, your machine is not -IPv6-capable and that's why you see the "Address family not supported" -error message. Note, however, that the IPv6 stack on these systems -don't fully support all features of IPv6.</para> - -<para>There's also a very experimental IPv6 stack for Windows 2000, and -Cygwin will try its best to support it, but it's not recommended to install -it. Windows NT4 or older never saw IPv6 at all.</para> - -<para>For more information about IPv6 on Windows and how to install the -IPv6 stack, see the <ulink url="http://www.microsoft.com/technet/network/ipv6/ipv6faq.mspx">Microsoft TechNet IPv6 FAQ article</ulink> -</para></answer></qandaentry> - -<qandaentry id="faq.using.bloda"> -<question><para>What applications have been found to interfere with Cygwin?</para></question> -<answer> - -<para>From time to time, people have reported strange failures and problems in -Cygwin and Cygwin packages that seem to have no rational explanation. Among -the most common symptoms they report are fork failures, memory leaks, and file -access denied problems. These problems, when they have been traced, often appear -to be caused by interference from other software installed on the same PC. Security -software, in particular, such as anti-virus, anti-spyware, and firewall applications, -often implements its functions by installing hooks into various parts of the system, -including both the Explorer shell and the underlying kernel. Sometimes these hooks -are not implemented in an entirely transparent fashion, and cause changes in the -behaviour which affect the operation of other programs, such as Cygwin. -</para> -<para>Among the software that has been found to cause difficulties are:</para> -<para><itemizedlist> -<listitem><para>Sonic Solutions burning software containing DLA component (when DLA disabled)</para></listitem> -<listitem><para>Norton/McAfee/Symantec antivirus or antispyware</para></listitem> -<listitem><para>Logitech webcam software with "Logitech process monitor" service</para></listitem> -<listitem><para>Kerio, Agnitum or ZoneAlarm Personal Firewall</para></listitem> -<listitem><para>Iolo System Mechanic/AntiVirus/Firewall</para></listitem> -<listitem><para>LanDesk</para></listitem> -<listitem><para>Windows Defender </para></listitem> -<listitem><para>Embassy Trust Suite fingerprint reader software wxvault.dll</para></listitem> -<listitem><para>NOD32 Antivirus</para></listitem> -<listitem><para>ByteMobile laptop optimization client</para></listitem> -<listitem><para>Earthlink Total-Access</para></listitem> -<listitem><para>Spybot S&D TeaTimer</para></listitem> -<listitem><para>AR Soft RAM Disk</para></listitem> -<listitem><para>ATI Catalyst drivers</para></listitem> -<listitem><para>Windows LiveOneCare</para></listitem> -<listitem><para>Webroot Spy Sweeper with Antivirus</para></listitem> -<listitem><para>COMODO Firewall Pro</para></listitem> -<listitem><para>PC Tools Spyware Doctor</para></listitem> -<listitem><para>Avira AntiVir</para></listitem> -<listitem><para>Panda Internet Security</para></listitem> -<listitem><para>BitDefender</para></listitem> -<listitem><para>Google Desktop</para></listitem> -<listitem><para>Sophos Anti-Virus 7</para></listitem> -<listitem><para>Bufferzone from Trustware</para></listitem> -</itemizedlist></para> -<para>Sometimes these problems can be worked around, by temporarily or partially -disabling the offending software. For instance, it may be possible to disable -on-access scanning in your antivirus, or configure it to ignore files under the -Cygwin installation root. Often, unfortunately, this is not possible; even disabling -the software may not work, since many applications that hook the operating system -leave their hooks installed when disabled, and simply set them into what is intended -to be a completely transparent pass-through mode. Sometimes this pass-through is not -as transparent as all that, and the hooks still interfere with Cygwin; in these cases, -it may be necessary to uninstall the software altogether to restore normal operation. -</para> -<para>Some of the symptoms you may experience are:</para> -<para><itemizedlist> -<listitem> -<para>Random fork() failures.</para> -<para>Caused by hook DLLs that load themselves into every process in the -system. POSIX fork() semantics require that the memory map of the child process -must be an exact duplicate of the parent process' layout. If one of these DLLs -loads itself at a different base address in the child's memory space as compared -to the address it was loaded at in the parent, it can end up taking the space that -belonged to a different DLL in the parent. When Cygwin can't load the original -DLL at that same address in the child, the fork() call has to fail. -</para> -</listitem> -<listitem> -<para>File access problems.</para> -<para>Some programs (e.g., virus scanners with on-access scanning) scan or -otherwise operate on every file accessed by all the other software running on -your computer. In some cases they may retain an open handle on the file even -after the software that is really using the file has closed it. This has been -known to cause operations such as deletes, renames and moves to fail with -access denied errors. In extreme cases it has been known for scanners to leak -file handles, leading to kernel memory starvation. -</para> -</listitem> -<listitem> -<para>Networking issues</para> -<para>Firewall software sometimes gets a bit funny about Cygwin. It's not -currently understood why; Cygwin only uses the standard Winsock2 API, but -perhaps in some less-commonly used fashion that doesn't get as well tested -by the publishers of firewalls. Symptoms include mysterious failures to -connect, or corruption of network data being sent or received.</para> -</listitem> -<listitem> -<para>Memory and/or handle leaks</para> -<para>Some applications that hook into the Windows operating system exhibit -bugs when interacting with Cygwin that cause them to leak allocated memory -or other system resources. Symptoms include complaints about out-of-memory -errors and even virtual memory exhaustion dialog boxes from the O/S; it is -often possible to see the excess memory allocation using a tool such as -Task Manager or Sysinternals' Process Explorer, although interpreting the -statistics they present is not always straightforward owing to complications -such as virtual memory paging and file caching.</para> -</listitem> -</itemizedlist></para> -</answer></qandaentry> diff --git a/winsup/doc/faq-what.xml b/winsup/doc/faq-what.xml deleted file mode 100644 index 35bf9c2ca..000000000 --- a/winsup/doc/faq-what.xml +++ /dev/null @@ -1,156 +0,0 @@ -<!-- faq-what.xml --> -<qandaentry id="faq.what"> -<question><para>What is it?</para></question> -<answer> - -<para>The Cygwin tools are ports of the popular GNU development tools for -Microsoft Windows. They run thanks to the Cygwin library which -provides the POSIX system calls and environment these programs expect. -</para> -<para>With these tools installed, it is possible to write Windows console -or GUI applications that make use of significant parts of the POSIX API. -As a result, it is possible to easily port many Unix programs without the need -for extensive changes to the source code. This includes configuring -and building most of the available GNU software (including the packages -included with the Cygwin development tools themselves) as well as lots -of BSD tools and packages (including OpenSSH). Even if -the development tools are of little to no use to you, you may have -interest in the many standard POSIX utilities provided with the package. -They can be used from one of the provided Unix shells like bash, tcsh or zsh, -as well as from the standard Windows command shell if you have to for some -sad reason. -</para> -</answer></qandaentry> - -<qandaentry id="faq.what.supported"> -<question><para>What versions of Windows are supported?</para></question> -<answer> - -<para>Cygwin can be expected to run on all modern 32 bit versions of -Windows, except Windows CE and Windows 95/98/Me. This includes, as of the -time of writing this, Windows NT4, Windows 2000, Windows XP, Windows Server -2003, Windows Vista, Windows Server 2008, Windows 7, as well as the -WOW64 32 bit environment on released 64 bit versions of Windows -(XP/2003/Vista/2008/7/2008 R2). -As far as we know no one is working on a native 64 bit version of Cygwin. -Since Cygwin is a community-supported free software project, patches to -provide support for other versions would be thoughtfully considered. -Paid support contracts or enhancements are available through Red Hat. For -information about getting a Red Hat support contract, see -<ulink url="http://cygwin.com/license.html" />. -</para> -<para>Keep in mind that Cygwin can only do as much as the underlying OS -supports. Because of this, Cygwin will behave differently, and -exhibit different limitations, on the various versions of Windows. -</para> -</answer></qandaentry> - -<qandaentry id="faq.what.where"> -<question><para>Where can I get it?</para></question> -<answer> - -<para>The home page for the Cygwin project is <ulink url="http://cygwin.com/">http://cygwin.com/</ulink>. -There you should find everything you need for Cygwin, including links -for download and setup, a current list of mirror sites, a User's -Guide, an API Reference, mailing lists and archives, and additional -ported software. -</para> -<para>You can find documentation for the individual GNU tools typically -as man pages or info pages as part of the Cygwin net distribution. -Additionally you can get the latest docs at -<ulink url="http://www.gnu.org/manual/" />. (You should read GNU manuals from a -local mirror. Check <ulink url="http://www.gnu.org/server/list-mirrors.html" /> -for a list of them.) -</para> -</answer></qandaentry> - -<qandaentry id="faq.what.free"> -<question><para>Is it free software?</para></question> -<answer> - -<para>Yes. Parts are GNU software (gcc, gas, ld, etc...), parts are covered -by the standard X11 license, some of it is public domain, some of -it was written by Red Hat (or the former Cygnus Solutions) and placed under -the GPL. None of it is shareware. You don't have to pay anyone to use it -but you should be sure to read the copyright section of the FAQ for more -information on how the GNU General Public License may affect your use of -these tools. -</para> -<para>In particular, if you intend to port a proprietary (non-GPL'd) -application using Cygwin, you will need the proprietary-use license -for the Cygwin library. This is available for purchase from Red Hat; -please visit <ulink url="http://cygwin.com/license.html" /> for more -information. All other questions should be sent to the public project -mailing list cygwin@cygwin.com. -</para> -<para>Note that when we say "free" we mean freedom, not price. The goal of -such freedom is that the people who use a given piece of software -should be able to change it to fit their needs, learn from it, share -it with their friends, etc. The Cygwin license allows you those -freedoms, so it is free software. -</para> -</answer></qandaentry> - -<qandaentry id="faq.what.version"> -<question><para>What version of Cygwin <emphasis>is</emphasis> this, anyway?</para></question> -<answer> - -<para>To find the version of the Cygwin DLL installed, you can use -<filename>uname</filename> as on Linux or <filename>cygcheck</filename>. Refer to each command's -<literal>--help</literal> output and the <ulink url='http://cygwin.com/cygwin-ug-net/'>Cygwin User's Guide</ulink> for more information. -</para> -<para>If you are looking for the version number for the whole Cygwin -release, there is none. Each package in the Cygwin release has its own -version. The packages in Cygwin are continually improving, thanks to -the efforts of net volunteers who maintain the Cygwin binary ports. -Each package has its own version numbers and its own release process. -</para> -<para>So, how do you get the most up-to-date version of Cygwin? Easy. Just -download the Cygwin Setup program from -<ulink url='http://cygwin.com/setup.exe'>http://cygwin.com/setup.exe</ulink>. This program will handle the task -of updating the packages on your system to the latest version. For -more information about using Cygwin's <filename>setup.exe</filename>, see -<ulink url='http://cygwin.com/cygwin-ug-net/setup-net.html'>Setting Up Cygwin</ulink> -in the Cygwin User's Guide. -</para></answer></qandaentry> - -<qandaentry id="faq.what.who"> -<question><para>Who's behind the project?</para></question> -<answer> - -<para><emphasis role='bold'>(Please note that if you have cygwin-specific -questions, all of these people will appreciate it if you use the cygwin -mailing lists rather than sending personal email.)</emphasis> -</para> -<para> -Christopher Faylor (cgf) is one of the project leads. Chris works for -Netapp but all of his Cygwin activities occur on his own time. He is -most notably responsible for the support of signal handling and -fork/exec in Cygwin. He also administer's the site which hosts the -cygwin web site and release. -</para> -<para> -Corinna Vinschen (corinna) is the other project lead. Corinna is a -senior Red Hat engineer. Corinna is responsible for such important -subsystems as security and networking and has recently added support to -Cygwin for wide characters, increased path length, IPv6, advisory -file locking and more. -</para> -<para> -Yaakov Selkowitz is the Cygwin/X coordinator. Jon Turney serves on the -Cygwin/X team as a developer. -</para> -<para> -The Cygwin setup project is currently maintained by a group of people, most notably, Brian Dessent (brian) and Dave Korn (dave.korn). -</para> -<para>Please note that all of us working on Cygwin try to -be as responsive as possible and deal with patches and questions as we -get them, but realistically we don't have time to answer all of the -email that is sent to the main mailing list. Making Net releases of the -Win32 tools and helping people on the Net out is not our primary job -function, so some email will have to go unanswered. -</para> -<para>Many thanks to everyone using the tools for their many contributions in -the form of advice, bug reports, and code fixes. Keep them coming! -</para></answer></qandaentry> - diff --git a/winsup/doc/faq.xml b/winsup/doc/faq.xml deleted file mode 100644 index 2db63d8ba..000000000 --- a/winsup/doc/faq.xml +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version='1.0'?> -<!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.2//EN' - "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ - <!-- see http://www.unicode.org/charts/PDF/U0080.pdf --> - <!ENTITY pound "£"> - <!ENTITY brokenpipe "¦"> - - <!-- all the files --> - <!ENTITY FAQ-WHAT SYSTEM "faq-what.xml"> - <!ENTITY FAQ-SETUP SYSTEM "faq-setup.xml"> - <!ENTITY FAQ-RESOURCES SYSTEM "faq-resources.xml"> - <!ENTITY FAQ-USING SYSTEM "faq-using.xml"> - <!ENTITY FAQ-API SYSTEM "faq-api.xml"> - <!ENTITY FAQ-PROGRAMMING SYSTEM "faq-programming.xml"> -]> - -<article id="faq-nochunks" lang="en"> - <articleinfo> - <title>Cygwin FAQ</title> - </articleinfo> - -<qandaset> -<?dbhtml toc="1"?> - -<qandadiv id="faq.about"> -<title>About Cygwin</title> -&FAQ-WHAT; -</qandadiv> - -<qandadiv id="faq.setup"> -<title>Setting up Cygwin</title> -&FAQ-SETUP; -</qandadiv> - -<qandadiv id="faq.resources"> -<title>Further Resources</title> -&FAQ-RESOURCES; -</qandadiv> - -<qandadiv id="faq.using"> -<title>Using Cygwin</title> -&FAQ-USING; -</qandadiv> - -<qandadiv id="faq.api"> -<title>Cygwin API Questions</title> -&FAQ-API; -</qandadiv> - -<qandadiv id="faq.programming"> -<title>Programming Questions</title> -&FAQ-PROGRAMMING; -</qandadiv> - -<qandadiv id="faq.copyright"> -<title>Copyright</title> - -<qandaentry id="faq.what.copyright"> -<question><para>What are the copyrights?</para></question> -<answer> - -<para>Please see -<ulink url="http://cygwin.com/license.html" /> for more information -about Cygwin copyright and licensing. -</para> - -</answer></qandaentry> -</qandadiv> -</qandaset> - -</article> diff --git a/winsup/doc/fhandler-tut.txt b/winsup/doc/fhandler-tut.txt deleted file mode 100644 index 00a3b4b94..000000000 --- a/winsup/doc/fhandler-tut.txt +++ /dev/null @@ -1,94 +0,0 @@ -fhandler tutorial - -This document will show how to add a new "fhandler" to cygwin, by -showing an example of /dev/zero. - -Files to note: - -fhandler.h - must define a new derived class here and FH_* -devices.in - to notice "/dev/zero" and mark it -fhandler_zero.cc - new -dtable.cc - to create the fhandler instance - -OK, first we have to define what this new fhandler will do. In our -example case, we're going to implement the unix "/dev/zero" device, -which has the following characteristics: - -* writes to /dev/zero are silently discarded -* reads from /dev/zero return all zero bytes -* mmap()ing /dev/zero maps a chunk of zero'd out memory. - -Since windows doesn't have a device that acts like this, we'll be -simulating everything. Thus: - -* writes simply return a success status -* reads memset() the buffer and return success -* we take advantage of the fact that CreateFileMapping can take a - handle of -1, which (1) maps swap memory, and (2) zeros it out for - us (at least, on NT). - -OK, let's start with devices.h. - -We have to create a new entry in the enum fh_devices. The new -devices must get a major and a minor ID. As a rule of thumb, just -copy the ones that are used on a linux system. - -Now, let's continue with fhandler.h. - -First, update the fhandler_union near the end of the file with a -line for the new device. Use existing members, in this case __dev_null -as a template. This union is sorted alphabetically. - -Earlier in that file, we'll copy fhandler_dev_null and edit it to be -fhandler_dev_zero. I chose that one because it's small, but we'll add -more members as we go (since we're simulating the whole thing). In -fact, let's copy the I/O methods from fhandler_windows since we'll -need all those anyway, even though we'll go through the full list -later. - -OK, next we need to edit devices.in. There is a section where each device -is listed with its cygwin path, its structure and its windows path. -"/dev/zero", FH_ZERO, "\\dev\\zero" -This is needed to recognize when the user is trying to open "/dev/zero". -You have to build devices.cc from devices.in now. -There is a script 'gendevices' in the winsup/cygwin directory which may -be called at some time in the future if you use 'make' to build the DLL. -This should rebuild the devices.cc file. You have to have shilka -available to do that; this is part of the cygwin cocom package. - -To go along with that change, we'll need to change dtable.cc. Look for -FH_NULL and add a case for FH_ZERO as well. - -Now we get to fhandler_zero.cc itself. Create the empty file and copy -the "usual" header/copyright/includes from some other fhandler_*.cc -source file. Also, edit Makefile.in to build this new file. Add one -new entry to DLL_OFILES, and a new line for the winsup.h dependencies. - -Since we changed fhandler.h, when you type "make" it will rebuild -everything. Go ahead and do that when you get a chance to let it run, -since we're not changing the headers any more. Note that you won't be -able to link the new dll, as we haven't added all the methods for the -new fhandler class yet, but at least you'll get a lot of compilation -out of the way. - -Next we start adding in the fhandler methods themselves. - -Constructor: This takes a name, and all we do is pass that name back -to the base class, along with the FH_ZERO value. We call set_cb -because all fhandlers call this (it's for exec to copy the fd). - -open: we override the one that takes a name because there are no real -windows devices like /dev/zero, but we ignore the name. We call -set_flags to save the flags. - -write: writes are discarded; we return success. - -read: reads read NUL bytes, so fill the buffer with NULs and return -success. - -lseek/close: just return success. - -dump: this is just for debugging, so we just print something. - -select_*: we don't support this yet, see the myriad examples in -select.cc for examples. The base fhandler's methods will do for now. diff --git a/winsup/doc/filemodes.sgml b/winsup/doc/filemodes.sgml deleted file mode 100644 index 2a644db51..000000000 --- a/winsup/doc/filemodes.sgml +++ /dev/null @@ -1,33 +0,0 @@ -<sect1 id="using-filemodes"><title>File permissions</title> - -<para>On FAT or FAT32 filesystems, files are always readable, and Cygwin -uses the DOS read-only attribute to determine if they are writable. Files are -considered to be executable if the filename ends with .bat, .com or .exe, or -if its content starts with #!. Consequently <command>chmod</command> can -only affect the "w" mode, it silently ignores actions involving the other -modes. This means that <command>ls -l</command> -needs to open and read files. It can thus be relatively slow.</para> - -<para>On NTFS, file permissions are evaluated using the Access Control -Lists (ACLs) attached to a file. This can be switched off by using the -"noacl" option to the respective mount point in the -<filename>/etc/fstab</filename> or <filename>/etc/fstab.d/$USER</filename> -file. For more information on file permissions, see - -<!-- TODO: Put the file permission stuff from ntsec here??? --> - -<xref linkend="ntsec"></xref>. -</para> - -<!-- TODO --> - -<para>On NFS shares, file permissions are exactly the POSIX permissions -transmitted from the server using the NFSv3 protocol, if the NFS client -is the one from Microsoft's "Services For Unix", or the one built into -Windows Vista or later. -</para> - -<para>Only the user and group ownership is not necessarily correct.</para> - -</sect1> - diff --git a/winsup/doc/gcc.sgml b/winsup/doc/gcc.sgml deleted file mode 100644 index 6a9d1055b..000000000 --- a/winsup/doc/gcc.sgml +++ /dev/null @@ -1,156 +0,0 @@ -<sect1 id="gcc"><title>Using GCC with Cygwin</title> - -<sect2 id="gcc-cons"><title>Console Mode Applications</title> - -<para>Use gcc to compile, just like under UNIX. -Refer to the GCC User's Guide for information on standard usage and -options. Here's a simple example:</para> - -<example id="gcc-hello-world"> -<title>Building Hello World with GCC</title> -<screen> -<prompt>bash$</prompt> <userinput>gcc hello.c -o hello.exe</userinput> -<prompt>bash$</prompt> <userinput>hello.exe</userinput> -Hello, World - -<prompt>bash$</prompt> -</screen> -</example> - -</sect2> - -<sect2 id="gcc-gui"><title>GUI Mode Applications</title> - -<para>Cygwin allows you to build programs with full access to the -standard Windows 32-bit API, including the GUI functions as defined in -any Microsoft or off-the-shelf publication. However, the process of -building those applications is slightly different, as you'll be using -the GNU tools instead of the Microsoft tools.</para> - -<para>For the most part, your sources won't need to change at all. -However, you should remove all __export attributes from functions -and replace them like this:</para> - -<screen> -int foo (int) __attribute__ ((__dllexport__)); - -int -foo (int i) -</screen> - -<para>The Makefile is similar to any other UNIX-like Makefile, -and like any other Cygwin makefile. The only difference is that you use -<command>gcc -mwindows</command> to link your program into a GUI -application instead of a command-line application. Here's an example:</para> - -<screen> -<![CDATA[ -myapp.exe : myapp.o myapp.res - gcc -mwindows myapp.o myapp.res -o $@ - -myapp.res : myapp.rc resource.h - windres $< -O coff -o $@ -]]> -</screen> - -<para>Note the use of <filename>windres</filename> to compile the -Windows resources into a COFF-format <filename>.res</filename> file. -That will include all the bitmaps, icons, and other resources you -need, into one handy object file. Normally, if you omitted the "-O -coff" it would create a Windows <filename>.res</filename> format file, -but we can only link COFF objects. So, we tell -<filename>windres</filename> to produce a COFF object, but for -compatibility with the many examples that assume your linker can -handle Windows resource files directly, we maintain the -<filename>.res</filename> naming convention. For more information on -<filename>windres</filename>, consult the Binutils manual. </para> - -<para> -The following is a simple GUI-mode "Hello, World!" program to help -get you started: -<screen> -/*-------------------------------------------------*/ -/* hellogui.c - gui hello world */ -/* build: gcc -mwindows hellogui.c -o hellogui.exe */ -/*-------------------------------------------------*/ -#include <windows.h> - -char glpszText[1024]; - -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); - -int APIENTRY WinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPSTR lpCmdLine, - int nCmdShow) -{ - sprintf(glpszText, - "Hello World\nGetCommandLine(): [%s]\n" - "WinMain lpCmdLine: [%s]\n", - lpCmdLine, GetCommandLine() ); - - WNDCLASSEX wcex; - - wcex.cbSize = sizeof(wcex); - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; - wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); - wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); - wcex.lpszMenuName = NULL; - wcex.lpszClassName = "HELLO"; - wcex.hIconSm = NULL; - - if (!RegisterClassEx(&wcex)) - return FALSE; - - HWND hWnd; - hWnd = CreateWindow("HELLO", "Hello", WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); - - if (!hWnd) - return FALSE; - - ShowWindow(hWnd, nCmdShow); - UpdateWindow(hWnd); - - MSG msg; - while (GetMessage(&msg, NULL, 0, 0)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - return msg.wParam; -} - -LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - PAINTSTRUCT ps; - HDC hdc; - - switch (message) - { - case WM_PAINT: - hdc = BeginPaint(hWnd, &ps); - RECT rt; - GetClientRect(hWnd, &rt); - DrawText(hdc, glpszText, strlen(glpszText), &rt, DT_TOP | DT_LEFT); - EndPaint(hWnd, &ps); - break; - case WM_DESTROY: - PostQuitMessage(0); - break; - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - return 0; -} -</screen> -</para> - -</sect2> -</sect1> diff --git a/winsup/doc/gdb.sgml b/winsup/doc/gdb.sgml deleted file mode 100644 index 42d31284c..000000000 --- a/winsup/doc/gdb.sgml +++ /dev/null @@ -1,85 +0,0 @@ - -<sect1 id="gdb"><title>Debugging Cygwin Programs</title> - -<para>When your program doesn't work right, it usually has a "bug" in -it, meaning there's something wrong with the program itself that is -causing unexpected results or crashes. Diagnosing these bugs and -fixing them is made easy by special tools called -<emphasis>debuggers</emphasis>. In the case of Cygwin, the debugger -is GDB, which stands for "GNU DeBugger". This tool lets you run your -program in a controlled environment where you can investigate the -state of your program while it is running or after it crashes. -Crashing programs sometimes create "core" files. In Cygwin these are -regular text files that cannot be used directly by GDB. -</para> - -<para>Before you can debug your program, you need to prepare your -program for debugging. What you need to do is add -<literal>-g</literal> to all the other flags you use when compiling -your sources to objects.</para> - -<example id="gdb-g"><title>Compiling with -g</title> -<screen> -<prompt>bash$</prompt> gcc -g -O2 -c myapp.c -<prompt>bash$</prompt> gcc -g myapp.c -o myapp -</screen> -</example> - -<para>What this does is add extra information to the objects (they get -much bigger too) that tell the debugger about line numbers, variable -names, and other useful things. These extra symbols and debugging -information give your program enough information about the original -sources so that the debugger can make debugging much easier for -you.</para> - -<para>To invoke GDB, simply type <command>gdb myapp.exe</command> at the -command prompt. It will display some text telling you about itself, -then <literal>(gdb)</literal> will appear to prompt you to enter -commands. Whenever you see this prompt, it means that gdb is waiting -for you to type in a command, like <command>run</command> or -<command>help</command>. Oh <literal>:-)</literal> type -<command>help</command> to get help on the commands you can type in, or -read the <citation>GDB User's Manual</citation> for a complete -description of GDB and how to use it.</para> - -<para>If your program crashes and you're trying to figure out why it -crashed, the best thing to do is type <command>run</command> and let -your program run. After it crashes, you can type -<command>where</command> to find out where it crashed, or -<command>info locals</command> to see the values of all the local -variables. There's also a <command>print</command> that lets you look -at individual variables or what pointers point to.</para> - -<para>If your program is doing something unexpected, you can use the -<command>break</command> command to tell gdb to stop your program when it -gets to a specific function or line number:</para> - -<example id="gdb-break"><title>"break" in gdb</title> -<screen> -<prompt>(gdb)</prompt> break my_function -<prompt>(gdb)</prompt> break 47 -</screen> -</example> - -<para>Now, when you type <command>run</command> your program will stop -at that "breakpoint" and you can use the other gdb commands to look at -the state of your program at that point, modify variables, and -<command>step</command> through your program's statements one at a -time.</para> - -<para>Note that you may specify additional arguments to the -<command>run</command> command to provide command-line arguments to -your program. These two cases are the same as far as your program is -concerned:</para> - -<example id="gdb-cliargs"><title>Debugging with command line arguments</title> -<screen> -<prompt>bash$</prompt> myprog -t foo --queue 47 - -<prompt>bash$</prompt> gdb myprog -<prompt>(gdb)</prompt> run -t foo --queue 47 -</screen> -</example> - - -</sect1> diff --git a/winsup/doc/legal.sgml b/winsup/doc/legal.sgml deleted file mode 100644 index 2b200e4a9..000000000 --- a/winsup/doc/legal.sgml +++ /dev/null @@ -1,30 +0,0 @@ -<legalnotice id="legal"> - -<para>Copyright © 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Red Hat, Inc.</para> - -<!-- - -<para>GNUPro™, the GNUPro™ logo, and the Red Hat -logo are trademarks of Red Hat, Inc. All other brand and product -names are trademarks of their respective owners.</para> - -<para>Permission is granted to make and distribute verbatim copies of -this documentation provided the copyright notice and this permission -notice are preserved on all copies.</para> - -<para>Permission is granted to copy and distribute modified versions -of this documentation under the conditions for verbatim copying, -provided that the entire resulting derived work is distributed under -the terms of a permission notice identical to this one.</para> - -<para>Permission is granted to copy and distribute translations of -this documentation into another language, under the above conditions -for modified versions, except that this permission notice may be -stated in a translation approved by the Free Software -Foundation.</para> - -<para>This documentation has been prepared by Red Hat, Inc. -Technical Publications.</para> ---> - -</legalnotice> diff --git a/winsup/doc/new-features.sgml b/winsup/doc/new-features.sgml deleted file mode 100644 index 140d462b0..000000000 --- a/winsup/doc/new-features.sgml +++ /dev/null @@ -1,322 +0,0 @@ -<sect1 id="ov-new1.7"><title>What's new and what changed in Cygwin 1.7</title> - -<sect2 id="ov-new1.7-os"><title>OS related changes</title> - -<screen> -- Windows 95, 98 and Me are not supported anymore. The new Cygwin 1.7 DLL - will not run on any of these systems. -</screen> - -</sect2> - -<sect2 id="ov-new1.7-file"><title>File Access related changes</title> - -<screen> -- Mount points are no longer stored in the registry. Use /etc/fstab - and /etc/fstab.d/$USER instead. Mount points created with mount(1) - are only local to the current session and disappear when the last - Cygwin process in the session exits. - -- Cygwin creates the mount points for /, /usr/bin, and /usr/lib automatically - from it's own position on the disk. They don't have to be specified in - /etc/fstab. - -- If a filename cannot be represented in the current character set, - the character will be converted to a sequence Ctrl-N + UTF-8 representation - of the character. This allows to access all files, even those not - having a valid representation of their filename in the current character - set (codepage). To always have a valid string, use the UTF-8 charset - by setting the environment variable $LANG, $LC_ALL, or $LC_CTYPE to a - valid POSIX value, for instance in Cygwin.bat like this: - - set LC_CTYPE=en_US.UTF-8 - -- PATH_MAX is now 4096. Internally, path names can be as long as the - underlying OS can handle (32K). - -- struct dirent now supports d_type, filled out with DT_REG or DT_DIR. - All other file types return as DT_UNKNOWN for performance reasons. - -- The CYGWIN environment variable options "ntsec" and "smbntsec" have - been replaced by the per-mount option "acl"/"noacl". - -- The CYGWIN environment variable option "ntea" has been removed without - substitute. - -- The CYGWIN environment variable option "check_case" has been removed - in favor of real case-sensitivity on file systems supporting it. - -- Creating filenames with special DOS characters '"', '*', ':', '<', - '>', '|' is supported. - -- Creating files with special DOS device filename components ("aux", - "nul", "prn") is supported. - -- File names are case sensitive if the OS and the underlying file system - supports it. Works on NTFS and NFS. Does not work on FAT and Samba - shares. Requires to change a registry key (see the user's guide). - Can be switched off on a per-mount base. - -- Due to the above changes, managed mounts have been removed. - -- Incoming DOS paths are always handled case-insensitive and get no POSIX - permission, as if they are mounted with noacl,posix=0 mount flags. - -- unlink(2) and rmdir(2) try very hard to remove files/directories even - if they are currently accessed or locked. This is done by utilizing - the hidden recycle bin directories and marking the files for deletion. - -- rename(2) rewritten to be more POSIX conformant. - -- Add st_birthtim member to struct stat. - -- File locking is now advisory, not mandatory anymore. The fcntl(2) and - the new lockf(2) APIs create and maintain locks with POSIX semantics, - the flock(2) API creates and maintains locks with BSD semantics. - POSIX and BSD locks are independent of each other. - -- Implement atomic O_APPEND mode. - -- New open(2) flags O_DIRECTORY, O_EXEC and O_SEARCH. - -- Make the "plain file with SYSTEM attribute set" style symlink - default again when creating symlinks. Only create Windows shortcut - style symlinks if CYGWIN=winsymlinks is set in the environment. - -- Symlinks now use UTF-16 encoding for the target filename for - better internationalization support. Cygwin 1.7 can read all old style - symlinks, but the new style is not compatible with older Cygwin releases. - -- Handle NTFS native symlinks available since Vista/2008 as symlinks - (but don't create Vista/2008 symlinks due to unfortunate OS restrictions). - -- Recognize NFS shares and handle them using native mechanisms. - Recognize and create real symlinks on NFS shares. Get correct - stat(2) information and set real mode bits on open(2), mkdir(2) - and chmod(2). - -- Recognize Netapp DataOnTap drives and fix inode number handling. - -- Recognize Samba version beginning with Samba 3.0.28a using the new - extended version information negotiated with the Samba developers. - -- List servers of all accessible domains and workgroups in // instead of - just the servers in the own domain/workgroup. - -- Support Linux-like extended attributes ([fl]getxattr, [fl]listxattr, - [fl]setxattr, [fl]removexattr). - -- New file conversion API for conversion from Win32 to POSIX path and - vice versa (cygwin_conv_path, cygwin_create_path, cygwin_conv_path_list). - -- New openat family of functions: openat, faccessat, fchmodat, fchownat, - fstatat, futimesat, linkat, mkdirat, mkfifoat, mknodat, readlinkat, renameat, - symlinkat, unlinkat. - -- Other new APIs: posix_fadvise, posix_fallocate, funopen, fopencookie, - open_memstream, open_wmemstream, fmemopen, fdopendir, fpurge, mkstemps. -</screen> - -</sect2> - -<sect2 id="ov-new1.7-net"><title>Network related changes</title> - -<screen> -- New implementation for blocking sockets and select on sockets which - is supposed to allow POSIX-compatible sharing of sockets between - threads and processes. - -- send/sendto/sendmsg now send data in 64K chunks to circumvent an - internal buffer problem in WinSock (KB 201213). - -- New send/recv option MSG_DONTWAIT. - -- IPv6 support. New API getaddrinfo, getnameinfo, freeaddrinfo, - gai_strerror, in6addr_any, in6addr_loopback. On IPv6-less systems, - replacement functions are available for IPv4. On systems with IPv6 - enabled, the underlying WinSock functions are used. While I tried - hard to get the functionality as POSIXy as possible, keep in mind that - a *fully* conformant implementation of getaddrinfo and other stuff is - only available starting with Windows Vista/2008. - -- Resolver functions (res_init, res_query, res_search, res_querydomain, - res_mkquery, res_send, dn_comp, dn_expand) are now part of Cygwin. - Applications don't have to link against minires anymore. Actually, - this *is* the former libminires.a. - -- rcmd is now implemented inside of Cygwin, instead of calling the - WinSock function. This allows rsh(1) usage on Vista/2008 and later, - which dropped this function from WinSock. - -- Define multicast structures in netinet/in.h. Note that fully - conformant multicast support is only available beginning with Vista/2008. - -- Improve get_ifconf. Redefine struct ifreq and subsequent datastructures - to be able to keep more information. Support SIOCGIFINDEX, SIOCGIFDSTADDR - and the Cygwin specific SIOCGIFFRNDLYNAM. Support real interface flags - on systems supporting them. - -- Other new APIs: bindresvport, bindresvport_sa, gethostbyname2, iruserok_sa, - rcmd_af, rresvport_af. getifaddrs, freeifaddrs, if_nametoindex, - if_indextoname, if_nameindex, if_freenameindex. - -- Add /proc/net/if_inet6. -</screen> - -</sect2> - -<sect2 id="ov-new1.7-device"><title>Device related changes</title> - -<screen> -- Reworked pipe implementation which uses overlapped IO to create - more reliable interruptible pipes and fifos. - -- The CYGWIN environment variable option "binmode" has been removed. - -- Improved fifo handling by using native Windows named pipes. - -- Detect when a stdin/stdout which looks like a pipe is really a tty. - Among other things, this allows a debugged application to recognize that - it is using the same tty as the debugger. - -- Support UTF-8 in console window. - -- In the console window the backspace key now emits DEL (0x7f) instead - of BS (0x08), Alt-Backspace emits ESC-DEL (0x1b,0x7f) instead of DEL - (0x7f), same as the Linux console and xterm. - Control-Space now emits an ASCII NUL (0x0) character. - -- Support up to 64 serial interfaces using /dev/ttyS0 - /dev/ttyS63. - -- Support up to 128 raw disk drives /dev/sda - /dev/sddx. - -- New API: cfmakeraw, posix_openpt. -</screen> - -</sect2> - -<sect2 id="ov-new1.7-posix"><title>Other POSIX related changes</title> - -<screen> -- A lot of character sets are supported now via a call to setlocale(). - The setting of the environment variables $LANG, $LC_ALL or $LC_CTYPE will - be used. For instance, setting $LANG to "de_DE.ISO-8859-15" before - starting a Cygwin session will use the ISO-8859-15 character set in - the entire session. UTF-8 is supported as well, as in "en_US.UTF-8". - - The full list of supported character sets: "ASCII", "ISO-8859-x" with x - in 1-16, except 12, "UTF-8", Windows codepages "CPxxx", with xxx in - (437, 720, 737, 775, 850, 852, 855, 857, 858, 862, 866, 874, 1125, - 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258), "KOI8-R", "KOI8-U", - "SJIS", "GBK", "eucJP", "eucKR", and "Big5". The leading language and - territory part (en_US, for instance) is not used by Cygwin yet, but is - required for POSIX compatibility. - -- Allow multiple concurrent read locks per thread for pthread_rwlock_t. - -- Implement pthread_kill(thread, 0) as per POSIX. - -- New API for POSIX IPC: - Named semaphores: sem_open, sem_close, sem_unlink. - Message queues: mq_open, mq_getattr, mq_setattr, mq_notify, mq_send, - mq_timedsend, mq_receive, mq_timedreceive, mq_close, mq_unlink. - Shared memory: shm_open, shm_unlink. - -- Only declare expected functions in <strings.h>, don't include - <string.h> from here. - -- Support for WCONTINUED, WIFCONTINUED() added to waitpid and wait4. - -- New APIs: _Exit, confstr, insque, remque, sys_sigabbrev, - posix_madvise, posix_memalign, reallocf, - exp10, exp10f, pow10, pow10f, lrint, lrintf, rint, rintf, llrint, llrintf, - llrintl, lrintl, rintl, - mbsnrtowcs, strcasestr, stpcpy, stpncpy, wcpcpy, wcpncpy, wcsnlen, - wcsnrtombs, wcsftime, wcstod, wcstof, wcstoimax, wcstok, wcstol, wcstoll, - wcstoul, wcstoull, wcstoumax, wcsxfrm, wcscasecmp, wcsncasecmp, - fgetwc, fgetws, fputwc, fputws, fwide, getwc, getwchar, putwc, putwchar, - ungetwc, asnprintf, dprintf, vasnprintf, vdprintf, - wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf, - wscanf, fwscanf, swscanf, vwscanf, vfwscanf, vswscanf. -</screen> - -</sect2> - -<sect2 id="ov-new1.7-sec"><title>Security related changes</title> - -<screen> -- Getting a domain user's groups is hopefully more bulletproof now. - -- Cygwin now comes with a real LSA authentication package. This must - be manually installed by a privileged user using the /bin/cyglsa-config - script. The advantages and disadvantages are noted in - http://cygwin.com/ml/cygwin-developers/2006-11/msg00000.html - -- Cygwin now allows storage and use of user passwords in a hidden area of - the registry. This is tried first when Cygwin is called by privileged - processes to switch the user context. This allows, for instance, - ssh public key sessions with full network credentials to access shares - on other machines. - -- New options have been added to the mkpasswd and mkgroup tools to - ease use in multi-machine and multi-domain environments. The existing - options have a slightly changed behaviour. -</screen> - -</sect2> - -<sect2 id="ov-new1.7-misc"><title>Miscellaneous</title> - -<screen> -- New ldd utility, similar to Linux. - -- New link libraries libdl.a, libresolve.a, librt.a. - -- Fallout from the long path names: If the current working directory is - longer than 260 bytes, or if the current working directory is a virtual - path (like /proc, /cygdrive, //server), don't call native Win32 programs - since they don't understand these paths. - -- On the first usage of a DOS path (C:\foo, \\foo\bar), the Cygwin DLL - emits a scary warning that DOS paths shouldn't be used. This warning - may be disabled via the new CYGWIN=nodosfilewarning setting. - -- The CYGWIN environment variable option "server" has been removed. - Cygwin automatically uses cygserver if it's available. - -- Allow environment of arbitrary size instead of a maximum of 32K. - -- Don't force uppercase environment when started from a non-Cygwin process. - Except for certain Windows and POSIX variables which are always uppercased, - preserve environment case. Switch back to old behaviour with the new - CYGWIN=upcaseenv setting. - -- Detect and report a missing DLL on process startup. - -- Add /proc/registry32 and /proc/registry64 paths to access 32 bit and - 64 bit registry on 64 bit systems. - -- Add the ability to distinguish registry keys and registry values with the - same name in the same registry subtree. The key is called "foo" and the - value will be called "foo%val" in this case. - -- Align /proc/cpuinfo more closly to Linux content. - -- Add /proc/$PID/mounts entries and a symlink /proc/mounts pointing to - /proc/self/mounts as on Linux. - -- Optimized strstr and memmem implementation. - -- Remove backwards compatibility with old signal masks. (Some *very* old - programs which use signal masks may no longer work correctly). - -- Cygwin now exports wrapper functions for libstdc++ operators new and - delete, to support the toolchain in implementing full C++ standards - conformance when working with shared libraries. - -</screen> - -</sect2> - -</sect1> - diff --git a/winsup/doc/ntsec.sgml b/winsup/doc/ntsec.sgml deleted file mode 100644 index 89006e335..000000000 --- a/winsup/doc/ntsec.sgml +++ /dev/null @@ -1,890 +0,0 @@ -<sect1 id="ntsec"><title>Using Windows security in Cygwin</title> - -<para>This section discusses how the Windows security model is -utilized in Cygwin to implement POSIX-like permissions, as well as how -the Windows authentication model is used to allow cygwin applications -to switch users in a POSIX-like fashion.</para> - -<para>The setting of POSIX-like file and directory permissions is -controlled by the <link linkend="mount-table">mount</link> option -<literal>(no)acl</literal> which is set to <literal>acl</literal> by -default.</para> - -<para>We start with a short overview. Note that this overview must -be necessarily short. If you want to learn more about the Windows security -model, see the <ulink url="http://msdn.microsoft.com/en-us/library/aa374860(VS.85).aspx">Access Control</ulink> article in MSDN documentation.</para> - -<para>POSIX concepts and specificially the POSIX security model are not -discussed here, but assumed to be understood by the reader. If you -don't know the POSIX security model, search the web for beginner -documentation.</para> - -<sect2 id="ntsec-common"><title>Overview</title> - -<para>In the Windows security model, almost any "object" is securable. -"Objects" are files, processes, threads, semaphores, etc.</para> - -<para>Every object has a data structure attached, called a "security -descriptor" (SD). The SD contains all information necessary to control -who can access an object, and to determine what they are allowed to do -to or with it. The SD of an object consists of five parts:</para> - -<itemizedlist spacing="compact"> -<listitem><para>Flags which control several aspects of this SD. This is -not discussed here.</para></listitem> -<listitem><para>The SID of the object owner.</para></listitem> -<listitem><para>The SID of the object owner group.</para></listitem> -<listitem><para>A list of "Access Control Entries" (ACE), called the -"Discretionary Access Control List" (DACL).</para></listitem> -<listitem><para>Another list of ACEs, called the "Security Access Control List" -(SACL), which doesn't matter for our purpose. We ignore it here.</para></listitem> -</itemizedlist> - -<para>Every ACE contains a so-called "Security IDentifier" (SID) and -other stuff which is explained a bit later. Let's talk about the SID first. -</para> - -<para>A SID is a unique identifier for users, groups, computers and -Active Directory (AD) domains. SIDs are basically comparable to POSIX -user ids (UIDs) and group ids (GIDs), but are more complicated because -they are unique across multiple machines or domains. A SID is a -structure of multiple numerical values. There's a convenient convention -to type SIDs, as a string of numerical fields separated by hyphen -characters. Here's an example:</para> - -<para>SID of a machine "foo":</para> - -<screen> - S-1-5-21-165875785-1005667432-441284377 -</screen> - -<para>SID of a user "johndoe" of the system "foo":</para> - -<screen> - S-1-5-21-165875785-1005667432-441284377-1023 -</screen> - -<para>The first field is always "S", which is just a notational convention -to show that this is a SID. The second field is the version number of -the SID structure, So far there exists only one version of SIDs, so this -field is always 1. The third and fourth fields represent the "authority" -which can be thought of as a type or category of SIDs. There are a -couple of builtin accounts and accounts with very special meaning which -have certain well known values in these third and fourth fields. -However, computer and domain SIDs always start with "S-1-5-21". The -next three fields, all 32 bit values, represent the unique 96 bit -identifier of the computer system. This is a hopefully unique value all -over the world, but in practice it's sufficient if the computer SIDs are -unique within a single Windows network.</para> - -<para>As you can see in the above example, SIDs of users (and groups) -are identical to the computer SID, except for an additional part, the -so-called "relative identifier" (RID). So the SID of a user is always -uniquely attached to the system on which the account has been generated.</para> - -<para>It's a bit different in domains. The domain has its own SID, and -that SID is identical to the SID of the first domain controller, on -which the domain is created. Domain user SIDs look exactly like the -computer user SIDs, the leading part is just the domain SID and the RID -is created when the user is created.</para> - -<para>Ok, consider you created a new domain "bar" on some new domain -controller and you would like to create a domain account "johndoe":</para> - -<para>SID of a domain "bar.local":</para> - -<screen> - S-1-5-21-186985262-1144665072-740312968 -</screen> - -<para>SID of a user "johndoe" in the domain "bar.local":</para> - -<screen> - S-1-5-21-186985262-1144665072-740312968-1207 -</screen> - -<para>So you now have two accounts called johndoe, one account -created on the machine "foo", one created in the domain "bar.local". -Both have different SIDs and not even the RID is the same. How do -the systems know it's the same account? After all, the name is -the same, right? The answer is, these accounts are <emphasis -role='bold'>not</emphasis> identical. All machines on the network will -treat these SIDs as identifying two separate accounts. One is -"FOO\johndoe", the other one is "BAR\johndoe" or "johndoe@bar.local". -Different SID, different account. Full stop. </para> - -<para>The last part of the SID, the so called "Relative IDentifier" (RID), -is by default used as UID and/or GID under Cygwin when you create the -<filename>/etc/passwd</filename> and <filename>/etc/group</filename> -files using the <command><link linkend="mkpasswd">mkpasswd</link></command> and <command><link linkend="mkgroup">mkgroup</link></command> -tools. Domain account UIDs and GIDs are offset by 10000 by default -which might be a bit low for very big organizations. Fortunately there's -an option in both tools to change the offset...</para> - -<para>Do you still remember the SIDs with special meaning? In offical -notation they are called "well-known SIDs". For example, POSIX has no GID -for the group of "all users" or "world" or "others". The last three rwx -bits in a unix-style permission value just represent the permissions for -"everyone who is not the owner or is member of the owning group". -Windows has a SID for these poor souls, the "Everyone" SID. Other -well-known SIDs represent circumstances under which a process is -running, rather than actual users or groups. Here are a few examples -for well-known SIDs:</para> - -<screen> -Everyone S-1-1-0 Simply everyone... -Batch S-1-5-3 Processes started via the task - scheduler are member of this group. -Interactive S-1-5-4 Only processes of users which are - logged in via an interactive - session are members here. -Authenticated Users S-1-5-11 Users which have gone through - the authentication process and - survived. Anonymously accessing - users are not incuded here. -SYSTEM S-1-5-18 A special account which has all - kinds of dangerous rights, sort of - an uber-root account. -</screen> - -<para>For a full list please refer to the MSDN document <ulink -url="http://msdn.microsoft.com/en-us/library/aa379649.aspx">Well-known -SIDs</ulink>. The Cygwin package called "csih" provides a tool, -/usr/lib/csih/getAccountName.exe, which can be used to print the -(possibly localized) name for the various well-known SIDS.</para> - -<para>Naturally, well-known SIDs are the same on each machine, so they are -not unique to a machine or domain. They have the same meaning across -the Windows network.</para> - -<para>Additionally, there are a couple of well-known builtin groups, -which have the same SID on every machine and which have certain user -rights by default:</para> - -<screen> -administrators S-1-5-32-544 -users S-1-5-32-545 -guests S-1-5-32-546 -... -</screen> - -<para>For instance, every account is usually member in the "Users" -group. All administrator accounts are member of the "Administrators" -group. That's all about it as far as single machines are involved. In -a domain environment it's a bit more tricky. Since these SIDs are not -unique to a machine, every domain user and every domain group can be a -member of these well known groups. Consider the domain group "Domain -Admins". This group is by default in the "Administrators" group. Let's -assume the above computer called "foo" is a member machine of the domain -"bar.local". If you stick the user "BAR\johndoe" into the group "Domain -Admins", this guy will automatically be a member of the administrators -group on "foo" when logging on to "foo". Neat, isn't it?</para> - -<para>Back to ACE and ACL. POSIX is able to create three different -permissions, the permissions for the owner, for the group and for the -world. In contrast the Windows ACL has a potentially infinite number of -members... as long as they fit into 64K. Every member is an ACE. -ACE consist of three parts:</para> - -<itemizedlist spacing="compact"> -<listitem><para>The type of the ACE (allow ACE or deny ACE).</para></listitem> -<listitem><para>Permission bits, 32 of them.</para></listitem> -<listitem><para>The SID for which the permissions are allowed or denied.</para></listitem> -</itemizedlist> - -<para>The two (for us) important types of ACEs are the "access allowed -ACE" and the "access denied ACE". As the names imply, the allow ACE -tells the system to allow the given permissions to the SID, the deny ACE -results in denying the specific permission bits.</para> - -<para>The possible permissions on objects are more detailed than in -POSIX. For example, the permission to delete an object is different -from the permission to change object data, and even changing object data -can be separated into different permission bits for different kind of -data. But there's a problem with the definition of a "correct" ACL -which disallows mapping of certain POSIX permissions cleanly. See -<xref linkend="ntsec-mapping"></xref>.</para> - -<para>POSIX is able to create only three different permissions? Not quite. -Newer operating systems and file systems on POSIX systems also provide -access control lists. Two different APIs exist for accessing these -ACLs, the Solaris API and the POSIX API. Cygwin implements the Solaris -API to access Windows ACLs in a Unixy way. At the time of writing this -document, the Cygwin implementation of the Solaris API isn't quite up -to speed. For instance, it doesn't handle access denied ACEs gracefully. -So, use with care. Online man pages for the Solaris ACL API can be -found on <ulink url="http://docs.sun.com">http://docs.sun.com</ulink>.</para> - -</sect2> - -<sect2 id="ntsec-files"><title id="ntsec-files.title">File permissions</title> - -<para>On NTFS and if the <literal>noacl</literal> mount option is not -specified for a mount point, Cygwin sets file permissions as in POSIX. -Basically this is done by defining a SD with the matching owner and group -SIDs, and a DACL which contains ACEs for the owner, the group and for -"Everyone", which represents what POSIX calls "others".</para> - -<para>To use Windows security correctly, Cygwin depends on the files -<filename>/etc/passwd</filename> and <filename>/etc/group</filename>. -These files define the translation between the Cygwin uid/gid and the -Windows SID. The SID is stored in the pw_gecos field in -<filename>/etc/passwd</filename>, and in the gr_passwd field in -<filename>/etc/group</filename>. Since the pw_gecos field can contain -more information than just a SID, there are some rules for the layout. -It's required that the SID is the last entry of the pw_gecos field, -assuming that the entries in pw_gecos are comma-separated. The -commands <command>mkpasswd</command> and <command>mkgroup</command> -usually do this for you.</para> - -<para>Another interesting entry in the pw_gecos field (which is also -usually created by running <command>mkpasswd</command>) is the Windows user -name entry. It takes the form "U-domain\username" and is sometimes used -by services to authenticate a user. Logging in through -<command>telnet</command> is a common scenario.</para> - -<para>A typical snippet from <filename>/etc/passwd</filename>:</para> - -<example id="ntsec-passwd"> -<title>/etc/passwd:</title> -<screen> -SYSTEM:*:18:544:,S-1-5-18:: -Administrators:*:544:544:,S-1-5-32-544:: -Administrator:unused:500:513:U-FOO\Administrator,S-1-5-21-790525478-115176313-839522115-500:/home/Administrator:/bin/bash -corinna:unused:11001:11125:U-BAR\corinna,S-1-5-21-2913048732-1697188782-3448811101-1001:/home/corinna:/bin/tcsh -</screen> -</example> - -<para>The SYSTEM entry is usually needed by services. The Administrators -entry (Huh? A group in /etc/passwd?) is only here to allow -<command>ls</command> and similar commands to print some file ownerships -correctly. Windows doesn't care if the owner of a file is a user or a -group. In older versions of Windows NT the default ownership for files -created by an administrator account was set to the group Administrators -instead of to the creating user account. This has changed, but you can -still switch to this setting on newer systems. So it's convenient to -have the Administrators group in -<filename>/etc/passwd</filename>.</para> - -<para>The really interesting entries are the next two. The Administrator -entry is for the local administrator, the corinna entry matches the corinna -account in the domain BAR. The information given in the pw_gecos field -are all we need to exactly identify an account, and to have a two way -translation, from Windows account name/SID to Cygwin account name uid and -vice versa. Having this complete information allows us to choose a Cygwin -user name and uid which doesn't have to match the Windows account at all. As -long as the pw_gecos information is available, we're on the safe side:</para> - -<example id="ntsec-passwd-tweaked"> -<title>/etc/passwd, tweaked:</title> -<screen> -root:unused:0:513:U-FOO\Administrator,S-1-5-21-790525478-115176313-839522115-500:/home/Administrator:/bin/bash -thursday_next:unused:11001:11125:U-BAR\corinna,S-1-5-21-2913048732-1697188782-3448811101-1001:/home/corinna:/bin/tcsh -</screen> -</example> - -<para> The above <filename>/etc/passwd</filename> will still work fine. -You can now login via <command>ssh</command> as the user "root", and -Cygwin dutifully translates "root" into the Windows user -"FOO\Administrator" and files owned by FOO\Administrator are shown to -have the uid 0 when calling <command>ls -ln</command>. All you do you're -actually doing as Administrator. Files created as root will be owned by -FOO\Administrator. And the domain user BAR\corinna can now happily -pretend to be Thursday Next, but will wake up sooner or later finding -out she's still actually the domain user BAR\corinna...</para> - -<para>Do I have to mention that you can also rename groups in -<filename>/etc/group</filename>? As long as the SID is present and correct, -all is well. This allows you to, for instance, rename the "Administrators" -group to "root" as well:</para> - -<example id="ntsec-group-tweaked"> -<title>/etc/group, tweaked:</title> -<screen> -root:S-1-5-32-544:544: -</screen> -</example> - -<para>Last but not least, you can also change the primary group of a user -in <filename>/etc/passwd</filename>. The only requirement is that the user -is actually a member of the new primary group in Windows. For instance, -normal users in a domain environment are members in the group "Domain Users", -which in turn belongs to the well-known group "Users". So, if it's -more convenient in your environment for the user's primary group to be -"Users", just set the user's primary group in <filename>/etc/passwd</filename> -to the Cygwin uid of "Users" (see in <filename>/etc/group</filename>, -default 545) and let the user create files with a default group ownership -of "Users".</para> - -<note><para> -If you wish to make these kind of changes to /etc/passwd and /etc/group, -do so only if you feel comfortable with the concepts. Otherwise, do not -be surprised if things break in either subtle or surprising ways! If you -do screw things up, revert to copies of <filename>/etc/passwd</filename> -and <filename>/etc/group</filename> files created by -<command>mkpasswd</command> and <command>mkgroup</command>. (Make -backup copies of these files before modifying them.) Especially, don't -change the UID or the name of the user SYSTEM. It may mostly work, but -some Cygwin applications running as a local service under that account -could suddenly start behaving strangely. -</para></note> - -</sect2> - -<sect2 id="ntsec-ids"><title id="ntsec-ids.title">Special values of user and group ids</title> - -<para>If the current user is not present in -<filename>/etc/passwd</filename>, that user's uid is set to a -special value of 400. The user name for the current user will always be -shown correctly. If another user (or a Windows group, treated as a -user) is not present in <filename>/etc/passwd</filename>, the uid of -that user will have a special value of -1 (which would be shown by -<command>ls</command> as 65535). The user name shown in this case will -be '????????'.</para> - -<para>If the current user is not present in -<filename>/etc/passwd</filename>, that user's login gid is set to a -special value of 401. The gid 401 is shown as 'mkpasswd', -indicating the command that should be run to alleviate the -situation.</para> - -<para>If another user is not present in -<filename>/etc/passwd</filename>, that user's login gid is set to a -special value of -1. If the user is present in -<filename>/etc/passwd</filename>, but that user's group is not in -<filename>/etc/group</filename> and is not the login group of that user, -the gid is set to a special value of -1. The name of this group -(id -1) will be shown as '????????'.</para> - -<para>If the current user is present in -<filename>/etc/passwd</filename>, but that user's login group is not -present in <filename>/etc/group</filename>, the group name will be shown -as 'mkgroup', again indicating the appropriate command.</para> - -<para>A special case is if the current user's primary group SID is noted -in the user's <filename>/etc/passwd</filename> entry using another group -id than the group entry of the same group SID in -<filename>/etc/group</filename>. This should be noted and corrected. -The group name printed in this case is -'passwd/group_GID_clash(PPP/GGG)', with PPP being the gid as noted -in <filename>/etc/passwd</filename> and GGG the gid as noted in -<filename>/etc/group</filename>.</para> - -<para>To summarize:</para> -<itemizedlist spacing="compact"> - -<listitem><para>If the current user doesn't show up in -<filename>/etc/passwd</filename>, it's <emphasis>group</emphasis> will -be named 'mkpasswd'.</para></listitem> - -<listitem><para>Otherwise, if the login group of the current user isn't -in <filename>/etc/group</filename>, it will be named 'mkgroup'.</para> -</listitem> - -<listitem><para>Otherwise a group not in <filename>/etc/group</filename> -will be shown as '????????' and a user not in -<filename>/etc/passwd</filename> will be shown as "????????".</para> -</listitem> - -<listitem><para>If different group ids are used for a group with the same -SID, the group name is shown as 'passwd/group_GID_clash(PPP/GGG)' with -PPP and GGG being the different group ids.</para></listitem> - -</itemizedlist> - -<para> -Note that, since the special user and group names are just indicators, -nothing prevents you from actually having a user named `mkpasswd' in -<filename>/etc/passwd</filename> (or a group named `mkgroup' in -<filename>/etc/group</filename>). If you do that, however, be aware of -the possible confusion. -</para> - -</sect2> - - -<sect2 id="ntsec-mapping"><title id="ntsec-mapping.title">The POSIX permission mapping leak</title> - -<para>As promised earlier, here's the problem when trying to map the -POSIX permission model onto the Windows permission model.</para> - -<para>There's a leak in the definition of a "correct" ACL which -disallows a certain POSIX permission setting. The official -documentation explains in short the following:</para> - -<itemizedlist spacing="compact"> -<listitem><para>The requested permissions are checked against all -ACEs of the user as well as all groups the user is member of. The -permissions given in these user and groups access allowed ACEs are -accumulated and the resulting set is the set of permissions of that -user given for that object.</para></listitem> - -<listitem><para>The order of ACEs is important. The system reads them in -sequence until either any single requested permission is denied or all -requested permissions are granted. Reading stops when this condition is -met. Later ACEs are not taken into account.</para></listitem> - -<listitem><para>All access denied ACEs <emphasis -role='bold'>should</emphasis> precede any access allowed ACE. ACLs -following this rule are called "canonical"</para></listitem> -</itemizedlist> - -<para>Note that the last rule is a preference or a definition of -correctness. It's not an absolute requirement. All Windows kernels -will correctly deal with the ACL regardless of the order of allow and -deny ACEs. The second rule is not modified to get the ACEs in the -preferred order.</para> - -<para>Unfortunately the security tab in the file properties dialog of -the Windows NT4 explorer is completely unable to deal with access denied ACEs -while the Windows 2000 and later properties dialog rearranges the order of the -ACEs to canonical order before you can read them. Thank God, the sort -order remains unchanged if one presses the Cancel button. But don't -even <emphasis role='bold'>think</emphasis> of pressing OK...</para> - -<para>Canonical ACLs are unable to reflect each possible combination -of POSIX permissions. Example:</para> - -<screen> -rw-r-xrw- -</screen> - -<para>Ok, so here's the first try to create a matching ACL, assuming -the Windows permissions only have three bits, as their POSIX counterpart: -</para> - -<screen> -UserAllow: 110 -GroupAllow: 101 -OthersAllow: 110 -</screen> - -<para>Hmm, because of the accumulation of allow rights the user may -execute because the group may execute.</para> - -<para>Second try:</para> - -<screen> -UserDeny: 001 -GroupAllow: 101 -OthersAllow: 110 -</screen> - -<para>Now the user may read and write but not execute. Better? No! -Unfortunately the group may write now because others may write.</para> - -<para>Third try:</para> - -<screen> -UserDeny: 001 -GroupDeny: 010 -GroupAllow: 001 -OthersAllow: 110 -</screen> - -<para>Now the group may not write as intended but unfortunately the user may -not write anymore, either. How should this problem be solved? According to -the canonical order a UserAllow has to follow the GroupDeny but it's -easy to see that this can never be solved that way.</para> - -<para>The only chance:</para> - -<screen> -UserDeny: 001 -UserAllow: 010 -GroupDeny: 010 -GroupAllow: 001 -OthersAllow: 110 -</screen> - -<para>Again: This works on all existing versions of Windows NT, at the -time of writing from at least NT4 up to Server 2008. Only the GUIs -aren't able (or willing) to deal with that order.</para> - -</sect2> - -<sect2 id="ntsec-setuid-overview"><title id="ntsec-setuid-overview.title">Switching the user context</title> - -<para>Since Windows XP, Windows users have been accustomed to the -"Switch User" feature, which switches the entire desktop to another user -while leaving the original user's desktop "suspended". Another Windows -feature (since Windows 2000) is the "Run as..." context menu entry, -which allows you to start an application using another user account when -right-clicking on applications and shortcuts.</para> - -<para>On POSIX systems, this operation can be performed by processes -running under the privileged user accounts (usually the "root" user -account) on a per-process basis. This is called "switching the user -context" for that process, and is performed using the POSIX -<command>setuid</command> and <command>seteuid</command> system -calls.</para> - -<para>While this sort of feature is available on Windows as well, -Windows does not support the concept of these calls in a simple fashion. -Switching the user context in Windows is generally a tricky process with -lots of "behind the scenes" magic involved.</para> - -<para>Windows uses so-called `access tokens' to identify a user and its -permissions. Usually the access token is created at logon time and then -it's attached to the starting process. Every new process within a session -inherits the access token from its parent process. Every thread can -get its own access token, which allows, for instance, to define threads -with restricted permissions.</para> - -</sect2> - -<sect2 id="ntsec-logonuser"><title id="ntsec-logonuser.title">Switching the user context with password authentication</title> - -<para>To switch the user context, the process has to request such an access -token for the new user. This is typically done by calling the Win32 API -function <command>LogonUser</command> with the user name and the user's -cleartext password as arguments. If the user exists and the password was -specified correctly, the access token is returned and either used in -<command>ImpersonateLoggedOnUser</command> to change the user context of -the current thread, or in <command>CreateProcessAsUser</command> to -change the user context of a spawned child process.</para> - -<para>Later versions of Windows define new functions in this context and -there are also functions to manipulate existing access tokens (usually -only to restrict them). Windows Vista also adds subtokens which are -attached to other access tokens which plays an important role in the UAC -(User Access Control) facility of Vista and later. However, none of -these extensions to the original concept are important for this -documentation.</para> - -<para>Back to this logon with password, how can this be used to -implement <command>set(e)uid</command>? Well, it requires modification -of the calling application. Two Cygwin functions have been introduced -to support porting <command>setuid</command> applications which only -require login with passwords. You only give Cygwin the right access -token and then you can call <command>seteuid</command> or -<command>setuid</command> as usual in POSIX applications. Porting such -a <command>setuid</command> application is illustrated by a short -example:</para> - -<screen> -<![CDATA[ -/* First include all needed cygwin stuff. */ -#ifdef __CYGWIN__ -#include <windows.h> -#include <sys/cygwin.h> -#endif - -[...] - - struct passwd *user_pwd_entry = getpwnam (username); - char *cleartext_password = getpass ("Password:"); - -[...] - -#ifdef __CYGWIN__ - /* Patch the typical password test. */ - { - HANDLE token; - - /* Try to get the access token from Windows. */ - token = cygwin_logon_user (user_pwd_entry, cleartext_password); - if (token == INVALID_HANDLE_VALUE) - error_exit; - /* Inform Cygwin about the new impersonation token. */ - cygwin_set_impersonation_token (token); - /* Cygwin is now able, to switch to that user context by setuid or seteuid calls. */ - } -#else - /* Use standard method on non-Cygwin systems. */ - hashed_password = crypt (cleartext_password, salt); - if (!user_pwd_entry || - strcmp (hashed_password, user_pwd_entry->pw_password)) - error_exit; -#endif /* CYGWIN */ - -[...] - - /* Everything else remains the same! */ - - setegid (user_pwd_entry->pw_gid); - seteuid (user_pwd_entry->pw_uid); - execl ("/bin/sh", ...); -]]> - -</screen> - -</sect2> - -<sect2 id="ntsec-nopasswd1"><title id="ntsec-nopasswd1.title">Switching the user context without password, Method 1: Create a token from scratch</title> - -<para>An unfortunate aspect of the implementation of -<command>set(e)uid</command> is the fact that the calling process -requires the password of the user to which to switch. Applications such as -<command>sshd</command> wishing to switch the user context after a -successful public key authentication, or the <command>cron</command> -application which, again, wants to switch the user without any authentication -are stuck here. But there are other ways to get new user tokens.</para> - -<para>One way is just to create a user token from scratch. This is -accomplished by using an (officially undocumented) function on the NT -function level. The NT function level is used to implement the Win32 -level, and, as such is closer to the kernel than the Win32 level. The -function of interest, <command>NtCreateToken</command>, allows you to -specify user, groups, permissions and almost everything you need to -create a user token, without the need to specify the user password. The -only restriction for using this function is that the calling process -needs the "Create a token object" user right, which only the SYSTEM user -account has by default, and which is considered the most dangerous right -a user can have on Windows systems.</para> - -<para>That sounds good. We just start the servers which have to switch -the user context (<command>sshd</command>, <command>inetd</command>, -<command>cron</command>, ...) as Windows services under the SYSTEM -(or LocalSystem in the GUI) account and everything just works. -Unfortunately that's too simple. Using <command>NtCreateToken</command> -has a few drawbacks.</para> - -<para>First of all, beginning with Windows Server 2003, -the permission "Create a token object" gets explicitly removed from -the SYSTEM user's access token, when starting services under that -account. That requires us to create a new account with this specific -permission just to run this kind of services. But that's a minor -problem.</para> - -<para>A more important problem is that using <command>NtCreateToken</command> -is not sufficient to create a new logon session for the new user. What -does that mean? Every logon usually creates a new logon session. -A logon session has a couple of attributes which are unique to the -session. One of these attributes is the fact, that Windows functions -identify the user domain and user name not by the SID of the access -token owner, but only by the logon session the process is running under.</para> - -<para>This has the following unfortunate consequence. Consider a -service started under the SYSTEM account (up to Windows XP) switches the -user context to DOMAIN\my_user using a token created directly by calling -the <command>NtCreateToken</command> function. A process running under -this new access token might want to know under which user account it's -running. The corresponding SID is returned correctly, for instance -S-1-5-21-1234-5678-9012-77777. However, if the same process asks the OS -for the user name of this SID something wierd happens. For instance, -the <command>LookupAccountSid</command> function will not return -"DOMAIN\my_user", but "NT AUTHORITY\SYSTEM" as the user name.</para> - -<para>You might ask "So what?" After all, this only <emphasis -role='bold'>looks</emphasis> bad, but functionality and permission-wise -everything should be ok. And Cygwin knows about this shortcoming so it -will return the correct Cygwin username when asked. Unfortunately this -is more complicated. Some native, non-Cygwin Windows applications will -misbehave badly in this situation. A well-known example are certain versions -of Visual-C++.</para> - -<para>Last but not least, you don't have the usual comfortable access -to network shares. The reason is that the token has been created -without knowing the password. The password are your credentials -necessary for network access. Thus, if you logon with a password, the -password is stored hidden as "token credentials" within the access token -and used as default logon to access network resources. Since these -credentials are missing from the token created with -<command>NtCreateToken</command>, you only can access network shares -from the new user's process tree by using explicit authentication, on -the command line for instance:</para> - -<screen> -bash$ net use '\\server\share' /user:DOMAIN\my_user my_users_password -</screen> - -<para>Note that, on some systems, you can't even define a drive letter -to access the share, and under some circumstances the drive letter you -choose collides with a drive letter already used in another session. -Therefore it's better to get used to accessing these shares using the UNC -path as in</para> - -<screen> -bash$ grep foo //server/share/foofile -</screen> - -</sect2> - -<sect2 id="ntsec-nopasswd2"><title id="ntsec-nopasswd2.title">Switching the user context without password, Method 2: LSA authentication package</title> - -<para>Caveat: The method described in this chapter only works starting -with Windows 2000. Windows NT4 users have to use one of the other -methods described in this document.</para> - -<para>We're looking for another way to switch the user context without -having to provide the password. Another technique is to create an -LSA authentication package. LSA is an acronym for "Local Security Authority" -which is a protected part of the operating system which only allows changes -to become active when rebooting the system after the change. Also, as soon as -the LSA encounters serious problems (for instance, one of the protected -LSA processes died), it triggers a system reboot. LSA is the part of -the OS which cares for the user logons and which also creates logon -sessions.</para> - -<para>An LSA authentication package is a DLL which has to be installed -as part of the LSA. This is done by tweaking a special registry key. -Cygwin provides such an authentication package. It has to be installed -and the machine has to be rebooted to activate it. This is the job of the -shell script <filename>/usr/bin/cyglsa-config</filename> which is part of -the Cygwin package.</para> - -<para>After running <filename>/usr/bin/cyglsa-config</filename> and -rebooting the system, the LSA authentication package is used by Cygwin -when <command>set(e)uid</command> is called by an application. The -created access token using this method has its own logon session.</para> - -<para>This method has two advantages over the <command>NtCreateToken</command> -method.</para> - -<para>The very special and very dangerous "Create a token object" user -right is not required by a user using this method. Other privileged -user rights are still necessary, especially the "Act as part of the -operating system" right, but that's just business as usual.</para> - -<para>The user is correctly identified, even by delicate native applications -which choke on that using the <command>NtCreateToken</command> method.</para> - -<para>Disadvantages? Yes, sure, this is Windows. The access token -created using LSA authentication still lacks the credentials for network -access. After all, there still hasn't been any password authentication -involved. The requirement to reboot after every installation or -deinstallation of the cygwin LSA authentication DLL is just a minor -inconvenience compared to that...</para> - -<para>Nevertheless, this is already a lot better than what we get by -using <command>NtCreateToken</command>, isn't it?</para> - -</sect2> - -<sect2 id="ntsec-nopasswd3"><title id="ntsec-nopasswd3.title">Switching the user context without password, Method 3: With password</title> - -<para>Ok, so we have solved almost any problem, except for the network -access problem. Not being able to access network shares without -having to specify a cleartext password on the command line or in a -script is a harsh problem for automated logons for testing purposes -and similar stuff.</para> - -<para>Fortunately there is a solution, but it has its own drawbacks. -But, first things first, how does it work? The title of this section -says it all. Instead of trying to logon without password, we just logon -with password. The password gets stored two-way encrypted in a hidden, -obfuscated area of the registry, the LSA private registry area. This -part of the registry contains, for instance, the passwords of the Windows -services which run under some non-default user account.</para> - -<para>So what we do is to utilize this registry area for the purpose of -<command>set(e)uid</command>. The Cygwin command <command><link -linkend="passwd">passwd</link> -R</command> allows a user to specify -his/her password for storage in this registry area. When this user -tries to login using ssh with public key authentication, Cygwin's -<command>set(e)uid</command> examines the LSA private registry area and -searches for a Cygwin specific key which contains the password. If it -finds it, it calls <command>LogonUser</command> under the hood, using -this password. If that works, <command>LogonUser</command> returns an -access token with all credentials necessary for network access.</para> - -<para>For good measure, and since this way to implement -<command>set(e)uid</command> is not only used by Cygwin but also by -Microsoft's SFU (Services for Unix), we also look for a key stored by -SFU (using the SFU command <command>regpwd</command>) and use that if it's -available.</para> - -<para>We got it. A full access token with its own logon session, with -all network credentials. Hmm, that's heaven...</para> - -<para>Back on earth, what about the drawbacks?</para> - -<para>First, adding a password to the LSA private registry area -requires administrative access. So calling <command>passwd -R</command> -as a normal user will fail! Cygwin provides a workaround for -this. If <command>cygserver</command> is started as a service running -under the SYSTEM account (which is the default way to run -<command>cygserver</command>) you can use <command>passwd -R</command> -as normal, non-privileged user as well.</para> - -<para>Second, as aforementioned, the password is two-way encrypted in a -hidden, obfuscated registry area. Only SYSTEM has access to this area -for listing purposes, so, even as an administrator, you can't examine -this area with regedit. Right? No. Every administrator can start -regedit as SYSTEM user:</para> - -<screen> -bash$ date -Tue Dec 2 16:28:03 CET 2008 -bash$ at 16:29 /interactive regedit.exe -</screen> - -<para>Additionally, if an administrator knows under which name -the private key is stored (which is well-known since the algorithms -used to create the Cygwin and SFU keys are no secret), every administrator -can access the password of all keys stored this way in the registry.</para> - -<para>Conclusion: If your system is used exclusively by you, and if -you're also the only administrator of your system, and if your system is -adequately locked down to prevent malicious access, you can safely use -this method. If your machine is part of a network which has -dedicated administrators, and you're not one of these administrators, -but you (think you) can trust your administrators, you can probably -safely use this method.</para> - -<para>In all other cases, don't use this method. You have been warned.</para> - -</sect2> - -<sect2 id="ntsec-setuid-impl"><title id="ntsec-setuid-impl.title">Switching the user context, how does it all fit together?</title> - -<para>Now we learned about four different ways to switch the user -context using the <command>set(e)uid</command> system call, but -how does <command>set(e)uid</command> really work? Which method does it -use now?</para> - -<para>The answer is, all four of them. So here's a brief overview -what <command>set(e)uid</command> does under the hood:</para> - -<itemizedlist> -<listitem> -<para>When <command>set(e)uid</command> is called, it tests if the -user context had been switched by an earlier call already, and if the -new user account is the privileged user account under which the process -had been started originally. If so, it just switches to the original -access token of the process it had been started with.</para> -</listitem> - -<listitem> -<para> -Next, it tests if an access token has been stored by an earlier call -to <command>cygwin_set_impersonation_token</command>. If so, it tests -if that token matches the requested user account. If so, the stored -token is used for the user context switch.</para> - -<para> -If not, there's no predefined token which can just be used for -the user context switch, so we have to create a new token. The order -is as follows.</para> -</listitem> - -<listitem> -<para>Check if the user has stored the logon password in the LSA -private registry area, either under a Cygwin key, or under a SFU key. -If so, use this to call <command>LogonUser</command>. If this -succeeds, we use the resulting token for the user context switch.</para> -</listitem> - -<listitem> -<para>Otherwise, check if the Cygwin-specifc LSA authentication package -has been installed and is functional. If so, use the appropriate LSA -calls to communicate with the Cygwin LSA authentication package and -use the returned token.</para> -</listitem> - -<listitem> -<para>Last chance, try to use the <command>NtCreateToken</command> call -to create a token. If that works, use this token.</para> -</listitem> - -<listitem> -<para>If all of the above fails, our process has insufficient privileges -to switch the user context at all, so <command>set(e)uid</command> -fails and returns -1, setting errno to EPERM.</para> -</listitem> -</itemizedlist> - -</sect2> - -</sect1> diff --git a/winsup/doc/overview.sgml b/winsup/doc/overview.sgml deleted file mode 100644 index 975b508dd..000000000 --- a/winsup/doc/overview.sgml +++ /dev/null @@ -1,122 +0,0 @@ -<chapter id="overview"><title>Cygwin Overview</title> - -<sect1 id="what-is-it"><title>What is it?</title> - -<para> -Cygwin is a Linux-like environment for Windows. It consists of a DLL -(<filename>cygwin1.dll</filename>), which acts as an emulation layer -providing substantial <ulink url="http://www.pasc.org/#POSIX">POSIX</ulink> -(Portable Operating System Interface) system call functionality, and a -collection of tools, which provide a Linux look and feel. The Cygwin DLL -works with all x86 and AMD64 versions of Windows NT since Windows NT 4. -The API follows the -<ulink url="http://www.opengroup.org/onlinepubs/009695399/nfindex.html">Single -Unix Specification</ulink> as much as possible, and then Linux practice. -The major differences between Cygwin and Linux is the C library -(<literal>newlib</literal> instead of <literal>glibc</literal>). -</para> -<para> -With Cygwin installed, users have access to many standard UNIX -utilities. They can be used from one of the provided shells such -as <command>bash</command> or from the Windows Command Prompt. -Additionally, programmers may write Win32 console or GUI applications -that make use of the standard Microsoft Win32 API and/or the Cygwin API. -As a result, it is possible to easily port many significant UNIX -programs without the need for extensive changes to the source code. -This includes configuring and building most of the available GNU -software (including the development tools included with the Cygwin -distribution). -</para> -</sect1> - -DOCTOOL-INSERT-ov-ex-win -DOCTOOL-INSERT-ov-ex-unix - -<sect1 id="are-free"><title>Are the Cygwin tools free software?</title> - -<para>Yes. Parts are <ulink url="http://www.gnu.org/">GNU</ulink> software -(<command>gcc</command>, <command>gas</command>, <command>ld</command>, etc.), -parts are covered by the standard -<ulink url="http://www.x.org/Downloads_terms.html">X11 license</ulink>, -some of it is public domain, some of it was written by Red Hat and placed under -the <ulink url="http://www.gnu.org/licenses/gpl.html">GNU General Public -License</ulink> (GPL). None of it is shareware. You don't have to pay anyone to -use it but you should be sure to read the copyright section of the FAQ for more -information on how the GNU GPL may affect your use of these -tools. If you intend to port a proprietary application using the Cygwin -library, you may want the Cygwin proprietary-use license. -For more information about the proprietary-use license, please go to -<ulink url="http://www.redhat.com/software/tools/cygwin/">http://www.redhat.com/software/tools/cygwin/</ulink>. -Customers of the native Win32 GNUPro should feel free to submit bug -reports and ask questions through the normal channels. All other -questions should be sent to the project mailing list -<email>cygwin@cygwin.com</email>.</para> - -</sect1> - -<sect1 id="brief-history"><title>A brief history of the Cygwin project</title> - -<note> -<para> -A historical look into the first years of Cygwin development is -Geoffrey J. Noer's 1998 paper, "Cygwin32: A Free Win32 Porting Layer for -UNIX® Applications" which can be found at the <ulink -url="http://www.usenix.org/publications/library/proceedings/usenix-nt98/technical.html"> -2nd USENIX Windows NT Symposium Online Proceedings</ulink>. -</para> -</note> -<para> -Cygwin began development in 1995 at Cygnus Solutions (now part of Red Hat, -Inc.). The first thing done was to enhance the development tools -(<command>gcc</command>, <command>gdb</command>, <command>gas</command>, -etc.) so that they could generate and interpret Win32 native -object files. -The next task was to port the tools to Win NT/9x. We could have -done this by rewriting large portions of the source to work within the -context of the Win32 API. But this would have meant spending a huge -amount of time on each and every tool. Instead, we took a -substantially different approach by writing a shared library -(the Cygwin DLL) that adds the necessary UNIX-like functionality -missing from the Win32 API (<function>fork</function>, -<function>spawn</function>, <function>signals</function>, -<function>select</function>, <function>sockets</function>, etc.). We call this -new interface the Cygwin API. Once written, it was possible to build working -Win32 tools using UNIX-hosted cross-compilers, linking against this -library.</para> - -<para>From this point, we pursued the goal of producing native tools -capable of rebuilding themselves under Windows 9x and NT (this is -often called self-hosting). Since neither OS ships with standard UNIX -user tools (fileutils, textutils, bash, etc...), we had to get the GNU -equivalents working with the Cygwin API. Most of these tools were -previously only built natively so we had to modify their configure -scripts to be compatible with cross-compilation. Other than the -configuration changes, very few source-level changes had to be -made. Running bash with the development tools and user tools in place, -Windows 9x and NT look like a flavor of UNIX from the perspective of -the GNU configure mechanism. Self hosting was achieved as of the beta -17.1 release in October 1996.</para> - -<para> -The entire Cygwin toolset was available as a monolithic install. In -April 2000, the project announced a -<ulink url="http://www.cygwin.com/ml/cygwin/2000-04/msg00269.html"> -New Cygwin Net Release</ulink> which provided the native Win32 program -<command>setup.exe</command> to install and upgrade each package -separately. Since then, the Cygwin DLL and <command>setup.exe</command> -have seen continuous development. -</para> - -<para> -The latest major improvement in this development is the 1.7 release in -2009, which dropped Windows 95/98/Me support in favor of using Windows -NT features more extensively. It adds a lot of new features like -case-sensitive filenames, NFS interoperability, IPv6 support and much -more.</para> - -</sect1> - -DOCTOOL-INSERT-highlights -DOCTOOL-INSERT-ov-new1.7 - -</chapter> diff --git a/winsup/doc/overview2.sgml b/winsup/doc/overview2.sgml deleted file mode 100644 index c80479cfb..000000000 --- a/winsup/doc/overview2.sgml +++ /dev/null @@ -1,433 +0,0 @@ -<sect1 id="ov-ex-win"> -<title>Quick Start Guide for those more experienced with Windows</title> -<para> -If you are new to the world of UNIX, you may find it difficult to -understand at first. This guide is not meant to be comprehensive, -so we recommend that you use the many available Internet resources -to become acquainted with UNIX basics (search for "UNIX basics" or -"UNIX tutorial"). -</para> -<para> -To install a basic Cygwin environment, run the -<command>setup.exe</command> program and click <literal>Next</literal> -at each page. The default settings are correct for most users. If you -want to know more about what each option means, see -<xref linkend="internet-setup"></xref>. Use <command>setup.exe</command> -any time you want to update or install a Cygwin package. If you are -installing Cygwin for a specific purpose, use it to install the tools -that you need. For example, if you want to compile C++ programs, you -need the <systemitem>gcc-g++</systemitem> package and probably a text -editor like <systemitem>nano</systemitem>. When running -<command>setup.exe</command>, clicking on categories and packages in the -package installation screen will provide you with the ability to control -what is installed or updated. -</para> -<para> -Another option is to install everything by clicking on the -<literal>Default</literal> field next to the <literal>All</literal> -category. However, be advised that this will download and install -several hundreds of megabytes of software to your computer. The best -plan is probably to click on individual categories and install either -entire categories or packages from the categories themselves. -After installation, you can find Cygwin-specific documentation in -the <literal>/usr/share/doc/Cygwin/</literal> directory. -</para> -<para> -Developers coming from a Windows background will be able to write -console or GUI executables that rely on the Microsoft Win32 API instead -of Cygwin using the -mno-cygwin option to GCC. The <command>-shared</command> -option allows to write Windows Dynamically Linked Libraries (DLLs). The -resource compiler <command>windres</command> is also provided. -</para> -</sect1> - -<sect1 id="ov-ex-unix"> -<title>Quick Start Guide for those more experienced with UNIX</title> -<para> -If you are an experienced UNIX user who misses a powerful command-line -environment, you will enjoy Cygwin. -Developers coming from a UNIX background will find a set of utilities -they are already comfortable using, including a working UNIX shell. The -compiler tools are the standard GNU compilers most people will have previously -used under UNIX, only ported to the Windows host. Programmers wishing to port -UNIX software to Windows NT will find that the Cygwin library provides -an easy way to port many UNIX packages, with only minimal source code -changes. -</para> -<para> -Note that there are some workarounds -that cause Cygwin to behave differently than most UNIX-like operating -systems; these are described in more detail in -<xref linkend="using-effectively"></xref>. -</para> -<para> -Use the graphical command <command>setup.exe</command> any time you want -to update or install a Cygwin package. This program must be run -manually every time you want to check for updated packages since Cygwin -does not currently include a mechanism for automatically detecting -package updates. -</para> -<para> -By default, <command>setup.exe</command> only installs a minimal subset of -packages. Add any other packages by clicking on the <literal>+</literal> -next to the Category name and selecting the package from the displayed -list. You may search for specfic tools by using the -<ulink url="http://cygwin.com/packages/">Setup Package Search</ulink> -at the Cygwin web site. -</para> -<para> -Another option is to install everything by clicking on the -<literal>Default</literal> field next to the <literal>All</literal> -category. However, be advised that this will download and install -several hundreds of megabytes of software to your computer. The best -plan is probably to click on individual categories and install either -entire categories or packages from the categories themselves. -After installation, you can find Cygwin-specific documentation in -the <literal>/usr/share/doc/Cygwin/</literal> directory. -</para> -<para> -For more information about what each option in -<command>setup.exe</command> means, see <xref -linkend="internet-setup"></xref>. -</para> - -</sect1> - -<sect1 id="highlights"><title>Highlights of Cygwin Functionality</title> - -<sect2 id="ov-hi-intro"><title>Introduction</title> <para>When a binary linked -against the library is executed, the Cygwin DLL is loaded into the -application's text segment. Because we are trying to emulate a UNIX kernel -which needs access to all processes running under it, the first Cygwin DLL to -run creates shared memory areas and global synchronization objects that other -processes using separate instances of the DLL can access. This is used to keep track of open file descriptors and to assist fork and exec, among other -purposes. Every process also has a per_process structure that contains -information such as process id, user id, signal masks, and other similar -process-specific information.</para> - -<para>The DLL is implemented as a standard DLL in the Win32 subsystem. Under -the hood it's using the Win32 API, as well as the native NT API, where -appropriate.</para> - -<para>Because processes run under the standard Win32 subsystem, they -can access both the UNIX compatibility calls provided by Cygwin as well as -any of the Win32 API calls. This gives the programmer complete flexibility in -designing the structure of their program in terms of the APIs used. For -example, they could write a Win32-specific GUI using Win32 API calls on top of -a UNIX back-end that uses Cygwin.</para> - -<para>The native NT API is used mainly for speed, as well as to access -NT capabilities which are useful to implement certain POSIX features, but -are hidden to the Win32 API. -</para> - -<para>Due to some restrictions in Windows, it's not always possible -to strictly adhere to existing UNIX standards like POSIX.1. Fortunately -these are mostely border cases.</para> -</sect2> - -<sect2 id="ov-hi-perm"><title>Permissions and Security</title> -<para>Windows NT includes a sophisticated security model based on Access -Control Lists (ACLs). Cygwin maps Win32 file ownership and permissions to -ACLs by default, on file systems supporting them (usually NTFS). Solaris -style ACLs and accompanying function calls are also supported. -The chmod call maps UNIX-style permissions back to the Win32 equivalents. -Because many programs expect to be able to find the -<filename>/etc/passwd</filename> and -<filename>/etc/group</filename> files, we provide <ulink -url="http://cygwin.com/cygwin-ug-net/using-utils.html">utilities</ulink> -that can be used to construct them from the user and group information -provided by the operating system.</para> - -<para>Users with Administrator rights are permitted to chown files. -With version 1.1.3 Cygwin introduced a mechanism for setting real and -effective UIDs. This is described in <xref linkend="ntsec"></xref>. As -of version 1.5.13, the Cygwin developers are not aware of any feature in -the Cygwin DLL that would allow users to gain privileges or to access -objects to which they have no rights under Windows. However there is no -guarantee that Cygwin is as secure as the Windows it runs on. Cygwin -processes share some variables and are thus easier targets of denial of -service type of attacks. -</para> - -</sect2> - -<sect2 id="ov-hi-files"><title>File Access</title> <para>Cygwin supports -both POSIX- and Win32-style paths, using either forward or back slashes as the -directory delimiter. Paths coming into the DLL are translated from POSIX to -native NT as needed. From the application perspective, the file system is -a POSIX-compliant one. The implementation details are safely hidden in the -Cygwin DLL. UNC pathnames (starting with two slashes) are supported for -network paths.</para> - -<para>Since version 1.7.0, the layout of this POSIX view of the Windows file -system space is stored in the <filename>/etc/fstab</filename> file. Actually, -there is a system-wide <filename>/etc/fstab</filename> file as well as a -user-specific fstab file <filename>/etc/fstab.d/${USER}</filename>.</para> - -<para>At startup the DLL has to find out where it can find the -<filename>/etc/fstab</filename> file. The mechanism used for this is simple. -First it retrieves it's own path, for instance -<filename>C:\Cygwin\bin\cygwin1.dll</filename>. From there it deduces -that the root path is <filename>C:\Cygwin</filename>. So it looks for the -<filename>fstab</filename> file in <filename>C:\Cygwin\etc\fstab</filename>. -The layout of this file is very similar to the layout of the -<filename>fstab</filename> file on Linux. Just instead of block devices, -the mount points point to Win32 paths. An installation with -<command>setup.exe</command> installs a <filename>fstab</filename> file by -default, which can easily be changed using the editor of your choice.</para> - -<para>In addition to selecting the root partition, the -<filename>fstab</filename> file allows mounting arbitrary Win32 paths into -the POSIX file system space. A special case is the so-called cygdrive prefix. -It's the path under which every available drive in the system is mounted -under its drive letter. The default value is <filename>/cygdrive</filename>, -so you can access the drives as <filename>/cygdrive/c</filename>, -<filename>/cygdrive/d</filename>, etc... The cygdrive prefix can be set to -some other value (<filename>/mnt</filename> for instance) in the -<filename>fstab</filename> file(s).</para> - -<para>The library exports several Cygwin-specific functions that can be used -by external programs to convert a path or path list from Win32 to POSIX or vice -versa. Shell scripts and Makefiles cannot call these functions directly. -Instead, they can do the same path translations by executing the -<command>cygpath</command> utility program that we provide with Cygwin.</para> - -<para>Win32 applications handle filenames in a case preserving, but case -insensitive manner. Cygwin supports case sensitivity on file systems -supporting that. Since Windows XP, the OS only supports case -sensitivity when a specific registry value is changed. Therefore, case -sensitivity is not usually the default.</para> - -<para>Symbolic links are not present and supported on Windows up to and -including Windows Server 2003 R2. Native symlinks are available starting -with Windows Vista. Due to their strange implementation, however, -they are not useful in a POSIX emulation layer. Cygwin recognizes -native symlinks, but does not create them.</para> - -<para>Symbolic links are potentially created in two different ways. -The file style symlinks are files containing a magic cookie followed by -the path to which the link points. They are marked with the System DOS -attribute so that only files with that attribute have to be read to -determine whether or not the file is a symbolic link. The shortcut style -symlinks are Windows shortcut files with a special header and the -Readonly DOS attribute set. The advantage of file symlinks is speed, -the advantage of shortcut symlinks is the fact that they can be utilized -by non-Cygwin Win32 tools as well.</para> - -<para>Starting with Cygwin 1.7, symbolic links are using UTF-16 to encode -the filename of the target file, to better support internationalization. -Symlinks created by older Cygwin releases can be read just fine. However, -you could run into problems with them if you're now using another character -set than the one you used when creating these symlinks -(see <xref linkend="setup-locale-problems"></xref>. Please note that this -new UTF-16 style of symlinks is not compatible with older Cygwin release, -which can't read the target filename correctly.</para> - -<para>Hard links are fully supported on NTFS and NFS file systems. On FAT -and some other file systems, the call falls back to simply copying the file, -a strategy that works in many cases.</para> - -<para>On file systems which don't support unique persistent file IDs (FAT, -older Samba shares) the inode number for a file is calculated by hashing its -full Win32 path. The inode number generated by the stat call always matches -the one returned in <literal>d_ino</literal> of the <literal>dirent</literal> -structure. It is worth noting that the number produced by this method is not -guaranteed to be unique. However, we have not found this to be a significant -problem because of the low probability of generating a duplicate inode number. -</para> - -<para><function>chroot(2)</function> is supported since Cygwin 1.1.3. -However, chroot is not a concept known by Windows. This implies some -restrictions. First of all, the <function>chroot</function> call isn't a -privileged call. Any user may call it. Second, the chroot environment -isn't safe against native windows processes. If you want to use a -chroot environment to, for example, allow anonymous ftp with restricted -access, you must make sure care that only native Cygwin applications -are accessible inside of the chroot environment. Since those applications -are only using the Cygwin POSIX API to access the file system their access -can be restricted as it is intended. This includes not only POSIX paths but -Win32 paths containing drive letter and/or backslashes as well as UNC paths -(<filename>//server/share</filename> or <filename>\\server\share</filename>). -</para> -</sect2> - -<sect2 id="ov-hi-textvsbinary"><title>Text Mode vs. Binary Mode</title> -<para>It is often important that files created by native Windows -applications be interoperable with Cygwin applications. For example, a -file created by a native Windows text editor should be readable by a -Cygwin application, and vice versa.</para> - -<para>Unfortunately, UNIX and Win32 have different end-of-line -conventions in text files. A UNIX text file will have a single newline -character (LF) whereas a Win32 text file will instead use a two -character sequence (CR+LF). Consequently, the two character sequence -must be translated on the fly by Cygwin into a single character newline -when reading in text mode.</para> - -<para>This solution addresses the newline interoperability concern at -the expense of violating the POSIX requirement that text and binary mode -be identical. Consequently, processes that attempt to lseek through -text files can no longer rely on the number of bytes read to be an -accurate indicator of position within the file. For this reason, Cygwin -allows you to choose the mode in which a file is read in several ways.</para> -</sect2> - -<sect2 id="ov-hi-ansiclib"><title>ANSI C Library</title> -<para>We chose to include Red Hat's own existing ANSI C library -"newlib" as part of the library, rather than write all of the lib C -and math calls from scratch. Newlib is a BSD-derived ANSI C library, -previously only used by cross-compilers for embedded systems -development. Other functions, which are not supported by newlib have -been added to the Cygwin sources using BSD implementations as much as -possible.</para> - -<para>The reuse of existing free implementations of such things -as the glob, regexp, and getopt libraries saved us considerable -effort. In addition, Cygwin uses Doug Lea's free malloc -implementation that successfully balances speed and compactness. The -library accesses the malloc calls via an exported function pointer. -This makes it possible for a Cygwin process to provide its own -malloc if it so desires.</para> -</sect2> - -<sect2 id="ov-hi-process"><title>Process Creation</title> -<para>The <function>fork</function> call in Cygwin is particularly interesting -because it does not map well on top of the Win32 API. This makes it very -difficult to implement correctly. Currently, the Cygwin fork is a -non-copy-on-write implementation similar to what was present in early -flavors of UNIX.</para> - -<para>The first thing that happens when a parent process -forks a child process is that the parent initializes a space in the -Cygwin process table for the child. It then creates a suspended -child process using the Win32 CreateProcess call. Next, the parent -process calls setjmp to save its own context and sets a pointer to -this in a Cygwin shared memory area (shared among all Cygwin -tasks). It then fills in the child's .data and .bss sections by -copying from its own address space into the suspended child's address -space. After the child's address space is initialized, the child is -run while the parent waits on a mutex. The child discovers it has -been forked and longjumps using the saved jump buffer. The child then -sets the mutex the parent is waiting on and blocks on another mutex. -This is the signal for the parent to copy its stack and heap into the -child, after which it releases the mutex the child is waiting on and -returns from the fork call. Finally, the child wakes from blocking on -the last mutex, recreates any memory-mapped areas passed to it via the -shared area, and returns from fork itself.</para> - -<para>While we have some -ideas as to how to speed up our fork implementation by reducing the -number of context switches between the parent and child process, fork -will almost certainly always be inefficient under Win32. Fortunately, -in most circumstances the spawn family of calls provided by Cygwin -can be substituted for a fork/exec pair with only a little effort. -These calls map cleanly on top of the Win32 API. As a result, they -are much more efficient. Changing the compiler's driver program to -call spawn instead of fork was a trivial change and increased -compilation speeds by twenty to thirty percent in our -tests.</para> - -<para>However, spawn and exec present their own set of -difficulties. Because there is no way to do an actual exec under -Win32, Cygwin has to invent its own Process IDs (PIDs). As a -result, when a process performs multiple exec calls, there will be -multiple Windows PIDs associated with a single Cygwin PID. In some -cases, stubs of each of these Win32 processes may linger, waiting for -their exec'd Cygwin process to exit.</para> -</sect2> - -<sect2 id="ov-hi-signals"><title>Signals</title> -<para>When -a Cygwin process starts, the library starts a secondary thread for -use in signal handling. This thread waits for Windows events used to -pass signals to the process. When a process notices it has a signal, -it scans its signal bitmask and handles the signal in the appropriate -fashion.</para> - -<para>Several complications in the implementation arise from the -fact that the signal handler operates in the same address space as the -executing program. The immediate consequence is that Cygwin system -functions are interruptible unless special care is taken to avoid -this. We go to some lengths to prevent the sig_send function that -sends signals from being interrupted. In the case of a process -sending a signal to another process, we place a mutex around sig_send -such that sig_send will not be interrupted until it has completely -finished sending the signal.</para> - -<para>In the case of a process sending -itself a signal, we use a separate semaphore/event pair instead of the -mutex. sig_send starts by resetting the event and incrementing the -semaphore that flags the signal handler to process the signal. After -the signal is processed, the signal handler signals the event that it -is done. This process keeps intraprocess signals synchronous, as -required by POSIX.</para> - -<para>Most standard UNIX signals are provided. Job -control works as expected in shells that support -it.</para> -</sect2> - -<sect2 id="ov-hi-sockets"><title>Sockets</title> -<para>Socket-related calls in Cygwin basically call the functions by the -same name in Winsock, Microsoft's implementation of Berkeley sockets, but -with lots of tweaks. All sockets are non-blocking under the hood to allow -to interrupt blocking calls by POSIX signals. Additional bookkeeping is -necessary to implement correct socket sharing POSIX semantics and especially -for the select call. Some socket-related functions are not implemented at -all in Winsock, as, for example, socketpair. Starting with Windows Vista, -Microsoft removed the legacy calls <function>rcmd(3)</function>, -<function>rexec(3)</function> and <function>rresvport(3)</function>. -Recent versions of Cygwin now implement all these calls internally.</para> - -<para>An especially troublesome feature of Winsock is that it must be -initialized before the first socket function is called. As a result, Cygwin -has to perform this initialization on the fly, as soon as the first -socket-related function is called by the application. In order to support -sockets across fork calls, child processes initialize Winsock if any -inherited file descriptor is a socket.</para> - -<para>AF_UNIX (AF_LOCAL) sockets are not available in Winsock. They are -implemented in Cygwin by using local AF_INET sockets instead. This is -completely transparent to the application. Cygwin's implementation also -supports the getpeereid BSD extension. However, Cygwin does not yet support -descriptor passing.</para> - -<para>IPv6 is supported beginning with Cygwin release 1.7.0. This -support is dependent, however, on the availability of the Windows IPv6 -stack. The IPv6 stack was "experimental", i.e. not feature complete in -Windows 2003 and earlier. Full IPv6 support became available starting -with Windows Vista and Windows Server 2008. Cygwin does not depend on -the underlying OS for the (newly implemented) <function>getaddrinfo</function> -and <function>getnameinfo</function> functions. Cygwin 1.7.0 adds -replacement functions which implement the full functionality for IPv4.</para> - -</sect2> - -<sect2 id="ov-hi-select"><title>Select</title> -<para>The UNIX <function>select</function> function is another -call that does not map cleanly on top of the Win32 API. Much to our -dismay, we discovered that the Win32 select in Winsock only worked on -socket handles. Our implementation allows select to function normally -when given different types of file descriptors (sockets, pipes, -handles, and a custom /dev/windows Windows messages -pseudo-device).</para> - -<para>Upon entry into the select function, the first -operation is to sort the file descriptors into the different types. -There are then two cases to consider. The simple case is when at -least one file descriptor is a type that is always known to be ready -(such as a disk file). In that case, select returns immediately as -soon as it has polled each of the other types to see if they are -ready. The more complex case involves waiting for socket or pipe file -descriptors to be ready. This is accomplished by the main thread -suspending itself, after starting one thread for each type of file -descriptor present. Each thread polls the file descriptors of its -respective type with the appropriate Win32 API call. As soon as a -thread identifies a ready descriptor, that thread signals the main -thread to wake up. This case is now the same as the first one since -we know at least one descriptor is ready. So select returns, after -polling all of the file descriptors one last time.</para> -</sect2> -</sect1> - diff --git a/winsup/doc/pathnames.sgml b/winsup/doc/pathnames.sgml deleted file mode 100644 index c6fd792d8..000000000 --- a/winsup/doc/pathnames.sgml +++ /dev/null @@ -1,805 +0,0 @@ -<sect1 id="using-pathnames"><title>Mapping path names</title> - -<sect2 id="pathnames-intro"><title>Introduction</title> - -<para>Cygwin supports both Win32- and POSIX-style paths. Directory -delimiters may be either forward slashes or backslashes. Paths using -backslashes are always handled as Win32 paths. POSIX paths must only -use forward slashes as delimiter, otherwise they are treated as Win32 -paths and file access might fail in surprising ways. Note that the -usage of Win32 paths, though possible, is deprecated, since it -circumvents important internal path handling mechanisms. UNC pathnames -(starting with two slashes and a network name) are also supported. -</para> - -<para>POSIX operating systems (such as Linux) do not have the concept -of drive letters. Instead, all absolute paths begin with a -slash (instead of a drive letter such as "c:") and all file systems -appear as subdirectories (for example, you might buy a new disk and -make it be the <filename>/disk2</filename> directory).</para> - -<para>Because many programs written to run on UNIX systems assume -the existance of a single unified POSIX file system structure, Cygwin -maintains a special internal POSIX view of the Win32 file system -that allows these programs to successfully run under Windows. Cygwin -uses this mapping to translate from POSIX to Win32 paths as -necessary.</para> - -</sect2> - -<sect2 id="mount-table"><title>The Cygwin Mount Table</title> - -<para>The <filename>/etc/fstab</filename> file is used to map Win32 -drives and network shares into Cygwin's internal POSIX directory tree. -This is a similar concept to the typical UNIX fstab file. The mount -points stored in <filename>/etc/fstab</filename> are globally set for -all users. Sometimes there's a requirement to have user specific -mount points. The Cygwin DLL supports user specific fstab files. -These are stored in the directory <filename>/etc/fstab.d</filename> -and the name of the file is the Cygwin username of the user, as it's -stored in the <filename>/etc/passwd</filename> file. The content of the -user specifc file is identical to the system-wide -<filename>fstab</filename> file.</para> - -<para>The file fstab contains descriptive information about the various file -systems. fstab is only read by programs, and not written; it is the -duty of the system administrator to properly create and maintain this -file. Each filesystem is described on a separate line; fields on each -line are separated by tabs or spaces. Lines starting with '#' are -comments.</para> - -<para>The first field describes the block special device or -remote filesystem to be mounted. On Cygwin, this is the native Windows -path which the mount point links in. As path separator you MUST use a -slash. Usage of a backslash might lead to unexpected results. UNC -paths (using slashes, not backslashes) are allowed. If the path -contains spaces these can be escaped as <literal>'\040'</literal>.</para> - -<para>The second field describes the mount point for the filesystem. -If the name of the mount point contains spaces these can be -escaped as '\040'.</para> - -<para>The third field describes the type of the filesystem. -Cygwin supports any string here, since the file system type is usually -not evaluated. The notable exception is the file system type -cygdrive. This type is used to set the cygdrive prefix.</para> - -<para>The fourth field describes the mount options associated -with the filesystem. It is formatted as a comma separated list of -options. It contains at least the type of mount (binary or text) plus -any additional options appropriate to the filesystem type. Recognized -options are binary, text, nouser, user, exec, notexec, cygexec, nosuid, -posix=[0|1]. The meaning of the options is as follows.</para> - -<screen> - acl - Cygwin uses the filesystem's access control lists (ACLs) to - implement real POSIX permissions (default). This flag only - affects filesystems supporting ACLs (NTFS) and is ignored - otherwise. - auto - Ignored. - binary - Files default to binary mode (default). - cygexec - Treat all files below mount point as cygwin executables. - exec - Treat all files below mount point as executable. - noacl - Cygwin ignores filesystem ACLs and only fakes a subset of - permission bits based on the DOS readonly attribute. This - behaviour is the default on FAT and FAT32. The flag is - ignored on NFS filesystems. - nosuid - No suid files are allowed (currently unimplemented). - notexec - Treat all files below mount point as not executable. - nouser - Mount is a system-wide mount. - override - Force the override of an immutable mount point (currently "/"). - posix=0 - Switch off case sensitivity for paths under this mount point. - posix=1 - Switch on case sensitivity for paths under this mount point - (default). - text - Files default to CRLF text mode line endings. - user - Mount is a user mount. -</screen> - -<para>While normally the execute permission bits are used to evaluate -executability, this is not possible on filesystems which don't support -permissions at all (like FAT/FAT32), or if ACLs are ignored on filesystems -supporting them (see the aforementioned <literal>acl</literal> mount option). -In these cases, the following heuristic is used to evaluate if a file is -executable: Files ending in certain extensions (.exe, .com, .bat, .btm, -.cmd) are assumed to be executable. Files whose first two characters begin -with '#!' are also considered to be executable. -The <literal>exec</literal> option is used to instruct Cygwin that the -mounted file is "executable". If the <literal>exec</literal> option is used -with a directory then all files in the directory are executable. -This option allows other files to be marked as executable and avoids the -overhead of opening each file to check for a '#!'. The -<literal>cygexec</literal> option is very similar to <literal>exec</literal>, -but also prevents Cygwin from setting up commands and environment variables -for a normal Windows program, adding another small performance gain. The -opposite of these options is the <literal>notexec</literal> option, which -means that no files should be marked as executable under that mount point.</para> -<para>A correct root directory is quite essential to the operation of -Cygwin. A default root directory is evaluated at startup so a -<filename>fstab</filename> entry for the root directory is not necessary. -If it's wrong, nothing will work as expected. Therefore, the root directory -evaluated by Cygwin itself is treated as an immutable mount point and can't -be overridden in /etc/fstab... unless you think you really know what you're -doing. In this case, use the <literal>override</literal> flag in the options -field in the <filename>/etc/fstab</filename> file. Since this is a dangerous -thing to do, do so at your own risk.</para> - -<para><filename>/usr/bin</filename> and <filename>/usr/lib</filename> are -by default also automatic mount points generated by the Cygwin DLL similar -to the way the root directory is evaluated. <filename>/usr/bin</filename> -points to the directory the Cygwin DLL is installed in, -<filename>/usr/lib</filename> is supposed to point to the -<filename>/lib</filename> directory. This choice is safe and usually -shouldn't be changed. An fstab entry for them is not required.</para> - -<para><literal>nouser</literal> mount points are not overridable by a later -call to <command>mount</command>. -Mount points given in <filename>/etc/fstab</filename> are by default -<literal>nouser</literal> mount points, unless you specify the option -<literal>user</literal>. This allows the administrator to set certain -paths so that they are not overridable by users. In contrast, all mount -points in the user specific fstab file are <literal>user</literal> mount -points.</para> - -<para>The fifth and sixth field are ignored. They are -so far only specified to keep a Linux-like fstab file layout.</para> - -<para>Note that you don't have to specify an fstab entry for the root dir, -unless you want to have the root dir pointing to somewhere entirely -different (hopefully you know what you're doing), or if you want to -mount the root dir with special options (for instance, as text mount).</para> - -<para>Example entries:</para> - -<itemizedlist spacing="compact"> -<listitem> - <para>Just a normal mount point:</para> - <screen>c:/foo /bar fat32 binary 0 0</screen> -</listitem> -<listitem> - <para>A mount point for a textmode mount with case sensitivity switched off:</para> - <screen>C:/foo /bar/baz ntfs text,posix=0 0 0</screen> -</listitem> -<listitem> - <para>A mount point for a Windows directory with spaces in it:</para> - <screen>C:/Documents\040and\040Settings /docs ext3 binary 0 0</screen> -</listitem> -<listitem> - <para>A mount point for a remote directory without ACL support:</para> - <screen>//server/share/subdir /srv/subdir smbfs binary,noacl 0 0</screen> -</listitem> -<listitem> - <para>This is just a comment:</para> - <screen># This is just a comment</screen> -</listitem> -<listitem> - <para>Set the cygdrive prefix to /mnt:</para> - <screen>none /mnt cygdrive binary 0 0</screen> -</listitem> -</itemizedlist> - -<para>Whenever Cygwin generates a Win32 path from a POSIX one, it uses -the longest matching prefix in the mount table. Thus, if -<filename>C:</filename> is mounted as <filename>/c</filename> and also -as <filename>/</filename>, then Cygwin would translate -<filename>C:/foo/bar</filename> to <filename>/c/foo/bar</filename>. -This translation is normally only used when trying to derive the -POSIX equivalent current directory. Otherwise, the handling of MS-DOS -filenames bypasses the mount table. -</para> - -<para>If you want to see the current set of mount points valid in your -session, you can invoking the Cygwin tool <command>mount</command> without -arguments:</para> - -<example id="pathnames-mount-ex"> -<title>Displaying the current set of mount points</title> -<screen> -<prompt>bash$</prompt> <userinput>mount</userinput> -f:/cygwin/bin on /usr/bin type system (binary,auto) -f:/cygwin/lib on /usr/lib type system (binary,auto) -f:/cygwin on / type system (binary,auto) -e:/src on /usr/src type system (binary) -c: on /cygdrive/c type user (binary,posix=0,user,noumount,auto) -e: on /cygdrive/e type user (binary,posix=0,user,noumount,auto) -</screen> -</example> - -<para>You can also use the <command>mount</command> command to add -new mount points, and the <command>umount</command> to delete -them. However, since they are only noted in memory, these mount -points will disappear as soon as your last Cygwin process ends. -See <xref linkend="mount"></xref> and <xref linkend="umount"></xref> for more -information.</para> - -<note><para> -When you upgrade an existing older Cygwin installation to Cygwin 1.7, -your old system mount points (stored in the HKEY_LOCAL_MACHINE branch -of your registry) are read by a script and the <filename>/etc/fstab</filename> -file is generated from these entries. Note that entries for -<filename>/</filename>, <filename>/usr/bin</filename>, and -<filename>/usr/lib</filename> are <emphasis>never</emphasis> generated. -</para> - -<para> -The old user mount points in your HKEY_CURRENT_USER branch of the registry -are not used to generate <filename>/etc/fstab</filename>. If you want -to create a user specific <filename>/etc/fstab.d/${USER}</filename> file -from your old entries, there's a script available which does exactly -that for you, <filename>bin/copy-user-registry-fstab</filename>. Just -start the script and it will create your user specific fstab file. Stop -all your Cygwin processes and restart them, and you can simply use your -old user mount points as before. -</para></note> - -</sect2> - -<sect2 id="cygdrive"><title>The cygdrive path prefix</title> - -<para>As already outlined in <xref linkend="ov-hi-files"></xref>, you can -access arbitary drives on your system by using the cygdrive path prefix. -The default value for this prefix is <literal>/cygdrive</literal>, and -a path to any drive can be constructed by using the cygdrive prefix and -appending the drive letter as subdirectory, like this:</para> - -<screen> - bash$ ls -l /cygdrive/f/somedir -</screen> - -<para>This lists the content of the directory F:\somedir.</para> - -<para>The cygdrive prefix is a virtual directory under which all drives -on a system are subsumed. The mount options of the cygdrive prefix is -used for all file access through the cygdrive prefixed drives. For instance, -assuming the cygdrive mount options are <literal>binary,posix=0</literal>, -then any file <literal>/cygdrive/x/file</literal> will be opened in -binary mode by default (mount option <literal>binary</literal>, and the case -of the filename doesn't matter (mount option <literal>posix=0</literal>. -</para> - -<para>The cygdrive prefix may be changed in the fstab file as outlined above. -Please note that you must not use the cygdrive prefix for any other mount -point. For instance this:</para> - -<screen> - none /cygdrive cygdrive binary 0 0 - D: /cygdrive/d somefs text 0 0 -</screen> - -<para>will not make file access using the /mnt/d path prefix suddenly using -textmode. If you want to mount any drive explicitly in another mode than -the cygdrive prefix, use a distinct path prefix:</para> - -<screen> - none /cygdrive cygdrive binary 0 0 - D: /mnt/d somefs text 0 0 -</screen> - -</sect2> - -<sect2 id="pathnames-additional"><title>Additional Path-related Information</title> - -<para>The <command>cygpath</command> program provides the ability to -translate between Win32 and POSIX pathnames in shell scripts. See -<xref linkend="cygpath"></xref> for the details.</para> - -<para>The <envar>HOME</envar>, <envar>PATH</envar>, and -<envar>LD_LIBRARY_PATH</envar> environment variables are automatically -converted from Win32 format to POSIX format (e.g. from -<filename>c:/cygwin\bin</filename> to <filename>/bin</filename>, if -there was a mount from that Win32 path to that POSIX path) when a Cygwin -process first starts.</para> - -<para>Symbolic links can also be used to map Win32 pathnames to POSIX. -For example, the command -<command>ln -s //pollux/home/joe/data /data</command> would have about -the same effect as creating a mount point from -<filename>//pollux/home/joe/data</filename> to <filename>/data</filename> -using <command>mount</command>, except that symbolic links cannot set -the default file access mode. Other differences are that the mapping is -distributed throughout the file system and proceeds by iteratively -walking the directory tree instead of matching the longest prefix in a -kernel table. Note that symbolic links will only work on network -drives that are properly configured to support the "system" file -attribute. Many do not do so by default (the Unix Samba server does -not by default, for example).</para> - -</sect2> - -</sect1> - -<sect1 id="using-specialnames"><title>Special filenames</title> - -<sect2 id="pathnames-etc"><title>Special files in /etc</title> - -<para>Certain files in Cygwin's <filename>/etc</filename> directory are -read by Cygwin before the mount table has been established. The list -of files is</para> - -<screen> - /etc/fstab - /etc/fstab.d/$USER - /etc/passwd - /etc/group -</screen> - -<para>These file are read using native Windows NT functions which have -no notion of Cygwin symlinks or POSIX paths. For that reason -there are a few requirements as far as <filename>/etc</filename> is -concerned.</para> - -<para>To access these files, the Cygwin DLL evaluates it's own full -Windows path, strips off the innermost directory component and adds -"\etc". Let's assume the Cygwin DLL is installed as -<filename>C:\cygwin\bin\cygwin1.dll</filename>. First the DLL name as -well as the innermost directory (<filename>bin</filename>) is stripped -off: <filename>C:\cygwin\</filename>. Then "etc" and the filename to -look for is attached: <filename>C:\cygwin\etc\fstab</filename>. So the -/etc directory must be parallel to the directory in which the cygwin1.dll -exists and <filename>/etc</filename> must not be a Cygwin symlink -pointing to another directory. Consequentially none of the files from -the above list, including the directory <filename>/etc/fstab.d</filename> -is allowed to be a Cygwin symlink either.</para> - -<para>However, native NTFS symlinks and reparse points are transparent -when accessing the above files so all these files as well as -<filename>/etc</filename> itself may be NTFS symlinks or reparse -points.</para> - -<para>Last but not least, make sure that these files are world-readable. -Every process of any user account has to read these files potentially, -so world-readability is essential. The only exception are the user -specific files <filename>/etc/fstab.d/$USER</filename>, which only have -to be readable by the $USER user account itself.</para> - -</sect2> - -<sect2 id="pathnames-dosdevices"><title>Invalid filenames</title> - -<para>Filenames invalid under Win32 are not necessarily invalid -under Cygwin since release 1.7.0. There are a few rules which -apply to Windows filenames. Most notably, DOS device names like -<filename>AUX</filename>, <filename>COM1</filename>, -<filename>LPT1</filename> or <filename>PRN</filename> (to name a few) -cannot be used as filename or extension in a native Win32 application. -So filenames like <filename>prn.txt</filename> or <filename>foo.aux</filename> -are invalid filenames for native Win32 applications.</para> - -<para>This restriction doesn't apply to Cygwin applications. Cygwin -can create and access files with such names just fine. Just don't try -to use these files with native Win32 applications.</para> - -</sect2> - -<sect2 id="pathnames-specialchars"> -<title>Forbidden characters in filenames</title> - -<para>Win32 filenames can't contain trailing dots and spaces for backward -compatibility. When trying to create files with trailing dots or spaces, -all of them are removed before the file is created. This restriction only -affects native Win32 applications. Cygwin applications can create and -access files with trailing dots and spaces without problems.</para> - -<para>Some characters are disallowed in filenames on Windows filesystems:</para> - -<screen> - " * : < > ? | \ -</screen> - -<para>Cygwin can't fix this, but it has a method to workaround this -restriction. All of the above characters, except for the backslash, -are converted to special UNICODE characters in the range 0xf000 to 0xf0ff -(the "Private use area") when creating or accessing files.</para> - -</sect2> - -<sect2 id="pathnames-unusual"> -<title>Filenames with unusual (foreign) characters</title> - -<para> Windows filesystems use the Unicode character set in the UTF-16 -encoding to store filename information. If you don't use the UTF-8 -character set (see <xref linkend="setup-locale"></xref>) then there's a -chance that a filename is using one or more characters which have no -representation in the character set you're using.</para> - -<para>For instance, there are no Chinese characters in the ISO-8859-1 -character set. So, converting a filename containing a Chinese character -to ISO-8859-1 leaves you with a wrongly converted filename, for instance, -containing a question mark '?' as replacement for the unconvertable -character. When trying to access the file, Cygwin has to convert the -filename back to UTF-16. However, this doesn't result in the original -filename because the question mark will not translate back to the original -Chinese character, but to a simple question mark instead. This in turn -results in strange "File not found" messages.</para> - -<note><para>In the default "C" locale, Cygwin creates filenames using -the UTF-8 charset. This will always result in some valid filename by -default, but again might impose problems when switching to a non-"C" -or non-"UTF-8" charset.</para></note> - -<note><para>To avoid this scenario altogether, always use UTF-8 as the -character set.</para></note> - -<para>If you don't want or can't use UTF-8 as character set for whatever -reason, you will nevertheless be able to access the file. How does that -work? When Cygwin converts the filename from UTF-16 to your character -set, it recognizes characters which can't be converted. If that occurs, -Cygwin replaces the non-convertible character with a special character -sequence. The sequence starts with an ASCII SO character (hex code -0x0e, equivalent Control-N), followed by the UTF-8 representation of the -character. The result is a filename containing some ugly looking -characters. While it doesn't <emphasis>look</emphasis> nice, it -<emphasis>is</emphasis> nice, because Cygwin knows how to convert this -filename back to UTF-16. The filename will be converted using your -usual character set. However, when Cygwin recognizes an ASCII SO -character, it skips over the ASCII SO and handles the following bytes as -a UTF-8 character. Thus, the filename is symmetrically converted back to -UTF-16 and you can access the file.</para> - -<note><para>Please be aware that this method is not entirely foolproof. -In some character set combinations it might not work for certain native -characters.</para> - -<para>Only by using the UTF-8 charset you can avoid this problem safely. -</para></note> - -</sect2> - -<sect2 id="pathnames-casesensitive"> -<title>Case sensitive filenames</title> - -<para>In the Win32 subsystem filenames are only case-preserved, but not -case-sensitive. You can't access two files in the same directory which -only differ by case, like <filename>Abc</filename> and -<filename>aBc</filename>. While NTFS (and some remote filesystems) -support case-sensitivity, the NT kernel starting with Windows XP does -not support it by default. Rather, you have to tweak a registry setting -and reboot. For that reason, case-sensitivity can not be supported by Cygwin, -unless you change that registry value.</para> - -<para>If you really want case-sensitivity in Cygwin, you can switch it -on by setting the registry value</para> - -<screen> -HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive -</screen> - -<para>to 0 and reboot the machine. For least surprise, Cygwin expects -this registry value also on Windows NT4 and Windows 2000, which usually -both don't know this registry key. If you want case-sensitivity on these -systems, create that registry value and set it to 0. On these systems -(and <emphasis role='bold'>only</emphasis> on these systems) you don't have to reboot to bring it -into effect, rather stopping all Cygwin processes and then restarting them -is sufficient.</para> - -<note> -<para> -When installing Microsoft's Services For Unix (SFU), you're asked if -you want to use case-sensitive filenames. If you answer "yes" at this point, -the installer will change the aforementioned registry value to 0, too. So, if -you have SFU installed, there's some chance that the registry value is already -set to case sensitivity. -</para> -</note> - -<para>After you set this registry value to 0, Cygwin will be case-sensitive -by default on NTFS and NFS filesystems. Be aware that using two filenames -which only differ by case might result in some weird interoperability -issues with native Win32 applications. You're using case-sensitivity -at your own risk. You have been warned!</para> - -<para>Even if you use case-sensitivity, it might be feasible to switch to -case-insensitivity for certain paths for better interoperability with -native Win32 applications (even if it's just Windows Explorer). You can do -this on a per-mount point base, by using the "posix=0" mount option in -<filename>/etc/fstab</filename>, or your <filename>/etc/fstab.d/$USER</filename> -file.</para> - -<para><filename>/cygdrive</filename> paths are case-insensitive by default. -The reason is that the native Windows %PATH% environment variable is not -always using the correct case for all paths in it. As a result, if you use -case-sensitivity on the <filename>/cygdrive</filename> prefix, your shell -might claim that it can't find Windows commands like <command>attrib</command> -or <command>net</command>. To ease the pain, the <filename>/cygdrive</filename> -path is case-insensitive by default and you have to use the "posix=1" setting -explicitly in <filename>/etc/fstab</filename> or -<filename>/etc/fstab.d/$USER</filename> to switch it to case-sensitivity, -or you have to make sure that the native Win32 %PATH% environment variable -is using the correct case for all paths throughout.</para> - -<para>Note that mount points as well as device names and virtual -paths like /proc are always case-sensitive! The only exception are -the subdirectories and filenames under /proc/registry, /proc/registry32 -and /proc/registry64. Registry access is always case-insensitive. -Read on for more information.</para> - -</sect2> - -<sect2 id="pathnames-posixdevices"> <title>POSIX devices</title> -<para>There is no need to create a POSIX <filename>/dev</filename> -directory as Cygwin automatically simulates it internally. -These devices cannot be seen with the command <command>ls /dev/</command> -although commands such as <command>ls /dev/tty</command> work fine. -If you want to be able to see all well-known devices in -<filename>/dev/</filename>, you can use Igor Pechtchanski's -<ulink -url="http://cygwin.com/ml/cygwin/2004-03/txt00028.txt">create_devices.sh</ulink> -script. This script does not add the raw disk devices, though. Again, -it's not necessary to see an existing device in /dev to access it. The script -is just for the fun of it. -</para> - -<para> -Cygwin supports the following character devices commonly found on POSIX systems: -</para> - -<screen> -/dev/null -/dev/zero -/dev/full - -/dev/console Pseudo device name for the standard console window created - by Windows. Same as the one used for cmd.exe. Every one - of them has this name. It's not quite comparable with the - console device on UNIX machines. - -/dev/tty The current tty of a session running in a pseudo tty. -/dev/ptmx Pseudo tty master device. -/dev/ttym - -/dev/tty0 Pseudo ttys are numbered from /dev/tty0 upwards as they are -/dev/tty1 requested. -... - -/dev/ttyS0 Serial communication devices. ttyS0 == Win32 COM1, -/dev/ttyS1 ttyS1 == COM2, etc. -... - -/dev/pipe -/dev/fifo - -/dev/mem The physical memory of the machine. Note that access to the -/dev/port physical memory has been restricted with Windows Server 2003. -/dev/kmem Since this OS, you can't access physical memory from user space. - -/dev/kmsg Kernel message pipe, for usage with sys logger services. - -/dev/random Random number generator. -/dev/urandom - -/dev/dsp Default sound device of the system. -</screen> - -<para> -Cygwin also has several Windows-specific devices: -</para> - -<screen> -/dev/com1 The serial ports, starting with COM1 which is the same as ttyS0. -/dev/com2 Please use /dev/ttySx instead. -... - -/dev/conin Same as Windows CONIN$. -/dev/conout Same as Windows CONOUT$. -/dev/clipboard The Windows clipboard, text only -/dev/windows The Windows message queue. -</screen> - -<para> -Block devices are accessible by Cygwin processes using fixed POSIX device -names. These POSIX device names are generated using a direct conversion -from the POSIX namespace to the internal NT namespace. -E.g. the first harddisk is the NT internal device \device\harddisk0\partition0 -or the first partition on the third harddisk is \device\harddisk2\partition1. -The first floppy in the system is \device\floppy0, the first CD-ROM is -\device\cdrom0 and the first tape drive is \device\tape0.</para> - -<para>The mapping from physical device to the name of the device in the -internal NT namespace can be found in various places. For hard disks and -CD/DVD drives, the Windows "Disk Management" utility (part of the -"Computer Management" console) shows that the mapping of "Disk 0" is -\device\harddisk0. "CD-ROM 2" is \device\cdrom2. Another place to find -this mapping is the "Device Management" console. Disks have a -"Location" number, tapes have a "Tape Symbolic Name", etc. -Unfortunately, the places where this information is found is not very -well-defined.</para> - -<para> -For external disks (USB-drives, CF-cards in a cardreader, etc) you can use -Cygwin to show the mapping. <filename>/proc/partitions</filename> -contains a list of raw drives known to Cygwin. The <command>df</command> -command shows a list of drives and their respective sizes. If you match -the information between <filename>/proc/partitions</filename> and the -<command>df</command> output, you should be able to figure out which -external drive corresponds to which raw disk device name.</para> - -<note><para>Apart from tape devices which are not block devices and are -by default accessed directly, accessing mass storage devices raw -is something you should only do if you know what you're doing and know how to -handle the information. <emphasis role='bold'>Writing</emphasis> to a raw -mass storage device you should only do if you -<emphasis role='bold'>really</emphasis> know what you're doing and are aware -of the fact that any mistake can destroy important information, for the -device, and for you. So, please, handle this ability with care. -<emphasis role='bold'>You have been warned.</emphasis></para></note> - -<para> -Last but not least, the mapping from POSIX /dev namespace to internal -NT namespace is as follows: -</para> - -<screen> -POSIX device name Internal NT device name - -/dev/st0 \device\tape0, rewind -/dev/nst0 \device\tape0, no-rewind -/dev/st1 \device\tape1 -/dev/nst1 \device\tape1 -... -/dev/st15 -/dev/nst15 - -/dev/fd0 \device\floppy0 -/dev/fd1 \device\floppy1 -... -/dev/fd15 - -/dev/sr0 \device\cdrom0 -/dev/sr1 \device\cdrom1 -... -/dev/sr15 - -/dev/scd0 \device\cdrom0 -/dev/scd1 \device\cdrom1 -... -/dev/scd15 - -/dev/sda \device\harddisk0\partition0 (whole disk) -/dev/sda1 \device\harddisk0\partition1 (first partition) -... -/dev/sda15 \device\harddisk0\partition15 (fifteenth partition) - -/dev/sdb \device\harddisk1\partition0 -/dev/sdb1 \device\harddisk1\partition1 - -[up to] - -/dev/sddx \device\harddisk127\partition0 -/dev/sddx1 \device\harddisk127\partition1 -... -/dev/sddx15 \device\harddisk127\partition15 -</screen> - -<para> -if you don't like these device names, feel free to create symbolic -links as they are created on Linux systems for convenience: -</para> - -<screen> -ln -s /dev/sr0 /dev/cdrom -ln -s /dev/nst0 /dev/tape -... -</screen> - -</sect2> - -<sect2 id="pathnames-exe"><title>The .exe extension</title> - -<para>Win32 executable filenames end with <filename>.exe</filename> -but the <filename>.exe</filename> need not be included in the command, -so that traditional UNIX names can be used. However, for programs that -end in <filename>.bat</filename> and <filename>.com</filename>, you -cannot omit the extension. </para> - -<para>As a side effect, the <command> ls filename</command> gives -information about <filename>filename.exe</filename> if -<filename>filename.exe</filename> exists and <filename>filename</filename> -does not. In the same situation the function call -<function>stat("filename",..)</function> gives information about -<filename>filename.exe</filename>. The two files can be distinguished -by examining their inodes, as demonstrated below. -<screen> -<prompt>bash$</prompt> <userinput>ls * </userinput> -a a.exe b.exe -<prompt>bash$</prompt> <userinput>ls -i a a.exe</userinput> -445885548 a 435996602 a.exe -<prompt>bash$</prompt> <userinput>ls -i b b.exe</userinput> -432961010 b 432961010 b.exe -</screen> -If a shell script <filename>myprog</filename> and a program -<filename>myprog.exe</filename> coexist in a directory, the shell -script has precedence and is selected for execution of -<command>myprog</command>. Note that this was quite the reverse up to -Cygwin 1.5.19. It has been changed for consistency with the rest of Cygwin. -</para> - -<para>The <command>gcc</command> compiler produces an executable named -<filename>filename.exe</filename> when asked to produce -<filename>filename</filename>. This allows many makefiles written -for UNIX systems to work well under Cygwin.</para> - -</sect2> - -<sect2 id="pathnames-proc"><title>The /proc filesystem</title> -<para> -Cygwin, like Linux and other similar operating systems, supports the -<filename>/proc</filename> virtual filesystem. The files in this -directory are representations of various aspects of your system, -for example the command <userinput>cat /proc/cpuinfo</userinput> -displays information such as what model and speed processor you have. -</para> -<para> -One unique aspect of the Cygwin <filename>/proc</filename> filesystem -is <filename>/proc/registry</filename>, see next section. -</para> -<para> -The Cygwin <filename>/proc</filename> is not as complete as the -one in Linux, but it provides significant capabilities. The -<systemitem>procps</systemitem> package contains several utilities -that use it. -</para> -</sect2> - -<sect2 id="pathnames-proc-registry"><title>The /proc/registry filesystem</title> -<para> -The <filename>/proc/registry</filename> filesystem provides read-only -access to the Windows registry. It displays each <literal>KEY</literal> -as a directory and each <literal>VALUE</literal> as a file. As anytime -you deal with the Windows registry, use caution since changes may result -in an unstable or broken system. There are additionally subdirectories called -<filename>/proc/registry32</filename> and <filename>/proc/registry64</filename>. -They are identical to <filename>/proc/registry</filename> on 32 bit -host OSes. On 64 bit host OSes, <filename>/proc/registry32</filename> -opens the 32 bit processes view on the registry, while -<filename>/proc/registry64</filename> opens the 64 bit processes view. -</para> -<para> -Reserved characters ('/', '\', ':', and '%') or reserved names -(<filename>.</filename> and <filename>..</filename>) are converted by -percent-encoding: -<screen> -<prompt>bash$</prompt> <userinput>regtool list -v '\HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices'</userinput> -... -\DosDevices\C: (REG_BINARY) = cf a8 97 e8 00 08 fe f7 -... -<prompt>bash$</prompt> <userinput>cd /proc/registry/HKEY_LOCAL_MACHINE/SYSTEM</userinput> -<prompt>bash$</prompt> <userinput>ls -l MountedDevices</userinput> -... --r--r----- 1 Admin SYSTEM 12 Dec 10 11:20 %5CDosDevices%5CC%3A -... -<prompt>bash$</prompt> <userinput>od -t x1 MountedDevices/%5CDosDevices%5CC%3A</userinput> -0000000 cf a8 97 e8 00 08 fe f7 01 00 00 00 -</screen> -The unnamed (default) value of a key can be accessed using the filename -<filename>@</filename>. -</para> -<para> -If a registry key contains a subkey and a value with the same name -<filename>foo</filename>, Cygwin displays the subkey as -<filename>foo</filename> and the value as <filename>foo%val</filename>. -</para> -</sect2> - -<sect2 id="pathnames-at"><title>The @pathnames</title> -<para>To circumvent the limitations on shell line length in the native -Windows command shells, Cygwin programs expand their arguments -starting with "@" in a special way. If a file -<filename>pathname</filename> exists, the argument -<filename>@pathname</filename> expands recursively to the content of -<filename>pathname</filename>. Double quotes can be used inside the -file to delimit strings containing blank space. -Embedded double quotes must be repeated. -In the following example compare the behaviors of the bash built-in -<command>echo</command> and of the program <command>/bin/echo</command>.</para> - -<example id="pathnames-at-ex"><title> Using @pathname</title> -<screen> -<prompt>bash$</prompt> <userinput>echo 'This is "a long" line' > mylist</userinput> -<prompt>bash$</prompt> <userinput>echo @mylist</userinput> -@mylist -<prompt>bash$</prompt> <userinput>cmd</userinput> -<prompt>c:\></prompt> <userinput>c:\cygwin\bin\echo @mylist</userinput> -This is a long line -</screen> -</example> -</sect2> -</sect1> diff --git a/winsup/doc/programming.sgml b/winsup/doc/programming.sgml deleted file mode 100644 index 45f26f4fa..000000000 --- a/winsup/doc/programming.sgml +++ /dev/null @@ -1,11 +0,0 @@ -<chapter id="programming"><title>Programming with Cygwin</title> - -DOCTOOL-INSERT-gcc - -DOCTOOL-INSERT-gdb - -DOCTOOL-INSERT-dll - -DOCTOOL-INSERT-windres - -</chapter> diff --git a/winsup/doc/setup-net.sgml b/winsup/doc/setup-net.sgml deleted file mode 100644 index 7c21de342..000000000 --- a/winsup/doc/setup-net.sgml +++ /dev/null @@ -1,260 +0,0 @@ -<chapter id="setup-net"><title>Setting Up Cygwin</title> - -<sect1 id="internet-setup"> -<title>Internet Setup</title> -<para>To install the Cygwin net release, go to <ulink -url="http://cygwin.com/">http://cygwin.com/</ulink> and click on <ulink -url="http://cygwin.com/setup.exe">"Install Cygwin Now!"</ulink>. This will -download a GUI installer called <command>setup.exe</command> which can -be run to download a complete cygwin installation via the internet. -Follow the instructions on each screen to install Cygwin. -</para> - -<para> -The <command>setup.exe</command> installer is designed to be easy -for new users to understand while remaining flexible for the -experienced. The volunteer development team is constantly working -on <command>setup.exe</command>; before requesting a new feature, -check the wishlist in the <ulink url="http://sourceware.org/cgi-bin/cvsweb.cgi/setup/README?cvsroot=cygwin-apps&rev=2">CVS <literal>README</literal> -</ulink>. It may already be present in the CVS version! -</para> - -<para> -Since the default value for each option is the logical choice for -most installations, you can get a working minimal Cygwin environment -installed by simply clicking the <literal>Next</literal> button -at each page. The only exception to this is choosing a Cygwin mirror, -which you can choose by experimenting with those listed at -<ulink url="http://cygwin.com/mirrors.html"> -http://cygwin.com/mirrors.html -</ulink>. For more details about each of page of the -<command>setup.exe</command> installation, read on below. -Please note that this guide assumes that you have a basic understanding -of Unix (or a Unix-like OS). If you are new to Unix, you will also want -to make use of <ulink url="http://www.google.com/search?q=new+to+unix"> -other resources</ulink>. -</para> - -<sect2 id="setup-download"><title>Download Source</title> -<para> -Cygwin uses packages to manage installing various software. When -the default <literal>Install from Internet</literal> option is chosen, -<command>setup.exe</command> creates a local directory to store -the packages before actually installing the contents. -<literal>Download from Internet</literal> performs only the first -part (storing the packages locally), while -<literal>Install from Local Directory</literal> performs only the -second (installing the contents of the packages). -</para> -<para> -The <literal>Download from Internet</literal> option is mainly -for creating a base Cygwin package tree on one computer for -installation on several machines with -<literal>Install from Local Directory</literal>; copy the -entire local package tree to another machine with the directory -tree intact. For example, you might create a <literal>C:\cache\</literal> -directory and place <command>setup.exe</command> in it. Run -<command>setup.exe</command> to <literal>Install from Internet</literal> -or <literal>Download from Internet</literal>, then copy the whole -<literal>C:\cache\</literal> to each machine and instead choose -<literal>Install from Local Directory</literal>. Unfortunately -<command>setup.exe</command> does not yet support unattended installs. -</para> -<para> -Though this provides some basic mirroring functionality, if you -are managing a large Cygwin installation, to keep up to date we recommend -using a mirroring tool such as <command>wget</command>. A helpful user on -the Cygwin mailing list created a simple demonstration script to accomplish -this; search the list for <command>mkcygwget</command> for ideas. -</para> -</sect2> - -<sect2 id="setup-dir"><title>Selecting an Install Directory</title> -<para> -The <literal>Root Directory</literal> for Cygwin (default -<literal>C:\cygwin</literal>) will become <literal>/</literal> -within your Cygwin installation. You must have write access to -the parent directory, and any ACLs on the parent directory will -determine access to installed files. -</para> -<para> -The <literal>Install For</literal> options of <literal>All Users</literal> -or <literal>Just Me</literal> should always be left on the default -<literal>All Users</literal>, unless you do not have write access to -<literal>HKEY_LOCAL_MACHINE</literal> in the registry or the All Users -Start Menu. This is true even if you are the only user planning to use Cygwin -on the machine. Selecting <literal>Just Me</literal> will cause problems -for programs such as <command>crond</command> and <command>sshd</command>. -If you do not have the necessary permissions, but still want to use these -programs, consult the Cygwin mailing list archives about others' experiences. - -</para> -<para> -The <literal>Default Text File Type</literal> should be left on -<literal>Unix</literal> (that is, <literal>\n</literal>) unless you -have a very good reason to switch it to -<literal>DOS</literal> (that is, <literal>\r\n</literal>). -</para> -</sect2> - -<sect2 id="setup-localdir"><title>Local Package Directory</title> -<para> -The <literal>Local Package Directory</literal> is the cache where -<command>setup.exe</command> stores the packages before they are -installed. The cache must not be the same folder as the Cygwin -root. Within the cache, a separate directory is created for each -Cygwin mirror, which allows <command>setup.exe</command> to use -multiple mirrors and custom packages. After installing Cygwin, -the cache is no longer necessary, but you may want to retain the -packages as backups, for installing Cygwin to another system, -or in case you need to reinstall a package. -</para> -</sect2> - -<sect2 id="setup-connection"><title>Connection Method</title> -<para> -The <literal>Direct Connection</literal> method of downloading will -directly download the packages, while the IE5 method will leverage your -IE5 cache for performance. If your organisation uses a proxy server or -auto-configuration scripts, the IE5 method also uses these settings. -If you have a proxy server, you can manually type it into -the <literal>Use Proxy</literal> section. Unfortunately, -<command>setup.exe</command> does not currently support password -authorization for proxy servers. -</para> -</sect2> - -<sect2 id="setup-mirror"><title>Choosing Mirrors</title> -<para> -Since there is no way of knowing from where you will be downloading -Cygwin, you need to choose at least one mirror site. Cygwin mirrors -are geographically distributed around the world; check the list at <ulink -url="http://cygwin.com/mirrors.html">http://cygwin.com/mirrors.html</ulink> -to find one near you. You can select multiple mirrors by holding down -<literal>CTRL</literal> and clicking on each one. If you have the URL of -an unlisted mirror (for example, if your organization has an internal Cygwin -mirror) you can add it. -</para> -</sect2> - -<sect2 id="setup-packages"><title>Choosing Packages</title> -<para> -For each selected mirror site, <command>setup.exe</command> downloads a -small text file called <literal>setup.bz2</literal> that contains a list -of packages available from that site along with some basic information about -each package which <command>setup.exe</command> parses and uses to create the -chooser window. For details about the format of this file, see -the <ulink url="http://sourceware.org/cygwin-apps/setup.html"> -setup.exe homepage</ulink>. -</para> -<para> -The chooser is the most complex part of <command>setup.exe</command>. -Packages are grouped into categories, and one package may belong to multiple -categories (assigned by the volunteer package maintainer). Each package -can be found under any of those categories in the heirarchial chooser view. -By default, <command>setup.exe</command> -will install only the packages in the <literal>Base</literal> category -and their dependencies, resulting in a minimal Cygwin installation. -However, this will not include many commonly used tools such as -<command>gcc</command> (which you will find in the <literal>Devel</literal> -category). Since <command>setup.exe</command> automatically selects -dependencies, be careful not to unselect any required packages. In -particular, everything in the <literal>Base</literal> category is -required. -</para> -<para> -You can change <command>setup.exe</command>'s view style, which is helpful -if you know the name of a package you want to install but not which -category it is in. -Click on the <literal>View</literal> button and it will rotate between -<literal>Category</literal> (the default), <literal>Full</literal> (all -packages), and <literal>Partial</literal> (only packages to be upgraded). -If you are familiar with Unix, you will probably want to at least glance -through the <literal>Full</literal> listing for your favorite tools. -</para> -<para> -Once you have an existing Cygwin installation, the <command>setup.exe</command> -chooser is also used to manage your Cygwin installation. -Information on installed packages is kept in the -<literal>/etc/setup/</literal> directory of your Cygwin installation; if -<command>setup.exe</command> cannot find this directory it will act as if -you have no Cygwin installation. If <command>setup.exe</command> -finds a newer version of an installed package available, it will automatically -mark it to be upgraded. -To <literal>Uninstall</literal>, <literal>Reinstall</literal>, or get the -<literal>Source</literal> for an existing package, click on -<literal>Keep</literal> to toggle it. -Also, to avoid the need to reboot after upgrading, make sure -to close all Cygwin windows and stop all Cygwin processes before -<command>setup.exe</command> begins to install the upgraded package. -</para> -<para> -The final feature of the <command>setup.exe</command> chooser is for -<literal>Previous</literal> and <literal>Experimental</literal> packages. -By default the chooser shows only the current version of each package, -though mirrors have at least one previous version and occasionally there -is a testing or beta version of a package available. To see these package, -click on the <literal>Prev</literal> or <literal>Exp</literal> radio button. -Be warned, however, that the next time you run <command>setup.exe</command> -it will try to replace old or experimental versions with the current -stable version. -</para> -</sect2> - -<sect2 id="setup-progress"><title>Download and Installation Progress</title> -<para> -First, <command>setup.exe</command> will download all selected packages -to the local directory chosen earlier. Before installing, -<command>setup.exe</command> performs a checksum on each package. If the -local directory is a slow medium (such as a network drive) this can take -a long time. During the download and installation, <command>setup.exe</command> -shows progress bars for the current task and total remaining disk space. -</para> -</sect2> - -<sect2 id="setup-icons"><title>Icons</title> -<para> -You may choose to install shortcuts on the Desktop and/or Start Menu -to start a <literal>bash</literal> shell. If you prefer to use a different -shell or the native Windows version of <literal>rxvt</literal>, you can -use these shortcuts as a guide to creating your own. -</para> -</sect2> - -<sect2 id="setup-postinstall"><title>Post-Install Scripts</title> -<para> -Last of all, <command>setup.exe</command> will run any post-install -scripts to finish correctly setting up installed packages. Since each -script is run separately, several windows may pop up. If you are -interested in what is being done, see the Cygwin Package Contributor's -Guide at <ulink -url="http://cygwin.com/setup.html">http://cygwin.com/setup.html</ulink> -When the last post-install script is completed, <command>setup.exe</command> -will display a box announcing the completion. A few packages, such as -the OpenSSH server, require some manual site-specific configuration. -Relevant documentation can be found in the <literal>/usr/doc/Cygwin/</literal> -or <literal>/usr/share/doc/Cygwin/</literal> directory. -</para> -</sect2> -<sect2 id="setup-troubleshooting"><title>Troubleshooting</title> -<para> -Unfortunately, the complex setup process means that odd problems can -occur. If you're having trouble downloading packages, it may be network -congestion, so try a different mirror and/or a different protocol (i.e., -HTTP instead of FTP). If you notice something is not working after -running setup, you can check the <command>setup.exe</command> log file -at <literal>/var/log/setup.log.full</literal>. Make a backup of this -file before running <command>setup.exe</command> again, and follow the -steps for <ulink url="http://cygwin.com/problems.html">Reporting -Problems with Cygwin</ulink>. -</para> -</sect2> - -</sect1> - -DOCTOOL-INSERT-setup-env -DOCTOOL-INSERT-setup-maxmem -DOCTOOL-INSERT-setup-locale -DOCTOOL-INSERT-ntsec -DOCTOOL-INSERT-setup-files -</chapter> diff --git a/winsup/doc/setup.sgml b/winsup/doc/setup.sgml deleted file mode 100644 index 1ba28abb5..000000000 --- a/winsup/doc/setup.sgml +++ /dev/null @@ -1,47 +0,0 @@ -<chapter id="setup"><title>Setting Up Cygwin</title> - -<sect1><title>Cygwin Contents</title> - -<para>The following packages are included in the native Win32 -release of GNUPro:</para> - -<para>GNUPro development tools: binutils, bison, byacc, dejagnu, -diff, expect, flex, gas, gcc, gdb, itcl, ld, libstdc++, make, patch, -tcl, tix, tk</para> - -<para>GNUPro unsupported tools: ash, bash, bzip2, diff, fileutils, -findutils, gawk, grep, gzip, m4, sed, shellutils, tar, textutils, -time</para> - -</sect1> - -<sect1 id="installing-binaries"><title>Installing the binary release</title> - -<para>Load the GNUPro CD-ROM and run the installer. It will -take you through the installation process, starting with asking for -your install location. Once the installation is complete, there will -be a new Program Files folder that you can use to obtain a shell -from which you can run the tools.</para> - -<para>There are two remaining thing you should do from this -prompt. First, you need to type <command>mkdir -p /tmp</command> to -ensure that a temp directory exists for programs that expect to find -one there.</para> - -<para>Second, depending on how you intend to use the tools, various -programs may need to be able to find `/bin/sh'. You should `mkdir -p -/bin' and put a copy of `sh.exe' there, removing the older version, if -present. Note that you can use the `mount' utility to select which -drive letter is mounted as `/'.</para> - -<para>If you should ever want to uninstall the tools, you may do so -via the "Add/Remove Programs" control panel.</para> - -</sect1> - -DOCTOOL-INSERT-setup-dir -DOCTOOL-INSERT-setup-env -DOCTOOL-INSERT-ntsec -DOCTOOL-INSERT-setup-reg -DOCTOOL-INSERT-setup-mount -</chapter> diff --git a/winsup/doc/setup2.sgml b/winsup/doc/setup2.sgml deleted file mode 100644 index fa63a9e23..000000000 --- a/winsup/doc/setup2.sgml +++ /dev/null @@ -1,561 +0,0 @@ -<sect1 id="setup-env"><title>Environment Variables</title> - -<para> -You may wish to specify settings of several important environment -variables that affect Cygwin's operation. Some of these settings need -to be in effect prior to launching the initial Cygwin session (before -starting your bash shell, for instance), and are, consequentially, best -placed in a .bat file. An initial file is named Cygwin.bat and is created -in the Cygwin root directory that you specified during setup. Note that -the "Cygwin" option of the Start Menu points to Cygwin.bat. Edit -Cygwin.bat to your liking or create your own .bat files to start -Cygwin processes.</para> - -<para> -The <envar>CYGWIN</envar> variable is used to configure many global -settings for the Cygwin runtime system. Initially you can leave -<envar>CYGWIN</envar> unset or set it to <literal>tty</literal> (e.g. -to support job control with ^Z etc...) using a syntax like this in the -DOS shell, before launching bash.</para> - -<screen> -<prompt>C:\></prompt> <userinput>set CYGWIN=tty notitle glob</userinput> -</screen> - -<para> -Locale support is controlled by the <envar>LANG</envar> and -<envar>LC_xxx</envar> environment variables. You can set all of them -but Cygwin itself only honors the variables <envar>LC_ALL</envar>, -<envar>LC_CTYPE</envar>, and <envar>LANG</envar>, in this order, according -to the POSIX standard. The first one found rules. For a more detailed -description see <xref linkend="setup-locale"></xref>. -</para> - -<para> -The <envar>PATH</envar> environment variable is used by Cygwin -applications as a list of directories to search for executable files -to run. This environment variable is converted from Windows format -(e.g. <filename>C:\Windows\system32;C:\Windows</filename>) to UNIX format -(e.g., <filename>/cygdrive/c/Windows/system32:/cygdrive/c/Windows</filename>) -when a Cygwin process first starts. -Set it so that it contains at least the <filename>x:\cygwin\bin</filename> -directory where "<filename>x:\cygwin</filename> is the "root" of your -cygwin installation if you wish to use cygwin tools outside of bash. -This is usually done by the batch file you're starting your shell with. -</para> - -<para> -The <envar>HOME</envar> environment variable is used by many programs to -determine the location of your home directory and we recommend that it be -defined. This environment variable is also converted from Windows format -when a Cygwin process first starts. It's usually set in the shell -profile scripts in the /etc directory. -</para> - -<para> -The <envar>TERM</envar> environment variable specifies your terminal -type. It is automatically set to <literal>cygwin</literal> if you have -not set it to something else. -</para> - -<para>The <envar>LD_LIBRARY_PATH</envar> environment variable is used by -the Cygwin function <function>dlopen ()</function> as a list of -directories to search for .dll files to load. This environment variable -is converted from Windows format to UNIX format when a Cygwin process -first starts. Most Cygwin applications do not make use of the -<function>dlopen ()</function> call and do not need this variable. -</para> - -</sect1> - -<sect1 id="setup-maxmem"><title>Changing Cygwin's Maximum Memory</title> - -<para> -Cygwin's heap is extensible. However, it does start out at a fixed size -and attempts to extend it may run into memory which has been previously -allocated by Windows. In some cases, this problem can be solved by -adding an entry in the either the <literal>HKEY_LOCAL_MACHINE</literal> -(to change the limit for all users) or -<literal>HKEY_CURRENT_USER</literal> (for just the current user) section -of the registry. </para> - -<para> -Add the <literal>DWORD</literal> value <literal>heap_chunk_in_mb</literal> -and set it to the desired memory limit in decimal MB. It is preferred to do -this in Cygwin using the <command>regtool</command> program included in the -Cygwin package. -(For more information about <command>regtool</command> or the other Cygwin -utilities, see <xref linkend="using-utils"></xref> or use the -<literal>--help</literal> option of each util.) You should always be careful -when using <command>regtool</command> since damaging your system registry can -result in an unusable system. This example sets memory limit to 1024 MB: - -<screen> -regtool -i set /HKLM/Software/Cygwin/heap_chunk_in_mb 1024 -regtool -v list /HKLM/Software/Cygwin -</screen> -</para> - -<para> -Exit all running Cygwin processes and restart them. Memory can be allocated up -to the size of the system swap space minus any the size of any running -processes. The system swap should be at least as large as the physically -installed RAM and can be modified under the System category of the -Control Panel. -</para> - -<para> -Here is a small program written by DJ Delorie that tests the -memory allocation limit on your system: - -<screen> -main() -{ - unsigned int bit=0x40000000, sum=0; - char *x; - - while (bit > 4096) - { - x = malloc(bit); - if (x) - sum += bit; - bit >>= 1; - } - printf("%08x bytes (%.1fMb)\n", sum, sum/1024.0/1024.0); - return 0; -} -</screen> - -You can compile this program using: -<screen> -gcc max_memory.c -o max_memory.exe -</screen> - -Run the program and it will output the maximum amount of allocatable memory. -</para> - -</sect1> - -<sect1 id="setup-locale"><title>Internationalization</title> - -<sect2 id="setup-locale-ov"><title>Overview</title> - -<para> -Internationalization support is controlled by the <envar>LANG</envar> and -<envar>LC_xxx</envar> environment variables. You can set all of them -but Cygwin itself only honors the variables <envar>LC_ALL</envar>, -<envar>LC_CTYPE</envar>, and <envar>LANG</envar>, in this order, according -to the POSIX standard. The content of these variables should follow the -POSIX standard for a locale specifier. The correct form of a locale -specifier is</para> - -<screen> - language[[_TERRITORY][.charset][@modifier]] -</screen> - -<para>"language" is a lowercase two character string per ISO 639-1, -"TERRITORY" is an uppercase two character string per ISO 3166, charset is -one of a list of supported character sets, and the modifier doesn't matter -here (though it might for some applications). If you're interested in the -exact description, you can find it in the online publication of the POSIX -manual pages on the homepage of the -<ulink url="http://www.opengroup.org/">Open Group</ulink>.</para> - -<para>Typical locale specifiers are</para> - -<screen> - "de_CH" language = German, territory = Switzerland, default charset - "fr_FR.UTF-8" language = french, territory = France, charset = UTF-8 - "ko_KR.eucKR" language = korean, territory = South Korea, charset = eucKR -</screen> - -<para> -And let's not forget the default locale called "C" or "POSIX" -which basically only supports plain ASCII code. If the aforementioned -environment variables are not set, or set to "C" or "POSIX", you get the -default ASCII-only behaviour. -</para> - -<para> -Right now the language and territory, as well as the modifier, are not -important to Cygwin, except to fix a single problem. There's a class of -characters in the Unicode character set, called the "CJK Ambiguous Width -Character set". For these characters the width returned by the -wcwidth/wcswidth function is usually 1. This is often a problem in -East-Asian languages, which historically use character sets in which -these characters have a width of 2. Kind of explains why they are -called "ambiguous"...</para> - -<para> -The problem has been fixed for now like this. wcwidth/wcswidth usually -return 1 as the width of these characters. However, if the language is -specifed as "ja" (Japanese), "ko" (Korean), or "zh" (Chinese), wcwidth -returns 2 for these characters. Unfortunately this isn't correct in -all circumstances, so the user can specify the modifier "@cjknarrow", -which modifies the behaviour of wcwidth/wcswidth to return 1 for the -ambiguous width characters to return 1 even in those languages.</para> - -<para> -Other than that, the only important part so far is the character set. -How does that work?</para> - -</sect2> - -<sect2 id="setup-locale-how"><title>How to set the locale</title> - -<itemizedlist mark="bullet"> - -<listitem><para> -The default locale is the "C" or "POSIX" locale. In this locale, basically -only ASCII characters are supported. Even if one of the aforementioned -environment variables are set to something else, it's the application's -responsibility to call the function <function>setlocale</function>, -typically like this</para> - -<screen> - setlocale (LC_ALL, ""); -</screen> - -<para>to switch to another locale according to the settings of the -internationalization environment variables. -</para></listitem> - -<listitem><para> -Assume that you've set one of the aforementioned environment variables to some -valid POSIX locale value, other than "C" and "POSIX", and assume that you -call an application which calls <function>setlocale</function> as above.</para> - -<para>Assume further that you're living in Japan. You might want to use -the language code "ja" and the territory "JP", thus setting, say, -<envar>LANG</envar> to "ja_JP". You didn't set a character set, so -what will Cygwin use now? Easy! It will use the default Windows ANSI -codepage of your system, if it's supported by Cygwin. Hopefully Cygwin -supports all relevant default ANSI codepages...</para> - -<note><para>For a list of supported character sets, see -<xref linkend="setup-locale-charsetlist"></xref> -</para></note> -</listitem> - -<listitem><para> -You don't want to use the default Windows codepage as character set? -In that case you have to specify the charset explicitly. For instance, -assume you're from Italy and don't want to use the default Windows codepage -1252, but the more portable ISO-8859-15 character set. What you can do is -to set the <envar>LANG</envar> variable in the -<filename>C:\cygwin\Cygwin.bat</filename> file which is the batch file -to start a Cygwin session from the "Cygwin" desktop shortcut.</para> - -<screen> - @echo off - - C: - chdir C:\cygwin\bin - set LANG=it_IT.ISO-8859-15 - bash --login -i -</screen> -</listitem> - -<listitem><para> -Most singlebyte or doublebyte charsets have a disadvantage. Windows -filesystems use the Unicode character set in the UTF-16 encoding to store filename information. Not all characters -from the Unicode character set are available in a singlebyte or doublebyte -charset. While Cygwin has a workaround to access files with unusual -characters (see <xref linkend="pathnames-unusual"></xref>), a better -workaround is to use always the UTF-8 character set. UTF-8 is the only -multibyte character set which can represent <emphasis>every</emphasis> -Unicode character.</para> - -<screen> - set LANG=es_MX.UTF-8 -</screen> - -<para>For a description of the Unicode standard, see the homepage of the -<ulink url="http://www.unicode.org/">Unicode Consortium</ulink>. -</para></listitem> - -</itemizedlist> - -</sect2> - -<!-- TODO: This is not correct anymore. -<sect2 id="setup-locale-console"><title>The Windows Console character set</title> - -<para>Most of the time the Windows console is used to run Cygwin applications. -While terminal emulations like <command>xterm</command> or -<command>mintty</command> have a distinct way to set the character set -used for in- and output, the Windows console hasn't such a way, since it's -not an application in its own right.</para> - -<para>This problem is solved in Cygwin as follows. When the first Cygwin -process is started in a Windows console (either explicitly from cmd.exe, -or implicitly by, for instance, clicking on the Cygwin desktop icon, or -running the Cygwin.bat file), the Console character set is determined by the -setting of the aforementioned internationalization environment variables, -the same way as described in <xref linkend="setup-locale-how"></xref>. -</para> - -<para>However, in contrast to the application's character set, which is -determined by the <function>setlocale</function> call, the console -character set stays fixed for all subsequent Cygwin processes started -from this first Cygwin process in the console. So, for instance, if -<envar>LANG</envar> was set to "en_US.UTF-8" when the first Cygwin process -started, the console is a UTF-8 terminal for the entire Cygwin process -tree started from this first Cygwin process.</para> - -<para>You're asking "What is that good for? Why not switch the console -character set with the applications requirements? After all, the -application knows if it uses localization or not." That's true, but -what if the non-localized application calls a remote application which -itself is localized? This can happen with <command>ssh</command> or -<command>rlogin</command>. Both commands don't have and don't need -localization and they never call <function>setlocale</function>. This -would have the unfortunate effect, that the console would run with the -ASCII character set alone. Native characters printed from the remote -application would not show up correctly on your local console.</para> - -</sect2> ---> - -<sect2 id="setup-locale-problems"><title>Potential Problems when using Locales</title> - -<para> -You can set the above internationalization variables not only in -<filename>Cygwin.bat</filename> or in the Windows environment, but also -in your Cygwin shell on the fly, even switch to yet another character -set, and yet another. In bash for instance:</para> - -<screen> - <prompt>bash$</prompt> export LC_CTYPE="nl_BE.UTF-8" -</screen> - -<para>However, here's a problem. At the start of the first Cygwin process -in a session, the Windows environment has to be converted from UTF-16 to -some singlebyte or multibyte charset. If the internationalization environment -variable hasn't been set <emphasis>before</emphasis> starting this process, -Cygwin has to make an educated guess which charset to use to convert -the environment itself. The only reproducible way to do that in the absence -of <envar>LC_ALL</envar>, <envar>LC_CTYPE</envar>, or <envar>LANG</envar>, -is to use the "C" locale. The default conversion in the "C" locale -used by Cygwin internally is UTF-8. So, in the absence of any -internationalization environment variable, the environment will be converted -to UTF-8.</para> - -<para>As long as the environment only contains ASCII characters, this is -no problem at all. But if it contains native characters, and you're planning -to use, say, GBK, the environment will result in invalid characters in -the GBK charset. This would be especially a problem in variables like -<envar>PATH</envar>.</para> - -<note><para>Per POSIX, the name of an environment variable should only -consist of valid ASCII characters, and only of uppercase letters, digits, and -the underscore for maximum portablilty.</para></note> - -<para>Symbolic links, too, may pose a problem when switching charsets on -the fly. A symbolic link contains the filename of the target file the -symlink points to. When a symlink had been created with older versions -of Cygwin, the current ANSI or OEM character set had been used to store -the target filename, dependent on the old <envar>CYGWIN</envar> -environment variable setting <envar>codepage</envar> (see <xref -linkend="cygwinenv-removed-options"></xref>. If the target filename -contains non-ASCII characters and you use another character set than -your default ANSI/OEM charset, the target filename of the symlink is now -potentially an invalid character sequence in the new character set. -This behaviour is not different from the behaviour in other Operating -Systems. So, if you suddenly can't access a symlink anymore which -worked all these years before, maybe it's because you switched to -another character set. This doesn't occur with symlinks created with -Cygwin 1.7 or later. </para> - -</sect2> - -<sect2 id="setup-locale-missing"><title>What does not work?</title> - -<para> -Except for <envar>LC_ALL</envar>, <envar>LC_CTYPE</envar>, -and <envar>LANG</envar>, all other LC_xxx environment variables, -<envar>LC_COLLATE</envar>, <envar>LC_MESSAGES</envar>, -<envar>LC_MONETARY</envar>, <envar>LC_NUMERIC</envar>, -and <envar>LC_TIME</envar>, are ignored right now. This means, while Cygwin -supports different character sets, it does <emphasis>not</emphasis> support -real localization so far. There's no support for locale-specific monetary -symbols, for a decimalpoint other than '.', no support for native time -formats, and no support for native language sorting orders. -</para> - -<para>Cygwin's internationalization support is work in progress and we would -be glad for coding help in this area.</para> - -</sect2> - -<sect2 id="setup-locale-charsetlist"><title>List of supported character sets</title> - -<para>Last but not least, here's the list of currently supported character -sets. The left-hand expression is the name of the charset, as you would use -it in the internationalization environment variables as outlined above. -Note that charset specifiers are case-insensitive. <literal>EUCJP</literal> -is equivalent to <literal>eucJP</literal> or <literal>eUcJp</literal>. -Writing the charset in the exact case as given in the list below is a -good convention, though. -</para> - -<para>The right-hand side is the number of the equivalent Windows -codepage as well as the Windows name of the codepage. They are only -noted here for reference. Don't try to use the bare codepage number or -the Windows name of the codepage as charset in locale specifiers, unless -they happen to be identical with the left-hand side. Especially in case -of the "CPxxx" style charsets, always use them with the trailing "CP".</para> - -<para>This works:</para> - -<screen> - set LC_ALL=en_US.CP437 -</screen> - -<para>This does <emphasis>not</emphasis> work:</para> - -<screen> - set LC_ALL=en_US.437 -</screen> - -<para>You can find a full list of Windows codepages on the Microsoft MSDN page -<ulink url="http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx">Code Page Identifiers</ulink>.</para> - -<screen> - Charset Codepage - - CP437 437 (OEM United States) - CP720 720 (DOS Arabic) - CP737 737 (OEM Greek) - CP775 775 (OEM Baltic) - CP850 850 (OEM Latin 1, Western European) - CP852 852 (OEM Latin 2, Central European) - CP855 855 (OEM Cyrillic) - CP857 857 (OEM Turkish) - CP858 858 (OEM Latin 1 + Euro Symbol) - CP862 862 (OEM Hebrew) - CP866 866 (OEM Russian) - CP874 874 (ANSI/OEM Thai) - CP1125 1125 (OEM Ukraine) - CP1250 1250 (ANSI Central European) - CP1251 1251 (ANSI Cyrillic) - CP1252 1252 (ANSI Latin 1, Western European) - CP1253 1253 (ANSI Greek) - CP1254 1254 (ANSI Turkish) - CP1255 1255 (ANSI Hebrew) - CP1256 1256 (ANSI Arabic) - CP1257 1257 (ANSI Baltic) - CP1258 1258 (ANSI/OEM Vietnamese) - - ISO-8859-1 28591 (ISO-8859-1) - ISO-8859-2 28592 (ISO-8859-2) - ISO-8859-3 28593 (ISO-8859-3) - ISO-8859-4 28594 (ISO-8859-4) - ISO-8859-5 28595 (ISO-8859-5) - ISO-8859-6 28596 (ISO-8859-6) - ISO-8859-7 28597 (ISO-8859-7) - ISO-8859-8 28598 (ISO-8859-8) - ISO-8859-9 28599 (ISO-8859-9) - ISO-8859-10 - (not available) - ISO-8859-11 - (not available) - ISO-8859-13 28603 (ISO-8859-13) - ISO-8859-14 - (not available) - ISO-8859-15 28605 (ISO-8859-15) - ISO-8859-16 - (not available) - - KOI8-R 20866 (KOI8-R Russian Cyrillic) - KOI8-U 21866 (KOI8-U Ukrainian Cyrillic) - SJIS 932 (ANSI/OEM Japanese) - GBK 936 (ANSI/OEM Simplified Chinese) - Big5 950 (ANSI/OEM Traditional Chinese) - eucJP 20932 (EUC Japanese) - eucKR 949 (EUC Korean) - - UTF-8 or UTF8 65001 (UTF-8) -</screen> - -</sect2> - -</sect1> - -<sect1 id="setup-files"><title>Customizing bash</title> - -<para> -To set up bash so that cut and paste work properly, click on the -"Properties" button of the window, then on the "Misc" tab. Make sure -that "QuickEdit mode" and "Insert mode" are checked. These settings -will be remembered next time you run bash from that shortcut. Similarly -you can set the working directory inside the "Program" tab. The entry -"%HOME%" is valid, but requires that you set <envar>HOME</envar> in -the Windows environment. -</para> - -<para> -Your home directory should contain three initialization files -that control the behavior of bash. They are -<filename>.profile</filename>, <filename>.bashrc</filename> and -<filename>.inputrc</filename>. The Cygwin base installation creates -stub files when you start bash for the first time.</para> - -<para> -<filename>.profile</filename> (other names are also valid, see the bash man -page) contains bash commands. It is executed when bash is started as login -shell, e.g. from the command <command>bash --login</command>. -This is a useful place to define and -export environment variables and bash functions that will be used by bash -and the programs invoked by bash. It is a good place to redefine -<envar>PATH</envar> if needed. We recommend adding a ":." to the end of -<envar>PATH</envar> to also search the current working directory (contrary -to DOS, the local directory is not searched by default). Also to avoid -delays you should either <command>unset</command> <envar>MAILCHECK</envar> -or define <envar>MAILPATH</envar> to point to your existing mail inbox. -</para> - -<para> -<filename>.bashrc</filename> is similar to -<filename>.profile</filename> but is executed each time an interactive -bash shell is launched. It serves to define elements that are not -inherited through the environment, such as aliases. If you do not use -login shells, you may want to put the contents of -<filename>.profile</filename> as discussed above in this file -instead. -</para> - -<para> -<screen> -shopt -s nocaseglob -</screen> -will allow bash to glob filenames in a case-insensitive manner. -Note that <filename>.bashrc</filename> is not called automatically for login -shells. You can source it from <filename>.profile</filename>. -</para> - -<para> -<filename>.inputrc</filename> controls how programs using the readline -library (including <command>bash</command>) behave. It is loaded -automatically. For full details see the <literal>Function and Variable -Index</literal> section of the GNU <systemitem>readline</systemitem> manual. -Consider the following settings: -<screen> -# Ignore case while completing -set completion-ignore-case on -# Make Bash 8bit clean -set meta-flag on -set convert-meta off -set output-meta on -</screen> -The first command makes filename completion case insensitive, which can -be convenient in a Windows environment. The next three commands allow -<command>bash</command> to display 8-bit characters, useful for -languages with accented characters. Note that tools that do not use -<systemitem>readline</systemitem> for display, such as -<command>less</command> and <command>ls</command>, require additional -settings, which could be put in your <filename>.bashrc</filename>: -<screen> -alias less='/bin/less -r' -alias ls='/bin/ls -F --color=tty --show-control-chars' -</screen> -</para> - -</sect1> - diff --git a/winsup/doc/textbinary.sgml b/winsup/doc/textbinary.sgml deleted file mode 100644 index 055a5e012..000000000 --- a/winsup/doc/textbinary.sgml +++ /dev/null @@ -1,209 +0,0 @@ -<sect1 id="using-textbinary"><title>Text and Binary modes</title> - -<sect2 id="textbin-issue"> <title>The Issue</title> - -<para>On a UNIX system, when an application reads from a file it gets -exactly what's in the file on disk and the converse is true for writing. -The situation is different in the DOS/Windows world where a file can -be opened in one of two modes, binary or text. In the binary mode the -system behaves exactly as in UNIX. However on writing in text mode, a -NL (\n, ^J) is transformed into the sequence CR (\r, ^M) NL. -</para> - -<para>This can wreak havoc with the seek/fseek calls since the number -of bytes actually in the file may differ from that seen by the -application.</para> - -<para>The mode can be specified explicitly as explained in the Programming -section below. In an ideal DOS/Windows world, all programs using lines as -records (such as <command>bash</command>, <command>make</command>, -<command>sed</command> ...) would open files (and change the mode of their -standard input and output) as text. All other programs (such as -<command>cat</command>, <command>cmp</command>, <command>tr</command> ...) -would use binary mode. In practice with Cygwin, programs that deal -explicitly with object files specify binary mode (this is the case of -<command>od</command>, which is helpful to diagnose CR problems). Most -other programs (such as <command>cat</command>, <command>cmp</command>, -<command>tr</command>) use the default mode.</para> - -</sect2> - -<sect2 id="textbin-default"><title>The default Cygwin behavior</title> - -<para>The Cygwin system gives us some flexibility in deciding how files -are to be opened when the mode is not specified explicitly. -The rules are evolving, this section gives the design goals.</para> - -<orderedlist numeration="loweralpha"> -<listitem> -<para>If the filename is specified as a POSIX path and it appears to -reside on a file system that is mounted (i.e. if its pathname starts -with a directory displayed by <command>mount</command>), then the -default is specified by the mount flag. If the file is a symbolic link, -the mode of the target file system applies.</para> -</listitem> - -<listitem> -<para>If the file is specified via a MS-DOS pathname (i.e., it contains a -backslash or a colon), the default is binary. -</para> -</listitem> - -<listitem> -<para>Pipes, sockets and non-file devices are opened in binary mode. -For pipes opened through the pipe() system call you can use the setmode() -function (see <xref linkend="textbin-devel"></xref> to switch to textmode. -For pipes opened through popen(), you can simply specify text or binary -mode just like in calls to fopen().</para> -</listitem> - -<listitem> -<para>Sockets and other non-file devices are always opened in binary mode. -</para> -</listitem> - -<listitem> -<para> When redirecting, the Cygwin shells uses rules (a-d). -Non-Cygwin shells always pipe and redirect with binary mode. With -non-Cygwin shells the commands <command> cat filename | program </command> -and <command> program < filename </command> are not equivalent when -<filename>filename</filename> is on a text-mounted partition. </para> -</listitem> -</orderedlist> -</sect2> - -<sect2 id="textbin-example"><title>Example</title> -<para>To illustrate the various rules, we provide scripts to delete CRs -from files by using the <command>tr</command> program, which can only write -to standard output. -The script</para> -<screen> -<![CDATA[ -#!/bin/sh -# Remove \r from the file given as argument -tr -d '\r' < "$1" > "$1".nocr -]]> -</screen> -<para> will not work on a text mounted systems because the \r will be -reintroduced on writing. However scripts such as </para> -<screen> -<![CDATA[ -#!/bin/sh -# Remove \r from the file given as argument -tr -d '\r' | gzip | gunzip > "$1".nocr -]]> -</screen> -<para>and the .bat file</para> -<screen> -<![CDATA[ -REM Remove \r from the file given as argument -@echo off -tr -d \r < %1 > %1.nocr -]]> -</screen> -<para> work fine. In the first case we rely on <command>gunzip</command> to -set its output to binary mode, possibly overriding the mode used by the shell. -In the second case we rely on the DOS shell to redirect in binary mode. -</para> -</sect2> - -<sect2 id="textbin-question"><title>Binary or text?</title> - -<para>UNIX programs that have been written for maximum portability -will know the difference between text and binary files and act -appropriately under Cygwin. Most programs included in the official -Cygwin distributions should work well in the default mode. </para> - -<para>Binmode is the best choice usually since it's faster and -easier to handle, unless you want to exchange files with native Win32 -applications. It makes most sense to keep the Cygwin distribution -and your Cygwin home directory in binmode and generate text files in -binmode (with UNIX LF lineendings). Most Windows applications can -handle binmode files just fine. A notable exception is the mini-editor -<command>Notepad</command>, which handles UNIX lineendings incorrectly -and only produces output files with DOS CRLF lineendings.</para> - -<para>You can convert files between CRLF and LF lineendings by using -certain tools in the Cygwin distribution like <command>d2u</command> and -<command>u2d</command> from the cygutils package. You can also specify -a directory in the mount table to be mounted in textmode so you can use -that directory for exchange purposes.</para> - -<para>As application programmer you can decide on a file by file base, -or you can specify default open modes depending on the purpose for which -the application open files. See the next section for a description of -your choices.</para> - -</sect2> - -<sect2 id="textbin-devel"><title>Programming</title> - -<para>In the <function>open()</function> function call, binary mode can be -specified with the flag <literal>O_BINARY</literal> and text mode with -<literal>O_TEXT</literal>. These symbols are defined in -<filename>fcntl.h</filename>.</para> - -<para>In the <function>fopen()</function> and <function>popen()</function> -function calls, binary mode can be specified by adding a <literal>b</literal> -to the mode string. Text mode is specified by adding a <literal>t</literal> -to the mode string.</para> - -<para>The mode of a file can be changed by the call -<function>setmode(fd,mode)</function> where <literal>fd</literal> is a file -descriptor (an integer) and <literal>mode</literal> is -<literal>O_BINARY</literal> or <literal>O_TEXT</literal>. The function -returns <literal>O_BINARY</literal> or <literal>O_TEXT</literal> depending -on the mode before the call, and <literal>EOF</literal> on error.</para> - -<para>There's also a convenient way to set the default open modes used -in an application by just linking against various object files provided -by Cygwin. For instance, if you want to make sure that all files are -always opened in binary mode by an application, regardless of the mode -of the underlying mount point, just add the file -<filename>/lib/binmode.o</filename> to the link stage of the application -in your project, like this:</para> - -<screen> - $ gcc my_tiny_app.c /lib/binmode.o -o my_tiny_app -</screen> - -<para>This adds code which sets the default open mode for all files -opened by <command>my_tiny_app</command> to binary for reading and -writing.</para> - -<para>Cygwin provides the following object files to set the default open mode -just by linking an application against them:</para> - -<itemizedlist mark="bullet"> - -<listitem> -<screen> -/lib/automode.o - Open files for reading in textmode - Open files for writing in binary mode -</screen> -</listitem> - -<listitem> -<screen> -/lib/binmode.o - Open files for reading and writing in binary mode -</screen> -</listitem> - -<listitem> -<screen> -/lib/textmode.o - Open files for reading and writing in textmode -</screen> -</listitem> - -<listitem> -<screen> -/lib/textreadmode.o - Open files for reading in textmode - Keep default behaviour for writing. -</screen> -</listitem> - -</itemizedlist> - -</sect2> - -</sect1> diff --git a/winsup/doc/using.sgml b/winsup/doc/using.sgml deleted file mode 100644 index 4678cff93..000000000 --- a/winsup/doc/using.sgml +++ /dev/null @@ -1,23 +0,0 @@ -<chapter id="using"><title>Using Cygwin</title> - -<para>This chapter explains some key differences between the Cygwin -environment and traditional UNIX systems. It assumes a working -knowledge of standard UNIX commands.</para> - -DOCTOOL-INSERT-using-pathnames - -DOCTOOL-INSERT-using-textbinary - -DOCTOOL-INSERT-using-filemodes - -DOCTOOL-INSERT-using-specialnames - -DOCTOOL-INSERT-using-cygwinenv - -DOCTOOL-INSERT-using-cygserver - -DOCTOOL-INSERT-using-utils - -DOCTOOL-INSERT-using-effectively - -</chapter> diff --git a/winsup/doc/windres.sgml b/winsup/doc/windres.sgml deleted file mode 100644 index 82c537dff..000000000 --- a/winsup/doc/windres.sgml +++ /dev/null @@ -1,169 +0,0 @@ - -<sect1 id="windres"><title>Defining Windows Resources</title> - -<para><filename>windres</filename> reads a Windows resource file -(<filename>*.rc</filename>) and converts it to a res or coff file. -The syntax and semantics of the input file are the same as for any -other resource compiler, so please refer to any publication describing -the Windows resource format for details. Also, the -<filename>windres</filename> program itself is fully documented in the -Binutils manual. Here's an example of using it in a project:</para> - -<screen> -<![CDATA[ -myapp.exe : myapp.o myapp.res - gcc -mwindows myapp.o myapp.res -o $@ - -myapp.res : myapp.rc resource.h - windres $< -O coff -o $@ -]]> -</screen> - - -<para>What follows is a quick-reference to the syntax -<filename>windres</filename> supports.</para> - -<screen> - -id ACCELERATORS suboptions -BEG -"^C" 12 -"Q" 12 -65 12 -65 12 , VIRTKEY ASCII NOINVERT SHIFT CONTROL ALT -65 12 , VIRTKEY, ASCII, NOINVERT, SHIFT, CONTROL, ALT -(12 is an acc_id) -END - -SHIFT, CONTROL, ALT require VIRTKEY - - -id BITMAP memflags "filename" -memflags defaults to MOVEABLE - - -id CURSOR memflags "filename" -memflags defaults to MOVEABLE,DISCARDABLE - - -id DIALOG memflags exstyle x,y,width,height styles BEG controls END -id DIALOGEX memflags exstyle x,y,width,height styles BEG controls END -id DIALOGEX memflags exstyle x,y,width,height,helpid styles BEG controls END - -memflags defaults to MOVEABLE -exstyle may be EXSTYLE=number -styles: CAPTION "string" - CLASS id - STYLE FOO | NOT FOO | (12) - EXSTYLE number - FONT number, "name" - FONT number, "name",weight,italic - MENU id - CHARACTERISTICS number - LANGUAGE number,number - VERSIONK number -controls: - AUTO3STATE params - AUTOCHECKBOX params - AUTORADIOBUTTON params - BEDIT params - CHECKBOX params - COMBOBOX params - CONTROL ["name",] id, class, style, x,y,w,h [,exstyle] [data] - CONTROL ["name",] id, class, style, x,y,w,h, exstyle, helpid [data] - CTEXT params - DEFPUSHBUTTON params - EDITTEXT params - GROUPBOX params - HEDIT params - ICON ["name",] id, x,y [data] - ICON ["name",] id, x,y,w,h, style, exstyle [data] - ICON ["name",] id, x,y,w,h, style, exstyle, helpid [data] - IEDIT params - LISTBOX params - LTEXT params - PUSHBOX params - PUSHBUTTON params - RADIOBUTTON params - RTEXT params - SCROLLBAR params - STATE3 params - USERBUTTON "string", id, x,y,w,h, style, exstyle -params: - ["name",] id, x, y, w, h, [data] - ["name",] id, x, y, w, h, style [,exstyle] [data] - ["name",] id, x, y, w, h, style, exstyle, helpid [data] - -[data] is optional BEG (string|number) [,(string|number)] (etc) END - - -id FONT memflags "filename" -memflags defaults to MOVEABLE|DISCARDABLE - -id ICON memflags "filename" -memflags defaults to MOVEABLE|DISCARDABLE - -LANGUAGE num,num - -id MENU options BEG items END -items: - "string", id, flags - SEPARATOR - POPUP "string" flags BEG menuitems END -flags: - CHECKED - GRAYED - HELP - INACTIVE - MENUBARBREAK - MENUBREAK - -id MENUEX suboptions BEG items END -items: - MENUITEM "string" - MENUITEM "string", id - MENUITEM "string", id, type [,state] - POPUP "string" BEG items END - POPUP "string", id BEG items END - POPUP "string", id, type BEG items END - POPUP "string", id, type, state [,helpid] BEG items END - -id MESSAGETABLE memflags "filename" -memflags defaults to MOVEABLE - -id RCDATA suboptions BEG (string|number) [,(string|number)] (etc) END - -STRINGTABLE suboptions BEG strings END -strings: - id "string" - id, "string" - -(User data) -id id suboptions BEG (string|number) [,(string|number)] (etc) END - -id VERSIONINFO stuffs BEG verblocks END -stuffs: FILEVERSION num,num,num,num - PRODUCTVERSION num,num,num,num - FILEFLAGSMASK num - FILEOS num - FILETYPE num - FILESUBTYPE num -verblocks: - BLOCK "StringFileInfo" BEG BLOCK BEG vervals END END - BLOCK "VarFileInfo" BEG BLOCK BEG vertrans END END -vervals: VALUE "foo","bar" -vertrans: VALUE num,num - - - -suboptions: - memflags - CHARACTERISTICS num - LANGUAGE num,num - VERSIONK num - -memflags are MOVEABLE/FIXED PURE/IMPURE PRELOAD/LOADONCALL DISCARDABLE - -</screen> - -</sect1> |