diff options
Diffstat (limited to 'winsup/doc')
42 files changed, 0 insertions, 8511 deletions
diff --git a/winsup/doc/ChangeLog b/winsup/doc/ChangeLog deleted file mode 100644 index 2e76ede2f..000000000 --- a/winsup/doc/ChangeLog +++ /dev/null @@ -1,123 +0,0 @@ -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 4be5f06e5..000000000 --- a/winsup/doc/Makefile.in +++ /dev/null @@ -1,121 +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) - -# These *.info targets don't actually work, so remove them for now. -# Put them back when we figure out what to do with them. (davisb) -#DOC=faq.txt faq.info readme.txt readme.info -DOC=faq.txt readme.txt -HTMLDOC=faq.html readme.html - -CC:=@CC@ -CC_FOR_TARGET:=@CC@ -exeext:=@build_exeext@ - -MAKEINFO:=makeinfo -TEXI2DVI:=texi2dvi -TEXI2HTML:=texi2html - -include $(srcdir)/../Makefile.common - -TOCLEAN:=faq.txt ./*.html readme.txt doctool.o doctool \ - cygwin-ug.sgml cygwin-ug-net.sgml - -.SUFFIXES: - -# You can add cygwin-api/cygwin-api.html if you want to. -all : \ - cygwin-ug/cygwin-ug.html \ - cygwin-ug-net/cygwin-ug-net.html \ - cygwin-api-int/cygwin-api-int.html \ - cygwin-api/cygwin-api.html \ - $(DOC) \ - $(HTMLDOC) - -clean: - rm -f $(TOCLEAN) - -install: all - -cygwin-ug/cygwin-ug.html : cygwin-ug.sgml doctool - -db2html $< - -cygwin-ug.sgml : cygwin-ug.in.sgml ./doctool Makefile - -./doctool -m $(SGMLDIRS) -s $(srcdir) -o $@ $< - -cygwin-ug-net/cygwin-ug-net.html : cygwin-ug-net.sgml doctool - -db2html $< - -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 - -db2html $< - -cygwin-api.sgml : cygwin-api.in.sgml ./doctool Makefile - -./doctool -m $(SGMLDIRS) -s $(srcdir) -o $@ $< - -cygwin-api-int/cygwin-api-int.html : cygwin-api-int.sgml - -db2html $< - -cygwin-api-int.sgml : cygwin-api.in.sgml ./doctool Makefile - -./doctool -i -m $(SGMLDIRS) -s $(srcdir) -b cygwin-api-int -o $@ $< - -./doctool : doctool.c - gcc -g $< -o $@ - -%.dvi: %.sgml - -db2dvi $< - -%.rtf: %.sgml - -db2rtf $< - -%.ps: %.sgml - -db2ps $< - -%.pdf: %.ps - -ps2pdf $< $@ - -%.info: %.texinfo - -$(MAKEINFO) -I $(srcdir) $< - -%.txt: %.texinfo - -$(MAKEINFO) -I $(srcdir) $< - -%.html: %.texinfo - -$(TEXI2HTML) -I $(srcdir) $< - -readme.txt: $(srcdir)/readme.texinfo $(srcdir)/*.texinfo - -$(MAKEINFO) -I$(srcdir) --no-split --no-headers $< -o - |\ - sed '/^Concept Index/,$$d' > $@ - -faq.html: $(srcdir)/faq.texinfo $(srcdir)/*.texinfo - -rm -f faq_toc.html; \ - for i in $(srcdir)/*.texinfo ; do \ - sed < $$i -e 's?@file{\([fth]*p://[^}]*\)}?@strong{<A HREF="\1">\1</A>}?' \ - -e 's?\([.+a-zA-Z0-9-]*@@[.a-zA-Z0-9-]*[a-zA-Z0-9]\)?<A HREF="mailto:\1">\1</A>?' >./`basename $$i` ; done; \ - $(TEXI2HTML) -split_chapter ./faq.texinfo; \ - rm -f *.texinfo; \ - [ -r faq_toc.html ] && mv faq_toc.html faq.html; exit 0 - -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/calls.texinfo b/winsup/doc/calls.texinfo deleted file mode 100644 index 244f8fc2e..000000000 --- a/winsup/doc/calls.texinfo +++ /dev/null @@ -1,707 +0,0 @@ -@chapter What Unix API calls are supported by Cygwin? - -This is the beginning of documentation listing the calls supported -by the Cygwin library. - -All POSIX.1/1996 and ANSI C calls are listed in this file. Note that -while almost all POSIX.1/1990 calls are included in Cygwin, most -POSIX.1/1996 calls are not (yet at least!). Additional Unix -compatibility calls and extended libc/libm calls are provided by -Cygwin but may or may not be listed yet. - -To see if a function is implemented but not listed here, check for the -presence of the call in the file winsup/cygwin.din in the sources. In -addition, you may want to read the source code corresponding to the call -to verify that it is not a stub. Finally, libc/libm functions -(including extended calls not listed here) may be documented in the -newlib texinfo documentation. - -Calls are implemented on both Windows 95 and NT unless otherwise -noted. Included are references to relevant standards, if any. -Calls starting with "cygwin_" are Cygwin-specific calls. - -@section ANSI C Library Functions - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -@itemize @code - -@item libc stdio (newlib/libc/stdio) -@itemize @code -@item clearerr: C 4.9.10.1 -@item fclose: C 4.9.5.1, P 8.2.3.2 -@item feof: C 4.9.10.2 -@item ferror: C 4.9.10.3 -@item fflush: C 4.9.5.2, P 8.2.3.4 -@item fgetc: C 4.9.7.1, P 8.2.3.5 -@item fgetpos: C 4.9.9.1 -@item fgets: C 4.9.7.2, P 8.2.3.5 -@item fopen: C 4.9.5.3, P 8.2.3.1 -@item fprintf: C 4.9.7.3, P 8.2.3.6 -@item fputc: C 4.9.7.3, P 8.2.3.6 -@item fputs: C 4.9.7.4, P 8.2.3.6 -@item fread: C 4.9.8.1, P 8.2.3.5 -@item freopen: C 4.9.5.4, P 8.2.3.3 -@item fscanf: C 4.9.6.2, P 8.2.3.7 -@item fseek: C 4.9.9.2, P 8.2.3.7 -@item fsetpos: C 4.9.9.3 -@item ftell: C 4.9.9.4, P 8.2.3.10 -@item fwrite: C 4.9.8.2, P 8.2.3.6 -@item getc: C 4.9.7.5, P 8.2.3.5 -@item getchar: C 4.9.7.6, P 8.2.3.5 -@item gets: C 4.9.7.7, P 8.2.3.5 -@item perror: C 4.9.10.4, P 8.2.3.8 -@item printf: C 4.9.6.3, P 8.2.3.6 -@item putc: C 4.9.7.8, P 8.2.3.6 -@item putchar: C 4.9.7.9, P 8.2.3.6 -@item puts: C 4.9.7.10, P 8.2.3.6 -@item remove: C 4.9.4.1, P 8.2.4 -@item rename: C 4.9.4.2, P 5.5.3.1 -@item rewind: C 4.9.9.5, P 8.2.3.7 -@item scanf: C 4.9.6.4, P 8.2.3.5 -@item setbuf: C 4.9.5.5 -@item setvbuf: C 4.9.5.6 -@item sprintf: C 4.9.6.5 -@item sscanf: C 4.9.6.6 -@item tmpfile: C 4.9.4.3, P 8.2.3.9 -@item tmpnam: C 4.9.4.4, P 8.2.5 -@item vfprintf: C 4.9.6.7 -@item ungetc: C 4.9.7.11 -@item vprintf: C 4.9.6.8 -@item vsprintf: C 4.9.6.9 -@end itemize - -@item libc string (newlib/libc/string) -@itemize @code -@item memchr: C 4.11.5.1 -@item memcmp: C 4.11.4.1 -@item memcpy: C 4.11.2.1 -@item memmove: C 4.11.2.2 -@item memset: C 4.11.6.1 -@item strcat: C 4.11.3.1 -@item strchr: C 4.11.5.2 -@item strcmp: C 4.11.4.2 -@item strcoll: C 4.11.4.3 -@item strcpy: C 4.11.2.3 -@item strcspn: C 4.11.5.3 -@item strerror: C 4.11.6.2 -@item strlen: C 4.11.6.3 -@item strncat: C 4.11.3.2 -@item strncmp: C 4.11.3.2 -@item strncpy: C 4.11.2.4 -@item strpbrk: C 4.11.5.4 -@item strrchr: C 4.11.5.5 -@item strspn: C 4.11.5.6 -@item strstr: C 4.11.5.7 -@item strtok: C 4.11.5.8 -@item strxfrm: C 4.11.4.5 -@end itemize - -@item libc stdlib (newlib/libc/stdlib, environ.cc, newlib/libc/include/machine/setjmp.h newlib/libc/include/assert.h) -@itemize @code -@item abort: C 4.10.4.1, P 8.2.3.12 -@item abs: C 4.10.6.1 -@item assert: C 4.2.1.1 -@item atexit: C 4.10.4.2 -@item atof: C 4.10.1.1 -@item atoi: C 4.10.1.2 -@item atol: C 4.10.1.3 -@item bsearch: C 4.10.5.1 -@item calloc: C 4.10.3.1 -@item div: C 4.10.6.2 -@item exit: C 4.10.4.3, P 8.2.3.12 -@item free: C 4.10.3.2 -@item getenv: C 4.10.4.4, P 4.6.1.1 -@item labs: C 4.10.6.3 -@item ldiv: C 4.10.6.2 -@item longjmp: C 4.6.2.1 -@item malloc: C 4.10.3.3 -@item mblen: C 4.10.7.1 -@item mbstowcs: C 4.10.8.1 -@item mbtowc: C 4.10.7.2 -@item qsort: 4.10.5.2 -@item rand: C 4.10.2.1 -@item realloc: C 4.10.3.4 -@item setjmp: C 4.6.1.1 -@item srand: C 4.10.2.2 -@item strtod: C 4.10.1.4 -@item strtol: C 4.10.1.5 -@item strtoul: C 4.10.1.6 -@item system: C 4.10.4.5 -@item wcstombs: C 4.10.8.2 -@item wctomb: C 4.10.7.3 -@end itemize - -@item libc time (times.cc, newlib/libc/time) -@itemize @code -@item asctime: C 4.12.3.1 -@item gmtime: C 4.12.3.3 -@item localtime: C 4.12.3.4, P 8.1.1 -@item time: C 4.12.2.4, P 4.5.1.1 -@item clock: C 4.12.2.1 -@item ctime: C 4.12.3.2 -@item difftime: C 4.12.2.2 -@item mktime: C 4.12.2.3, P 8.1.1 -@item strftime: C 4.11.6.2 -@end itemize - -@item libc signals (signal.cc, newlib/libc/signal) -@itemize @code -@item raise: C 4.7.2.1 -@item signal: C 4.7.1.1 -@end itemize - -@item libc ctype (newlib/libc/ctype) -@itemize @code -@item isalnum: C 4.3.1.1 -@item isalpha: C 4.3.1.2 -@item iscntrl: C 4.3.1.3 -@item isdigit: C 4.3.1.4 -@item isgraph: C 4.3.1.5 -@item islower: C 4.3.1.6 -@item isprint: C 4.3.1.7 -@item ispunct: C 4.3.1.8 -@item isspace: C 4.3.1.9 -@item isupper: C 4.3.1.10 -@item isxdigit: C 4.3.1.11 -@item tolower: C 4.3.2.1 -@item toupper: C 4.3.2.2 -@end itemize - -@item libm math (newlib/libm/math) -@itemize @code -@item acos: C 4.5.2.1 -@item asin: C 4.5.2.2 -@item atan: C 4.5.2.3 -@item atan2: C 4.5.2.4 -@item ceil: C 4.5.6.1 -@item cos: C 4.5.2.5 -@item cosh: C 4.5.3.2 -@item exp: C 4.5.4.1 -@item fabs: C 4.5.6.2 -@item floor: C 4.5.6.3 -@item fmod: C 4.5.6.4 -@item frexp: C 4.5.4.2 -@item ldexp: C 4.5.4.3 -@item log: C 4.5.4.4 -@item log10: C 4.5.4.5 -@item modf: C 4.5.4.6 -@item pow: C 4.5.5.1 -@item sin: C 4.5.2.6 -@item sinh: C 4.5.3.2 -@item sqrt: C 4.5.5.2 -@item tan: C 4.5.2.7 -@item tanh: C 4.5.3.3 -@end itemize - -@item libc misc (newlib/libc/locale, gcc/ginclude/stdarg.h) -@itemize @code -@item localeconv: C 4.4.2.1 -@item setlocale: C 4.4.1.1, P 8.1.2.1 -@item va_arg: C 4.8.1.2 -@item va_end: C 4.8.1.3 -@item va_start: C 4.8.1.1 -@end itemize - -@section POSIX.1/96 Functions - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -@item Process Primitives (Section 3) -@itemize @code -@item fork: P 3.1.1.1 -@item execl: P 3.1.2.1 -@item execle: P 3.1.2.1 -@item execlp: P 3.1.2.1 -@item execv: P 3.1.2.1 -@item execve: P 3.1.2.1 -@item execvp: P 3.1.2.1 -@item pthread_atfork: P96 3.1.3.1 -- unimplemented -@item wait: P 3.2.1.1 -@item waitpid: P 3.2.1.1 -@item _exit: P 3.2.2.1 -@item kill: P 3.3.2.1 -@item sigemptyset: P 3.3.3.1 -@item sigfillset: P 3.3.3.1 -@item sigaddset: P 3.3.3.1 -@item sigdelset: P 3.3.3.1 -@item sigismember: P 3.3.3.1 -@item sigaction: P 3.3.4.1 -@item pthread_sigmask: P96 3.3.5.1 -@item sigprocmask: P 3.3.5.1 -@item sigpending: P 3.3.6.1 -@item sigsuspend: P 3.3.7.1 -@item sigwait: P96 3.3.8.1 -- unimplemented -@item sigwaitinfo: P96 3.3.8.1 -- unimplemented -@item sigtimedwait: P96 3.3.8.1 -- unimplemented -@item sigqueue: P96 3.3.9.1 -- unimplemented -@item pthread_kill: P96 3.3.10.1 -@item alarm: P 3.4.1.1 -@item pause: P 3.4.2.1 -@item sleep: P 3.4.3.1 -@end itemize - -@item Process Environment (Section 4) -@itemize @code -@item getpid: P 4.1.1.1 -@item getppid: P 4.1.1.1 -@item getuid: P 4.2.1.1 -@item geteuid: P 4.2.1.1 -@item getgid: P 4.2.1.1 -@item getegid: P 4.2.1.1 -@item setuid: P 4.2.2.1 (stub on 9X, sets ENOSYS, returns zero) -@item setgid: P 4.2.2.1 (stub on 9X, sets ENOSYS, returns zero) -@item getgroups: P 4.2.3.1 -@item getlogin: P 4.2.4.1 -@item getlogin_r: P 4.2.4.1 -- unimplemented -@item getpgrp: P 4.3.1.1 -@item setsid: P 4.3.2.1 -@item setpgid: P 4.3.3.1 -@item uname: P 4.4.1.1 -@item time: C 4.12.2.4, P 4.5.1.1 -@item times: P 4.5.2.1 -@item getenv: C 4.10.4.4, P 4.6.1.1 -@item ctermid: P 4.7.1.1 -@item ttyname: P 4.7.2.1 -@item ttyname_r: P 4.7.2.1 -- unimplemented -@item isatty: P 4.7.2.1 -@item sysconf: P 4.8.1.1 -@end itemize - -@item Files and Directories (Section 5) -@itemize @code -@item opendir: P 5.1.2.1 -@item readdir: P 5.1.2.1 -@item readdir_r: P96 5.1.2.1 -- unimplemented -@item rewinddir: P 5.1.2.1 -@item closedir: P 5.1.2.1 -@item chdir: P 5.2.1.1 -@item getcwd: P 5.2.2.1 -@item open: P 5.3.1.1 -@item creat: P 5.3.2.1 -@item umask: P 5.3.3.1 -@item link: P 5.3.4.1 (copy file in Win 95, and when link fails in NT) -@item mkdir: P 5.4.1.1 -@item mkfifo: P 5.4.2.1 -- unimplemented!!! -@item unlink: P 5.5.1.1 -@item rmdir: P 5.5.2.1 -@item rename: C 4.9.4.2, P 5.5.3.1 -@item stat: P 5.6.2.1 -@item fstat: P 5.6.2.1 -@item access: P 5.6.3.1 -@item chmod: P 5.6.4.1 -@item fchmod: P96 5.6.4.1 -@item chown: P 5.6.5.1 (stub in Win 95; always returns zero) -@item utime: P 5.6.6.1 -@item ftruncate: P96 5.6.7.1 -@item pathconf: P 5.7.1.1 -@item fpathconf: P 5.7.1.1 -@end itemize - -@item Input and Output Primitives (Section 6) -@itemize @code -@item pipe: P 6.1.1.1 -@item dup: P 6.2.1.1 -@item dup2: P 6.2.1.1 -@item close: P 6.3.1.1 -@item read: P 6.4.1.1 -@item write: P 6.4.2.1 -@item fcntl: P 6.5.2.1 (note: fcntl(fd, F_GETLK,...) is not implemented (returns -1 with errno set to ENOSYS)). -@item lseek: P 6.5.3.1 (note: only works correctly on binary files) -@item fsync: P96 6.6.1.1 -@item fdatasync: P96 6.6.2.1 -- unimplemented -@item aio_read: P96 6.7.2.1 -- unimplemented -@item aio_write: P96 6.7.3.1 -- unimplemented -@item lio_listio: P96 6.7.4.1 -- unimplemented -@item aio_error: P96 6.7.5.1 -- unimplemented -@item aio_return: P96 6.7.6.1 -- unimplemented -@item aio_cancel: P96 6.7.7.1 -- unimplemented -@item aio_suspend: P96 6.7.8.1 -- unimplemented -@item aio_fsync: P96 6.7.9.1 -- unimplemented -@end itemize - -@item Device- and Class-Specific Functions (Section 7) -@itemize @code -@item cfgetispeed: P96 7.1.3.1 -@item cfgetospeed: P96 7.1.3.1 -@item cfsetispeed: P96 7.1.3.1 -@item cfsetospeed: P96 7.1.3.1 -@item tcdrain: P 7.2.2.1 -@item tcflow: P 7.2.2.1 -@item tcflush: P 7.2.2.1 -@item tcgetattr: P96 7.2.1.1 -@item tcgetpgrp: P 7.2.3.1 -@item tcsendbreak: P 7.2.2.1 -@item tcsetattr: P96 7.2.1.1 -@item tcsetpgrp: P 7.2.4.1 -@end itemize - -@item Language-Specific Services for the C Programming Language -(Section 8) -@itemize @code -@item abort: C 4.10.4.1, P 8.2.3.12 -@item asctime_r: P96 8.3.4.1 -- unimplemented -@item ctime_r: P96 8.3.5.1 -- unimplemented -@item exit: C 4.10.4.3, P 8.2.3.12 -@item fclose: C 4.9.5.1, P 8.2.3.2 -@item fdopen: P 8.2.2.1 -@item fflush: C 4.9.5.2, P 8.2.3.4 -@item fgetc: C 4.9.7.1, P 8.2.3.5 -@item fgets: C 4.9.7.2, P 8.2.3.5 -@item fileno: P 8.2.1.1 -@item flockfile: P96 8.2.6.1 -- unimplemented -@item fopen: C 4.9.5.3, P 8.2.3.1 -@item fprintf: C 4.9.7.3, P 8.2.3.6 -@item fputc: C 4.9.7.3, P 8.2.3.6 -@item fputs: C 4.9.7.4, P 8.2.3.6 -@item fread: C 4.9.8.1, P 8.2.3.5 -@item freopen: C 4.9.5.4, P 8.2.3.3 -@item fscanf: C 4.9.6.2, P 8.2.3.7 -@item fseek: C 4.9.9.2, P 8.2.3.7 -@item ftell: C 4.9.9.4, P 8.2.3.10 -@item ftrylockfile: P96 8.2.6.1 -- unimplemented -@item funlockfile: P96 8.2.6.1 -- unimplemented -@item fwrite: C 4.9.8.2, P 8.2.3.6 -@item getc: C 4.9.7.5, P 8.2.3.5 -@item getc_unlocked: P96 8.2.7.1 -- unimplemented -@item getchar: C 4.9.7.6, P 8.2.3.5 -@item getchar_unlocked: P96 8.2.7.1 -- unimplemented -@item gets: C 4.9.7.7, P 8.2.3.5 -@item gmtime_r: P96 8.3.6.1 -- unimplemented -@item localtime_r: P96 8.3.7.1 -- unimplemented -@item perror: C 4.9.10.4, P 8.2.3.8 -@item printf: C 4.9.6.3, P 8.2.3.6 -@item putc: C 4.9.7.8, P 8.2.3.6 -@item putc_unlocked: P96 8.2.7.1 -- unimplemented -@item putchar: C 4.9.7.9, P 8.2.3.6 -@item putchar_unlocked: P96 8.2.7.1 -- unimplemented -@item puts: C 4.9.7.10, P 8.2.3.6 -@item rand_r: P96 8.3.8.1 -- unimplemented -@item remove: C 4.9.4.1, P 8.2.4 -@item rewind: C 4.9.9.5, P 8.2.3.7 -@item scanf: C 4.9.6.4, P 8.2.3.5 -@item setlocale: C 4.4.1.1, P 8.1.2.1 -@item siglongjmp: P 8.3.1.1 -@item sigsetjmp: P 8.3.1.1 -@item strtok_r: P96 8.3.3.1 -- unimplemented -@item tmpfile: C 4.9.4.3, P 8.2.3.9 -@item tmpnam: C 4.9.4.4, P 8.2.5 -@item tzset: P 8.3.2.1 -@end itemize - -@item System Databases (Section 9) -@itemize @code -@item getgrgid: P 9.2.1.1 -@item getgrgid_r: P96 9.2.1.1 -- unimplemented -@item getgrnam: P 9.2.1.1 -@item getgrnam_r: P96 9.2.1.1 -- unimplemented -@item getpwnam: P 9.2.2.1 -@item getpwnam_r: P96 9.2.2.1 -- unimplemented -@item getpwuid: P 9.2.2.1 -@item getpwuid_r: P96 9.2.2.1 -- unimplemented -@end itemize - -@item Synchronization (Section 11) -@itemize @code -@item pthread_cond_broadcast: P96 11.4.3.1 -@item pthread_cond_destroy: P96 11.4.2.1 -@item pthread_cond_init: P96 11.4.2.1 -@item pthread_cond_signal: P96 11.4.3.1 -@item pthread_cond_timedwait: P96 11.4.4.1 -@item pthread_cond_wait: P96 11.4.4.1 -@item pthread_condattr_destroy: P96 11.4.1.1 -- unimplemented -@item pthread_condattr_getpshared: P96 11.4.1.1 -- unimplemented -@item pthread_condattr_init: P96 11.4.1.1 -- unimplemented -@item pthread_condattr_setpshared: P96 11.4.1.1 -- unimplemented -@item pthread_mutex_destroy: P96 11.3.2.1 -@item pthread_mutex_init: P96 11.3.2.1 -@item pthread_mutex_lock: P96 11.3.3.1 -@item pthread_mutex_trylock: P96 11.3.3.1 -@item pthread_mutex_unlock: P96 11.3.3.1 -@item sem_close: P96 11.2.4.1 -- unimplemented -@item sem_destroy: P96 11.2.2.1 -@item sem_getvalue: P96 11.2.8.1 -- unimplemented -@item sem_init: P96 11.2.1.1 -@item sem_open: P96 11.2.3.1 -- unimplemented -@item sem_post: P96 11.2.7.1 -@item sem_trywait: P96 11.2.6.1 -@item sem_unlink: P96 11.2.5.1 -- unimplemented -@item sem_wait: P96 11.2.6.1 -@end itemize - -@item Memory Management (Section 12) -@itemize @code -@item mlock: P96 12.1.2.1 -- unimplemented -@item mlockall: P96 12.1.1.1 -- unimplemented -@item mmap: P96 12.2.1.1 -@item mprotect: P96 12.2.3.1 -@item msync: P96 12.2.4.1 -@item munlock: P96 12.1.2.1 -- unimplemented -@item munlockall: P96 12.1.1.1 -- unimplemented -@item munmap: P96 12.2.2.1 -@item shm_open: P96 12.3.1.1 -- unimplemented -@item shm_unlink: P96 12.3.2.1 -- unimplemented -@end itemize - -@item Execution Scheduling (Section 13) -@itemize @code -@item pthread_attr_getinheritsched: P96 13.5.1.1 -- unimplemented -@item pthread_attr_getschedparam: P96 13.5.1.1 -- unimplemented -@item pthread_attr_getschedpolicy: P96 13.5.1.1 -- unimplemented -@item pthread_attr_getscope: P96 13.5.1.1 -- unimplemented -@item pthread_attr_setinheritsched: P96 13.5.1.1 -@item pthread_attr_setschedparam: P96 13.5.1.1 -- unimplemented -@item pthread_attr_setschedpolicy: P96 13.5.1.1 -- unimplemented -@item pthread_attr_setscope: P96 13.5.1.1 -- unimplemented -@item pthread_getschedparam: P96 13.5.2.1 -@item pthread_mutex_getprioceiling: P96 13.6.2.1 -- unimplemented -@item pthread_mutex_setprioceiling: P96 13.6.2.1 -- unimplemented -@item pthread_mutexattr_getprioceiling: P96 13.6.1.1 -- unimplemented -@item pthread_mutexattr_getprotocol: P96 13.6.1.1 -- unimplemented -@item pthread_mutexattr_setprioceiling: P96 13.6.1.1 -- unimplemented -@item pthread_mutexattr_setprotocol: P96 13.6.1.1 -- unimplemented -@item pthread_setschedparam: P96 13.5.2.1 -@item sched_get_priority_max: P96 13.3.6.1 -- unimplemented -@item sched_get_priority_min: P96 13.3.6.1 -- unimplemented -@item sched_getparam: P96 13.3.2.1 -- unimplemented -@item sched_getscheduler: P96 13.3.4.1 -- unimplemented -@item sched_rr_get_interval: P96 13.3.6.1 -- unimplemented -@item sched_setparam: P96 13.3.1.1 -- unimplemented -@item sched_setscheduler: P96 13.3.3.1 -- unimplemented -@item sched_yield: P96 13.3.5.1 -- unimplemented -@end itemize - -@item Clocks and Timers (Section 14) -@itemize @code -@item clock_getres: P96 14.2.1.1 -- unimplemented -@item clock_gettime: P96 14.2.1.1 -- unimplemented -@item clock_settime: P96 14.2.1.1 -- unimplemented -@item nanosleep: P96 14.2.5.1 -- unimplemented -@item timer_create: P96 14.2.2.1 -- unimplemented -@item timer_delete: P96 14.2.3.1 -- unimplemented -@item timer_getoverrun: P96 14.2.4.1 -- unimplemented -@item timer_gettime: P96 14.2.4.1 -- unimplemented -@item timer_settime: P96 14.2.4.1 -- unimplemented -@end itemize - -@item Message Passing (Section 15) -@itemize @code -@item mq_close: P96 15.2.2.1 -- unimplemented -@item mq_getattr: P96 15.2.8.1 -- unimplemented -@item mq_notify: P96 15.2.6.1 -- unimplemented -@item mq_open: P96 15.2.1.1 -- unimplemented -@item mq_receive: P96 15.2.5.1 -- unimplemented -@item mq_send: P96 15.2.4.1 -- unimplemented -@item mq_setattr: P96 15.2.7.1 -- unimplemented -@item mq_unlink: P96 15.2.3.1 -- unimplemented -@end itemize - -@item Thread Management (Section 16) -@itemize @code -@item pthread_attr_destroy: P96 16.2.1.1 -@item pthread_attr_getdetachstate: P96 16.2.1.1 -- unimplemented -@item pthread_attr_getstackaddr: P96 16.2.1.1 -- unimplemented -@item pthread_attr_getstacksize: P96 16.2.1.1 -@item pthread_attr_init: P96 16.2.1.1 -@item pthread_attr_setdetachstate: P96 16.2.1.1 -- unimplemented -@item pthread_attr_setstackaddr: P96 16.2.1.1 -- unimplemented -@item pthread_attr_setstacksize: P96 16.2.1.1 -@item pthread_create: P96 16.2.2.1 -@item pthread_detach: P96 16.2.4.1 -- unimplemented -@item pthread_equal: P96 16.2.7.1 -@item pthread_exit: P96 16.2.5.1 -@item pthread_join: P96 16.2.3.1 -- unimplemented -@item pthread_once: P96 16.2.8.1 -- unimplemented -@item pthread_self: P96 16.2.6.1 -@end itemize - -@item Thread-Specific Data (Section 17) -@itemize @code -@item pthread_getspecific: P96 17.1.2.1 -@item pthread_key_create: P96 17.1.1.1 -@item pthread_key_delete: P96 17.1.3.1 -@item pthread_setspecific: P96 17.1.2.1 -@end itemize - -@item Thread Cancellation (Section 18) -@itemize @code -@item pthread_cancel: P96 18.2.1.1 -- unimplemented -@item pthread_cleanup_pop: P96 18.2.3.1 -- unimplemented -@item pthread_cleanup_push: P96 18.2.3.1 -- unimplemented -@item pthread_setcancelstate: P96 18.2.2.1 -- unimplemented -@item pthread_setcanceltype: P96 18.2.2.1 -- unimplemented -@item pthread_testcancel: P96 18.2.2.1 -- unimplemented -@end itemize - -@section Misc Functions - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -@item Networking (net.cc) (Standardized by POSIX 1.g, which is probably still in draft?) -@itemize @code -@item accept -@item bind -@item connect -@item getdomainname -@item gethostbyaddr -@item gethostbyname -@item getpeername -@item getprotobyname -@item getprotobynumber -@item getservbyname -@item getservbyport -@item getsockname -@item getsockopt -@item herror -@item htonl -@item htons -@item inet_addr -@item inet_makeaddr -@item inet_netof -@item inet_ntoa -@item listen -@item ntohl -@item ntohs -@item rcmd -@item recv -@item recvfrom -@item rexec -@item rresvport -@item send -@item sendto -@item setsockopt -@item shutdown -@item socket -@item socketpair -@end itemize - -Of these networking calls, rexec, rcmd and rresvport are implemented -in MS IP stack but may not be implemented in other vendors' stacks. - -@item Other -@itemize @code -@item acl -@item aclcheck -@item aclfrommode -@item aclfrompbits -@item aclfromtext -@item aclsort -@item acltomode -@item acltopbits -@item acltotext -@item chroot (with restrictions) -@item closelog -@item cwait -@item cygwin_conv_to_full_posix_path -@item cygwin_conv_to_full_win32_path -@item cygwin_conv_to_posix_path -@item cygwin_conv_to_win32_path -@item cygwin_logon_user -@item cygwin_posix_path_list_p -@item cygwin_posix_to_win32_path_list -@item cygwin_posix_to_win32_path_list_buf_size -@item cygwin_set_impersonation_token -@item cygwin_split_path -@item cygwin_win32_to_posix_path_list -@item cygwin_win32_to_posix_path_list_buf_size -@item cygwin_winpid_to_pid -@item dlclose -@item dlerror -@item dlfork -@item dlopen -@item dlsym -@item endgrent -@item endhostent -@item facl -@item ffs -@item fstatfs -@item ftime -@item get_osfhandle -@item getdtablesize -@item getgrent -@item gethostname -@item getitimer -@item getmntent -@item getpagesize -@item getpgid -@item getpwent -@item gettimeofday: BSD -@item grantpt -@item initgroups (stub) -@item ioctl -@item killpg -@item login -@item logout -@item lstat -@item mknod (stub, sets ENOSYS, returns -1) -@item memccpy -@item nice -@item openlog -@item pclose -@item popen -@item ptsname -@item putenv -@item random -@item readv -@item realpath -@item regfree -@item rexec -@item select -@item setegid: SVR4 (stub on 9X, sets ENOSYS, returns zero)@item endpwent -@item setenv -@item seterrno -@item seteuid (stub on 9X, sets ENOSYS, returns zero) -@item sethostent -@item setitimer -@item setmntent -@item setmode -@item setpassent -@item setpgrp -@item setpwent -@item settimeofday: BSD (stub, set ENOSYS, return -1) -@item sexecl -@item sexecle -@item sexeclp -@item sexeclpe -@item sexeclpe -@item sexecp -@item sexecv -@item sexecve -@item sexecvpe -@item sigpause -@item spawnl (spawn calls are from Windows C library) -@item spawnle -@item spawnlp -@item spawnlpe -@item spawnv -@item spawnve -@item spawnvp -@item spawnvpe -@item srandom -@item statfs -@item strsignal -@item strtosigno -@item swab -@item syslog -@item timezone -@item truncate (SVR4/4.3+BSD) -@item ttyslot -@item unlockpt -@item unsetenv -@item usleep -@item utimes -@item vfork: stub that calls fork -@item vhangup (stub, sets ENOSYS, returns -1) -@item wait3 -@item wait4 -@item wcscmp -@item wcslen -@item wprintf -@item writev -@end itemize - -@end itemize - diff --git a/winsup/doc/changes.texinfo b/winsup/doc/changes.texinfo deleted file mode 100644 index 6e464784d..000000000 --- a/winsup/doc/changes.texinfo +++ /dev/null @@ -1,202 +0,0 @@ -@section Release Beta 20.1 (Dec 4 1998) - -This is a bug fix update to the Beta 20 release. - -The main change is an improved version of the Cygwin library although -there are also a couple of other minor changes to the tools. - -@subsection Changes in specific tools: - -The "-mno-cygwin" flag to gcc now include the correct headers. In 20.0, -it included the Cygwin headers which was incorrect. - -The "-pipe" flag to gcc works correctly now. - -The cygcheck program now reassures users that not finding cpp is the -correct behavior. - -The "-b" flag to md5sum can now be used to generate correct checksums -of binary files. - -The libtermcap library has been added to the compiler tools sources. -It is the new source of the termcap library and /etc/termcap file. - -The less pager (using libtermcap) has been added to the binary -distribution. - -@subsection Changes in the Cygwin API (cygwin.dll): - -This version of Cygwin is backwards-compatible with the beta 20 and 19 -releases. The library is now much more stable under Windows 9x and the -bugs affecting configures under 9x (and NT to a lesser extent) have -also been fixed. - -The bug that made it necessary to start the value of the CYGWIN -environment variable with two leading spaces has been fixed. - -The serial support in the select call has been fixed. - -Handling of DLLs loaded by non-cygwin apps has been improved. Bugs in -dlopen have been fixed. - -Passing _SC_CHILD_MAX to the sysconf function now yields CHILD_MAX (63) -instead of _POSIX_CHILD_MAX (3). - -Several minor path bugs have been fixed. Including the one that -caused "mkdir a/" to fail. - -The include file sys/sysmacros.h has been added. Added missing protos -for wcslen and wcscmp to wchar.h. - -__P is now defined in include/sys/cdefs.h. To support that last change, -the top-level Makefile.in now sets CC_FOR_TARGET and CXX_FOR_TARGET -differently. - -Cygwin now exports the following newlib bessel functions: j1, jn, y1, -yn. - -Several tty ioctl options have been added: TCGETA, TCSETA, TCSETAW, and -TCSETAF. - -Several functions cope with NULL pointer references more gracefully. - -Problems with execution of relative paths via #! should be fixed. - -@section Release Beta 20 (Oct 30 1998) - -This is a significant update to the Beta 19 release. In addition to an -EGCS-based compiler and updated tools, this release includes a new -version of the Cygwin library that contains many improvements and -bugfixes over the last one. - -@subsection The project has a new name! - -Starting with this release, we are retiring the "GNU-Win32" name for the -releases. We have also dropped the "32" from Cygwin32. This means that -you should now refer to the tools as "the Cygwin toolset", the library -as "the Cygwin library" or "the Cygwin DLL", and the library's interface -as "the Cygwin API". - -Because of this name change, we have changed any aspects of the library -that involved the name "Cygwin32". For example, the CYGWIN32 -environment variable is now the CYGWIN environment variable. API -functions starting with cygwin32_ are still available under that form -for backwards-compatibility as well as under the new cygwin_-prefixed -names. The same goes for the change of preprocessor define from -__CYGWIN32__ to __CYGWIN__. We will remove the old names in a future -release so please take the minute or two that it will take to remove -those "32"s. Thanks and I apologize for the hassle this may cause -people. We would have changed the name to "Bob" but that name's already -taken by Microsoft... :-) - -Why change it? For one thing, not all of the software included in the -distributions is GNU software, including the Cygwin library itself. So -calling the project "GNU-Win32" has always been a bit of a misnomer. In -addition, we think that calling the tools the "Cygwin tools" that use -the "Cygwin library" will be less confusing to people. - -Also notice that we are now on the spiffy new sourceware.cygnus.com -web/ftp site. The old address will work for some unknown period of -time (hopefully at least until we get all of the mirrors adjusted). - -@subsection Changes in specific tools: - -The latest public EGCS release is now the basis for the compiler used -in Cygwin distributions. As a result, EGCS 1.1 is the compiler in this -release, with a few additional x86/Cygwin-related patches. - -Those of you who are more interested in native Windows development than -in porting Unix programs will be glad to know that a new gcc flag -"-mno-cygwin" will link in the latest Mingw32 libs and produce an -executable that does not use Cygwin. - -All of the other development tools have been updated to their latest -versions. The linker (ld) includes many important bug fixes. It is now -possible to safely strip a DLL with a .reloc section. The windres -resource compiler is significantly improved. - -Beta 20 also includes upgrades to a number of packages: ash-0.3.2-4, -bash 2.02.1, grep-2.2, ncurses 4.2, and less 332. We have added bzip2 -0.9.0 to the distribution. And you'll now find that the df utility -has joined its other friends from the fileutils package. - -The sh executable is still ash from the Debian Linux distribution but no -longer has the problematic quoting bug that was present in the Beta 19 -release. Control-Cs in the bash shell no longer kill background tasks. - -Tcl/tk are upgraded to version 8.1a2 (with additional patches). -Compatible versions of tix and itcl are included. These all include -Cygwin-compatible configury files so you can do a Unix-style build of -the Win32 ports of tcl/tk. expect has been upgraded to 5.26 with some -additional Cygwin patches. - -In response to customer requests and feedback, Cygnus has developed a -better graphical front end to GDB than GDBtk or WinGDB. This tcl-based -GUI is shipping today to customers of the GNUPro Toolkit. The -instrumentation changes to GDB and the tcl interpreter that was built -into GDB are part of the GPL'd source base. But the tcl scripts are not -being made available to the net at this time. For this reason, you will -only find a command-line version of gdb in this Cygwin release. - -DJ Delorie has written a new "cygcheck" program that will print out -useful information about how your Cygwin environment is set up, what -DLLs a named executable is loading from where, etc. We hope this will -make it easier to help diagnose common setup problems. - -The ps utility has been upgraded. It now has several options including -shorter and longer output formats. - -@subsection Changes in the Cygwin API (cygwin.dll): - -This version of Cygwin is backwards-compatible with the beta 19 release. -You can use the new "cygwin1.dll" with your old B19-compiled executables -if you move the old "cygwinb19.dll" out of the way and install a copy -of "cygwin1.dll" as "cygwinb19.dll". - -Quite a lot of the Cygwin internals have been rewritten or modified to -address various issues. If you have a question about specific changes, -the winsup/ChangeLog file in the development tools sources lists all -changes made to the DLL over the last three years. Following are a few -highlights: - -We are now using a new versioning scheme for Cygwin. There is now a -separate version number for the DLL, the API, the shared memory region -interfaces, and the registry interface. This will hopefully make it -easier for multiple Cygwin toolsets to coexist in one user environment. - -Windows 98 is now supported (it is like Windows 95 from Cygwin's -perspective). We still recommend upgrading to Windows NT. - -While there is still a lot left to do in improving Cygwin's runtime -performance, we have put some effort into this prior to the B20 release. -Hopefully you will find that the latest version of Cygwin is faster than -ever. In addition, we have plugged several nasty handle leaks -associated with opening/closing files and with using ttys. - -The lseek call now uses WriteFile to fill gaps with zeros whenever a -write is done past an EOF, rather than leaving "undefined" data as Win32 -specifies. - -Significant work has been done to improve the Cygwin header files. - -The Cygwin Support for Unix-style serial I/O is much improved. - -Path handling has had another round of fixes/rewrites. We no longer use -NT Extended Attributes by default for storing Unix permissions/execute -status because the file NT creates on FAT partitions is not scalable to -thousands of files (everything slows to a crawl). - -Signal handling has also gotten a fair amount of attention. -Unfortunately, there are still some problems combining itimers and -Windows 9x. - -The number of ttys has been upped from 16 to 128. - -New API calls included in the DLL: sethostent, endhostent. - -As mentioned earlier, all cygwin32_-prefixed functions are now exported -with a cygwin_ prefix instead. Please adjust your code to call the -newly named functions. - -reads of `slow' devices are now correctly interrupted by signals, i.e. -a read will receive an EINTR. diff --git a/winsup/doc/configure b/winsup/doc/configure deleted file mode 100755 index eea87df57..000000000 --- a/winsup/doc/configure +++ /dev/null @@ -1,1067 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -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' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -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 - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # 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 ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$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" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) 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) - # 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 << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$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) - 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 ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - 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 "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# 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 - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=cygwin-api.in.sgml - -# 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_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - 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 "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# 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 "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $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 - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -# Do some error checking and defaulting for the host and target type. -# The inputs are: -# configure --host=HOST --target=TARGET --build=BUILD NONOPT -# -# The rules are: -# 1. You are not allowed to specify --host, --target, and nonopt at the -# same time. -# 2. Host defaults to nonopt. -# 3. If nonopt is not specified, then host defaults to the current host, -# as determined by config.guess. -# 4. Target and build default to nonopt. -# 5. If nonopt is not specified, then target and build default to host. - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -case $host---$target---$nonopt in -NONE---*---* | *---NONE---* | *---*---NONE) ;; -*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;; -esac - - -# Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:575: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:596: checking target system type" >&5 - -target_alias=$target -case "$target_alias" in -NONE) - case $nonopt in - NONE) target_alias=$host_alias ;; - *) target_alias=$nonopt ;; - esac ;; -esac - -target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` -target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$target" 1>&6 - -echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:614: checking build system type" >&5 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac - -build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 - -test "$host_alias" != "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - -if test $host != $build; then - ac_tool_prefix=${host_alias}- -else - ac_tool_prefix= -fi - -# 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:646: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -if test -z "$ac_cv_prog_CC"; then -if test -n "$ac_tool_prefix"; then - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:678: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="gcc" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -else - CC="gcc" -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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:714: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -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 $# -gt 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 - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -if test $ac_cv_prog_gcc = yes; then - GCC=yes - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS= - echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:768: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 - if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" - elif test $ac_cv_prog_cc_g = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-O2" - fi - if test "$ac_test_CXXFLAGS" != set; then - CXXFLAGS='$(CFLAGS)' - fi -else - GCC= - test "${CFLAGS+set}" = set || CFLAGS="-g" -fi - - - - -trap '' 1 2 15 -cat > confcache <<\EOF -# 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. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# 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 \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <<EOF -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS <<EOF - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@target@%$target%g -s%@target_alias@%$target_alias%g -s%@target_cpu@%$target_cpu%g -s%@target_vendor@%$target_vendor%g -s%@target_os@%$target_os%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@CC@%$CC%g -s%@build_exeext@%$build_exeext%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# 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_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <<EOF - -CONFIG_FILES=\${CONFIG_FILES-"Makefile"} -EOF -cat >> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <<EOF - -EOF -cat >> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff --git a/winsup/doc/configure.in b/winsup/doc/configure.in deleted file mode 100644 index 503777724..000000000 --- a/winsup/doc/configure.in +++ /dev/null @@ -1,54 +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.12) -AC_INIT(cygwin-api.in.sgml) - -AC_DEFUN(LIB_AC_PROG_CC, -[AC_BEFORE([$0], [AC_PROG_CPP])dnl -AC_CHECK_TOOL(CC, gcc, gcc) -if test -z "$CC"; then - AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc) - test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) -fi - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -dnl Check whether -g works, even if CFLAGS is set, in case the package -dnl plays around with CFLAGS (such as to build both debugging and -dnl normal versions of a library), tasteless as that idea is. - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS= - AC_PROG_CC_G - if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" - elif test $ac_cv_prog_cc_g = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-O2" - fi - if test "$ac_test_CXXFLAGS" != set; then - CXXFLAGS='$(CFLAGS)' - fi -else - GCC= - test "${CFLAGS+set}" = set || CFLAGS="-g" -fi -]) - -AC_CANONICAL_SYSTEM - -LIB_AC_PROG_CC - -AC_SUBST(build_exeext) - -AC_OUTPUT(Makefile) diff --git a/winsup/doc/copy.texinfo b/winsup/doc/copy.texinfo deleted file mode 100644 index 90dc078d1..000000000 --- a/winsup/doc/copy.texinfo +++ /dev/null @@ -1,382 +0,0 @@ -@chapter What are the copyrights ? - -@section The general idea - -Most of the tools are covered by the GNU General Public License (GPL), -although some are public domain, and others have a X11-style -copyright. To cover the GNU GPL -requirements, the basic rule is if you give out any binaries, you must -also make the source available. For the full details, be sure to -read the text of the GNU GPL which follows. - -The Cygwin API library found in the winsup subdirectory of the -source code is also covered by the GNU GPL. By default, all -executables link against this library (and in the process include GPL'd -Cygwin glue code). This means that unless you modify the tools -so that compiled executables do not make use of the Cygwin library, -your compiled programs will also have to be free software distributed -under the GPL with source code available to all. - -Cygwin is currently available for proprietary use only through a -proprietary-use license. Please contact sales@@cygnus.com for -more information. - -In accordance with section 10 of the GPL, Cygnus permits programs whose -sources are distributed under a license that complies with the Open -Source definition to be linked with libcygwin.a without libcygwin.a -itself causing the resulting program to be covered by the GNU GPL. - -This means that you can port an Open Source(tm) application to cygwin, -and distribute that executable as if it didn't include a copy of -libcygwin.a linked into it. Note that this does not apply to the cygwin -DLL itself. If you distribute a (possibly modified) version of the DLL -you must adhere to the terms of the GPL, i.e., you must provide sources -for the cygwin DLL. - -See http://www.opensource.org/osd.html for the precise Open Source -Definition referenced above. - -@section GNU GENERAL PUBLIC LICENSE -@example - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - -@end example - diff --git a/winsup/doc/cygwin-api.in.sgml b/winsup/doc/cygwin-api.in.sgml deleted file mode 100644 index 06baf5247..000000000 --- a/winsup/doc/cygwin-api.in.sgml +++ /dev/null @@ -1,67 +0,0 @@ -<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [ - <!ENTITY cygnus-copyright "<YEAR>1998</YEAR><HOLDER>Red Hat, Inc.</HOLDER>"> - <!ENTITY cygnus-code-copyright " -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Copyright (C) 1998,2001 Red Hat, Inc. - -This is copyrighted software that may only -be reproduced, modified, or distributed -under license from Red Hat, Inc. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -"> - ]> - -<book id="cygwin-api"> - - <bookinfo> - <date>1998-08-31</date> - <title>Cygwin API Reference</title> - <authorgroup> - <author> - <firstname>DJ</firstname> - <surname>Delorie</surname> - </author> - <author> - <firstname>Geoffrey</firstname> - <surname>Noer</surname> - </author> - </authorgroup> - - DOCTOOL-INSERT-legal - - <revhistory> - <revision> - <revnumber>0.0</revnumber> - <date>1998-08-31</date> - <authorinitials>dj</authorinitials> - <revremark>Initial revision</revremark> - </revision> - <revision> - <revnumber>0.5.0</revnumber> - <date>1998-12-17</date> - <authorinitials>noer</authorinitials> - <revremark>Add pthread, sem calls. Change revnumber to - three-part number: Cygwin API major, Cygwin API minor, Doc rev - number. Starts out at 0.5.0.</revremark> - </revision> - </revhistory> - </bookinfo> - - <toc></toc> - -<chapter id="compatibility"><title>Compatibility</title> -DOCTOOL-INSERT-std-ansi -DOCTOOL-INSERT-std-posix -DOCTOOL-INSERT-std-misc -</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 41e876f22..000000000 --- a/winsup/doc/cygwin-ug-net.in.sgml +++ /dev/null @@ -1,72 +0,0 @@ -<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [ - <!ENTITY cygnus-copyright - "<YEAR>1999,2000,2001</YEAR> - <HOLDER>Red Hat, Inc.</HOLDER>"> - <!ENTITY cygnus-code-copyright " -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Copyright (C) 1998, 1999,2000,2001 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-net"> - - <bookinfo> - <date>2001-22-03</date> - <title>Cygwin User's Guide</title> - <authorgroup> - <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 - - <revhistory> - <revision> - <revnumber>0.0</revnumber> - <date>1998-10-06</date> - <authorinitials>noer</authorinitials> - <revremark>Initial revision</revremark> - </revision> - <revision> - <revnumber>20.1.0</revnumber> - <date>1999-02-08</date> - <authorinitials>Pierre.Humblet@eurecom.fr</authorinitials> - <revremark>Expand, describe Cygwin 20.1</revremark> - </revision> - </revhistory> - </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 91054f324..000000000 --- a/winsup/doc/cygwin-ug.in.sgml +++ /dev/null @@ -1,71 +0,0 @@ -<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [ - <!ENTITY cygnus-copyright "<YEAR>1999,2000,2001</YEAR> - <HOLDER>Red Hat, Inc.</HOLDER>"> - <!ENTITY cygnus-code-copyright " -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Copyright (C) 1998, 1999, 2000, 2001 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>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 - - <revhistory> - <revision> - <revnumber>0.0</revnumber> - <date>1998-08-31</date> - <authorinitials>dj</authorinitials> - <revremark>Initial revision</revremark> - </revision> - <revision> - <revnumber>20.1.0</revnumber> - <date>1999-02-08</date> - <authorinitials>Pierre.Humblet@eurecom.fr</authorinitials> - <revremark>Expand, describe Cygwin 20.1</revremark> - </revision> - </revhistory> - </bookinfo> - - <toc></toc> - -DOCTOOL-INSERT-overview - -DOCTOOL-INSERT-setup - -DOCTOOL-INSERT-using - -DOCTOOL-INSERT-programming - -</book> diff --git a/winsup/doc/cygwinenv.sgml b/winsup/doc/cygwinenv.sgml deleted file mode 100644 index bb391a592..000000000 --- a/winsup/doc/cygwinenv.sgml +++ /dev/null @@ -1,130 +0,0 @@ -<sect1 id="using-cygwinenv"><title>The <EnVar>CYGWIN</EnVar> environment -variable</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><FirstTerm>(no)binmode</FirstTerm> - if set, non-disk -(e.g. pipe and COM ports) file opens default to binary mode -(no CR/LF/Ctrl-Z translations) instead of text mode. -Defaults to set (binary mode). This option must be set -before starting a Cygwin shell to have an effect on redirection. -</para> -<warning><title>Warning!</title><para>If set in 12/98 b20.1, all files -always open in binary mode.</para></warning> -</listitem> -<listitem> -<para><FirstTerm>check_case:level</FirstTerm> - Controls the behaviour of -Cygwin when a user tries to open or create a file using a case different from -the case of the path as asved on the disk. -<literal>level</literal> is one of <literal>relaxed</literal>, -<literal>adjust</literal> and <literal>strict</literal>.</para> -<itemizedlist Mark="bullet"> -<listitem> -<para><FirstTerm>relaxed</FirstTerm> which is the default behaviour simply -ignores case. That's the default for native Windows applications as well.</para> -</listitem> -<listitem> -<para><FirstTerm>adjust</FirstTerm> behaves mostly invisible. The POSIX input -path is internally adjusted in case, so that the resulting DOS path uses the -correct case throughout. You can see the result when changing the directory -using a wrong case and calling <command>/bin/pwd</command> afterwards.</para> -</listitem> -<listitem> -<para><FirstTerm>strict</FirstTerm> results in a error message if the case -isn't correct. Trying to open a file <filename>Foo</filename> while a file -<filename>fOo</filename> exists results in a "no such file or directory" -error. Trying to create a file <filename>BAR</filename> while a file -<filename>Bar</filename> exists results in a "Filename exists with different -case" error.</para> -</listitem> -</itemizedlist> -</listitem> -<listitem> -<para><FirstTerm>(no)envcache</FirstTerm> - If set, environment variable -conversions (between Win32 and POSIX) are cached. Note that this is 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><FirstTerm>(no)export</FirstTerm> - if set, the final values of these -settings are re-exported to the environment as $CYGWIN again.</para> -</listitem> -<listitem> -<para><FirstTerm>error_start:filepath</FirstTerm> - if set, runs <filename>filepath</filename> -when cygwin encounters a fatal error. This is useful for debugging. -<filename>filepath</filename> is usually set to the path to the <filename>gdb</filename> -program.</para> -<para><FirstTerm>(no)glob[:ignorecase]</FirstTerm> - 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><FirstTerm>(no)ntea</FirstTerm> - if set, use the full NT Extended -Attributes to store UNIX-like inode information. -This option only operates under Windows NT. Defaults to not set. </para> -<Warning><Title>Warning!</Title> <para>This may create additional -<emphasis>large</emphasis> files on non-NTFS partitions.</para></Warning> -</listitem> -<listitem> -<para><FirstTerm>(no)ntsec</FirstTerm> - if set, use the NT security -model to set UNIX-like permissions on files and processes. The -file permissions can only be set on NTFS partitions. FAT doesn't -support the NT file security. For more information, read the documentation -in <citation>ntsec.sgml</citation>.</para> -</listitem> -<listitem> -<para><FirstTerm>(no)smbntsec</FirstTerm> - if set, use `ntsec' on remote -drives as well (this is the default). If you encounter problems with NT shares -or Samba drives, setting this to `nosmbntsec' could help. In that case the -permission and owner/group information is faked as on FAT partitions. -A reason for a non working ntsec on remote drives could be insufficient -permissions of the users. Since the needed user rights are somewhat dangerous -(SeRestorePrivilege) it's not always an option to grant that rights to users. -However, this shouldn't be a problem in NT domain environments.</para> -</listitem> -<listitem> -<para><FirstTerm>(no)reset_com</FirstTerm> - 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><FirstTerm>(no)strip_title</FirstTerm> - if set, strips the directory -part off the window title, if any. Default is not set.</para> -</listitem> -<listitem> -<para><FirstTerm>(no)title</FirstTerm> - if set, the title bar -reflects the name of the program currently running. Default is not -set. Note that under Win9x the title bar is always enabled and it is -stripped by default, but this is because of the way Win9x works. In -order not to strip, specify <literal>title</literal> or <literal>title -nostrip_title</literal>.</para> -</listitem> -<listitem> -<para><FirstTerm>(no)tty</FirstTerm> - if set, Cygwin enables extra support -(i.e., termios) for UNIX-like ttys. -It is not compatible with some Windows programs. -Defaults to not set, in which case the tty is opened in text mode -with ^Z as EOF. Note that this has been changed such that ^D works as -expected instead of ^Z, and is settable via stty. -This option must be specified before starting a Cygwin shell -and it cannot be changed in the shell.</para> -</listitem> -<listitem> -<para><FirstTerm>(no)winsymlinks</FirstTerm> - 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 set.</para> -</listitem> -</itemizedlist> -</sect1> diff --git a/winsup/doc/dll.sgml b/winsup/doc/dll.sgml deleted file mode 100644 index 274f12926..000000000 --- a/winsup/doc/dll.sgml +++ /dev/null @@ -1,120 +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>OK, 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>Now compile everything to objects:</para> - -<screen> -gcc -c myprog.c -gcc -c mydll.c -</screen> - -<para>Unfortunately, the process for building a dll is, well, convoluted. -You have to run five commands, like this:</para> - -<screen> -gcc -s -Wl,--base-file,mydll.base -o mydll.dll mydll.o -Wl,-e,_mydll_init@12 -dlltool --base-file mydll.base --def mydll.def --output-exp mydll.exp --dllname mydll.dll -gcc -s -Wl,--base-file,mydll.base,mydll.exp -o mydll.dll mydll.o -Wl,-e,_mydll_init@12 -dlltool --base-file mydll.base --def mydll.def --output-exp mydll.exp --dllname mydll.dll -gcc -Wl,mydll.exp -o mydll.dll mydll.o -Wl,-e,_mydll_init@12 -</screen> - -<para>The extra steps give <filename>dlltool</filename> the -opportunity to generate the extra sections (exports and relocation) -that a dll needs. After this, you build the import library:</para> - -<screen> -dlltool --def mydll.def --dllname mydll.dll --output-lib mydll.a -</screen> - -<para>Now, when you build your program, you link against the import -library:</para> - -<screen> -gcc -o myprog myprog.o mydll.a -</screen> - -<para>Note that we linked with <command>-e _mydll_init@12</command>. -This tells the OS what the DLL's "entry point" is, and this is a -special function that coordinates bringing the dll to life withing the -OS. The minimum function looks like this:</para> - -<screen> -#include <windows.h> - -int WINAPI -mydll_init(HANDLE h, DWORD reason, void *foo) -{ - return 1; -} -</screen> - -</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 (The supplied ones should work, but -you might not have them) to link against. Unfortunately, there is not -yet any tool to do this automatically. However, 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 ae034f345..000000000 --- a/winsup/doc/doctool.c +++ /dev/null @@ -1,622 +0,0 @@ -/* doctool.c - - Copyright 1998,1999,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. */ - -#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)) - { - 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/faq.texinfo b/winsup/doc/faq.texinfo deleted file mode 100644 index 3908f637a..000000000 --- a/winsup/doc/faq.texinfo +++ /dev/null @@ -1,18 +0,0 @@ -\input texinfo - -@title The Cygwin FAQ - -@subtitle (Not @emph{completely} updated for the latest net release, but still useful!) - -@author You can always find the latest version of this FAQ at @file{http://cygwin.com/faq/}. - -@setfilename faq.txt - -@include what.texinfo -@include install.texinfo -@include calls.texinfo -@include how.texinfo -@include relnotes.texinfo -@include history.texinfo -@include who.texinfo -@include copy.texinfo diff --git a/winsup/doc/fhandler-tut.txt b/winsup/doc/fhandler-tut.txt deleted file mode 100644 index 213b32b20..000000000 --- a/winsup/doc/fhandler-tut.txt +++ /dev/null @@ -1,83 +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_* -path.cc - 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 fhandler.h. - -First, update the comment about which files are where. We're adding -fhandler_dev_zero as FH_DEV_ZERO. We're adding this as a "fast" -device (it will never block) so we have to adjust FH_NDEV also. - -Later 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 path.cc to recognize when the user is trying -to open "/dev/zero". Look in get_device_number; there's a long list -of cases, just add one (I added one after "null"). Also remember to -add an entry to the windows_device_names list in the right spot. - -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 b0bac2eef..000000000 --- a/winsup/doc/filemodes.sgml +++ /dev/null @@ -1,34 +0,0 @@ -<sect1 id="using-filemodes"><title>File permissions</title> - -<para>On Windows 9x systems, files are always readable, and Cygwin uses the -native read-only mode 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>Under NT, file permissions default to the same behavior as Windows -9x but there is optional functionality in Cygwin that can make file -systems behave more like on UNIX systems. This is turned on by adding -the "ntea" option to the <EnVar>CYGWIN</EnVar> environment variable.</para> - -<para>When the "ntea" feature is activated, Cygwin will start with basic -permissions as determined above, but can store POSIX file permissions in NT -Extended Attributes. This feature works quite well on NTFS partitions -because the attributes can be stored sensibly inside the normal NTFS -filesystem structure. However, on a FAT partition, NT stores extended -attributes in a flat file at the root of the partition called <filename>EA -DATA. SF</filename>. This file can grow to extremely large sizes if you -have a large number of files on the partition in question, slowing the -system to a crawl. In addition, the <filename>EA DATA. SF</filename> file -can only be deleted outside of Windows because of its "in use" status. For -these reasons, the use of NT Extended Attributes is off by default in -Cygwin. Finally, note that specifying "ntea" in <EnVar>CYGWIN</EnVar> has no -effect under Windows 9x. </para> - -<para>Under NT, the test "[ -w filename]" is only true if filename is -writable across the board, e.g. <command>chmod +w filename</command>. </para> - -</sect1> - diff --git a/winsup/doc/gcc.sgml b/winsup/doc/gcc.sgml deleted file mode 100644 index 238babfa3..000000000 --- a/winsup/doc/gcc.sgml +++ /dev/null @@ -1,78 +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> -<title>Building Hello World with GCC</title> -<screen> -<prompt>C:\></prompt> <userinput>gcc hello.c -o hello.exe</userinput> -<prompt>C:\></prompt> <userinput>hello.exe</userinput> -Hello, World - -<prompt>C:\></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>For most cases, you can just remove the __export and leave it at -that. For convenience sake, you might want to include the following -code snippet when compiling GUI programs. If you don't, you will want -to add "-e _mainCRTStartup" to your link line in your Makefile.</para> - -<screen> -#ifdef __CYGWIN__ -WinMainCRTStartup() { mainCRTStartup(); } -#endif -</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> -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> - -</sect2> -</sect1> diff --git a/winsup/doc/gdb.sgml b/winsup/doc/gdb.sgml deleted file mode 100644 index 732004f49..000000000 --- a/winsup/doc/gdb.sgml +++ /dev/null @@ -1,88 +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><title>Compiling with -g</title> -<screen> -<prompt>$</prompt> gcc -g -O2 -c myapp.c -<prompt>$</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>In Windows versions of GNUPro, GDB comes with a full-featured -graphical interface. In Cygwin Net distributions, GDB is only -available as a command-line tool. 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><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><title>Debugging with command line arguments</title> -<screen> -<prompt>$</prompt> myprog -t foo --queue 47 - -<prompt>$</prompt> gdb myprog -<prompt>(gdb)</prompt> run -t foo --queue 47 -</screen> -</example> - - -</sect1> diff --git a/winsup/doc/history.texinfo b/winsup/doc/history.texinfo deleted file mode 100644 index f5ae98780..000000000 --- a/winsup/doc/history.texinfo +++ /dev/null @@ -1,5 +0,0 @@ -@chapter History - -This section of the FAQ is no longer maintained. - -Instead, see @file{http://cygwin.com/history.html}. diff --git a/winsup/doc/how-api.texinfo b/winsup/doc/how-api.texinfo deleted file mode 100644 index b35ab4202..000000000 --- a/winsup/doc/how-api.texinfo +++ /dev/null @@ -1,293 +0,0 @@ -@section Cygwin API Questions - -@subsection How does everything work? - -There's a C library which provides a Unix-style API. The -applications are linked with it and voila - they run on Windows. - -The aim is to add all the goop necessary to make your apps run on -Windows into the C library. Then your apps should run on Unix and -Windows with no changes at the source level. - -The C library is in a DLL, which makes basic applications quite small. -And it allows relatively easy upgrades to the Win32/Unix translation -layer, providing that dll changes stay backward-compatible. - -For a good overview of Cygwin, you may want to read the paper on Cygwin -published by the Usenix Association in conjunction with the 2d Usenix NT -Symposium in August 1998. It is available in html format on the project -WWW site. - -@subsection Are development snapshots for the Cygwin library available? - -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 -http://cygwin.com/snapshots/ - - -@subsection How is the DOS/Unix CR/LF thing handled? - -Let's start with some background. - -In UNIX, 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. - -When processing in text mode, certain values of data are treated -specially. A \n (new line) written to the file will prepend a \r -(carriage return) 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 dependant 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. - -One of Cygwin's goals is to make it possible to easily mix Cygwin-ported -Unix programs with generic Windows programs. As a result, Cygwin opens -files in text mode as is normal under Windows. In the accompanying -tools, tools that deal with binaries (e.g. objdump) operate in unix -binary mode and tools that deal with text files (e.g. bash) operate in -text mode. - -Some people push the notion of globally setting the default processing -mode to binary via mount point options or by setting the CYGWIN -environment variable. But that creates a different problem. In -binary mode, the program receives all of the data in the file, including -a \r. Since the programs will no longer deal with these properly for -you, you would have to remove the \r from the relevant text files, -especially scripts and startup resource files. This is a porter "cop -out", forcing the user to deal with the \r for the porter. - -It is rather easy for the porter 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 @code{O_BINARY} to -the second argument of an @code{open} call, or @code{"b"} to second -argument of an @code{fopen} call. You can also call @code{setmode (fd, -O_BINARY)}. - -Note that because the open/fopen switches are defined by ANSI, they -exist under most flavors of Unix; open/fopen will just ignore the switch -since they have no meaning to UNIX. - -Also note that @code{lseek} only works in binary mode. - -Explanation adapted from mailing list email by Earnie Boyd -<earnie_boyd@@yahoo.com>. - -@subsection Is the Cygwin library multi-thread-safe? - -Multi-thread-safe support is turned on by default in 1.1.x releases -(i.e., in the latest net release). That does not mean that it is bug -free! - -There is also limited support for 'POSIX threads', see the file -@code{cygwin.din} for the list of POSIX thread functions provided. - -@subsection Why is some functionality only supported in Windows NT? - -Windows 9x: n. -32 bit extensions and a graphical shell for a 16 bit patch to an -8 bit operating system originally coded for a 4 bit microprocessor, -written by a 2 bit company that can't stand 1 bit of competition. - -But seriously, Windows 9x lacks most of the security-related calls and -has several other deficiencies with respect to its version of the Win32 -API. See the calls.texinfo document for more information as to what -is not supported in Win 9x. - -@subsection How is fork() implemented? - -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. - -Here's how it works: - -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 childs -.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. - -@subsection How does wildcarding (globbing) work? - -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 @code{LS *.EXE} from DOS, it will do what you might -expect. - -Beware: globbing uses @code{malloc}. If your application defines -@code{malloc}, that will get used. This may do horrible things to you. - -@subsection How do symbolic links work? - -Cygwin knows of two ways to create symlinks. - -The old method is the only valid one up to but not including version 1.3.0. -If it's enabled (from 1.3.0 on by setting `nowinsymlinks' in the environment -variable CYGWIN) Cygwin 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. - -The new method which is introduced with Cygwin version 1.3.0 is enabled -by default or 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. - -Both, the old and the new symlinks can live peacefully together since Cygwin -treats both as symlinks regardless of the setting of `(no)winsymlinks' in -the environment variable CYGWIN. - -@subsection Why do some files, which are not executables have the 'x' type. - -When working out the unix-style attribute bits on a file, the library -has to fill out some information not provided by the WIN32 API. - -It guesses that files ending in .exe and .bat are executable, as are -ones which have a "#!" as their first characters. - -@subsection How secure is Cygwin in a multi-user environment? - -Cygwin is not secure in a multi-user environment. For -example if you have a long running daemon such as "inetd" -running as admin while ordinary users are logged in, or if -you have a user logged in remotely while another user is logged -into the console, one cygwin client can trick another into -running code for it. In this way one user may gain the -priveledge of another cygwin program running on the machine. -This is because cygwin has shared state that is accessible by -all processes. - -(Thanks to Tim Newsham (newsham@@lava.net) for this explanation). - -@subsection How do the net-related functions work? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -The network support in Cygwin is supposed to provide the Unix API, not -the Winsock API. - -There are differences between the semantics of functions with the same -name under the API. - -E.g., the select system call on Unix can wait on a standard file handles -and handles to sockets. The select call in winsock can only wait on -sockets. Because of this, 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. - -If you are porting an application which already uses Winsock, then -using the net support in Cygwin is wrong. - -But you can still use native Winsock, and use Cygwin. The functions -which cygwin.dll exports are called 'cygwin_<name>'. There -are a load of defines which map the standard Unix names to the names -exported by the dll -- check out include/netdb.h: - -@example -..etc.. -void cygwin_setprotoent (int); -void cygwin_setservent (int); -void cygwin_setrpcent (int); -..etc.. -#ifndef __INSIDE_CYGWIN_NET__ -#define endprotoent cygwin_endprotoent -#define endservent cygwin_endservent -#define endrpcent cygwin_endrpcent -..etc.. -@end example - -The idea is that you'll get the Unix->Cygwin mapping if you include -the standard Unix header files. If you use this, you won't need to -link with libwinsock.a - all the net stuff is inside the dll. - -The mywinsock.h file is a standard winsock.h which has been hacked to -remove the bits which conflict with the standard Unix API, or are -defined in other headers. E.g., in mywinsock.h, the definition of -struct hostent is removed. This is because on a Unix box, it lives in -netdb. It isn't a good idea to use it in your applications. - -As of the b19 release, this information may be slightly out of date. - -@subsection I don't want Unix sockets, how do I use normal Win32 winsock? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -To use the vanilla Win32 winsock, you just need to #define Win32_Winsock -and #include "windows.h" at the top of your source file(s). You'll also -want to add -lwsock32 to the compiler's command line so you link against -libwsock32.a. - -@subsection What version numbers are associated with Cygwin? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -There is a cygwin.dll major version number that gets incremented -every time we make a new Cygwin release available. This -corresponds to the name of the release (e.g. beta 19's major -number is "19"). There is also a cygwin.dll minor version number. If -we release an update of the library for an existing release, the minor -number would be incremented. - -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. - -Then there is a shared memory region compatibity version number. It is -incremented when incompatible changes are made to the shared memory -region or to any named shared mutexes, semaphores, etc. - -Finally there is a mount point registry version number which keeps track -of non-backwards-compatible changes to the registry mount table layout. -This has been "B15.0" since the beta 15 release. - -@subsection Why isn't _timezone set correctly? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Did you explicitly call tzset() before checking the value of _timezone? -If not, you must do so. - -@subsection Is there a mouse interface? - -There is no way to capture mouse events from Cygwin. There are -currently no plans to add support for this. - diff --git a/winsup/doc/how-programming.texinfo b/winsup/doc/how-programming.texinfo deleted file mode 100644 index aa23b186f..000000000 --- a/winsup/doc/how-programming.texinfo +++ /dev/null @@ -1,593 +0,0 @@ -@section Programming Questions - -@subsection How do I contribute a package? - -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. - -There will be a separate web page where all the details are documented, -but this is not prepared yet. Meanwhile, pore through the cygwin-apps -mailing archives (start at @file{http://cygwin.com/lists.html}), and -subscribe. Charles Wilson posted a short recipe of what's involved, -using texinfo as an example, -at @file{http://cygwin.com/ml/cygwin-apps/2000-11/msg00055.html}. This -should give you an idea of what is required. - -You should announce your intentions to the general cygwin list, in case -others were thinking the same thing. - -@subsection How do I contribute to Cygwin? - -If you want to contribute to Cygwin itself, see -@file{http://cygwin.com/contrib.html}. - -@subsection Why are compiled executables so huge?!? - -By default, gcc compiles in all symbols. You'll also find that gcc -creates large executables on UNIX. - -If that bothers you, just use the 'strip' program, part of the binutils -package. Or compile with the @samp{-s} option to gcc. - -@subsection Where is glibc? - -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. - -@subsection Where is Objective C? - -Objective C is not distributed with the Cygwin version of gcc, and there -are no plans to do so. The gcc package maintainer had difficulty -building it, and once built there were problems using it. It appears -that there is only minimual support for the Objective C front-end in the -main GCC distribution, anyway. - -@subsection Why is make behaving badly? - -First of all, if you are using @samp{make -j[N]}, then stop. It doesn't -work well. - -Otherwise, read on... - -Make has two operating modes, UNIX and WIN32. You need to make sure -that you are operating in the right mode. - -In UNIX mode, make uses sh.exe as a subshell. The path list separator -is ':', '\' is the escape character, POSIX paths are expected, and -Cygwin mounts will be understood. Use this for Makefiles written for -UNIX. - -In WIN32 mode, make uses the "native" command shell (cmd.exe or -command.com), with all the restrictions that implies. The path list -separator is ';', the path separator is '\', "copy" and "del" work, but -the Cygwin mount table is not understood. Use this for nmake-style -Makefiles. - -The default mode for the Net Release of make (the one installed by -@code{setup.exe}) is UNIX. The default mode for commercial releases to -Redhat (formerly Cygnus) customers is WIN32. - -You can override the default by setting the environment variable -MAKE_MODE to "UNIX" (actually case is not significant) or "WIN32" -(actually anything other than "UNIX"). You can also specify the options ---unix or --win32 on the make command line. - -@subsection Why the undefined reference to @samp{WinMain@@16}? - -Try adding an empty main() function to one of your sources. - -Or, perhaps you have @samp{-lm} too early in the link command line. It -should be at the end: - -@example - bash$ gcc hello.c -lm - bash$ ./a.exe - Hello World! -@end example - -works, but - -@example - 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 -@end example - -This is an artifact of libm.a being a symbolic link to libcygwin.a. - -@subsection How do I use Win32 API calls? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -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). - -For example, to use graphics functions (GDI) you must link -with gdi32 like this: - -gcc -o foo.exe foo.o bar.o -lgdi32 - -or (compiling and linking in one step): - -gcc -o foo.exe foo.c bar.c -lgdi32 - -The following libraries are available for use in this way: - -advapi32 largeint ole32 scrnsave vfw32 -cap lz32 oleaut32 shell32 win32spl -comctl32 mapi32 oledlg snmp winmm -comdlg32 mfcuia32 olepro32 svrapi winserve -ctl3d32 mgmtapi opengl32 tapi32 winspool -dlcapi mpr penwin32 th32 winstrm -gdi32 msacm32 pkpd32 thunk32 wow32 -glaux nddeapi rasapi32 url wsock32 -glu32 netapi32 rpcdce4 user32 wst -icmp odbc32 rpcndr uuid -imm32 odbccp32 rpcns4 vdmdbg -kernel32 oldnames rpcrt4 version - -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. - -Note that you should never include -lkernel32 on your link line -unless you are invoking ld directly. Do not include the same import -library twice on your link line. Finally, 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. - -The first two are related to problems the linker has (as of b18 at least) -when import libraries are referenced twice. Tables get messed up and -programs crash randomly. The last point has to do with the fact that -gcc processes the files listed on the command line in sequence and -will only resolve references to libraries if they are given after -the file that makes the reference. - -@subsection How do I compile a Win32 executable that doesn't use Cygwin? - -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. - -This is not to be confused with 'MinGW' (Minimalist GNU for Windows), -which is a completely separate effort. That project's home page is -@file{http://www.mingw.org/index.shtml}. - -@subsection Can I build a Cygwin program that does not require cygwin1.dll at runtime? - -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. - -If this is an issue because you intend to distribute your Cygwin -application, then you had better read and understand -@file{http://cygwin.com/licensing.html}, which explains the licensing -options. Unless you purchase a special commercial license from Red -Hat, then your Cygwin application must be Open Source. - -@subsection Can I link with both MSVCRT*.DLL and cygwin1.dll? - -No, you must use one or the other, they are mutually exclusive. - -@subsection How do I make the console window go away? - -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 commandline. - -@subsection Why does make complain about a "missing separator"? - -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. - -@subsection Why can't we redistribute Microsoft's Win32 headers? - -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 Cygnus (err... Red Hat) can't agree to. Fortunately, we -have our own Win32 headers which are pretty complete. - -@subsection How do I link against .lib files? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -1. 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. -2. Build a dummy 'LibMain'. -3. Build a .def with all the exports you need. -4. Link with your .lib using link.exe. - -or - -1. Extract all the object files from the .lib using LIB.EXE. -2. Build a dummy C file referencing all the functions you need, either -with a direct call or through an initialized function pointer. -3. Build a dummy LibMain. -4. Link all the objects with this file+LibMain. -5. Write a .def. -6. Link. - -You can use these methods to use MSVC (and many other runtime libs) -with Cygwin development tools. - -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... - -(thanks to Jacob Navia (root@@jacob.remcomp.fr) for this explanation) - -@subsection How do I rebuild the tools on my NT box? - -Install all required components in one directory (we'll call it /src). -Ideally, you should check out what you need from CVS (@file{http://cygwin.com/cvs.html}) but -otherwise, you can install the appropriate source packages from the -cygwin distribution. - -As of this writing, you need to install at least the cygwin source -package and the w32api source package. - -It is possible that the cygwin source package may require a newer -version of the w32api package since the release of the packages is -not always in lock step (another reason to just use CVS). - -You @emph{must} build cygwin in a separate directory from the source. -So, create something like a /obj directory. You'll be performing -your build in that directory: - -@example -bash -cd /obj -/src/configure --prefix=/install -v > configure.log 2>&1 -make > make.log 2>&1 -make install > install.log 2>&1 -@end example - -Normally, this procedure will also attempt to build the documentation, -which additionally requires db2html, and possibly other tools, which are -not included in the Cygwin distribution. You can get db2html as part of -docbook, from @file{http://sources.redhat.com/docbook-tools/}. - -To check a cygwin1.dll, run "make check" in the winsup/cygwin directory. -If that works, install everything @emph{except} 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 @emph{all} the -places where the old dll was (if there is more than one on your -machine). Then start up a bash window and see what happens. (Or better, -run a cygwin program from the Windows command prompt.) - -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. - -@subsection How can I compile a powerpc NT toolchain? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Unfortunately, this will be difficult. It hasn't been built for -some time (late 1996) since Microsoft has dropped development of -powerpc NT. Exception handling/signals support semantics/args have been -changed for x86 and not updated for ppc so the ppc specific support would -have to be rewritten. We don't know of any other incompatibilities. -Please send us patches if you do this work! - -@subsection How can I compile an Alpha NT toolchain? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -We have not ported the tools to Alpha NT and do not have plans to -do so at the present time. We would be happy to add support -for Alpha NT if someone contributes the changes to us. - -@subsection How can I adjust the heap/stack size of an application? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Pass heap/stack linker arguments to gcc. To create foo.exe with -a heap size of 1024 and a stack size of 4096, you would invoke -gcc as: - -@code{gcc -Wl,--heap,1024,--stack,4096 -o foo foo.c} - -@subsection How can I find out which dlls are needed by an executable? - -@samp{objdump -p} provides this information, but is rather verbose. - -@samp{cygcheck} will do this much more concisely, and operates -recursively, provided the command is in your path. - -Note there is currently a bug in cygcheck in that it will not report -on a program in a Windows system dir (e.g., C:\Windows or C:\WINNT) even -if it's in your path. To work around this, supply the full Win32 path -to the executable, including the .exe extension: - -@example -cygcheck c:\\winnt\\system32\\cmd.exe -@end example - -(Note the windows path separator must be escaped if this is typed in -bash.) - -@subsection How do I build a DLL? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -There's documentation that explains the process on the main Cygwin -project web page (http://cygwin.com/). - -@subsection How can I set a breakpoint at MainCRTStartup? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Set a breakpoint at *0x401000 in gdb and then run the program in -question. - -@subsection How can I build a relocatable dll? - -@strong{(Please note: This section has not yet been updated for the -latest net release. However, there was a discussion on the cygwin -mailing list recently that addresses this issue. Read -@file{http://cygwin.com/ml/cygwin/2000-06/msg00688.html} and -related messages.)} - -You must execute the following sequence of five commands, in this -order: - -@example -$(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 -@end example - -In this example, $(LD) is the linker, ld. - -$(DLLTOOL) is dlltool. - -$(AS) is the assembler, as. - -DLLNAME is the name of the DLL you want to create, e.g., tcl80.dll. - -OBJS is the list of object files you want to put into the DLL. - -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. - -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. - -BASEFILE is a temporary file that is used during this five stage -process, e.g., tcl.base. - -EXPFILE is another temporary file, e.g., tcl.exp. - -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) - -This means that the actual symbol name will have an appended @@12, so if -your entry point really is named @samp{startup}, the string you should -use for ENTRY in the above examples would be @samp{startup@@12}. - -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 @samp{_impure_ptr}, and then initializing it in the -entry function. Be careful not to export the global variable -@samp{_impure_ptr} from your DLL; that is, do not put it in DEFFILE. - -@example -/* 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. */ -@} -@end example - -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. - -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. - -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: - -$(DLLTOOL) --as=$(AS) --dllname DLLNAME --def DEFFILE --output-lib LIBFILE - -$(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. - -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. - -@subsection How can I debug what's going on? - -You can debug your application using @code{gdb}. 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). - -@subsection Can I use a system trace mechanism instead? - -Yes. You can use the @code{strace.exe} utility to run other cygwin -programs with various debug and trace messages enabled. For information -on using @code{strace}, see the Cygwin User's Guide or the file -@code{winsup/utils/utils.sgml}. - -@subsection Why doesn't gdb handle signals? - -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. - -@subsection The linker complains that it can't find something. - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -A common error is to put the library on the command line before -the thing that needs things from it. - -This is wrong @code{gcc -lstdc++ hello.cc}. -This is right @code{gcc hello.cc -lstdc++}. - -@subsection I use a function I know is in the API, but I still get a link error. - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -The function probably isn't declared in the header files, or -the UNICODE stuff for it isn't filled in. - -@subsection Can you make DLLs that are linked against libc ? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Yes. - -@subsection Where is malloc.h? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Include stdlib.h instead of malloc.h. - -@subsection Can I use my own malloc? - -If you define a function called @code{malloc} in your own code, and link -with the DLL, the DLL @emph{will} call your @code{malloc}. Needless to -say, you will run into serious problems if your malloc is buggy. - -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 @code{malloc} @emph{before} your main line is started. -If you have written your own @code{malloc} to need some initialization -to occur after @code{main} is called, then this will surely break. - -Moreover, there is an outstanding issue with @code{_malloc_r} in -@code{newlib}. This re-entrant version of @code{malloc} will be called -directly from within @code{newlib}, by-passing your custom version, and -is probably incompatible with it. But it may not be possible to replace -@code{_malloc_r} too, because @code{cygwin1.dll} 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. - -@subsection Can I mix objects compiled with msvc++ and gcc? - -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. - -@subsection Can I use the gdb debugger to debug programs built by VC++? - -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. - -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. - -@subsection Where can I find info on x86 assembly? - -CPU reference manuals for Intel's current chips are available in -downloadable PDF form on Intel's web site: - -@file{http://developer.intel.com/design/pro/manuals/} - -@subsection Shell scripts aren't running properly from my makefiles? - -If your scripts are in the current directory, you must have @samp{.} -(dot) in your $PATH. (It is not normally there by default.) Otherwise, -you would need to add /bin/sh in front of each and every shell script -invoked in your Makefiles. - -@subsection What preprocessor do I need to know about? - -We use _WIN32 to signify access to the Win32 API and __CYGWIN__ for -access to the Cygwin environment provided by the dll. - -We chose _WIN32 because this is what Microsoft defines in VC++ and -we thought it would be a good idea for compatibility with VC++ code -to follow their example. We use _MFC_VER to indicate code that should -be compiled with VC++. - -@subsection How should I port my Unix GUI to Windows? - -There are two basic strategies for porting Unix GUIs to Windows. - -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 an X11 server installed. - -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. - -@subsection Why not use DJGPP ? - -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. - -You can get more info on DJGPP by following -@file{http://www.delorie.com/}. diff --git a/winsup/doc/how-resources.texinfo b/winsup/doc/how-resources.texinfo deleted file mode 100644 index c1236f7bc..000000000 --- a/winsup/doc/how-resources.texinfo +++ /dev/null @@ -1,123 +0,0 @@ -@section Where can I get more information? - -@subsection Where's the documentation? - -If you have installed Cygwin, you can find lots of documentation in -@samp{/usr/doc/}. Many packages ship with standard documentation, you -can find this in a directory @samp{/usr/doc/@emph{package_name}}. In -addition, some packages have Cygwin specific instructions in a file -@samp{/usr/doc/Cygwin/@emph{package_name}.README}. - -There are links to quite a lot of it on the main Cygwin project web -page: @file{http://cygwin.com/}. Be sure to at least -read any 'Release Notes' or 'Readme' or 'read this' links on the main -web page, if there are any. - -There is a comprehensive Cygwin User's Guide at -@file{http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html} -and an API Reference at -@file{http://cygwin.com/cygwin-api/cygwin-api.html}. - -There is an interesting paper about Cygwin from the 1998 USENIX Windows -NT Workshop Proceedings at -@file{http://cygwin.com/usenix-98/cygwin.html}. - -You can find documentation for the individual GNU tools at -@file{http://www.fsf.org/manual/}. (You should read GNU manuals from a -local mirror, check @file{http://www.fsf.org/server/list-mirrors.html} -for a list of them.) - -@subsection What Cygwin mailing lists can I join? - -Comprehensive information about the Cygwin mailing lists can be found at -@file{http://cygwin.com/lists.html}. - -To subscribe to the main list, send a message to -cygwin-subscribe@@cygwin.com. To unsubscribe from the -main list, send a message to cygwin-unsubscribe@@cygwin.com. -In both cases, the subject and body of the message are ignored. - -Similarly, to subscribe to the Cygwin annoucements list, send a message -to cygwin-announce-subscribe@@cygwin.com. To unsubscribe, -send a message to cygwin-announce-unsubscribe@@cygwin.com. - -If you are going to help develop the Cygwin library by volunteering for -the project, you will want to subscribe to the Cygwin developers list, -called cygwin-developers. If you are contributing to Cygwin tools & -applications, rather than the library itself, then you should subscribe -to cygwin-apps. The same mechanism as described for the first two lists -works for these as well. Both cygwin-developers and cygwin-apps are -by-approval lists. - -There is a searchable archive of the main mailing list at -@file{http://cygwin.com/ml/cygwin/}. There is an alternate -archive, also searchable, at @file{http://www.delorie.com/archives/}. -You can also search at @file{http://www.google.com/} and include -"cygwin" in the list of search terms. - -Cygwin mailing lists are not gatewayed to USENET, so anti-spam measures -in your email address are neither required nor appreciated. Also, avoid -sending HTML content to Cygwin mailing lists. - -@subsection Posting Guidelines (Or: Why won't you/the mailing list answer my questions?) - -If you follow these guidelines, you are much more likely to get a -helpful response from the Cygwin developers and/or the Cygwin community at -large: - -@itemize @bullet -@item Read the User's Guide and the FAQ first. -@item Check the mailing list archives. Your topic may have come up -before. (It may even have been answered!) Use the search facilities -at the links above. Try the alternate site if the main archive is not -producing search results. -@item Explain your problem carefully and completely. "I installed Blah -and it doesn't work!" wastes everybody's time. It provides no -information for anyone to help you with your problem. You should -provide: - -@itemize @bullet -@item A problem statement: How does it behave, how do you think it -should behave, and what makes you think it's broken? (Oh yeah, and what -is @emph{"it"}?) -@item Information about your Windows OS ("Win95 OSR2" or "NT4/SP3" or -"Win2K" or "Win98 SE" or ...). -@item Details about your installation process, or attempts at same. (Internet or -Directory install? If the former, exactly when and from what mirror? -If the latter, which packages did you download? Which version of -setup.exe? Any subsequent updates?) -@item Details about your Cygwin setup, accomplished by @emph{pasting} -the output of 'cygcheck -s -v -r' into your message. (Do not send the -output as a file attachment.) -@item A valid return address, so that a reply doesn't require manual editing of -the 'To:' header. -@end itemize - -@item Your message must be relevant to the list. Messages that are -@emph{not} directly related to Cygwin are considered off-topic and are -unwelcome. For example, the following are off-topic: - -@itemize @bullet -@item General programming language questions -@item General Windows programming questions -@item General UNIX shell programming questions -@item General application usage questions -@item How to make millions by working at home -@item Announcements from LaserJet toner cartridge suppliers -@end itemize - -@end itemize - -If you do not follow the above guidelines, you may still elicit a -response, but you may not appreciate it! - -Inquiries about support contracts and commercial licensing should go to -info@@cygnus.com. If you want to purchase the Cygwin 1.0 CD-ROM, visit -@file{http://www.cygnus.com/cygwin/} or write to -cygwin-info@@cygnus.com. While not strictly @emph{unappreciated} in the -main cygwin list, you'll get the information you need more quickly if -you write to the correct address in the first place. - -Beyond that, perhaps nobody has time to answer your question. Perhaps -nobody knows the answer. - diff --git a/winsup/doc/how-using.texinfo b/winsup/doc/how-using.texinfo deleted file mode 100644 index e79d722f0..000000000 --- a/winsup/doc/how-using.texinfo +++ /dev/null @@ -1,706 +0,0 @@ -@section Using Cygwin - -@subsection Why can't my application locate cygncurses5.dll? or cygintl.dll? or cygreadline5.dll? or ...? - -If you upgraded recently, and suddenly vim (or some other Cygwin -application) cannot find @code{cygncurses5.dll}, it means that you did -not follow these instructions properly: -@file{http://cygwin.com/ml/cygwin-announce/2001/msg00124.html}. To -repair the damage, you must run Cygwin Setup again, and re-install the -@samp{libncurses5} package. - -Note that Cygwin Setup won't show this option by default. In the -``Select packages to install'' dialogue, click on the @samp{Full/Part} -button. This lists all packages, even those that are already -installed. Scroll down to locate the @samp{libncurses5} package. -Click on the ``cycle'' glyph until it says ``Reinstall''. Continue -with the installation. - -Similarly, if something cannot find @code{cygintl.dll}, then run -Cygwin Setup and re-install the @samp{libintl} and @samp{libintl1} -packages. - -For a detailed explanation of the general problem, and how to extend -it to other missing DLLs (like cygreadline5.dll) and identify their -containing packages, see -@file{http://cygwin.com/ml/cygwin/2002-01/msg01619.html}. - -@subsection Why is Cygwin suddenly @emph{so} slow? - -If you recently upgraded the @samp{cygwin} package and suddenly -@emph{every} command takes a @emph{very} long time, then you probably -have the obsolete @code{//c} notation in your PATH. This now means -the @emph{network share} @code{c}, which will slow things down -tremendously if it does not exist. See then next FAQ entry. - -@subsection Why doesn't //c (for C:) work anymore? - -(Similarly for any drive letter, e.g. @code{//z} for @code{Z:}) - -This ``feature'' has long been deprecated, and no longer works at all -in the latest release. As of release 1.3.3, @code{//c} now means the -@emph{network share} @code{c}. - -For a detailed discussion of why this change was made, and how deal -with it now, refer to -@file{http://sources.redhat.com/ml/cygwin/2001-09/msg00014.html}. - -@subsection How should I set my PATH? - -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 -@code{setup.exe}. The line is - -@example - PATH="/usr/local/bin:/usr/bin:/bin:$PATH" -@end example - -Effectively, this @strong{prepends} /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 @strong{must} have @code{/usr/bin} in your PATH -@strong{before} 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. - -@subsection Bash says "command not found", but it's right there! - -If you compile a program, you might find that you can't run it: - -@example - bash$ gcc -o hello hello.c - bash$ hello - bash: hello: command not found -@end example - -Unlike Windows, bash does not look for programs in @samp{.} (the current -directory) by default. You can add @samp{.} 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: - -@example - bash$ gcc -o hello hello.c - bash$ ./hello - Hello World! -@end example - -@subsection How do I convert between Windows and UNIX paths? - -Use the 'cygpath' utility. Type '@code{cygpath}' with no arguments to -get usage information. For example (on my installation): -@example - 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 -@end example -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. - -@subsection Why doesn't bash read my .bashrc file on startup? - -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 correctly, or move your .bashrc to the top of the drive -mounted as / in Cygwin. - -@subsection How can I get bash filename completion to be case insensitive? - -Add the following to your @code{~/.bashrc} file: - -@example - shopt -s nocaseglob -@end example - -and add the following to your @code{~/.inputrc} file: - -@example - set completion-ignore-case on -@end example - -@subsection Can I use paths/filenames containing spaces in them? - -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. - -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: -@example - bash-2.03$ cd '/cygdrive/c/Program Files' -@end example -or -@example - bash-2.03$ cd /cygdrive/c/Program\ Files -@end example - -@subsection Why can't I cd into a shortcut to a directory? - -This is only valid up to but not including version 1.3.0: - -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. - -Some people have suggested replacing the current symbolic link scheme -with shortcuts. The major problem with this is that .LNK files would -then be used to symlink Cygwin paths that may or may not be valid -under native Win32 non-Cygwin applications such as Explorer. - -Since version 1.3.0, Cygwin treats shortcuts as symlinks. - -@subsection I'm having basic problems with find. Why? - -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. - -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 @samp{-follow} option. This behavior is different than most -other UNIX implementations, but is not likely to change. - -@subsection Where is the @samp{su} command? - -The @samp{su} command is not ported to Cygwin, so it is no longer -provided in the distribution. You may be able to use @samp{login} -instead, but you should read -@file{http://www.cygwin.com/ml/cygwin/2001-03/msg00337.html} first. - -If you have a copy of su, then it's from an old Cygwin distribution, and -it probably doesn't work properly anyway. - -@subsection Why doesn't man (or apropos) work? - -Even after installing the @samp{man} package, you get an error like this: - -@example - bash-2.04$ man man - Error executing formatting or display command. - System command (cd /usr/man ; (echo -e ".pl 1100i"; cat /usr/man/man1/man.1; echo ".pl \n(nlu+10") | /usr/bin/tbl | /usr/bin/groff -Tascii -mandoc | less -is) exited with status 32512. - No manual entry for man -@end example - -You also need /bin/sh, which is found in the @samp{ash} package. -You must install this too. - -In addition, before you can use @samp{man -k} or @samp{apropos}, you -must create the whatis database. Just run the command - -@example - /usr/sbin/makewhatis -@end example - -(it may take a minute to complete). - -@subsection Why doesn't chmod work? - -@samp{ntsec} will allow UNIX permissions in Windows NT on NTFS file systems. - -@samp{ntea} works on NTFS @emph{and} FAT but it creates a huge, -@strong{undeletable} file on FAT filesystems. - -(The @samp{ntsec} and @samp{ntea} settings are values for the -@samp{CYGWIN} environment variable. See the Cygwin User's Guide at -@file{http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html} for more -information on this variable and its settings.) - -There is no solution at all for Windows 9x. - -If you have an application that requires a certain permission mode on a -file, you may be able to work around this requirement by modifying the -application's source code. For a hint, based on work done by Corinna -Vinschen for OpenSSH, see this message from the cygwin mailing list: -@file{http://cygwin.com/ml/cygwin/2000-11/msg01176.html}. - -@subsection Why doesn't @samp{mkdir -p} work on a network share? - -Unfortunately, you cannot do something like this: - -@example -bash$ mkdir -p //MACHINE/Share/path/to/new/dir -mkdir: cannot create directory `//MACHINE': No such file or directory -@end example - -This is because mkdir checks for the existence of each directory on the -path, creating them as necessary. Since @samp{//MACHINE} is not a -directory (you can't cd to it either), mkdir tries to create it, and -fails. - -This might get fixed someday, but for now, you have to work around it: - -@example -bash$ cd //MACHINE/Share -bash$ mkdir -p path/to/new/dir -@end example - -@subsection Why doesn't my shell script work? - -There are two basic problems you might run into. One is the fact that -/bin/sh is really ash, and is missing some features you might expect -in /bin/sh, particularly if you are used to /bin/sh actually being -bash (Linux) or ksh (Tru64). For example: - -@itemize bullet -@item No job control -@item No getopts -@item No let -@item No functions exported -@item Must use `.' instead of `source' (true of sh and ksh too, not just ash) -@end itemize - -Or, it could be a permission problem, and Cygwin doesn't understand that -your script is executable. Because @samp{chmod} may not work (see FAQ -entry above), Cygwin must read the contents of files to determine if -they are executable. If your script does not start with - -@example - #! /bin/sh -@end example - -(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 - -@example - : - # This is the 2nd line, assume processing by /bin/sh -@end example - -also works. - -Note that you can use @samp{mount -x} 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. - -@subsection How do I print under Cygwin? - -There is no working lp or lpr system as you would find on UNIX. - -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 -@file{http://cygwin.com/ml/cygwin/2001-04/msg00657.html}. Note that the -@samp{file} command is now available as part of Cygwin setup. - -Alternatively, on NT, you can use the Windows @samp{print} command. (It -does not seem to be available on Win9x.) Type - -@example - bash$ print /\? -@end example - -for usage instructions (note the @samp{?} must be escaped from the -shell). - -Finally, you can simply @samp{cat} the file to the printer's share name: - -@example - bash$ cat myfile > //host/printer -@end example - -You may need to press the formfeed button on your printer or append the -formfeed character to your file. - -@subsection Why don't international (8-bit) characters work? - -Before you can type international characters (£åäö) in bash, you must -add the following lines to your @code{~/.inputrc} file: - -@example - set meta-flag on - set convert-meta off - set output-meta on -@end example - -These are options to the @code{readline} library, which you can read -about in the @code{bash(1)} man page. - -@subsection Why don't cursor keys work under Win95/Win98? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Careful examination shows that they not just non-functional, but -rather behave strangely, for example, with NumLock off, keys on numeric -keyboard work, until you press usual cursor keys, when even numeric -stop working, but they start working again after hitting alphanumeric -key, etc. This reported to happen on localized versions of Win98 and -Win95, and not specific to Cygwin (there're known cases of Alt+Enter -(fullscreen/windowed toggle) not working and shifts sticking with -other programs). The cause of this problem is Microsoft keyboard -localizer which by default installed in 'autoexec.bat'. Corresponding -line looks like: - -@example -keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys -@end example - -(That's for russian locale.) You should comment that line if you want -your keys working properly. Of course, this will deprive you of your -local alphabet keyboard support, so you should think about -another localizer. exUSSR users are of course knowledgeable of Keyrus -localizer, and it might work for other locales too, since it has keyboard -layout editor. But it has russian messages and documentation ;-( -Reference URL is http://www.hnet.ru/software/contrib/Utils/KeyRus/ -(note the you may need to turn off Windows logo for Keyrus to operate -properly). - -@subsection Is it OK to have multiple copies of the DLL? - -You should only have one copy of the Cygwin DLL on your system. If you -have multiple versions, they will conflict and cause problems. - -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. This could happen, for example, if you update -cygwin1.dll without exiting @emph{all} Cygwin apps (including inetd) -beforehand. - -If you're trying to find multiple versions of the DLL that are causing -this problem, reboot first, in case DLL's 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). - -@subsection Where can I find "more"? - -If you are looking for the "more" pager, you should use the "less" pager -instead. - -@subsection Why isn't package XXXX available in Cygwin? (Or, why is your package so out of date?) - -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 below. - -@subsection How can I access other drives? - -You have some flexibility here. - -Cygwin has a builtin "cygdrive prefix" for drives that are not mounted. -You can access any drive, say Z:, as '/cygdrive/z/'. - -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: -@example - bash$ cd C:/Windows - bash$ pwd - /cygdrive/c/Windows -@end example -and -@example - bash$ cd C:/cygwin - bash$ pwd - / -@end example -for a default setup. You could also use backward-slashes in the -Windows path, but these would have to be escaped from the shell. - -@strong{Warning:} 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. - -You can avoid the ambiguity of Windows paths, and avoid typing -"/cygdrive", by explicitly mounting drives to posix paths. For example: -@example - bash$ mkdir /c - bash$ mount c:/ /c - bash$ ls /c -@end example -Then @samp{/cygdrive/c/Windows} becomes @samp{/c/Windows} which is a -little less typing. - -Note that you only need to mount drives once. The mapping is kept -in the registry so mounts stay valid pretty much indefinitely. -You can only get rid of them with umount, or the registry editor. - -The '-b' option to mount mounts the mountpoint in binary mode -("binmode") where text and binary files are treated equivalently. This -should only be necessary for badly ported Unix programs where binary -flags are missing from open calls. It is also the setting for /, -/usr/bin and /usr/lib in a default Cygwin installation. The default for -new mounts is text mode ("textmode"), which is also the mode for all -"cygdrive" mounts. - -You can change the default @samp{cygdrive} prefix and whether it is -binmode or textmode using the @code{mount} command. For example, -@example - bash$ mount -b --change-cygdrive-prefix cygdrive -@end example -will change all @code{/cygdrive/...} mounts to binmode. - -@subsection How can I copy and paste into Cygwin console windows? - -Under Windows NT, open the properties dialog of the console window. -The options contain a toggle button, named "Quick edit mode". It must -be ON. Save the properties. - -Under Windows 9x, open the properties dialog of the console window. -Select the Misc tab. Uncheck Fast Pasting. Check QuickEdit. - -You can also bind the insert key to paste from the clipboard by adding -the following line to your .inputrc file: -@example - "\e[2~": paste-from-clipboard -@end example - - -@subsection What does "mount failed: Device or resource busy" mean? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -This usually means that you are trying to mount to a location -already in use by mount. For example, if c: is mounted as '/' -and you try to mount d: there as well, you will get this error -message. First "umount" the old location, then "mount" the new one and -you should have better luck. - -If you are trying to umount '/' and are getting this message, you may -need to run @code{regedit.exe} and change the "native" key for the '/' -mount in one of the mount points kept under -HKEY_CURRENT_USER/Software/Red Hat, Inc./CYGWIN.DLL setup/<version> -where <version> is the latest registry version associated with the -Cygwin library. - -@subsection How can I share files between Unix and Windows? - -During development, we have both Unix boxes running Samba and -NT/Windows 95/98 machines. We often build with cross-compilers -under Unix and copy binaries and source to the Windows system -or just toy with them directly off the Samba-mounted partition. -On dual-boot NT/Windows 9x machines, we usually use the FAT -filesystem so we can also access the files under Windows 9x. - -@subsection Are mixed-case filenames possible with Cygwin? - -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 @code{Makefile} and -@code{makefile}. WIN32 can't tell the difference between files with -just different case, so the configuration fails. - -In releases prior to beta 16, mount had a special mixed case option -which renamed files in such a way as to allow mixed case filenames. We -chose to remove the support when we rewrote the path handling code for -beta 16. The standard Windows apps -- explorer.exe, -cmd.exe/command.com, etc. -- do not distinguish filenames that differed -only in case, resulting in some (very) undesirable behavior. - -Sergey Okhapkin had maintained a mixed-case patch ('coolview') until -about B20.1, but this has not been updated to recent versions of Cygwin. - -@subsection What about DOS special filenames? - -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 -@code{aux.sh}. The perl configuration tries to make sure that -@code{aux.sh} is there, but an operation on a file with the magic -letters 'aux' in it will hang. - -@subsection When it hangs, how do I get it back? - -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. - -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. - -And, if all else fails, there's always the reset button/power switch. -This should never be necessary under Windows NT. - -@subsection Why the weird directory structure? - -Why do /lib and /usr/lib (and /bin, /usr/bin) point to the same thing? - -Why use mounts instead of symbolic links? - -Can I use a disk root (e.g., C:\) as Cygwin root? Why is this discouraged? - -After a new installation in the default location, your mount points will -look something like this: - -@example - bash$ mount - C:\cygwin\bin on /usr/bin type system (binmode) - C:\cygwin\lib on /usr/lib type system (binmode) - C:\cygwin on / type system (binmode) -@end example - -(Exactly what you see depends on what options you gave to @code{setup.exe}.) - -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 @emph{really} know what you are doing. - -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. - -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. - -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. @emph{So don't do this!} - -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?) - -@subsection How do anti-virus programs like Cygwin? - -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.) - -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. - -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 @samp{@code{C:\cygwin\bin}}. Obviously, this could be -exploited by a hostile non-Cygwin program, so do this at your own risk. - -@subsection How do I run bash as a shell under NT Emacs? - -The Windows port of GNU Emacs (aka "NT emacs") uses the Windows command -shell by default. Also, since Emacs 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 -bash. This is particularly useful for the JDEE package -(@file{http://jdee.sunsite.dk/}). The following settings are for -Emacs 21.1: - -@example - ;; 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"))) - ;; - ;; NT-emacs assumes a Windows command shell, which you change - ;; here. - ;; - (setq process-coding-system-alist '(("bash" . undecided-unix))) - (setq shell-file-name "bash") - (setenv "SHELL" shell-file-name) - (setq explicit-shell-file-name shell-file-name) - ;; - ;; This removes unsightly ^M characters that would otherwise - ;; appear in the output of java applications. - ;; - (add-hook 'comint-output-filter-functions - 'comint-strip-ctrl-m) -@end example - -@subsection Is there a Cygwin port of GNU Emacs? - -No. If you want NT Emacs to understand Cygwin paths, get -cygwin-mount.el from @file{http://www.emacswiki.org/elisp/index.html}. - -If you want to run ``emacs -nw'', say from a remote login shell, you -can't. (The error is ``emacs: standard input is not a tty''.) -Instead, use a Cygwin version of XEmacs, from -@file{http://www.xemacs.org/}. Using ``xemacs -nw'' from a remote -shell works fine. - -@subsection info error "dir: No such file or directory" - -Cygwin packages install their info documentation in the /usr/info -directory. But you need to create a @code{dir} file there before the -standalone info program (probably @code{/usr/bin/info}) can be used to -read those info files. This is how you do it: -@example - bash$ cd /usr/info - bash$ for f in *.info ; do install-info $f dir ; done -@end example -This may generate warnings: -@example - install-info: warning: no info dir entry in `gzip.info' - install-info: warning: no info dir entry in `time.info' -@end example -The @code{install-info} command cannot parse these files, so you will -have to add their entries to @code{/usr/info/dir} by hand. - -Even if the dir file already exists, you may have to update it when -you install new Cygwin packages. Some packages update the dir file -for you, but many don't. - -@subsection Why do I get a message saying Out of Queue slots? - -"Out of queue slots!" generally occurs when you're trying to remove -many files that you do not have permission to remove (either because -you don't have permission, they are opened exclusively, etc). What -happens is Cygwin queues up these files with the supposition that it -will be possible to delete these files in the future. Assuming that -the permission of an affected file does change later on, the file will -be deleted as requested. However, if too many requests come in to -delete inaccessible files, the queue overflows and you get the message -you're asking about. Usually you can remedy this with a quick chmod, -close of a file, or other such thing. (Thanks to Larry Hall for -this explanation). - -@subsection Why don't symlinks work on samba-mounted filesystems? - -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: - -@smallexample - map system = yes - create mask = 0775 -@end smallexample - -Note that the 0775 can be anything as long as the 0010 bit is set. - -@subsection Why does df report sizes incorrectly. - -There is a bug in the Win32 API function GetFreeDiskSpace that -makes it return incorrect values for disks larger than 2 GB in size. -Perhaps that may be your problem? - -@subsection Why doesn't Cygwin tcl/tk understand Cygwin paths? - -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 with the @samp{-mno-cygwin} option to @code{gcc}, which -means they do not understand Cygwin mounts or symbolic links. - -See the entry "How do I convert between Windows and UNIX paths?" -elsewhere in this FAQ. diff --git a/winsup/doc/how.texinfo b/winsup/doc/how.texinfo deleted file mode 100644 index 4c7385ba4..000000000 --- a/winsup/doc/how.texinfo +++ /dev/null @@ -1,6 +0,0 @@ -@chapter Question and Answers - -@include how-resources.texinfo -@include how-using.texinfo -@include how-api.texinfo -@include how-programming.texinfo diff --git a/winsup/doc/install.texinfo b/winsup/doc/install.texinfo deleted file mode 100644 index c90b11a53..000000000 --- a/winsup/doc/install.texinfo +++ /dev/null @@ -1,274 +0,0 @@ -@chapter Installation Instructions -@section Contents - -Unlike previous net releases such as B20.1 and earlier, there is no -monolithic "full" or "usertools" installation. Rather, you can pick and -choose the packages you wish to install, and update them individually. - -For a searchable list of packages that can be installed with Cygwin, -see @file{http://cygwin.com/packages/}. - -Full source code is available for all packages and tools. - -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. - -Do it any other way, and 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 elsewhere, then by all means report it to the -mailing list. - -@section Installation using ``Cygwin Setup'' - -The Cygwin Setup program is the only recommended way to install Cygwin, -but it is still a work in progress. Expect features and functionality -to change. For this reason, it is a good idea to note the version and -build time reported by Cygwin Setup when you run it. This will help -diagnose problems, should you have any. Check the cygwin mailing list -for the latest news about Cygwin Setup. - -@subsection Why not install in C:\? - -The Cygwin Setup program will prompt you for a "root" directory. -The default is @samp{C:\cygwin}, but you can change it. You are urged not to -choose something like 'C:\' (the root directory on the system drive) for -your Cygwin root. If you do, then critical Cygwin system directories -like 'etc', 'lib' and 'bin' could easily be corrupted by other (non-Cygwin) -applications or packages that use \etc, \lib or \bin. 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. - -(In the past, there had been genuine bugs that would cause problems -for people who installed in C:\, but we believe those are gone now.) - -@subsection Can I use Cygwin Setup to update a B18, B19, B20, B20.1 or CD-ROM (1.0) installation of Cygwin? - -No, you must start from scratch with the new Cygwin Setup. The -overall structure has changed so much that it would be pointless to -try to accomodate old installations of Cygwin. You will probably be -much better off with a whole new installation anyway. You may backup -or rename your old installation first, or just install the new one -somewhere else. Be sure to make note of your current mount table, -because this will be overwritten during the new setup. Make sure you -don't end up with two different versions of @samp{cygwin1.dll} in your -path. - -Once you've installed the latest net release, Cygwin Setup will update -just the individual packages that need it. - -@subsection Is Cygwin Setup, or one of the packages, infected with a virus? - -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 @code{setup}. Read the next entry for a fairly safe way to do -this. - -@subsection My computer hangs when I run Cygwin Setup! - -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: - -@enumerate -@item Download @code{setup.exe} and scan it explicitly. - -@item Turn off the anti-virus software. - -@item Run setup to download and extract all the tar files. - -@item Re-activate your anti-virus software and scan everything -in C:\cygwin (or wherever you chose to install). If you're concerned -about a malicious package, say if a mirror is compromised, then you -should scan your entire hard disk after running Cygwin Setup. - -@end enumerate - -This should be safe, but only if Cygwin Setup is not substituted by -something malicious. - -@subsection What packages should I download? - -When using Cygwin Setup for the first time, the default is to install -a minimal subset of packages. If you want anything beyond that, you -will have to select it explicitly. See -@file{http://cygwin.com/packages/} for a searchable list of available -packages. - -If you want to build programs, of course you'll need @samp{gcc}, -@samp{binutils}, @samp{make} and probably other packages from the -``Devel'' category. - -@subsection How do I just get everything? - -In the past, the default was to install everything, much to the -irritation of many users. Now the default is to install only a basic -core of packages. At the moment, there is no easy way to get -everything. In the current version of Cygwin Setup, if you want -everything, you must do the following: - -@enumerate - -@item When the Cygwin Setup says ``Select packages to install'', click on the -``View'' button until it says ``Full''. - -@item Wherever it says ``Skip'', click twice until it gives the -version number of the package. That means it will be downloaded and -installed. - -@end enumerate - -If a package you've selected for installation has prerequisites, those -will automatically be installed too. It's a lot of clicking but only -the first time. Once you install a package, any subsequent updates to -that package will be installed by default. Note that new packages are -added regularly, so you will always have to check the list for any -``Skip'' entries if you want to stay up to date with a complete -installation. - -This should become much easier in a future version of Cygwin Setup. - -@subsection How much disk space does Cygwin require? - -That depends, obviously, on what you've chosen to download and install. -A full installation is probably 250-300MB installed, not including the -package archives themselves or the source code. - -After installation, the package archives remain in your ``Local Package -Directory'', by default the location of @code{setup.exe}. You may -conserve disk space by deleting the @code{contrib} and @code{latest} -subdirectories there. - -@subsection What if setup fails? - -First, make sure that you are using the latest version of Cygwin -Setup. It is a work in progress, with improvements and bugfixes being -made often. The latest version is always available from the 'Install -Cygwin now' link on the Cygwin Home Page at @file{http://cygwin.com/}. - -If you are downloading from the internet, setup will fail if it cannot -download the list of mirrors at -@file{http://cygwin.com/mirrors.html}. It could be that -the network is too busy. Similarly for an ftp download site that isn't -working. Try another mirror, or try again later. - -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. - -If setup has otherwise behaved strangely, check the files -@samp{setup.log} and @samp{setup.log.full} in the Cygwin root directory -(@code{C:\cygwin} by default). It may provide some clues as to what -went wrong and why. - -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. - -@subsection What's the difference between packages in @samp{latest} and @samp{contrib}? - -There is no difference as far as Cygwin Setup is concerned. The -distinction is historical, not practical. - -@subsection My Windows logon name has a space in it, will this cause problems? - -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. - -In particular, the environment variables @samp{USER} and @samp{HOME} are -set for you in /etc/profile. By default these derive from your Windows -logon name. You may edit this file and set them explicitly to something -without spaces. - -(If you use the @samp{login} package or anything else that reads -/etc/passwd, you may need to make corresponding changes there. See the -README file for that package.) - -@subsection How do I uninstall individual packages? - -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''. - -@subsection How do I uninstall @strong{all} of Cygwin? - -Setup has no automatic uninstall facility. Just delete everything -manually: - -@itemize @bullet -@item Cygwin shortcuts on the Desktop and Start Menu - -@item The registry tree @samp{Software\Cygnus Solutions} under -@code{HKEY_LOCAL_MACHINE} and/or @code{HKEY_CURRENT_USER}. - -@item Anything under the Cygwin root folder, @samp{C:\cygwin} by -default. - -@item Anything created by setup in its temporary working directory. - -@end itemize - -It's up to you to deal with other changes you made to your system, such -as installing the inetd service, altering system paths, etc. Setup -would not have done any of these things for you. - -@subsection Can I use setup to install snapshots? - -No. It used to be possible, but not any more. - -If experimenting with developer snapshots from -@file{http://cygwin.com/snapshots/}, you should generally install the -full @code{cygwin-inst-YYYYMMDD.tar.bz2} update, rather than just the -DLL, otherwise some components may be out of sync. Cygwin tar won't be -able to update @code{/usr/bin/cygwin1.dll}, but it should succeed with -everything else. The following steps should work: - -@enumerate - -@item Download the snapshot, and run: -@example - cd / - tar jxvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.bz2 --exclude=usr/bin/cygwin1.dll - cd /tmp - tar jxvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.bz2 usr/bin/cygwin1.dll -@end example - -@item After closing all Cygwin apps (see below), use Explorer or the -Windows command shell to move @code{C:\cygwin\tmp\usr\bin\cygwin1.dll} -to @code{C:\cygwin\bin\cygwin1.dll}. - -@end enumerate - -The obvious warnings about updating the cygwin package and using developer -snapshots apply: - -@enumerate - -@item Close @strong{all} Cygwin applications, including shells and services -(e.g. inetd), before updating @code{cygwin1.dll}. You may have to -restart Windows to clear the DLL from memory. - -@item Snapshots are risky. They have not been tested. Use them -@strong{only} if there is a feature or bugfix that you need to try, -and you are willing to deal with any problems. - -@item If you cannot download a snapshot from the main ftp distribution -site, use a mirror, and look in the @samp{snapshots} directory. You may -have to hunt for one that has a copy of the latest snapshot. Start at -@file{http://cygwin.com/mirrors.html}. - -@end enumerate diff --git a/winsup/doc/legal.sgml b/winsup/doc/legal.sgml deleted file mode 100644 index 1190ecce1..000000000 --- a/winsup/doc/legal.sgml +++ /dev/null @@ -1,30 +0,0 @@ -<LegalNotice id="legal"> - -<Para>Copyright © 1998,1999,2000,2001 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/ntsec.sgml b/winsup/doc/ntsec.sgml deleted file mode 100644 index 1741b8046..000000000 --- a/winsup/doc/ntsec.sgml +++ /dev/null @@ -1,663 +0,0 @@ -<sect1 id="ntsec"><title>NT security and the <literal>ntsec</literal> usage</title> - -<para>The design goal of the ntsec patch was to get a more UNIX like -permission structure based upon the security features of Windows NT. -To describe the changes, I will give a short overview of NT security -in chapter one.</para> -<para>Chapter two discusses the changes in ntsec related to privileges on -processes.</para> -<para>Chapter three shows the basics of UNIX like setting of -file permissions.</para> -<para>Chapter four talks about the advanced settings introduced in -release 1.1</para> -<para>Chapter five illustrates the permission mapping leak of Windows NT.</para> -<para>Chapter six describes the new support of a setuid concept introduced -with release 1.1.3.</para> - -<para>Chapter six describes in short the new acl API since release 1.1</para> - -<para>The setting of UNIX like object permissions is controlled by the new -<EnVar>CYGWIN</EnVar> variable setting <literal>(no)ntsec</literal>.</para> - -<sect2 id="ntsec-common"><title>NT security</title> - -<para>The NT security allows a process to allow or deny access of -different kind to `objects'. `Objects' are files, processes, -threads, semaphores, etc.</para> - -<para>The main data structure of NT security is the `security descriptor' -(SD) structure. It explains the permissions, that are granted (or denied) -to an object and contains information, that is related to so called -`security identifiers' (SID).</para> - -<para>A SID is a unique identifier for users, groups and domains. -SIDs are comparable to UNIX UIDs and GIDs, but are more complicated -because they are unique across networks. Example:</para> - -<para>SID of a system `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 above example shows the convention for printing SIDs. The leading -`S' should show that it is a SID. The next number is a version number which -is always 1. The next number is the so called `top-level authority' that -identifies the source that issued the SID.</para> - -<para>While each system in a NT network has it's own SID, the situation -is modified in NT domains: The SID of the domain controller is the -base SID for each domain user. If an NT user has one account as domain -user and another account on his local machine, this accounts are under -any circumstances DIFFERENT, regardless of the usage of the same user -name and password!</para> - -<para>SID of a domain `bar':</para> - -<screen> - S-1-5-21-186985262-1144665072-740312968 -</screen> - -<para>SID of a user `johndoe' in the domain `bar':</para> - -<screen> - S-1-5-21-186985262-1144665072-740312968-1207 -</screen> - -<para>The last part of the SID, the so called `relative identifier' (RID), -is by default used as UID and/or GID under cygwin. As the name and the -above example implies, this id is unique only relative to one system or -domain.</para> - -<para>Note, that it's possible, that an user has the same RID on two -different systems. The resulting SIDs are nevertheless different, so -the SIDs are representing different users in an NT network.</para> - -<para>There is a big difference between UNIX IDs and NT SIDs, the existence of -the so called `well known groups'. For example UNIX has no GID for the -group of `all users'. NT has an SID for them, called `Everyone' in the -English versions. The SIDs of well-known groups are not unique across -an NT network but their meanings are unmistakable. -Examples of well-known groups:</para> - -<screen> -everyone S-1-1-0 -creator/owner S-1-3-0 -batch process (via `at') S-1-5-3 -authenticated users S-1-5-11 -system S-1-5-18 -</screen> - -<para>The last important group of SIDs are the `predefined groups'. This -groups are used mainly on systems outside of domains to simplify the -administration of user permissions. The corresponding SIDs are not unique -across the network so they are interpreted only locally:</para> - -<screen> -administrators S-1-5-32-544 -users S-1-5-32-545 -guests S-1-5-32-546 -... -</screen> - -<para>Now, how are permissions given to objects? A process may assign an SD -to the object. The SD of an object consists of three parts:</para> - -<itemizedlist spacing="compact"> -<listitem><para>the SID of the owner </para></listitem> -<listitem><para>the SID of the group </para></listitem> -<listitem><para>a list of SIDs with their permissions, called -`access control list' (ACL) </para></listitem> -</itemizedlist> - -<para>UNIX is able to create three different permissions, the permissions -for the owner, for the group and for the world. In contrast the ACL -has a potentially infinite number of members. Every member is a so called -`access control element' (ACE). An ACE contains three parts:</para> - -<itemizedlist spacing="compact"> -<listitem><para>the type of the ACE </para></listitem> -<listitem><para>permissions, described with a DWORD </para></listitem> -<listitem><para>the SID, for which the above mentioned permissions are -set </para></listitem> -</itemizedlist> - -<para>The two important types of ACEs are the `access allowed ACE' and the -`access denied ACE'. The ntsec patch only used `access allowed ACEs' up -to Cygwin version 1.1.0. Later versions use `access denied ACEs' as well -to reflect the UNIX permissions as good as possible.</para> - -<para>The possible permissions on objects are more detailed than in -UNIX. For example, the permission to delete an object is different -from the write permission.</para> - -<para>With the aforementioned method NT is able to grant or revoke permissions -to objects in a far more specific way. But what about cygwin? In a POSIX -environment it would be fine to have the security behavior of a POSIX -system. The NT security model is MOSTLY able to reproduce the POSIX model. -The ntsec patch tries to do this in cygwin.</para> - -<para>You ask "Mostly? Why mostly???" Because there's a leak in the NT model. -I will describe that in detail in chapter 4.</para> - -<para>Creating explicit object security is not that easy so you will often -see only two simple variations in use:</para> - -<itemizedlist spacing="compact"> -<listitem><para>default permissions, computed by the operating system </para></listitem> -<listitem><para>each permission to everyone </para></listitem> -</itemizedlist> - -<para>For parameters to functions that create or open securable objects another -data structure is used, the `security attributes' (SA). This structure -contains an SD and a flag that specifies whether the returned handle -to the object is inherited to child processes or not. -This property is not important for the ntsec patch description so in -this document the difference between SDs and SAs is ignored.</para> - -</sect2> - -<sect2 id="ntsec-processes"><title>Process privileges</title> - -<para>Any process started under control of cygwin has a semaphore attached -to it, that is used for signaling purposes. The creation of this semaphore -can be found in sigproc.cc, function `getsem'. The first parameter to the -function call `CreateSemaphore' is an SA. Without ntsec patch this SA -assigns default security to the semaphore. There is a simple disadvantage: -Only the owner of the process may send signals to it. Or, in other words, -if the owner of the process is not a member of the administrators' group, -no administrator may kill the process! This is especially annoying, if -processes are started via service manager.</para> - -<para>The ntsec patch now assigns an SA to the process control semaphore, that -has each permission set for the user of the process, for the -administrators' group and for `system', which is a synonym for the -operating system itself. The creation of this SA is done by the function -`sec_user', that can be found in `shared.cc'. Each member of the -administrators' group is now allowed to send signals to any process -created in cygwin, regardless of the process owner.</para> - -<para>Moreover, each process now has the appropriate security settings, when -it is started via `CreateProcess'. You will find this in function -`spawn_guts' in module `spawn.cc'. The security settings for starting a -process in another user context have to add the sid of the new user, too. -In the case of the `CreateProcessAsUser' call, sec_user creates an SA with -an additional entry for the sid of the new user.</para> - -</sect2> - -<sect2 id="ntsec-files"><title>File permissions</title> - -<para>If ntsec is turned on, file permissions are set as in UNIX. An SD is -assigned to the file containing the owner and group and ACEs for the -owner, the group and `Everyone'.</para> - -<para>The complete settings of UNIX like permissions can be found in the file -`security.cc'. The two functions `get_nt_attribute' and `set_nt_attribute' -are the main code. The reading and writing of the SDs is done by the -functions `read_sd' and `write_sd'. `write_sd' uses the function `BackupRead' -instead of the simpler function `SetFileSecurity' because the latter is -unable to set owners different from the caller.</para> - -<para>If you are creating a file `foo' outside of cygwin, you will see something -like the following on <command>ls -ln</command>:</para> - -<para>If your login is member of the administrators' group:</para> -<screen> - rwxrwxrwx 1 544 513 ... foo -</screen> -<para>if not:</para> -<screen> - rwxrwxrwx 1 1000 513 ... foo -</screen> - -<para>Note the user and group IDs. 544 is the UID of the administrators' group. -This is a `feature' <literal>:-P</literal> of WinNT. If one is a member of -the administrators' group, every file, that he has created is owned by the -administrators' group, instead by him.</para> - -<para>The second example shows the UID of the first user, that has been -created with NT's the user administration tool. The users and groups are -sequentially numbered, starting with 1000. Users and groups are using the -same numbering scheme, so a user and a group don't share the same ID.</para> - -<para>In both examples the GID 513 is of special interest. This GID is a -well known group with different naming in local systems and domains. -Outside of domains the group is named 'None' (`Kein' in German, `Aucun' -in French, etc.), in domains it is named 'Domain Users'. Unfortunately, -the group `None' is never shown in the user admin tool outside of domains! -This is very confusing but it seems that this has no negativ influences.</para> - -<para>To work correctly the ntsec patch depends on reasoned files -<filename>/etc/passwd/</filename> and <filename>/etc/group</filename>. -In cygwin release 1.0 the names and the IDs must correspond to the -appropriate NT IDs! The IDs used in cygwin are the RID of the NT SID, as -mentioned earlier. -An SID of e.g. the user `corinna' on my NT workstation:</para> - -<screen> - S-1-5-21-165875785-1005667432-441284377-1000 -</screen> - -<para>Note the last number: It's the RID 1000, the cygwin's UID.</para> - -<para>Unfortunately, workstations and servers outside of domains are not -able to set primary groups! In these cases, where there is no correlation -of users to primary groups, NT returns 513 (None) as primary group, -regardless of the membership to existing local groups.</para> - -<para>when using <command>mkpasswd -l -g</command> on such systems, you -have to change the primary group by hand if `None' as primary group is -not what you want (and I'm sure, it's not what you want!)</para> - -<para>To get help in creating correct passwd and group files, look at -the following examples, that are part of my files. With the exception -of my personal user entry, all entries are well known entries. For a -better understanding, the names are translated to the equivalents of the -English NT version.</para> -<example> -<title>/etc/passwd</title> -<screen> -everyone:*:0:0::: -system:*:18:18::: -administrator::500:544::/home/root:/bin/bash -guest:*:501:546::: -administrators:*:544:544::/home/root: -corinna::1000:547:Corinna Vinschen:/home/corinna:/bin/tcsh -</screen> -</example> - -<example> -<title>/etc/group</title> -<screen> -everyone::0: -system::18: -none::513: -administrators::544: -users::545: -guests::546: -powerusers::547: -</screen> -</example> - -<para>Groups may be mentioned in the passwd file, too. This has two -advantages:</para> -<itemizedlist spacing="compact"> -<listitem><para>Because NT assigns them to files as owners, a -<command>ls -l</command> is often better readable.</para></listitem> -<listitem><para>Moreover it's possible to assigned them to files as -owners with cygwin's <command>chown</command>.</para></listitem> -</itemizedlist> - -<para>The group `system' is the aforementioned synonym for the operating system -itself and is normally the owner of processes, that are started through -service manager. The same is true for files, that are created by -processes, which are started through service manager.</para> - -</sect2> - -<sect2 id="ntsec-release1.1"><title>New since Cygwin release 1.1</title> - -<para>In Cygwin release 1.1 a new technique of using the -<filename>/etc/passwd</filename> and <filename>/etc/group</filename> - is introduced.</para> - -<para>Both files may now contain SIDs of users and groups. They -are saved in the last field of pw_gecos in <filename>/etc/passwd</filename> -and in the gr_passwd field in <filename>/etc/group</filename>.</para> - -<para>This has the following advantages:</para> -<itemizedlist spacing="compact"> -<listitem><para>ntsec works better in domain environments.</para></listitem> -<listitem><para>Accounts (users and groups) may get another name in -cygwin than their NT account name. The name in <filename>/etc/passwd</filename> -or <filename>/etc/group</filename> is transparently used by cygwin -applications (eg. <command>chown</command>, <command>chmod</command>, -<command>ls</command>):</para> - -<screen> -root::500:513::/home/root:/bin/sh -</screen> - -<para>instead of</para> - -<screen> -adminstrator::500:513::/home/root:/bin/sh -</screen> - -<para>Caution: If you like to use the account as login account via -<command>telnet</command> etc. you have to remain the name unchanged or -you have to use the special version of <command>login</command> which is -part of the standard Cygwin distribution since 1.1.</para></listitem> -<listitem><para>Cygwin UIDs and GIDs are now not necessarily the RID -part of the NT SID:</para> - -<screen> -root::0:513:S-1-5-21-54355234-56236534-345635656-500:/home/root:/bin/sh -</screen> - -<para>instead of</para> - -<screen> -root::500:513::/home/root:/bin/sh -</screen> - -</listitem> -<listitem><para>As in U*X systems UIDs and GIDs numbering scheme now -don't influence each other. So it's possible to have same Id's for a -user and a group:</para> -<example> -<title>/etc/passwd:</title> -<screen> -root::0:0:S-1-5-21-54355234-56236534-345635656-500:/home/root:/bin/sh -</screen> -</example> - -<example> -<title>/etc/group:</title> -<screen> -root:S-1-5-32-544:0: -</screen> -</example> -</listitem> -</itemizedlist> - -<para>The tools <command>mkpasswd</command> and <command>mkgroup</command> -create the needed entries by default. If you don't want that you can use -the options <literal>-s</literal> or <literal>--no-sids</literal>. In this -case ntsec behaves like the previous version.</para> - -<para>Please note that the pw_gecos field in <filename>/etc/passwd</filename> -is defined as a comma seperated list. The SID has to be the last field!</para> - -<para>As aforementioned you are able to use cygwin account names different -from the NT account names. If you want to login thru `telnet' or something -else you have to use the special <command>login</command>. You may then -add another field to pw_gecos which contains the NT user name including -it's domain. So you are able to login as each domain user. The syntax -is easy: Just add an entry of the form U-ntdomain\ntusername to the pw_gecos -field. Note that the SID must still remain the last field in pw_gecos!</para> - -<screen> -the_king::1:1:Elvis Presley,U-STILLHERE\elvis,S-1-5-21-1234-5678-9012-1000:/bin/sh -</screen> - -<para>For a local user just drop the domain:</para> - -<screen> -the_king::1:1:Elvis Presley,U-elvis,S-1-5-21-1234-5678-9012-1000:/bin/sh -</screen> - -<para>In each case the password of the user is taken from the NT user -database, NOT from the passwd file!</para> - -</sect2> - -<sect2 id="ntsec-mapping"><title>The mapping leak</title> - -<para>Now its time to point out the leak in the NT permissions. -The official documentation explains in short the following:</para> -<itemizedlist spacing="compact"> -<listitem><para>access allow ACEs are accumulated regarding to the -group membership of the caller.</para></listitem> -<listitem><para>The order of ACEs is important. The system reads them -in sequence until either any needed right is denied or all needed rights -are granted. Later ACEs are then not taken into account.</para></listitem> -<listitem><para>All access denied ACEs _should_ precede any -access allowed ACE.</para></listitem> -</itemizedlist> - -<para>Note that the last rule is a preference, not a law. NT will correctly -deal with the ACL regardless of the sequence order. The second rule is -not modified to get the ACEs in the prefered order.</para> - -<para>Unfortunately the security tab of the NT4 explorer is completely -unable to deal with access denied ACEs while the explorer of W2K rearranges -the order of the ACEs before you can read them. Thank God, the sort order -remains unchanged if one presses the Cancel button.</para> - -<para>You still ask "Where is the leak?" NT ACLs are unable to reflect each -possible combination of POSIX permissions. Example:</para> - -<screen> -rw-r-xrw- -</screen> - -<para>1st try:</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>2st 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>3rd 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, too. How should this problem be solved? According to -the official rules 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 for both, NT4 and W2K. Only the GUIs aren't -able to deal with that order.</para> - -</sect2> - -<sect2 id="ntsec-aclfuncs"><title>New acl API</title> - -<para>For dealing with ACLs Cygwin now has the acl API as it's -implemented in newer versions of Solaris. The new data structure -for a single ACL entry (ACE in NT terminology) is defined in -<filename>sys/acl.h</filename> as:</para> - -<screen> -typedef struct acl { - int a_type; /* entry type */ - uid_t a_id; /* UID | GID */ - mode_t a_perm; /* permissions */ -} aclent_t; -</screen> - -<para>The a_perm member of the aclent_t type contains only the bits -for read, write and execute as in the file mode. If eg. read permission -is granted, all read bits (S_IRUSR, S_IRGRP, S_IROTH) are set. -CLASS_OBJ or MASK ACL entries are not fully implemented yet.</para> - -<para>The new API calls are</para> - -<screen> -acl(2), facl(2) -aclcheck(3), -aclsort(3), -acltomode(3), aclfrommode(3), -acltopbits(3), aclfrompbits(3), -acltotext(3), aclfromtext(3) -</screen> - -<para>Like in Solaris, Cygwin has two new commands for working with -ACLs on the command line: <command>getfacl</command> and -<command>setfacl</command>.</para> - -<para>Online man pages for the aforementioned commands and API calls -can be found on eg. http://docs.sun.com</para> - -</sect2> - -<sect2 id="ntsec-setuid"><title>New setuid concept</title> - -<para>UNIX applications which have to switch the user context are using -the <command>setuid</command> and <command>seteuid</command> calls which -are not part of the Windows API. -Nevertheless these calls are supported under Windows NT/W2K since Cygwin -release 1.1.3. Because of the nature of NT security an application which -needs the ability has to be patched, though.</para> - -<para>NT uses so called `access tokens' to identify a user and it's -permissions. To switch the user context the application has to request -such an `access token'. This is typically done by calling the NT API -function <command>LogonUser</command>. The access token is returned and -either used in <command>ImpersonateLoggedOnUser</command> to change user -context of the current process or in <command>CreateProcessAsUser</command> -to change user context of a spawned child process. An important restriction -is that the application using <command>LogonUser</command> must have special -permissions:</para> - -<screen> -"Act as part of the operating system" -"Replace process level token" -"Increase quotas" -</screen> - -<para>Note that administrators do not have all that user rights set by default.</para> - -<para>Two new Cygwin calls are introduced to support porting -<command>setuid</command> applications with a minimum of effort. You only -have to care to give Cygwin the right access token and then you can call -<command>seteuid</command> or <command>setuid</command> as usual in POSIX -applications. The call to <command>sexec</command> is not needed -anymore. Porting a <command>setuid</command> application is illustrated by -a short example:</para> - -<screen> - -/* First include all needed cygwin stuff. */ -#ifdef __CYGWIN__ -#include <windows.h> -#include <sys/cygwin.h> -/* Use the following define to determine the Windows version */ -#define is_winnt (GetVersion() < 0x80000000) -#endif - -[...] - - struct passwd *user_pwd_entry = getpwnam (username); - char *cleartext_password = getpass ("Password:"); - -[...] - -#ifdef __CYGWIN__ - /* Patch the typical password test. */ - if (is_winnt) - { - HANDLE token; - - /* Try to get the access token from NT. */ - token = cygwin_logon_user (user_pwd_entry, cleartext_password); - if (token == INVALID_HANDLE_VALUE) - error_exit; - /* Inform Cygwin about the new impersonation token. - Cygwin is able now, to switch to that user context by - setuid or seteuid calls. */ - cygwin_set_impersonation_token (token); - } - else -#endif /* CYGWIN */ - /* Use standard method for W9X as well. */ - hashed_password = crypt (cleartext_password, salt); - if (!user_pwd_entry || - strcmp (hashed_password, user_pwd_entry->pw_password)) - error_exit; - -[...] - - /* Everything else remains the same! */ - - setegid (user_pwd_entry->pw_gid); - seteuid (user_pwd_entry->pw_uid); - execl ("/bin/sh", ...); - -</screen> - -<para>The new Cygwin call to retrive an access token is defined as follows:</para> - -<screen> -#include <windows.h> -#include <sys/cygwin.h> - -HANDLE -cygwin_logon_user (struct passwd *pw, const char *cleartext_password) -</screen> - -<para>You can call that function as often as you want for different user -logons and remeber the access tokens for further calls to the second function.</para> - -<screen> -#include <windows.h> -#include <sys/cygwin.h> - -void -cygwin_set_impersonation_token (HANDLE hToken); -</screen> - -<para> is the call to inform Cygwin about the user context to which further -calls to <command>setuid</command>/<command>seteuid</command> should switch to. -While you need always the correct access token to do a -<command>setuid</command>/<command>seteuid</command> to another users context, -you are always able to use <command>setuid</command>/<command>seteuid</command> -to return to your own user context by giving your own uid as parameter.</para> - -<para>If you have remembered several access tokens from calls to -<command>cygwin_logon_user</command> you can switch to different user -contexts by observing the following order:</para> - -<screen> - - cygwin_set_impersonation_token (user1_token); - seteuid (user1_uid); - -[...] - - seteuid (own_uid); - cygwin_set_impersonation_token (user2_token); - seteuid (user2_uid); - -[...] - - seteuid (own_uid); - cygwin_set_impersonation_token (user1_token); - seteuid (user1_uid); - -etc. - -</screen> - -</sect2> - -</sect1> diff --git a/winsup/doc/overview.sgml b/winsup/doc/overview.sgml deleted file mode 100644 index a9ce8955b..000000000 --- a/winsup/doc/overview.sgml +++ /dev/null @@ -1,88 +0,0 @@ -<chapter id="overview"><title>Cygwin Overview</title> - -<sect1 id="what-is-it"><title>What is it?</title> - -<para>The Cygwin tools are ports of the popular GNU development -tools and utilities for Windows NT and 9x. They function through the -use of the Cygwin library which provides the UNIX system calls and -environment that these programs require.</para> - -<para>With the tools installed, 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 distributions). Even if the -compiler tools are of little to no use to you, you may have -interest in the many standard UNIX utilities. They can be used both -from the bash shell (provided) or from the command.com.</para> - -</sect1> - -<sect1 id="are-free"><title>Are the Cygwin tools free software?</title> - -<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 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. 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> - -<para>The first thing done was to enhance the development tools (gcc, -gdb, gas, et al) so that they could generate/interpret Win32 native -object files.</para> - -<para>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 (fork, spawn, signals, select, sockets, -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.</para> - -</sect1> - -DOCTOOL-INSERT-ov-ex-unix -DOCTOOL-INSERT-ov-ex-win -<sect1 id="highlights"><title>Highlights of Cygwin Functionality</title> -DOCTOOL-INSERT-ov-hi-intro -DOCTOOL-INSERT-ov-hi-win9xnt -DOCTOOL-INSERT-ov-hi-perm -DOCTOOL-INSERT-ov-hi-files -DOCTOOL-INSERT-ov-hi-textvsbinary -DOCTOOL-INSERT-ov-hi-ansiclib -DOCTOOL-INSERT-ov-hi-process -DOCTOOL-INSERT-ov-hi-signals -DOCTOOL-INSERT-ov-hi-sockets -DOCTOOL-INSERT-ov-hi-select -</sect1> -</chapter> diff --git a/winsup/doc/overview2.sgml b/winsup/doc/overview2.sgml deleted file mode 100644 index 755b4c42c..000000000 --- a/winsup/doc/overview2.sgml +++ /dev/null @@ -1,322 +0,0 @@ -<sect1 id="ov-ex-unix"><title>Expectations for UNIX Programmers</title> - -<para>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 or 9x will find that the Cygwin library provides -an easy way to port many UNIX packages, with only minimal source code -changes.</para> -</sect1> - -<sect1 id="ov-ex-win"><title>Expectations for Windows Programmers</title> -<para>Developers coming from a Windows background will find a set of tools capable -of writing console or GUI executables that rely on the Microsoft Win32 API. -The linker and dlltool utility may be used to write Windows Dynamically Linked -Libraries (DLLs). The resource compiler "windres" is also provided with the -native Windows GNUPro tools. All tools may be used from the Microsoft command -line prompt, with full support for normal Windows pathnames.</para> -</sect1> - -<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 that other processes using separate instances -of the DLL can access. This is used to keep track of open file descriptors and -assist fork and exec, among other purposes. In addition to the shared memory -regions, 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 using the Win32 API, which allows it to run on all -Win32 hosts. 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>Early on in the development process, we made the important design -decision that it would not be necessary to strictly adhere to existing UNIX -standards like POSIX.1 if it was not possible or if it would significantly -diminish the usability of the tools on the Win32 platform. In many cases, an -environment variable can be set to override the default behavior and force -standards compliance.</para> -</sect2> - -<sect2 id="ov-hi-win9xnt"><title>Supporting both Windows NT and 9x</title> -<para>While Windows 95 and Windows 98 are similar enough to each other that we -can safely ignore the distinction when implementing Cygwin, Windows NT is an -extremely different operating system. For this reason, whenever the DLL is -loaded, the library checks which operating system is active so that it can act -accordingly.</para> - -<para>In some cases, the Win32 API is only different for -historical reasons. In this situation, the same basic functionality is -available under Windows 9x and NT but the method used to gain this -functionality differs. A trivial example: in our implementation of -uname, the library examines the sysinfo.dwProcessorType structure -member to figure out the processor type under Windows 9x. This field -is not supported in NT, which has its own operating system-specific -structure member called sysinfo.wProcessorLevel.</para> - -<para>Other differences between NT and 9x are much more fundamental in -nature. The best example is that only NT provides a security model.</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 the -more standard, older UNIX model by default. Cygwin version 1.1 introduces -support for ACLs according to the system calls used on newer versions of -Solaris. This ability is used when the `ntsec' feature is switched on which -is described in another chapter. -The chmod call maps UNIX-style permissions -back to the Win32 equivalents. Because many programs expect to be able to find -the /etc/passwd and /etc/group files, we provide utilities that can be used to -construct them from the user and group information provided by the operating -system.</para> - -<para>Under Windows NT, the administrator is permitted to chown files. There -is no mechanism to support the setuid concept or API call since Cygwin version -1.1.2. With version 1.1.3 Cygwin introduces a mechanism for setting real -and effective UIDs under Windows NT/W2K. This is described in the ntsec -section.</para> - -<para>Under Windows 9x, the situation is considerably different. Since a -security model is not provided, Cygwin fakes file ownership by making all -files look like they are owned by a default user and group id. As under NT, -file permissions can still be determined by examining their read/write/execute -status. Rather than return an unimplemented error, under Windows 9x, the -chown call succeeds immediately without actually performing any action -whatsoever. This is appropriate since essentially all users jointly own the -files when no concept of file ownership exists.</para> - -<para>It is important that we discuss the implications of our "kernel" using -shared memory areas to store information about Cygwin processes. Because -these areas are not yet protected in any way, in principle a malicious user -could modify them to cause unexpected behavior in Cygwin processes. While -this is not a new problem under Windows 9x (because of the lack of operating -system security), it does constitute a security hole under Windows NT. -This is because one user could affect the Cygwin programs run by -another user by changing the shared memory information in ways that -they could not in a more typical WinNT program. For this reason, it -is not appropriate to use Cygwin in high-security applications. In -practice, this will not be a major problem for most uses of the -library.</para> -</sect2> - -<sect2 id="ov-hi-files"><title>File Access</title> <para>Cygwin supports -both Win32- and POSIX-style paths, using either forward or back slashes as the -directory delimiter. Paths coming into the DLL are translated from Win32 to -POSIX as needed. As a result, the library believes that the file system is a -POSIX-compliant one, translating paths back to Win32 paths whenever it calls a -Win32 API function. UNC pathnames (starting with two slashes) are -supported.</para> - -<para>The layout of this POSIX view of the Windows file system space is stored -in the Windows registry. While the slash ('/') directory points to the system -partition by default, this is easy to change with the Cygwin mount utility. -In addition to selecting the slash partition, it allows mounting arbitrary -Win32 paths into the POSIX file system space. Many people use the utility to -mount each drive letter under the slash partition (e.g. C:\ to /c, D:\ to /d, -etc...).</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 cygpath -utility program that we provide with Cygwin.</para> - -<para>Win32 file systems are case preserving but case insensitive. Cygwin -does not currently support case distinction because, in practice, few UNIX -programs actually rely on it. While we could mangle file names to support case -distinction, this would add unnecessary overhead to the library and make it -more difficult for non-Cygwin applications to access those files.</para> - -<para>Symbolic links are emulated by files containing a magic cookie followed -by the path to which the link points. They are marked with the System -attribute so that only files with that attribute have to be read to determine -whether or not the file is a symbolic link. Hard links are fully supported -under Windows NT on NTFS file systems. On a FAT file system, the call falls -back to simply copying the file, a strategy that works in many cases.</para> - -<para>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 -d_ino of the dirent 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>Chroot is supported since release 1.1.3. Note that chroot isn't -supported native by Windows. This implies some restrictions. First of all, -the chroot call isn't a privileged call. Each user may call it. Second, the -chroot environment isn't safe against native windows processes. If you -want to support a chroot environment as, for example, by allowing an -anonymous ftp with restricted access, you'll have to care that only -native Cygwin applications are accessible inside of the chroot environment. -Since that 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) and CIFS paths (//server/share or \\server\share) as well.</para> -</sect2> - -<sect2 id="ov-hi-textvsbinary"><title>Text Mode vs. Binary Mode</title> -<para>Interoperability with other Win32 programs such as text editors was -critical to the success of the port of the development tools. Most Red Hat -customers upgrading from the older DOS-hosted toolchains expected the new -Win32-hosted ones to continue to work with their old development -sources.</para> - -<para>Unfortunately, UNIX and Win32 use different end-of-line terminators in -text files. Consequently, carriage-return newlines have to be translated on -the fly by Cygwin into a single newline when reading in text mode. The -control-z character is interpreted as a valid end-of-file character for a -similar reason.</para> - -<para>This solution addresses the compatibility requirement at the expense of -violating the POSIX standard that states that text and binary mode will be -identical. Consequently, processes that attempt to lseek through text files can -no longer rely on the number of bytes read as an accurate indicator of position -in the file. For this reason, the CYGWIN environment variable can be -set to override this behavior.</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.</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 fork 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 simply -call the functions by the same name in Winsock, Microsoft's -implementation of Berkeley sockets. Only a few changes were needed to -match the expected UNIX semantics - one of the most troublesome -differences was that Winsock must be initialized before the first -socket function is called. As a result, Cygwin has to perform this -initialization when appropriate. In order to support sockets across -fork calls, child processes initialize Winsock if any inherited file -descriptor is a socket.</para> - -<para>Unfortunately, implicitly loading DLLs -at process startup is usually a slow affair. Because many processes -do not use sockets, Cygwin explicitly loads the Winsock DLL the -first time it calls the Winsock initialization routine. This single -change sped up GNU configure times by thirty -percent.</para> -</sect2> - -<sect2 id="ov-hi-select"><title>Select</title> -<para>The UNIX select 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> diff --git a/winsup/doc/pathnames.sgml b/winsup/doc/pathnames.sgml deleted file mode 100644 index 00b216e92..000000000 --- a/winsup/doc/pathnames.sgml +++ /dev/null @@ -1,361 +0,0 @@ -<sect1 id="using-pathnames"><title>Mapping path names</title> - -<sect2><title>Introduction</title> - -<para>Cygwin supports both Win32- and POSIX-style paths, where -directory delimiters may be either forward or back slashes. 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 between Win32 and POSIX paths as -necessary.</para> - -</sect2> - -<sect2 id="mount-table"><title>The Cygwin Mount Table</title> - -<para>The <command>mount</command> utility program is used to -to map Win32 drives and network shares into Cygwin's internal POSIX -directory tree. This is a similar concept to the typical UNIX mount -program. For those people coming from a Windows background, the -<command>mount</command> utility is very similar to the old DOS -<command>join</command>, in that it makes your drive letters appear as -subdirectories somewhere else.</para> - -<para>The mapping is stored in the current user's Cygwin -<FirstTerm>mount table</FirstTerm> in the Windows registry so that the -information will be retrieved next time the user logs in. Because it -is sometimes desirable to have system-wide as well as user-specific -mounts, there is also a system-wide mount table that all Cygwin users -inherit. The system-wide table may only be modified by a user with -the appropriate priviledges (Administrator priviledges in Windows -NT).</para> - -<para>The current user's table is located under -"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts -v<version>" -where <version> is the latest registry version associated with -the Cygwin library (this version is not the same as the release -number). The system-wide table is located under the same subkeys -under HKEY_LOCAL_SYSTEM.</para> - -<para>By default, the POSIX root <filename>/</filename> points to the -system partition but it can be relocated to any directory in the -Windows file system using the <command>mount</command> command. -Whenever Cygwin generates a POSIX path from a Win32 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>.</para> - -<para>Invoking <command>mount</command> without any arguments displays -Cygwin's current set of mount points. -In the following example, the C -drive is the POSIX root and D drive is mapped to -<filename>/d</filename>. Note that in this case, the root mount is a -system-wide mount point that is visible to all users running Cygwin -programs, whereas the <filename>/d</filename> mount is only visible -to the current user.</para> - -<example> -<title>Displaying the current set of mount points</title> -<screen> -<prompt>c:\></prompt> <userinput>mount</userinput> -f:\cygwin\bin on /usr/bin type system (binmode) -f:\cygwin\lib on /usr/lib type system (binmode) -f:\cygwin on / type system (binmode) -e:\src on /usr/src type system (binmode) -c: on /cygdrive/c type user (binmode,noumount) -e: on /cygdrive/e type user (binmode,noumount) -</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. See <Xref Linkend="mount"> and <Xref Linkend="umount"> for more -information on how to use these utilities to set up your Cygwin POSIX -file system.</para> - -<para>Whenever Cygwin cannot use any of the existing mounts to convert -from a particular Win32 path to a POSIX one, Cygwin will -automatically default to an imaginary mount point under the default POSIX -path <filename>/cygdrive</filename>. For example, if Cygwin accesses -<filename>Z:\foo</filename> and the Z drive is not currently in the -mount table, then <filename>Z:\</filename> would be automatically -converted to <filename>/cygdrive/Z</filename>. The default -prefix of <filename>/cygdrive</filename> may be changed (see the -<Xref Linkend="mount"> for more information).</para> - -<para>It is possible to assign some special attributes to each mount -point. Automatically mounted partitions are displayed as "auto" -mounts. Mounts can also be marked as either "textmode" or "binmode" --- whether text files are read in the same manner as binary files by -default or not (see <Xref Linkend="using-textbinary"> for more -information on text and binary modes.</para> - -</sect2> - -<sect2><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"> 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> <title>DOS devices</title> - -<para>Windows filenames invalid under Windows are also invalid under -Cygwin. This means that base filenames such as -<filename>AUX</filename>, <filename>COM1</filename>, -<filename>LPT1</filename> or <filename>PRN</filename> (to name a few) -cannot be used in a regular Cygwin Windows or POSIX path, even with an -extension (<filename>prn.txt</filename>). However the special names can be -used as filename extensions (<filename>file.aux</filename>). You can use -the special names as you would under DOS, for example you can print on your -default printer with the command <command>cat filename > PRN</command> -(make sure to end with a Form Feed). -</para> - -</sect2> - -<sect2> <Title>POSIX devices</title> -<para>There is no need to create a POSIX <filename>/dev</filename> -directory as it is simulated within Cygwin automatically. -It supports the following devices: <filename>/dev/null</filename>, -<filename>/dev/zero</filename>, <filename>/dev/tty</filename>, -<filename>/dev/ttyX</filename>, <filename>/dev/ptmx</filename>, -<filename>/dev/comX</filename> (the serial ports), -<filename>/dev/windows</filename> (the windows message queue), -<filename>/dev/random</filename> and <filename>/dev/urandom</filename>. -These devices cannot be seen with the command <command>ls /dev</command> -although commands such as <command>ls /dev/tty</command> work fine. -</para> - -<para>Windows NT/W2K/XP additionally support raw devices like floppies, -disks, partitions and tapes. These are accessed from Cygwin applications -using POSIX device names which are supported in two different ways. -Up to 1.3.3, Cygwin only uses Win32 device names, since 1.3.4 -it additionally uses NT internal device names. -</para> - -<para>Up to Cygwin 1.3.3 the only way to access those devices is -to mount the Win32 device names to a POSIX device name. -</para> - -<para> -The Win32 device name for a partition is the drive letter -with leading <filename>\\.\</filename>, so the floppy would be -<filename>\\.\A:</filename>, the first partition typically -<filename>\\.\C:</filename>. Complete drives (except floppies and CD-ROMS -which are supported as partitions only) are named -<filename>\\.\PHYSICALDRIVEx</filename>. The <literal>x</literal> -is the drive number which you can check in the disk manager. -Each drive line has prepended the text "Disk x". -</para> - -<para>To access tape drives the Win32 file name <filename>\\.\TAPEx</filename> -is used. For example the first installed tape device is named -<filename>\\.\tape0</filename>. -</para> - -<para> -The naming convention is simple: The name of the POSIX device has to begin with -<filename>/dev/</filename> and the rest is as you like. The only -exception are tape devices. To identify if the tape device is -used as a rewind or a no-rewind device the name must not begin with -<literal>n</literal> (rewind) or has to begin with <literal>n</literal> -(no-rewind). -</para> - -<para>Some examples:</para> - -<screen> -mount -b //./A: /dev/fd0 # mount floppy as raw block special -mount -b //./physicaldrive1 /dev/hdb # mount "Disk 1" -mount -b //./tape0 /dev/st0 # mount first tape as the rewind device... -mount -b //./tape0 /dev/nst0 # ...and as the no-rewind device -</screen> - -<para>Note the usage of the <literal>-b</literal> option. It is best to -include the -b option when mounting these devices to ensure that all -file I/O is in "binary mode". -</para> - -<para> -Since Cygwin 1.3.4 raw devices are accessible from inside of Cygwin processes -using fixed POSIX device names. That means, you don't have to mount the devices -anymore which results in a more cleaner mount table. -</para> - -<para> -These new fixed 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 new fixed POSIX names are mapped to NT internal devices as -follows:</para> - -<screen> -/dev/st0 \device\tape0, rewind -/dev/nst0 \device\tape0, no-rewind -/dev/st1 \device\tape1 -... - -/dev/fd0 \device\floppy0 -/dev/fd1 \device\floppy1 -... - -/dev/scd0 \device\cdrom0 -/dev/scd1 \device\cdrom1 -... - -/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/sdl \device\harddisk11\partition0 -/dev/sdl1 \device\harddisk11\partition1 -... -/dev/sdl15 \device\harddisk11\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/scd0 /dev/cdrom -ln -s /dev/st0 /dev/tape -... -</screen> - -<para> -Note that you can't use the mount table to map from fixed device name -to your own device name or to map from internal NT device name to -your own device name. The following two examples will not work: -</para> - -<screen> -mount -s -f -b /dev/st0 /dev/tape -mount -s -f -b /device/tape0 /dev/tape -</screen> - -</sect2> - -<sect2><title>The .exe extension</title> - -<para> Executable program filenames end with .exe but the .exe need -not be included in the command, so that traditional UNIX names can be -used. However, for programs that end in ".bat" and ".com", 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>C:\></prompt> <userinput>ls * </userinput> -a a.exe b.exe -<prompt>C:\></prompt> <userinput>ls -i a a.exe</userinput> -445885548 a 435996602 a.exe -<prompt>C:\></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 program -has precedence and is selected for execution of -<command>myprog</command>.</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> - -<para>Unfortunately, the <command>install</command> and -<command>strip</command> commands do distinguish between -<filename>filename</filename> and <filename>filename.exe</filename>. They -fail when working on a non-existing <filename>filename</filename> even if -<filename>filename.exe</filename> exists, thus breaking some makefiles. -This problem can be solved by writing <command>install</command> and -<command>strip</command> shell scripts to provide the extension ".exe" -when needed. -</para> -</sect2> - -<sect2><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><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>/bin/echo @mylist</userinput> -This is a long line -<prompt>bash$</prompt> <userinput>rm mylist</userinput> -<prompt>bash$</prompt> <userinput>/bin/echo @mylist</userinput> -@mylist -</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/readme.texinfo b/winsup/doc/readme.texinfo deleted file mode 100644 index bcd32a633..000000000 --- a/winsup/doc/readme.texinfo +++ /dev/null @@ -1,17 +0,0 @@ -\input texinfo -@title The Cygwin README - -@subtitle (Only partially updated for the latest net release.) - -@setfilename readme.txt - -@include install.texinfo - -@chapter Release Information - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -@include changes.texinfo - -@include relnotes.texinfo diff --git a/winsup/doc/relnotes.texinfo b/winsup/doc/relnotes.texinfo deleted file mode 100644 index f18c591d6..000000000 --- a/winsup/doc/relnotes.texinfo +++ /dev/null @@ -1,24 +0,0 @@ -@chapter Known Problems in the Latest Net Release - -@section Aware of the problem, no solution known. - -@subsection Pipe key (@samp{|}) doesn't work on non-US keyboards in Win9x/ME - -This might get fixed someday, but meanwhile, just use rxvt, which does -not have this problem. This is no real loss, because rxvt has many -other advantages. (Do not attempt to use the "broken" pipe key -(@samp{¦}) as a substitute, it is a different character.) - -@subsection Cannot access tape devices with mt on Win9x - -Win9x does not support the API used by the Cygwin fhandler_dev_tape -class. Details at -@file{http://sources.redhat.com/ml/cygwin/2000-12/msg00331.html}. - -@subsection On Win9x, scp leaves ssh processes running. - -@section Fixed in the Next Release - -(Nothing to report.) - - diff --git a/winsup/doc/setup-net.sgml b/winsup/doc/setup-net.sgml deleted file mode 100644 index cc40f312b..000000000 --- a/winsup/doc/setup-net.sgml +++ /dev/null @@ -1,15 +0,0 @@ -<chapter id="setup-net"><title>Setting Up Cygwin</title> - -<sect1><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/">"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> -</sect1> - -DOCTOOL-INSERT-setup-env -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 4b2ecf6ef..000000000 --- a/winsup/doc/setup2.sgml +++ /dev/null @@ -1,133 +0,0 @@ -<sect1 id="setup-env"><title>Environment Variables</title> - -<para> -Before starting bash, you may set some environment variables. A .bat -file is provided where the most important ones are set before bash in -launched. This is the safest way to launch bash initially. The .bat -file is installed in the root directory that you specified during setup -and pointed to in the Start Menu under the "Cygwin" option. You can -edit it this file your liking.</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> -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:\WinNT\system32;C:\WinNT</filename>) to UNIX format -(e.g., <filename>/WinNT/system32:/WinNT</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. -</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. Set it to point to your home directory -before launching bash. -</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-files"><title>Customizing bash</title> - -<para> -To set bash up so that cut and paste work properly, click on the -"Properties" button of the window, then on the "Misc" tab. Make sure -that "Quick Edit" is checked and "Fast Pasting" isn't. 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. -</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>. These initialization files will only -be read if <envar>HOME</envar> is defined before starting bash. -</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> (the provided -.bat file does not set the switch). 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 bash) behave. It is loaded automatically. The -full details are in the <filename>readline.info</filename>. -Due to a bug in the current readline version, -<filename>.inputrc</filename> cannot contain \r, -even on text mounted systems. -Consider the following settings: -<screen> -# Make Bash 8bit clean -set meta-flag on -set convert-meta off -set output-meta on -# Ignore case while completing -set completion-ignore-case on -</screen> -The first three commands allow bash to display 8-bit characters, -useful for languages with accented characters. The last line makes -filename completion case insensitive, which can be convenient in a -Windows environment. -</para> - -</sect1> - diff --git a/winsup/doc/textbinary.sgml b/winsup/doc/textbinary.sgml deleted file mode 100644 index a58bd0231..000000000 --- a/winsup/doc/textbinary.sgml +++ /dev/null @@ -1,181 +0,0 @@ -<sect1 id="using-textbinary"><title>Text and Binary modes</title> - -<sect2> <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 in text mode there are -major differences:</para> -<OrderedList Numeration="Loweralpha" Spacing="Compact"> -<listitem> -<para> -On writing in text mode, a NL (\n, ^J) is transformed into the -sequence CR (\r, ^M) NL.</para> -</listitem> -<listitem> -<para> -On reading in text mode, a CR followed by an NL is deleted and a ^Z -character signals the end of file.</para> -</listitem> -</OrderedList> - -<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><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 file 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 appears to reside on a file system that is not mounted -(as can happen when the path contains a drive letter), the default is text. -</para> -</listitem> -<listitem> -<para>Pipes and non-file devices are opened in binary mode, -except if the <EnVar>CYGWIN</EnVar> environment variable contains -<literal>nobinmode</literal>.</para> -<warning><Title>Warning!</Title><para>In b20.1 of 12/98, a file will be opened -in binary mode if any of the following conditions hold:</para> -<OrderedList Numeration="arabic" Spacing="Compact"> -<listitem><para>binary mode is specified in the open call</para> -</listitem> -<listitem><para><envar>CYGWIN</envar> contains <literal>binmode</literal></para> -</listitem> -<listitem><para>the file resides in a binary mounted partition</para> -</listitem> -<listitem><para>the file is not a disk file</para> -</listitem> -</OrderedList> -</warning> -</listitem> - -<listitem> -<para>When a Cygwin program is launched by a shell, its standard input, -output and error are in binary mode if the <envar>CYGWIN</envar> variable -contains <literal>tty</literal>, else in text mode, except if they are piped -or redirected.</para> -<para> When redirecting, the Cygwin shells uses rules (a-c). For -these shells the relevant value of <envar>CYGWIN</envar> is that at the time -the shell was launched and not that at the time the program is executed. -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><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> -#!/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> -#!/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> -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 (assuming the pipes are binary) -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><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. For those programs, the text mode default -is a good choice. Programs included in official Cygwin distributions -should work well in the default mode. </para> - -<para>Text mode makes it much easier to mix files between Cygwin and -Windows programs, since Windows programs will usually use the CRLF -format. Unfortunately you may still have some problems with text -mode. First, some of the utilities included with Cygwin do not yet -specify binary mode when they should, e.g. <command>cat</command> will -not work with binary files (input will stop at ^Z, CRs will be -introduced in the output). Second, you will introduce CRs in text -files you write, which can cause problems when moving them back to a -UNIX system. </para> - -<para>If you are mounting a remote file system from a UNIX machine, -or moving files back and forth to a UNIX machine, you may want to -access the files in binary mode. The text files found there will normally -be in UNIX NL format, and you would want any files put there by Cygwin -programs to be stored in a format understood by UNIX. -Be sure to remove CRs from all Makefiles and -shell scripts and make sure that you only edit the files with -DOS/Windows editors that can cope with and preserve NL terminated lines. -</para> - -<para>Note that you can decide this on a disk by disk basis (for -example, mounting local disks in text mode and network disks in binary -mode). You can also partition a disk, for example by mounting -<filename>c:</filename> in text mode, and <filename>c:\home</filename> -in binary mode.</para> - -</sect2> - -<sect2><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> function call, binary mode can be -specified by adding a <literal>b</literal> to the mode string. There is no -direct way to specify text mode.</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> - -</sect2> - -</sect1> diff --git a/winsup/doc/using.sgml b/winsup/doc/using.sgml deleted file mode 100644 index 9d60e77bf..000000000 --- a/winsup/doc/using.sgml +++ /dev/null @@ -1,19 +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-utils - -</chapter> diff --git a/winsup/doc/what.texinfo b/winsup/doc/what.texinfo deleted file mode 100644 index cc0ec246d..000000000 --- a/winsup/doc/what.texinfo +++ /dev/null @@ -1,160 +0,0 @@ -@chapter What is it? - -The Cygwin tools are ports of the popular GNU development tools for -Microsoft Windows. They run thanks to the Cygwin library which -provides the UNIX system calls and environment these programs expect. - -With these tools installed, it is possible to 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 packages -included with the Cygwin development tools themselves). Even if -the development tools are of little to no use to you, you may have -interest in the many standard Unix utilities provided with the package. -They can be used both from the bash shell (provided) or from the -standard Windows command shell. - -@section What versions of Windows are supported? - -Wait a minute... Cygwin is only @emph{supported} if you are paying for -it, such as through a support contract with Red Hat. For information -about getting a Red Hat support contract, see -@file{http://www.redhat.com/software/tools/cygwin/}. - -That said, Cygwin can be expected to run on all modern 32 bit versions of -Windows, except Windows CE. This includes Windows 95/98/ME/NT/2000/XP. - -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. - -@section Where can I get it? - -The main WWW page for the Cygwin project is -@file{http://cygwin.com/}. There you should find -everything you need for Cygwin, including links for download and setup, -a current list of ftp mirror sites, a User's Guide, an API Reference, -mailing lists and archives, and additional ported software. - -You can find documentation for the individual GNU tools at -@file{http://www.fsf.org/manual/}. (You should read GNU manuals from a -local mirror. Check @file{http://www.fsf.org/server/list-mirrors.html} -for a list of them.) - - -@section Is it free software? - -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 Cygnus 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 more more information on -how the GNU General Public License may affect your use of these tools. - -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; please -contact sales@@cygnus.com for more information. -All other questions should be sent to the project -mailing list cygwin@@cygwin.com. - -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. - -The Cygwin 1.0 product was a "commercial" distribution of cygwin. As -such, it included such non-software things as printed manuals, support, -and aggregation of useful utilities. There was nothing (software-wise) -in there that you couldn't get off the net already, if you took the time -to find and download everything (and usually, build it yourself), -although the @emph{versions} available for download may have been -different than those distributed with the commercial product. We tested -it all to make sure it worked together, and packaged it in a convenient -form. We considered such testing and packaging to be a valuable service -and thus charged a fee for it. Plus, it provided income for the cygwin -project so we could continue working on it. However, Red Hat is no -longer offering Cygwin 1.0 on CD. There are tentative plans to offer a -new Cygwin CD sometime in early 2001. So far, however, there are no -definite plans. The latest news about this can be found at -@file{http://cygwin.com/cygwin-cd.html}. - - -@section Recent history of the project: What version @emph{is} this, anyway? - -Starting on April 17, 2000, the Cygwin team changed the procedure for -doing net releases. - -Previously, net releases entailed downloading one or two large files -(called something like @code{FULL.EXE} or @code{USER.EXE}). These files -unpacked a "Cygwin Distribution" to a static (and arcane) directory -structure. This distribution contained lots of .exe, .a, .h, and other -files. - -These distributions were named after the version of the Cygwin DLL which -they contained. The last version released with this method was Cygwin -B20.1. - -This distribution method has the advantage that everything was "all in -one place". You could copy the huge FULL.EXE file around and know that -you were getting the complete "Cygwin Distribution". - -The method had several disadvantages, however. 1) it was huge, 2) it -was hard to download in one error-free piece, and 3) it was hard to -update. - -Why was it hard to update? Because any change to any package in -FULL.EXE meant re-generating all of FULL.EXE. This process was not easy -to automate since FULL.EXE was an InstallShield executable. As a -result, until recently, Cygwin development was relatively static. - -To rectify these problems, the Cygwin team decided, early in January -2000, to break up the packages in the release and make a small program -(@code{setup.exe}) available to use in downloading packages. After much -development and internal discussion on the cygwin-developers mailing -list, the new, improved version of a Cygwin release was made available -on April 17, 2000. - -This new release also had a new version of the Cygwin DLL -- 1.1.0. -Most of the other packages were updated and some packages from the -Cygwin CD were included. Meanwhile, the Cygwin DLL continues to be -updated, and since release 1.3.1, is more generically referred to as -"1.3.x". - -Users obtain this package by first downloading a version of -@code{setup.exe}. This program started as a simple command line tool, -has metamorphosed into a GUI, and is in the process of continual -improvement. However, its purpose is simple -- it is designed to -install packages from the cygwin web site at @file{http://cygwin.com/}. -In effect, it is a smaller, more intelligent replacement for FULL.EXE. -It does not require the downloading a huge executable but rather -downloads individual small packages. - -Does this mean that the new net release of the Cygwin package is 1.3.x? -No. We no longer label the releases with the Cygwin version number. -Each package in the cygwin release has its own version now. - -Does this mean that Cygwin 1.3.x is newer than B20.1? Yes! The cygwin -1.3.x versions all represent continual improvement in the Cygwin DLL. -Although the 1.3.x code is still considered "beta quality", the Cygwin -team felt comfortable enough with the cygwin technology to bump the -version number to "1". - -The other packages in the latest directory are also 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. - -So, how do you get the most up-to-date version of cygwin? Easy. Just -download the setup.exe program from your closest mirror. This program -will handle the task of updating the packages on your system to the -latest version. The Cygwin team frequently updates and adds new -packages to the soureware web site. The setup.exe program is the -easiest way to determine what you need on your system. - -For some "ancient" history of the project (rather, just woefully out of -date), visit the Project History page at -@file{http://cygwin.com/history.html}. diff --git a/winsup/doc/who.texinfo b/winsup/doc/who.texinfo deleted file mode 100644 index cc93ceaa1..000000000 --- a/winsup/doc/who.texinfo +++ /dev/null @@ -1,88 +0,0 @@ -@chapter Who's behind the project? - -@strong{(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.)} - -Chris Faylor is behind many of the recent changes in Cygwin. Prior to -joining Cygnus, he contributed significant fixes to the process control -and environ code, reworked the strace mechanism, and rewrote the -signal-related code from scratch as a Net contributor. In addition to -continuing to make technical contributions, Chris is also currently the -group's manager. - -Corinna Vinschen has contributed several useful fixes to the path -handling code, console support, improved security handling, and raw -device support. Corinna is currently employed by Red Hat as a -GDB/Cygwin engineer. - -DJ Delorie has done important work in profiling Cygwin, -worked on the Dejagnu automated testing framework, merged the dlltool -functionality into ld, wrote a good deal of the Cygwin Users' Guide, -authored the cygcheck utility, and made automated snapshots available -from our project WWW page. DJ is currently employed by Red Hat as -a GCC engineer. - -Egor Duda has contributed many useful fixes. He is responsible for -Cygwin's ability to start a debugger on detection of a fatal error -as well as produce core dumps. - -Robert Collins has contributed many improvements to thread handling -as well as generic fixes to cygwin itself. - -Kazuhiro Fujieda has contributed many bug fixes and bug reports. - -Earnie Boyd has contributed many bug fixes and is the mingw and w32api -maintainer. - -David Starks-Browning is our dedicated FAQ maintainer. - -Geoffrey Noer took over the Cygwin project from its initial author Steve -Chamberlain in mid-1996. As maintainer, he produced Net releases beta -16 through 20; made the development snapshots; worked with Net -contributors to fix bugs; made many various code improvements himself; -wrote a paper on Cygwin for the 1998 Usenix NT Symposium; authored the -project WWW pages, FAQ, README; etc. Geoffrey is not currently employed -by Red Hat. - -Steve Chamberlain designed and implemented -Cygwin in 1995-1996 while working for Cygnus. He worked with the Net -to improve the technology, ported/integrated many of the user tools -for the first time to Cygwin, and produced all of the releases up to -beta 14. Steve is not currently employed by Red Hat. - -Marco Fuykschot and Peter Boncz of Data Distilleries contributed nearly -all of the changes required to make Cygwin thread-safe. They also -provided the pthreads interface. - -Sergey Okhapkin has been an invaluable Net contributor. He implemented -the tty/pty support, has played a significant role in revamping signal -and exception handling, and has made countless contributions throughout -the library. He also provided binaries of the development snapshots to -the Net after the beta 19 release. - -Mumit Khan has been most helpful on the EGCS end of things, providing -quite a large number of stabilizing patches to the compiler tools for -the B20 release. - -Philippe Giacinti contributed the implementation of dlopen, dlclose, -dlsym, dlfork, and dlerror in Cygwin. - -Ian Lance Taylor did a much-needed rework of the path handling code for -beta 18, and has made many assorted fixes throughout the code. Jeremy -Allison made significant contributions in the area of file handling and -process control, and rewrote select from scratch. Doug Evans rewrote -the path-handling code in beta 16, among other things. Kim Knuttila and -Michael Meissner put in many long hours working on the now-defunct -PowerPC port. Jason Molenda and Mark Eichin have also made important -contributions. - -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. - -Many thanks to everyone using the tools for their many contributions in -the form of advice, bug reports, and code fixes. Keep them coming! diff --git a/winsup/doc/windres.sgml b/winsup/doc/windres.sgml deleted file mode 100644 index 2d5410639..000000000 --- a/winsup/doc/windres.sgml +++ /dev/null @@ -1,167 +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> -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> |