Remove references to and files from old texinfo FAQ.
This commit is contained in:
parent
79e60dfa66
commit
96f5988e31
|
@ -1,3 +1,22 @@
|
|||
2006-01-18 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
|
||||
|
||||
* Makefile.in : Remove references to old texinfo FAQ.
|
||||
* calls.texinfo : Remove.
|
||||
* changes.texinfo : Remove.
|
||||
* copy.texinfo : Remove.
|
||||
* faq.texinfo : Remove.
|
||||
* history.texinfo : Remove.
|
||||
* how-api.texinfo : Remove.
|
||||
* how-programming.texinfo : Remove.
|
||||
* how-resources.texinfo : Remove.
|
||||
* how-using.texinfo : Remove.
|
||||
* how.texinfo : Remove.
|
||||
* install.texinfo : Remove.
|
||||
* readme.texinfo : Remove.
|
||||
* relnotes.texinfo : Remove.
|
||||
* what.texinfo : Remove.
|
||||
* who.texinfo : Remove.
|
||||
|
||||
2006-01-12 Igor Peshansky <pechtcha@cs.nyu.edu>
|
||||
|
||||
* doctool.c (scan_directory): Ignore "CVS" directories.
|
||||
|
|
|
@ -13,20 +13,10 @@ 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=faq0.html 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.exe *.junk \
|
||||
|
@ -77,50 +67,6 @@ faq/faq-nochunks.html :
|
|||
./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' > $@
|
||||
|
||||
#faq0.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) -monolithic ./faq.texinfo; \
|
||||
# rm -f *.texinfo; \
|
||||
# sed -e 's;"faq.html;"faq0.html;g' faq.html > faq0.html; \
|
||||
# rm -f faq.html; exit 0
|
||||
#
|
||||
#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 \
|
||||
|
|
|
@ -1,709 +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
|
||||
@item getchar: C 4.9.7.6, P 8.2.3.5
|
||||
@item getchar_unlocked: P96 8.2.7.1
|
||||
@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
|
||||
@item putchar: C 4.9.7.9, P 8.2.3.6
|
||||
@item putchar_unlocked: P96 8.2.7.1
|
||||
@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 fcloseall
|
||||
@item fcloseall_r
|
||||
@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
|
||||
|
|
@ -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.
|
|
@ -1,384 +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 see
|
||||
@file{http://www.redhat.com/software/cygwin/} for more information
|
||||
about the Red Hat Cygwin Product.
|
||||
|
||||
In accordance with section 10 of the GPL, Red Hat, Inc. 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 @file{http://www.opensource.org/docs/definition_plain.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
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
\input texinfo
|
||||
|
||||
@title The Cygwin FAQ
|
||||
|
||||
@author You can always find the latest version of this FAQ at @file{http://cygwin.com/faq.html}.
|
||||
|
||||
@setfilename faq.txt
|
||||
|
||||
@include what.texinfo
|
||||
@include install.texinfo
|
||||
@include how.texinfo
|
||||
@include relnotes.texinfo
|
||||
@include history.texinfo
|
||||
@include who.texinfo
|
||||
@include copy.texinfo
|
|
@ -1,5 +0,0 @@
|
|||
@chapter History
|
||||
|
||||
This section of the FAQ is no longer maintained.
|
||||
|
||||
Instead, see @file{http://cygwin.com/history.html}.
|
|
@ -1,292 +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
|
||||
@file{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 dependent on ftell() and fseek(). A
|
||||
Ctrl-Z encountered while reading a file sets the End Of File flags even
|
||||
though it truly isn't the end of file.
|
||||
|
||||
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.
|
||||
|
||||
Explanation adapted from mailing list email by Earnie Boyd
|
||||
<earnie_boyd@@yahoo.com>.
|
||||
|
||||
@subsection Is the Cygwin library multi-thread-safe?
|
||||
|
||||
Yes.
|
||||
|
||||
There is also extensive 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 child's
|
||||
.data and .bss subsections by copying from its own address space into
|
||||
the suspended child's address space. Parent then starts the child.
|
||||
Parent waits on mutex for child to get to safe point. Child starts and
|
||||
discovers if has been forked and then longjumps using the saved jump
|
||||
buffer. Child sets mutex parent is waiting on and then blocks on
|
||||
another mutex waiting for parent to fill in its stack and heap. Parent
|
||||
notices child is in safe area, copies stack and heap from itself into
|
||||
child, releases the mutex the child is waiting on and returns from the
|
||||
fork call. Child wakes from blocking on mutex, recreates any mmapped
|
||||
areas passed to it via shared area and then returns from fork itself.
|
||||
|
||||
@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?
|
||||
|
||||
As of version 1.5.13, the Cygwin developers are not aware of any feature
|
||||
in the cygwin dll that would allow users to gain privileges or to access
|
||||
objects to which they have no rights under Windows. However there is no
|
||||
guarantee that Cygwin is as secure as the Windows it runs on. Cygwin
|
||||
processes share some variables and are thus easier targets of denial of
|
||||
service type of attacks.
|
||||
|
||||
@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?
|
||||
|
||||
Cygwin versioning is relatively complicated because of its status as a
|
||||
shared library. First of all, since October 1998 every Cygwin DLL has
|
||||
been named @code{cygwin1.dll} and has a 1 in the release name.
|
||||
Additionally, there are DLL major and minor numbers that correspond to
|
||||
the name of the release, and a release number. In other words,
|
||||
cygwin-1.5.10-2 is @code{cygwin1.dll}, major version 5, minor version
|
||||
10, release 2.
|
||||
|
||||
The @code{cygwin1.dll} major version number gets incremented only when a
|
||||
change is made that makes existing software incompatible. For example,
|
||||
the first major version 5 release, cygwin-1.5.0-1, added 64-bit file I/O
|
||||
operations, which required many libraries to be recompiled and relinked.
|
||||
The minor version changes every time we make a new backward compatible
|
||||
Cygwin release available. There is also a @code{cygwin1.dll} release
|
||||
version number. The release number is only incremented if we update an
|
||||
existing release in a way that does not effect the DLL (like a missing
|
||||
header file).
|
||||
|
||||
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 compatibility 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 @code{mounts v2} for a long time. For more exciting Cygwin
|
||||
version number details, check out the @code{/usr/include/cygwin/version.h}
|
||||
file.
|
||||
|
||||
@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.
|
||||
|
|
@ -1,703 +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.
|
||||
|
||||
The Cygwin Package Contributor's Guide at
|
||||
@file{http://cygwin.com/setup.html} details everything you need to know
|
||||
about being a package maintainer. The quickest way to get started is to
|
||||
read the @emph{Initial packaging procedure, script-based} section on
|
||||
that page. The @samp{generic-build-script} found there works well for
|
||||
most packages.
|
||||
|
||||
For questions about package maintenance, use the cygwin-apps mailing
|
||||
list (start at @file{http://cygwin.com/lists.html}) @emph{after}
|
||||
searching and browsing the cygwin-apps list archives, of course. Be
|
||||
sure to look at the @emph{Submitting a package} checklist at
|
||||
@file{http://cygwin.com/setup.html} before sending an ITP (Intent To
|
||||
Package) email to cygwin-apps.
|
||||
|
||||
You should also 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 minimal support for the Objective C front-end in the
|
||||
main GCC distribution, anyway.
|
||||
|
||||
@subsection Why does my make fail on Cygwin with an execvp error?
|
||||
|
||||
First of all, if you are using @samp{make -j[N]}, then stop. It doesn't
|
||||
work well. Also beware of using non-portable shell features in your
|
||||
Makefiles (see tips at @file{http://cygwin.com/faq/faq_3.html#SEC46}).
|
||||
|
||||
Errors of @samp{make: execvp: /bin/sh: Illegal Argument} or
|
||||
@samp{make: execvp: /bin/sh: Argument list too long} are often
|
||||
caused by the command-line being to long for the Windows execution model.
|
||||
To circumvent this, mount the path of the executable using the -X switch
|
||||
to enable cygexec for all executables in that folder; you will also need
|
||||
to exclude non-cygwin executables with the -x switch. Enabling cygexec
|
||||
causes cygwin executables to talk directly to one another, which increases
|
||||
the command-line limit. To enable cygexec for @samp{/bin} and
|
||||
@samp{/usr/bin}, you can use these commands in a batch file:
|
||||
|
||||
@example
|
||||
mount -X -b -f c:\cygwin\bin /bin
|
||||
mount -X -b -f c:\cygwin\bin /usr/bin
|
||||
mount -x -b -f c:\cygwin\bin\strace.exe /usr/bin/strace.exe
|
||||
mount -x -b -f c:\cygwin\bin\strace.exe /bin/strace.exe
|
||||
mount -x -b -f c:\cygwin\bin\cygcheck.exe /usr/bin/cygcheck.exe
|
||||
mount -x -b -f c:\cygwin\bin\cygcheck.exe /bin/cygcheck.exe
|
||||
@end example
|
||||
|
||||
Note that you must specifically exclude @code{strace} and @code{cygcheck},
|
||||
which are not linked to the Cygwin DLL.
|
||||
|
||||
(See @file{http://www.cygwin.com/cygwin-ug-net/using-utils.html#mount}
|
||||
for more information.)
|
||||
|
||||
|
||||
@subsection Why the undefined reference to @samp{WinMain@@16}?
|
||||
|
||||
If you're using @samp{gcc}, 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
|
||||
|
||||
If you're using GCJ, you need to pass a "--main" flag:
|
||||
|
||||
@example
|
||||
gcj --main=Hello Hello.java
|
||||
@end example
|
||||
|
||||
@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 command line.
|
||||
|
||||
@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 Red Hat can't agree to. Fortunately, we
|
||||
have our own Win32 headers which are pretty complete.
|
||||
|
||||
@subsection How do I use @samp{cygwin1.dll} with Visual Studio or MinGW?
|
||||
|
||||
Before you begin, note that Cygwin is licensed under the GNU GPL (as
|
||||
indeed are all other Cygwin-based libraries). That means that if your
|
||||
code links against the cygwin dll (and if your program is calling
|
||||
functions from Cygwin, it must, as a matter of fact, be linked against
|
||||
it), you must apply the GPL to your source as well. Of course, this
|
||||
only matters if you plan to distribute your program in binary form. For
|
||||
more information, see @file{http://gnu.org/licenses/gpl-faq.html}. If
|
||||
that is not a problem, read on.
|
||||
|
||||
If you want to load the DLL dynamically, read
|
||||
@code{winsup/cygwin/how-cygtls-works.txt} and the sample code in
|
||||
@code{winsup/testsuite/cygload} to understand how this works.
|
||||
The short version is:
|
||||
|
||||
@enumerate
|
||||
@item Make sure you have 4K of scratch space at the bottom of your stack.
|
||||
@item Invoke @code{cygwin_dll_init()}:
|
||||
@example
|
||||
HMODULE h = LoadLibrary("cygwin1.dll");
|
||||
void (*init)() = GetProcAddress(h, "cygwin_dll_init");
|
||||
init();
|
||||
@end example
|
||||
@end enumerate
|
||||
|
||||
If you want to link statically from Visual Studio, to my knowledge
|
||||
none of the Cygwin developers have done this, but we have this report
|
||||
from the mailing list that it can be done this way:
|
||||
|
||||
@enumerate
|
||||
@item Use the impdef program to generate a .def file for the cygwin1.dll
|
||||
(if you build the cygwin dll from source, you will already have a def
|
||||
file)
|
||||
|
||||
@example
|
||||
impdef cygwin1.dll > cygwin1.def
|
||||
@end example
|
||||
|
||||
@item Use the MS VS linker (lib) to generate an import library
|
||||
|
||||
@example
|
||||
lib /def=cygwin1.def /out=cygwin1.lib
|
||||
@end example
|
||||
|
||||
@item Create a file "my_crt0.c" with the following contents
|
||||
|
||||
@example
|
||||
#include <sys/cygwin.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef int (*MainFunc) (int argc, char *argv[], char **env);
|
||||
|
||||
void
|
||||
my_crt0 (MainFunc f)
|
||||
@{
|
||||
cygwin_crt0(f);
|
||||
@}
|
||||
@end example
|
||||
|
||||
@item Use gcc in a Cygwin prompt to build my_crt0.c into a DLL
|
||||
(e.g. my_crt0.dll). Follow steps 1 and 2 to generate .def and
|
||||
.lib files for the DLL.
|
||||
|
||||
@item Download crt0.c from the cygwin website and include it in
|
||||
your sources. Modify it to call my_crt0() instead of
|
||||
cygwin_crt0().
|
||||
|
||||
@item Build your object files using the MS VC compiler cl.
|
||||
|
||||
@item Link your object files, cygwin1.lib, and my_crt0.lib (or
|
||||
whatever you called it) into the executable.
|
||||
@end enumerate
|
||||
|
||||
Note that if you are using any other Cygwin based libraries
|
||||
that you will probably need to build them as DLLs using gcc and
|
||||
then generate import libraries for the MS VC linker.
|
||||
|
||||
Thanks to Alastair Growcott (alastair dot growcott at bakbone dot co
|
||||
dot uk) for this tip.
|
||||
|
||||
@subsection How do I link against a @samp{.lib} file?
|
||||
|
||||
If your @samp{.lib} file is a normal static or import library with
|
||||
C-callable entry points, you can list @samp{foo.lib} as an object file for
|
||||
gcc/g++, just like any @samp{*.o} file. Otherwise, here are some steps:
|
||||
|
||||
@enumerate
|
||||
@item 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.
|
||||
@item Build a dummy 'LibMain'.
|
||||
@item Build a .def with all the exports you need.
|
||||
@item Link with your .lib using link.exe.
|
||||
@end enumerate
|
||||
|
||||
or
|
||||
|
||||
@enumerate
|
||||
@item Extract all the object files from the .lib using LIB.EXE.
|
||||
@item Build a dummy C file referencing all the functions you need, either
|
||||
with a direct call or through an initialized function pointer.
|
||||
@item Build a dummy LibMain.
|
||||
@item Link all the objects with this file+LibMain.
|
||||
@item Write a .def.
|
||||
@item Link.
|
||||
@end enumerate
|
||||
|
||||
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 at jacob dot remcomp dot fr) for this explanation.
|
||||
|
||||
@subsection How do I build Cygwin on my own?
|
||||
|
||||
First, you need to get the Cygwin source. Ideally, you should check out
|
||||
what you need from CVS (@file{http://cygwin.com/cvs.html}). This is the
|
||||
@emph{preferred method} for acquiring the sources. Otherwise, you can
|
||||
install the cygwin source package from the distribution.
|
||||
|
||||
If you are trying to duplicate a cygwin release then you should just
|
||||
download the corresponding source package and use "tar xjf" to unpack
|
||||
it. This will unpack the sources into a directory named cygwin-x.y.z-n,
|
||||
where x.y.z-n correspond to the version numbering of the tar.bz2
|
||||
package.
|
||||
|
||||
@example
|
||||
tar xjf cygwin-1.5.12-1-src.tar.bz2
|
||||
cd cygwin-1.5.12-1
|
||||
@end example
|
||||
|
||||
You @emph{must} build cygwin in a separate directory from the source,
|
||||
so create something like a @samp{build/} directory. You will also want
|
||||
to install to a temporary location:
|
||||
|
||||
@example
|
||||
mkdir build
|
||||
mkdir /install
|
||||
cd build
|
||||
(../configure --prefix=/install -v; make) >& make.out
|
||||
make install > install.log 2>&1
|
||||
@end example
|
||||
|
||||
Normally, this procedure ignore errors in building the documentation.
|
||||
which requires the @samp{docbook-xml}, @samp{docbook-xsl}, and
|
||||
@samp{xmlto} packages. For more information on building the
|
||||
documentation, see the README included in the cygwin-doc package.
|
||||
|
||||
To check a cygwin1.dll, run "make check" in the winsup/testsuite
|
||||
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 the correct
|
||||
place. Then start up a bash window, or run a cygwin program from the
|
||||
Windows command prompt, and see what happens.
|
||||
|
||||
If you get the error "shared region is corrupted" it means that two
|
||||
different versions of cygwin1.dll are running on your machine at the
|
||||
same time. Remove all but one.
|
||||
|
||||
@subsection I may have found a bug in Cygwin, how can I debug it (the symbols in gdb look funny)?
|
||||
|
||||
Debugging symbols are stripped from distibuted Cygwin binaries, so any
|
||||
symbols that you see in gdb are basically meaningless. It is also a good
|
||||
idea to use the latest code in case the bug has been fixed, so we
|
||||
recommend trying the latest snapshot from
|
||||
@file{http://cygwin.com/snapshots/} or build the DLL from CVS.
|
||||
|
||||
To build a debugging version of the Cygwin DLL, you will need to follow
|
||||
the instructions at @file{http://cygwin.com/faq/faq_3.html#SEC102}. You
|
||||
can also contact the mailing list for pointers (a simple test case that
|
||||
demonstrates the bug is always welcome).
|
||||
|
||||
@subsection How can I compile Cygwin for an unsupported platform (PowerPC, Alpha, ARM, Itanium)?
|
||||
|
||||
Unfortunately, this will be difficult. Exception handling and signals
|
||||
support semantics and args have been designed for x86 so you would need
|
||||
to write specific support for your platform. We don't know of any other
|
||||
incompatibilities. Please send us patches if you do this work!
|
||||
|
||||
@subsection How can I adjust the heap/stack size of an application?
|
||||
|
||||
If you need to change the maximum amount of memory available to Cygwin, see
|
||||
@file{http://cygwin.com/cygwin-ug-net/setup-maxmem.html}. Otherwise,
|
||||
just 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?
|
||||
|
||||
There's documentation that explains the process in the Cygwin User's
|
||||
Guide here: @file{http://cygwin.com/cygwin-ug-net/dll.html}
|
||||
|
||||
@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.
|
||||
|
||||
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++.
|
||||
|
||||
_WIN32 is only defined when you use either the -mno-cygwin or -mwin32
|
||||
gcc command line options. This is because Cygwin is supposed to be a
|
||||
Unix emulation environment and defining _WIN32 confuses some programs
|
||||
which think that they have to make special concessions for a Windows
|
||||
environment which Cygwin handles automatically.
|
||||
|
||||
Note that using -mno-cygwin replaces __CYGWIN__ with __MINGW32__ as to
|
||||
tell which compiler (or settings) you're running.
|
||||
Check this out in detail by running, for example
|
||||
|
||||
@example
|
||||
$ gcc -dM -E -xc /dev/null >gcc.txt
|
||||
$ gcc -mno-cygwin -dM -E -xc /dev/null >gcc-mno-cygwin.txt
|
||||
$ gcc -mwin32 -dM -E -xc /dev/null >gcc-mwin32.txt
|
||||
@end example
|
||||
Then use the diff and grep utilities to check
|
||||
what the difference is.
|
||||
|
||||
@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/}.
|
|
@ -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/share/doc/}. Many packages ship with standard documentation,
|
||||
which you can find in @samp{/usr/share/doc/@emph{package_name}} or by
|
||||
using the @code{man} or @code{info} tools. (Hint: use @code{cygcheck
|
||||
-l @emph{package_name}} to list what man pages the package includes.)
|
||||
In addition, some packages have Cygwin specific instructions in a file
|
||||
@samp{/usr/share/doc/Cygwin/@emph{package_name}.README}. Some older
|
||||
packages still keep their documentation in @samp{/usr/doc/} instead of
|
||||
@samp{/usr/share/doc/}.
|
||||
|
||||
There are links to quite a lot of documentation on the main Cygwin
|
||||
project web page, @file{http://cygwin.com/}, including this FAQ. Be
|
||||
sure to at least read any 'Release Notes' or 'Readme' or 'read this'
|
||||
links on the main web page, if there are any.
|
||||
|
||||
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}.
|
||||
|
||||
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 announcements list, send a message
|
||||
to cygwin-announce-subscribe@@cygwin.com. To unsubscribe,
|
||||
send a message to cygwin-announce-unsubscribe@@cygwin.com.
|
||||
|
||||
If you want to contribe to Cygwin tools & applications, rather than
|
||||
the library itself, then you should subscribe to cygwin-apps. There
|
||||
is also a low-volume list called cygwin-developers which is reserved
|
||||
for knowledgeable people who regularly contribute to the Cygwin DLL.
|
||||
Please do not ask for read-only access to this mailing list. Both
|
||||
cygwin-developers and cygwin-apps are by-approval lists. The same
|
||||
mechanism as described for the first two lists works for these as
|
||||
well.
|
||||
|
||||
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{attaching}
|
||||
the output of 'cygcheck -s -v -r' to your message. (Do not paste the
|
||||
output into your message.)
|
||||
@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
|
||||
|
||||
@item Read and obey ``How To Ask Questions The Smart Way'' by Eric
|
||||
S. Raymond, at @file{http://www.catb.org/~esr/faqs/smart-questions.html}.
|
||||
|
||||
@end itemize
|
||||
|
||||
If you do not follow the above guidelines, you may still elicit a
|
||||
response, but you may not appreciate it!
|
||||
|
||||
For inquiries about support contracts and commercial licensing, visit
|
||||
@file{http://www.redhat.com/software/cygwin/}.
|
||||
|
||||
Beyond that, perhaps nobody has time to answer your question. Perhaps
|
||||
nobody knows the answer.
|
||||
|
|
@ -1,813 +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'' dialog, 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 and suddenly @emph{every} command takes a
|
||||
@emph{very} long time, then something is probably attempting to
|
||||
access a network share. You may have the obsolete @code{//c}
|
||||
notation in your PATH or startup files. This now means the
|
||||
@emph{network share} @code{c}, which will slow things down
|
||||
tremendously if it does not exist.
|
||||
|
||||
Using //c (for C:) doesn't 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 Why don't my services work (or access network shares)?
|
||||
|
||||
Most Windows services run as a special user called @samp{SYSTEM}. If you
|
||||
installed Cygwin for "Just Me", the @samp{SYSTEM} user won't see your
|
||||
Cygwin mount table. You need to re-mount all of your mounts as
|
||||
"system" for services to work. You can re-run @samp{setup.exe} and
|
||||
select "Install for All Users", or this script will do the trick:
|
||||
|
||||
@example
|
||||
eval "`mount -m | sed -e 's/ -u / -s /g' -e 's/$/;/'`"
|
||||
@end example
|
||||
|
||||
The @samp{SYSTEM} user cannot access network shares that require
|
||||
authentication. For more information, see
|
||||
@file{http://cygwin.com/cygwin-ug-net/ntsec.html}.
|
||||
|
||||
Workarounds include using public network share that does not require
|
||||
authentication (for non-critical files), or running the service as
|
||||
your own user with @samp{cygrunsrv -u} (see
|
||||
@samp{/usr/share/doc/Cygwin/cygrunsrv.README} for more information).
|
||||
|
||||
@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 --help}' for
|
||||
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?
|
||||
|
||||
Cygwin versions < 1.3.0 do not follow MS Windows Explorer Shortcuts
|
||||
(*.lnk files). It sees a shortcut as a regular file and this you
|
||||
cannot "cd" into it.
|
||||
|
||||
Since version 1.3.0, Cygwin uses shortcuts as symlinks by default.
|
||||
|
||||
Cygwin shortcuts are different from shortcuts created by native Windows
|
||||
applications. Windows applications can usually make use of Cygwin
|
||||
shortcuts but not vice versa. This is by choice. The reason is that
|
||||
Windows shortcuts may contain a bunch of extra information which would
|
||||
get lost, if, for example, Cygwin tar archives and extracts them as
|
||||
symlinks.
|
||||
|
||||
Changing a Cygwin shortcut in Windows Explorer usually changes a Cygwin
|
||||
shortcut into a Windows native shortcut. Afterwards, Cygwin will not
|
||||
recognize it as symlink anymore.
|
||||
|
||||
@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.
|
||||
|
||||
If find does not seem to be producing enough results, or seems to be
|
||||
missing out some directories, you may be experiencing a problem with one
|
||||
of find's optimisations. The absence of @samp{.} and @samp{..}
|
||||
directories on some filesystems, such as DVD-R UDF, can confuse find.
|
||||
See the documentation for the option @samp{-noleaf} in the man page.
|
||||
|
||||
@subsection Why doesn't @samp{su} work?
|
||||
|
||||
The @samp{su} command has been in and out of Cygwin distributions, but
|
||||
it has not been ported to Cygwin and has never worked. It is
|
||||
currently installed as part of the sh-utils, but again, it does not work.
|
||||
|
||||
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.
|
||||
|
||||
For some technical background into why @samp{su} doesn't work, read
|
||||
@file{http://www.cygwin.com/ml/cygwin/2003-06/msg00897.html} and
|
||||
related messages.
|
||||
|
||||
@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. This is on by default (a recent change).
|
||||
|
||||
@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?
|
||||
|
||||
Starting with @samp{coreutils-5.3.0-6} and @samp{cygwin-1.5.17}, you can
|
||||
do something like this:
|
||||
|
||||
@example
|
||||
bash$ mkdir -p //MACHINE/Share/path/to/new/dir
|
||||
@end example
|
||||
|
||||
However, coreutils expects Unix path names, so something like
|
||||
@samp{mkdir -p \\\\machine\\share\\path} will fail.
|
||||
|
||||
@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 `~' expansion (use $HOME instead)
|
||||
@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 (Unicode) characters work?
|
||||
|
||||
Internationalization is a complex issue. The short answer is that
|
||||
Cygwin is not Unicode-aware, so things that might work in Linux will
|
||||
not necessarily work on Cygwin. However, some things do work. To type
|
||||
international characters (£åäö) in @code{bash}, add the following
|
||||
lines to your @code{~/.inputrc} file and restart @code{bash}:
|
||||
|
||||
@example
|
||||
set meta-flag on
|
||||
set convert-meta off
|
||||
set output-meta on
|
||||
set input-meta on
|
||||
set kanji-code sjis
|
||||
set meta-flag on
|
||||
@end example
|
||||
|
||||
These are options to the @code{readline} library, which you can read
|
||||
about in the @code{bash(1)} and @code{readline(3)} man pages. Other
|
||||
tools that do not use @code{readline} for display, such as @code{less}
|
||||
and @code{ls}, require additional settings, which could be put in your
|
||||
@code{~/.bashrc}:
|
||||
@example
|
||||
alias less='/bin/less -r'
|
||||
alias ls='/bin/ls -F --color=tty --show-control-chars'
|
||||
export LANG="ja_JP.SJIS"
|
||||
export OUTPUT_CHARSET="sjis"
|
||||
@end example
|
||||
These examples use the Japanese Shift-JIS character set, obviously
|
||||
you will want to change them for your own locale.
|
||||
|
||||
|
||||
@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 are 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. ex-USSR 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.
|
||||
|
||||
The only DLL that is sanctioned by the Cygwin project is the one that
|
||||
you get by running @file{http://cygwin.com/setup.exe}, installed in the
|
||||
directory controlled by this program. If you have other versions on
|
||||
your system and desire help from the cygwin project, you should delete
|
||||
or rename all DLLs that are not installed by @file{setup.exe}.
|
||||
|
||||
If you're trying to find multiple versions of the DLL that are causing
|
||||
this problem, reboot first, in case DLLs still loaded in memory are the
|
||||
cause. Then use the Windows System find utility to search your whole
|
||||
machine, not just components in your PATH (as 'type' would do) or
|
||||
cygwin-mounted filesystems (as Cygwin 'find' would do).
|
||||
|
||||
@subsection Why isn't package XYZ available in Cygwin?
|
||||
|
||||
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
|
||||
@file{http://cygwin.com/setup.html}.
|
||||
|
||||
@subsection Why is the Cygwin package of XYZ so out of date?
|
||||
|
||||
(Also: Why is the version of package XYZ older than the version that I
|
||||
can download from the XYZ web site? Why is the version of package XYZ
|
||||
older than the version that I installed on my linux system? Is there
|
||||
something special about Cygwin which requires that only an older version
|
||||
of package XYZ will work on it?)
|
||||
|
||||
Every package in the Cygwin distribution has a maintainer who is
|
||||
responsible for sending out updates of the package. This person is a
|
||||
volunteer who is rarely the same person as the official developer of the
|
||||
package. If you notice that a version of a package seems to be out of
|
||||
date, the reason is usually pretty simple -- the person who is
|
||||
maintaining the package hasn't gotten around to updating it yet. Rarely,
|
||||
the newer package actually requires complex changes that the maintainer
|
||||
is working out.
|
||||
|
||||
If you urgently need an update, sending a polite message to the cygwin
|
||||
mailing list pinging the maintainer is perfectly acceptable. There are
|
||||
no guarantees that the maintainer will have time to update the package
|
||||
or that you'll receive a response to your request, however.
|
||||
|
||||
Remeber that the operative term here is "volunteer".
|
||||
|
||||
@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?
|
||||
|
||||
First, consider using rxvt instead of the standard console window. In
|
||||
rxvt, selecting with the left-mouse also copies, and middle-mouse
|
||||
pastes. It couldn't be easier!
|
||||
|
||||
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 firewall should I use with Cygwin?
|
||||
|
||||
We have had good reports about Kerio Personal Firewall, ZoneLabs
|
||||
Integrity Desktop, and the built-in firewall in Windows XP. Other
|
||||
well-known products including ZoneAlarm and Norton Internet Security have
|
||||
caused problems for some users but work fine for others. At last report,
|
||||
Agnitum Outpost did not work with Cygwin. If you are having strange
|
||||
connection-related problems, disabling the firewall is a good
|
||||
troubleshooting step (as is closing or disabling all other running
|
||||
applications, especially resource-intensive processes such as indexed
|
||||
search).
|
||||
|
||||
On the whole, Cygwin doesn't care which firewall is used. The few rare
|
||||
exceptions have to do with socket code.
|
||||
Cygwin uses sockets to implement many of its functions, such as IPC.
|
||||
Some overzealous firewalls install themselves deeply into the winsock
|
||||
stack (with the 'layered service provider' API) and install hooks
|
||||
throughout. Sadly the mailing list archives are littered with examples
|
||||
of poorly written firewall-type software that causes things to break.
|
||||
Note that with many of these products, simply disabling the firewall
|
||||
does not remove these changes; it must be completely uninstalled.
|
||||
|
||||
@subsection How can I share files between Unix and Windows?
|
||||
|
||||
During development, we have both Linux boxes running Samba and Windows
|
||||
machines. We often build with cross-compilers under Linux and copy
|
||||
binaries and source to the Windows system or just toy with them
|
||||
directly off the Samba-mounted partition. On dual-boot NT/Windows 9x
|
||||
machines, we usually use the FAT filesystem so we can also access the
|
||||
files under Windows 9x.
|
||||
|
||||
@subsection Is Cygwin case-sensitive? What are managed mounts?
|
||||
|
||||
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.
|
||||
|
||||
To help with this problem, starting in @samp{cygwin-1.5.0} it is
|
||||
possible to have a case sensitive Cygwin managed mount. This is an
|
||||
experimental feature and should be used with caution. You should only
|
||||
use it for directories that are initially unpopulated and are due to
|
||||
be completely managed by cygwin (hence the name). So, the best use
|
||||
would be to create an empty directory, mount it, and then add files to
|
||||
it:
|
||||
|
||||
@example
|
||||
mkdir /managed-dir
|
||||
mount -o managed c:/cygwin/managed-dir /managed-dir
|
||||
cd /managed-dir/
|
||||
touch makefile
|
||||
touch Makefile
|
||||
@end example
|
||||
|
||||
@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 Is there a Cygwin port of GNU Emacs?
|
||||
|
||||
Yes! It uses the X11 (@file{http://cygwin.com/xfree/}) Windows
|
||||
interface. From a remote login shell, this ``emacs -nw'' works fine.
|
||||
There is also a non-X11 version which just provides the text-only
|
||||
terminal interface. Use Cygwin Setup to install either one (or both).
|
||||
|
||||
@subsection What about NT Emacs?
|
||||
|
||||
If you want GNU Emacs with a native Microsoft Windows interface, but
|
||||
without X, then you must use the native Windows port, commonly known
|
||||
as ``NT Emacs''. You get NT Emacs from any GNU mirror. It is not
|
||||
available from Cygwin Setup.
|
||||
|
||||
NT Emacs uses the Windows command shell by default. Since it is not a
|
||||
Cygwin application, it has no knowledge of Cygwin mounts. With those
|
||||
points in mind, you need to add the following code to your ~/.emacs
|
||||
(or ~/_emacs) file in order to use Cygwin bash. This is particularly useful
|
||||
for the JDEE package (@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
|
||||
|
||||
If you want NT Emacs to understand Cygwin paths, get
|
||||
cygwin-mount.el from @file{http://www.emacswiki.org/elisp/index.html}.
|
||||
|
||||
Note that all of this ``just works'' if you use the Cygwin port of
|
||||
Emacs from Cygwin Setup.
|
||||
|
||||
@subsection What about XEmacs?
|
||||
|
||||
For a concise description of the current situation with XEmacs, see
|
||||
this message from the Cygwin mailing list:
|
||||
@file{http://cygwin.com/ml/cygwin/2002-11/msg00609.html}.
|
||||
|
||||
@subsection Is there a better alternative to the standard console window?
|
||||
|
||||
Yes! Use rxvt instead. It's an optional package in Cygwin Setup.
|
||||
You can use it with or without X11. You can resize it easily by
|
||||
dragging an edge or corner. Copy and paste is easy with the left and
|
||||
middle mouse buttons, respectively. It will honor settings in your
|
||||
~/.Xdefaults file, even without X.
|
||||
|
||||
Don't invoke as simply ``rxvt'' because that will run /bin/sh (really
|
||||
ash) which is not a good interactive shell. For details see
|
||||
@code{/usr/doc/Cygwin/rxvt-<ver>.README}.
|
||||
|
||||
@subsection info error "dir: No such file or directory"
|
||||
|
||||
Cygwin packages install their info documentation in the
|
||||
@code{/usr/share/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/share/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/share/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.
|
|
@ -1,6 +0,0 @@
|
|||
@chapter Question and Answers
|
||||
|
||||
@include how-resources.texinfo
|
||||
@include how-using.texinfo
|
||||
@include how-api.texinfo
|
||||
@include how-programming.texinfo
|
|
@ -1,374 +0,0 @@
|
|||
@chapter Installation Instructions
|
||||
@section Contents
|
||||
|
||||
There is only one recommended way to install Cygwin, which is to use the GUI
|
||||
installer ``Cygwin Setup''. It is flexible and easy to use.
|
||||
You can pick and choose the packages you wish to install, and update
|
||||
them individually. Full source code is available for all packages and
|
||||
tools. More information on using Cygwin Setup may be found at
|
||||
@file{http://cygwin.com/cygwin-ug-net/setup-net.html}.
|
||||
|
||||
If you do it any other way, you're on your own! That said, keep in mind
|
||||
that the GUI installer is a "work in progress", so there might be a few
|
||||
difficulties, especially if you are behind a firewall or have other
|
||||
specific requirements. If something doesn't work right for you, and
|
||||
it's not covered here or in the latest development snapshot at
|
||||
@file{http://cygwin.com/setup/}, then by all means report it to the
|
||||
mailing list.
|
||||
|
||||
For a searchable list of packages that can be installed with Cygwin,
|
||||
see @file{http://cygwin.com/packages/}.
|
||||
|
||||
@section Installation using ``Cygwin Setup''
|
||||
|
||||
The Cygwin Setup program is the @emph{only} recommended way to install
|
||||
Cygwin.
|
||||
|
||||
@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 @samp{C:\} (the root directory on the system drive) for
|
||||
your Cygwin root. If you do, then critical Cygwin system directories
|
||||
like @samp{etc}, @samp{lib} and @samp{bin} could easily be corrupted by
|
||||
other (non-Cygwin) applications or packages that use @samp{\etc},
|
||||
@samp{\lib} or @samp{\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 @samp{C:\}, but we believe those are gone
|
||||
now.)
|
||||
|
||||
@subsection Can I use Cygwin Setup to get old versions of packages (like gcc-2.95)?
|
||||
|
||||
Cygwin Setup can be used to install any packages that are on a
|
||||
Cygwin mirror, which usually includes one version previous to the
|
||||
current one. The complete list may be searched at
|
||||
@file{http://cygwin.com/packages/}. There is no complete archive of
|
||||
older packages. If you have a problem with the current version of
|
||||
a Cygwin package, please report it to the mailing list using the
|
||||
guidelines at @file{http://cygwin.com/problems.html}.
|
||||
|
||||
That said, if you really need an older package, you may be able to find
|
||||
an outdated or archival mirror by searching the web for an old package
|
||||
version (for example, @samp{gcc2-2.95.3-10-src.tar.bz2}), but keep in
|
||||
mind that this older version will not be supported by the mailing list
|
||||
and that installing the older version will not help improve Cygwin.
|
||||
|
||||
@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), or your entire hard
|
||||
disk if you are paranoid.
|
||||
|
||||
@end enumerate
|
||||
|
||||
This should be safe, but only if Cygwin Setup is not substituted by
|
||||
something malicious, and no mirror has been compromised.
|
||||
|
||||
@subsection What packages should I download? Where are 'make', 'gcc', 'vi', etc?
|
||||
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. Text editors can be found under ``Editors''.
|
||||
|
||||
@subsection How do I just get everything?
|
||||
|
||||
Long ago, the default was to install everything, much to the
|
||||
irritation of most users. Now the default is to install only a basic
|
||||
core of packages. Cygwin Setup is designed to make it easy to browse
|
||||
categories and select what you want to install or omit from those
|
||||
categories. It's also easy to install everything:
|
||||
|
||||
@enumerate
|
||||
|
||||
@item At the ``Select Packages'' screen, in ``Categories'' view, at the line
|
||||
marked ``All'', click on the word ``default'' so that it changes to
|
||||
``install''. (Be patient, there is some computing to do at this step.
|
||||
It may take a second or two to register the change.) This tells Setup
|
||||
to install @emph{everything}, not just what it thinks you should have
|
||||
by default.
|
||||
|
||||
@item Now click on the ``View'' button (twice) until you get the
|
||||
``Partial'' view. This shows exactly which packages are about to be
|
||||
downloaded and installed.
|
||||
|
||||
@end enumerate
|
||||
|
||||
This procedure only works for packages that are currently available.
|
||||
There is no way to tell Cygwin Setup to install all packages by
|
||||
default from now on. As new packages become available that would not
|
||||
be installed by default, you have to repeat the above procedure to get
|
||||
them.
|
||||
|
||||
In general, a better method (in my opinion), is to:
|
||||
|
||||
@enumerate
|
||||
|
||||
@item First download & install all packages that would normally be
|
||||
installed by default. This includes fundamental packages and any
|
||||
updates to what you have already installed. Then...
|
||||
|
||||
@item Run Cygwin Setup again, and apply the above technique to get all
|
||||
new packages that would not be installed by default. You can check
|
||||
the list in the Partial View before proceeding, in case there's
|
||||
something you really @emph{don't} want.
|
||||
|
||||
@item In the latest version of Cygwin Setup, if you click the ``View''
|
||||
button (twice) more, it shows packages not currently installed. You
|
||||
ought to check whether you @emph{really} want to install everything!
|
||||
|
||||
@end enumerate
|
||||
|
||||
@subsection How much disk space does Cygwin require?
|
||||
|
||||
That depends, obviously, on what you've chosen to download and
|
||||
install. A full installation today is probably larger than 800MB
|
||||
installed, not including the package archives themselves nor 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 subdirectories there. These
|
||||
directories will have very weird looking names, being encoded with
|
||||
their URLs.
|
||||
|
||||
@subsection What if setup fails?
|
||||
|
||||
First, make sure that you are using the latest version of Cygwin
|
||||
Setup. The latest version is always available from the 'Install
|
||||
Cygwin now' link on the Cygwin Home Page at @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. Something similar could be the cause of a
|
||||
download site not 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 @code{/var/log}
|
||||
(@code{C:\cygwin\var\log} 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 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.
|
||||
|
||||
On Windows NT/2000/XP you have two choices:
|
||||
@enumerate
|
||||
|
||||
@item You can rename the user in the Windows User Manager GUI and then
|
||||
run mkpasswd.
|
||||
|
||||
@item You can simply edit the /etc/passwd file and change the Cygwin user name
|
||||
(first field). It's also a good idea to avoid spaces in the home directory.
|
||||
|
||||
@end enumerate
|
||||
|
||||
On Windows 95/98/ME you can create a new user and run mkpasswd,
|
||||
or you can delete the offending entry from /etc/passwd.
|
||||
Cygwin will then use the name in the default entry with uid 500.
|
||||
|
||||
@subsection My @samp{HOME} environment variable is not what I want.
|
||||
|
||||
When starting Cygwin from Windows, @samp{HOME} is determined as follows
|
||||
in order of decreasing priority:
|
||||
|
||||
@enumerate
|
||||
|
||||
@item @samp{HOME} from the Windows environment, translated to POSIX form.
|
||||
|
||||
@item The entry in /etc/passwd
|
||||
|
||||
@item @samp{HOMEDRIVE} and @samp{HOMEPATH} from the Windows environment
|
||||
|
||||
@item /
|
||||
|
||||
@end enumerate
|
||||
|
||||
When using Cygwin from the network (telnet, ssh,...), @samp{HOME} is set
|
||||
from /etc/passwd.
|
||||
|
||||
If your @samp{HOME} is set to a value such as /cygdrive/c, it is likely
|
||||
that it was set in Windows. Start a DOS Command Window and type
|
||||
"set HOME" to verify if this is the case.
|
||||
|
||||
Access to shared drives is often restricted when starting from the network,
|
||||
thus Domain users may wish to have a different @samp{HOME} in the
|
||||
Windows environment (on shared drive) than in /etc/passwd (on local drive).
|
||||
Note that ssh only considers /etc/passwd, disregarding @samp{HOME}.
|
||||
|
||||
@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. The recommended method to remove all
|
||||
of Cygwin is as follows:
|
||||
|
||||
@enumerate
|
||||
|
||||
@item Remove all Cygwin services. If a service is currently running, it must
|
||||
first be stopped with @samp{cygrunsrv -E name}, where @samp{name}
|
||||
is the name of the service. Then use @samp{cygrunsrv -R name} to uninstall the
|
||||
service from the registry. Repeat this for all services that you installed.
|
||||
Common services that might have been installed are @code{sshd}, @code{cron},
|
||||
@code{cygserver}, @code{inetd}, @code{apache}, and so on.
|
||||
|
||||
@item Stop the X11 server if it is running, and terminate any Cygwin programs
|
||||
that might be running in the background. Remove all mount information by typing
|
||||
@samp{umount -A} and then exit the command prompt and ensure that no Cygwin
|
||||
processes remain. Note: If you want to save your mount points for a later
|
||||
reinstall, first save the output of @samp{mount -m} as described at
|
||||
@file{http://cygwin.com/cygwin-ug-net/using-utils.html#mount}.
|
||||
|
||||
@item Delete the Cygwin root folder and all subfolders. If you get an error
|
||||
that an object is in use, then ensure that you've stopped all services and
|
||||
closed all Cygwin programs. If you get a 'Permission Denied' error then you
|
||||
will need to modify the permissions and/or ownership of the files or folders
|
||||
that are causing the error. For example, sometimes files used by system
|
||||
services end up owned by the SYSTEM account and not writable by regular users.
|
||||
|
||||
The quickest way to delete the entire tree if you run into this problem is to
|
||||
change the ownership of all files and folders to your account. To do this in
|
||||
Windows Explorer, right click on the root Cygwin folder, choose Properties, then
|
||||
the Security tab. Select Advanced, then go to the Owner tab and make sure your
|
||||
account is listed as the owner. Select the 'Replace owner on subcontainers and
|
||||
objects' checkbox and press Ok. After Explorer applies the changes you should
|
||||
be able to delete the entire tree in one operation. Note that you can also
|
||||
achieve this in Cygwin by typing @samp{chown -R user /} or by using other tools
|
||||
such as CACLS.EXE.
|
||||
|
||||
@item Delete the Cygwin shortcuts on the Desktop and Start Menu, and anything
|
||||
left by setup.exe in the download directory. However, if you plan to reinstall
|
||||
Cygwin it's a good idea to keep your setup.exe download directory since you can
|
||||
reinstall the packages left in its cache without redownloading them.
|
||||
|
||||
@item If you added Cygwin to your system path, you should remove it unless you
|
||||
plan to reinstall Cygwin to the same location. Similarly, if you set your
|
||||
CYGWIN environment variable system-wide and don't plan to reinstall, you should
|
||||
remove it.
|
||||
|
||||
@item Finally, if you want to be thorough you can delete the registry tree
|
||||
@samp{Software\Cygnus Solutions} under @code{HKEY_LOCAL_MACHINE} and/or
|
||||
@code{HKEY_CURRENT_USER}. However, if you followed the directions above you
|
||||
will have already removed all the mount information which is typically the only
|
||||
thing stored in the registry.
|
||||
|
||||
@end enumerate
|
||||
|
||||
@subsection How do I install snapshots?
|
||||
|
||||
First, are you sure you want to do this? 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.
|
||||
|
||||
Before installing a snapshot, you must first Close @strong{all} Cygwin
|
||||
applications, including shells and services (e.g. inetd, sshd), before
|
||||
updating @code{cygwin1.dll}. You may have to restart Windows to clear
|
||||
the DLL from memory.
|
||||
|
||||
You cannot use Setup to install a snapshot.
|
||||
|
||||
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.
|
||||
|
||||
@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 above), 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
|
||||
|
||||
@subsection Can Cygwin Setup maintain a ``mirror''?
|
||||
|
||||
NO. Cygwin Setup cannot do this for you. Use a tool designed for
|
||||
this purpose. See @file{http://rsync.samba.org/},
|
||||
@file{http://wget.sunsite.dk/} for utilities that can do this for you.
|
||||
For more information on setting up a custom Cygwin package server, see
|
||||
the Cygwin Setup homepage at
|
||||
@file{http://sources.redhat.com/cygwin-apps/setup.html}.
|
||||
|
||||
@subsection How can I make my own portable Cygwin on CD?
|
||||
|
||||
While some users have successfully done this, for example Indiana
|
||||
University's XLiveCD @file{http://xlivecd.indiana.edu/}, there is no
|
||||
easy way to do it. Full instructions for constructing a porttable Cygwin
|
||||
on CD by hand can be found on the mailing list at
|
||||
@file{http://www.cygwin.com/ml/cygwin/2003-07/msg01117.html}. (Thanks
|
||||
to fergus at bonhard dot uklinux dot net for these instructions.)
|
||||
|
||||
@subsection How do I save, restore, delete, or modify the Cygwin information stored in the registry?
|
||||
|
||||
Currently Cygwin stores its mount table information in the registry. It
|
||||
is recommended that you use the @samp{mount} and @samp{umount} commands
|
||||
to manipulate the mount information instead of directly modifying the
|
||||
registry.
|
||||
|
||||
To save the mount information to a file for later restoration, use
|
||||
@samp{mount -m > mounts.bat} To remove all mount information use
|
||||
@samp{umount -A}. To reincorporate saved mount information just run the
|
||||
batch file. For more information on using @samp{mount}, see
|
||||
@file{http://cygwin.com/cygwin-ug-net/using-utils.html#mount}.
|
|
@ -1,19 +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
|
||||
|
||||
@include calls.texinfo
|
|
@ -1,19 +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.
|
||||
|
|
@ -1,87 +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 home 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 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 for 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 visit
|
||||
@file{http://www.redhat.com/software/tools/cygwin/} 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.
|
||||
|
||||
@section What version of Cygwin @emph{is} this, anyway?
|
||||
|
||||
To find the version of the Cygwin DLL installed, you can use
|
||||
@file{uname} as on Linux or @file{cygcheck}. Refer to each command's
|
||||
@samp{--help} output and the @uref{http://cygwin.com/cygwin-ug-net/,
|
||||
Cygwin User's Guide} for more information.
|
||||
|
||||
If you are looking for the version number for the whole Cygwin
|
||||
release, there is none. Each package in the Cygwin release has its own
|
||||
version. The packages in Cygwin are continually improving, thanks to
|
||||
the efforts of net volunteers who maintain the Cygwin binary ports.
|
||||
Each package has its own version numbers and its own release process.
|
||||
|
||||
So, how do you get the most up-to-date version of Cygwin? Easy. Just
|
||||
download the Cygwin Setup program from
|
||||
@uref{http://cygwin.com/setup.exe}. This program will handle the task
|
||||
of updating the packages on your system to the latest version. For
|
||||
more information about using Cygwin's @file{setup.exe}, see
|
||||
@uref{http://cygwin.com/cygwin-ug-net/setup-net.html, Setting Up Cygwin}
|
||||
in the Cygwin User's Guide.
|
|
@ -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!
|
Loading…
Reference in New Issue