RFU: mercurial 1.7-1 (Python 2.6)
New upstream release: wget -r --no-host-directories --cut-dirs=3 \ http://cante.net/~jaalto/tmp/cygwin/mercurial/mercurial-1.7-1-src.tar.bz2 \ http://cante.net/~jaalto/tmp/cygwin/mercurial/mercurial-1.7-1.tar.bz2 \ http://cante.net/~jaalto/tmp/cygwin/mercurial/setup.hint Jari
RFU: bzr 2.2.1-1
New upstream release: wget -r --no-host-directories --cut-dirs=3 \ http://cante.net/~jaalto/tmp/cygwin/bzr/bzr-2.2.1-1-src.tar.bz2 \ http://cante.net/~jaalto/tmp/cygwin/bzr/bzr-2.2.1-1.tar.bz2 \ http://cante.net/~jaalto/tmp/cygwin/bzr/setup.hint Jari
Re: 1.7.7: Mercurial 1.5.4 and Python 2.6.5 conflicts?
Alex Royo aroyofla-re5jqeeqqe8avxtiumw...@public.gmane.org writes: Hello list, I updated Cygwin version 1.7.7, Python version 2.6.5 and Mercurial version 1.5.4 (the latest versions packaged). --- /usr/lib/python2.6/site-package/mercurial/demandimport.py:85: DeprecationWarning: the sha module is deprecated, us the hashlib module instead return _origimport(name, globals, locals, fromlist) abort: No module named _md5! --- I guess it is packaged for the Cygwin versions of Mercurial that conflicts with the packaged versions of Python. Yes, New mercual version will soon hit the mirrors. Thanks, Jari
Re: Xterm Title
Hi Ajay, On Mon, Nov 1, 2010 at 5:59 AM, Ajay Jain wrote: Hi, I want my Xterm to display a constant title say mercury. So I use: Xterm -T mercury. Further, I have placed the following line in my .Xresources: xterm*allowTitleOps: 0. From my .vnc/xstartup, I also do: xrdb -merge ~/.Xresources. Even then my Xterm title changes to logn...@hostname:pwd. I want to avoid it and replace this with a fixed title. Could you suggest something? After all, what is it that is going wrong? I am also trying to set PROMT_COMMAND, without any success. Check your prompt ($PS1) for xterm title escape sequences (http://www.faqs.org/docs/Linux-mini/Xterm-Title.html), like \[\e]0; ... stuff ... \a\] -- GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++ Life is complex, with real and imaginary parts. Ok, it boots. Which means it must be bug-free and perfect. -- Linus Torvalds People disagree with me. I just ignore them. -- Linus Torvalds -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/
Quick Question About GDI
Hello, I was searching online to find more info about GDI and I came across your information. Can you tell me, are you still involved with GDI? If you are, how are things going for you? Please let me know. Sincerely, Aaron Tyler -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/
Quick Question About GDI
Hello, I was searching online to find more info about GDI and I came across your information. Can you tell me, are you still involved with GDI? If you are, how are things going for you? Please let me know. Sincerely, Aaron Tyler -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/
Quick Question About GDI
Hello, I was searching online to find more info about GDI and I came across your information. Can you tell me, are you still involved with GDI? If you are, how are things going for you? Please let me know. Sincerely, Aaron Tyler -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/
Quick Question About GDI
Hello, I was searching online to find more info about GDI and I came across your information. Can you tell me, are you still involved with GDI? If you are, how are things going for you? Please let me know. Sincerely, Aaron Tyler -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/
Quick Question About GDI
Hello, I was searching online to find more info about GDI and I came across your information. Can you tell me, are you still involved with GDI? If you are, how are things going for you? Please let me know. Sincerely, Aaron Tyler -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/
[PATCH] define _PATH_VARTMP
Another glibc-ish paths.h define. Patch attached. Yaakov 2010-11-02 Yaakov Selkowitz yselkow...@users.sourceforge.net * include/paths.h (_PATH_VARTMP): Define. Index: include/paths.h === RCS file: /cvs/src/src/winsup/cygwin/include/paths.h,v retrieving revision 1.5 diff -u -r1.5 paths.h --- include/paths.h 2 Feb 2010 11:17:54 - 1.5 +++ include/paths.h 2 Nov 2010 16:16:55 - @@ -26,6 +26,7 @@ #define _PATH_TTY /dev/tty #define _PATH_UTMP /var/run/utmp #define _PATH_VARRUN /var/run/ +#define _PATH_VARTMP /var/tmp/ #define _PATH_VI/bin/vi #define _PATH_WTMP /var/log/wtmp
Re: [PATCH] define _PATH_VARTMP
On Tue, Nov 02, 2010 at 12:06:22PM -0500, Yaakov (Cygwin/X) wrote: Another glibc-ish paths.h define. Patch attached. Looks good. Please apply. I think it's getting to be time for a 1.7.8 release... cgf
Re: Cron jobs don't run
On Mon, 01 Nov 2010 21:14:38 -0400 Pierre A. Humblet pierre.humb...@ieee.org wrote: At 04:59 PM 11/1/2010, Janos Dohanics wrote: I'm trying to set up cron jobs in a new cygwin installation. The cron service is running, but jobs are not executed. I ran cron_diagnose.sh which says The SYSTEM user cannot access the mount point /usr/bin. mount shows: On cygwin 1.5: C:~: fgrep -1 'access' /bin/cron_diagnose.sh | fgrep cannot echo The SYSTEM user cannot access the mount point ${mnt_point}. On cygwin 1.7 C:~: fgrep -1 'access' /bin/cron_diagnose.sh | fgrep cannot So you are using an old version of cron_diagnose. To debug, start with a crontab that executes a simple command such as date /tmp/cron.out every minute. You can use cronevents to view the log. If you need more help, run cronbug and send it as an attachment. Pierre Pierre, Thank you for your help. Before I had the chance to read your e-mail though, I have reinstalled cygwin and cron works now. -- Janos Dohanics -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: sometimes ~ and $HOME contain different values
Hi Giorgos, My ~ and $HOME were never the same until I modified /etc/passwd to point to the directory I wanted to use. (I think there's something in the User's Guide to this effect, though I got it from the mailing list.) HTH, -- Lee Maschmeyer Wayne State University Computing Center 5925 Woodward, #281 Detroit MI 48202 USA -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: modification time disorder: touch-related?
On Mon, 1 Nov 2010 07:26:42 -0500, Kenneth Nellis wrote: Not answered yet: Do all the files involved--source and object--reside on the same computer as that performing the build? If not, you may still have time sync problems. Yes, all files involved reside on the same computer as that performing the build. -- rmd -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: [patch 0/8] Bash improvements
On Tue, Nov 02, 2010 at 12:01:16PM +0100, Gary wrote: Dan wrote: This is a series of patches that tries to improve the user experience in Cygwin. Love both of these, and have wanted somethnig like them for ages :) I hope they get adopted! I can't see attachments and those e-mails are empty... It's only me? -- Huella de clave primaria: 0FDA C36F F110 54F4 D42B D0EB 617D 396C 448B 31EB signature.asc Description: Digital signature
Re: [patch 0/8] Bash improvements
On Tue, Nov 02, 2010 at 12:20:24PM -0700, Steven Monai wrote: On 2010/11/02 12:02 PM, David Sastre wrote: On Tue, Nov 02, 2010 at 12:01:16PM +0100, Gary wrote: Dan wrote: This is a series of patches that tries to improve the user experience in Cygwin. Love both of these, and have wanted somethnig like them for ages :) I hope they get adopted! I can't see attachments and those e-mails are empty... It's only me? It's not only you. I didn't see any attachments either. Dan, Could you please resend the patches? -- Huella de clave primaria: 0FDA C36F F110 54F4 D42B D0EB 617D 396C 448B 31EB signature.asc Description: Digital signature
Re: Is part of gcc3 missing?
On 11/2/2010 3:57 PM, Lee Maschmeyer wrote: I hope it's not providing too much information, but I've attached (yes, really :-) not only cygcheck -svr but also the typescript of the make session and config.log. Note that I'm using gcc3 because 4 has never worked. I think there was a packaging bug that caused set-gcc-default-3.sh and set-gcc-default-4.sh to be not executable. Try chmod 755 /usr/bin/set-gcc-default-* Ken -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: Is part of gcc3 missing?
chmod 755 /usr/bin/set-gcc-default-* Yes, I did that ages ago. -- Lee Maschmeyer Wayne State University Computing Center 5925 Woodward, #281 Detroit MI 48202 USA -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 0/8] Bash improvements resent
This is a series of patches that tries to improve the user experience in Cygwin. It adds three new features: 1. EXECIGNORE EXECIGNORE is a colon-separated list of glob patterns. If a file's full path matches one of these, it is never considered executable for completion purposes. EXECIGNORE=*.dll is a good start. 2. completion_strip_exe completion_strip_exe is a new shell option. When enabled, bash tries to use the short name of a program instead of its longer .-exe-suffixed one. With this on, pintab completes to ping. 3. dg-dwim (C-x C-w) This is a new readline command that toggles the shell word before point between Unix and Windows path syntax, with a heuristic to detect unquoted Windows paths. Try typing notepad ~/.profile, then hit C-x C-w The command line will be changed to notepad 'C:\Users\username\conf\dot-profile' If you hit C-x C-w again, you'll see notepad '/c/Users/dancol/.profile' It also works with glob patterns; try it out. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 1/8] Add EXECIGNORE special variable
Index: bash-3.2/findcmd.c === --- bash-3.2.orig/findcmd.c +++ bash-3.2/findcmd.c @@ -44,6 +44,8 @@ #include hashcmd.h #include findcmd.h /* matching prototypes and declarations */ +#include glob/strmatch.h + extern int posixly_correct; /* Static functions defined and used in this file. */ @@ -72,6 +74,40 @@ int check_hashed_filenames; containing the file of interest. */ int dot_found_in_search = 0; +static struct ignorevar execignore = +{ + EXECIGNORE, + (struct ign *)0, + 0, + (char *)0, + (sh_iv_item_func_t *)0, +}; + +void +setup_exec_ignore (varname) + char *varname; +{ + setup_ignore_patterns (execignore); +} + +/* Return whether we should never consider file executable + * even if the system tells us it is. */ +static int +is_on_exec_blacklist (name) +char *name; +{ + struct ign *p; + int flags = FNM_EXTMATCH | FNM_CASEFOLD; + + for (p = execignore.ignores; p p-val; p++) +{ + if (strmatch (p-val, (char *)name, flags) != FNM_NOMATCH) + return (1); +} + + return (0); +} + /* Return some flags based on information about this file. The EXISTS bit is non-zero if the file is found. The EXECABLE bit is non-zero the file is executble. @@ -98,7 +134,7 @@ file_status (name) /* We have to use access(2) to determine access because AFS does not support Unix file system semantics. This may produce wrong answers for non-AFS files when ruid != euid. I hate AFS. */ - if (access (name, X_OK) == 0) + if (is_on_exec_blacklist (name) == 0 access (name, X_OK) == 0) r |= FS_EXECABLE; if (access (name, R_OK) == 0) r |= FS_READABLE; @@ -147,6 +183,9 @@ file_status (name) r |= FS_READABLE; } + if (is_on_exec_blacklist (name)) +r = ~FS_EXECABLE; + return r; #endif /* !AFS */ } Index: bash-3.2/findcmd.h === --- bash-3.2.orig/findcmd.h +++ bash-3.2/findcmd.h @@ -31,5 +31,6 @@ extern char *find_user_command __P((cons extern char *find_path_file __P((const char *)); extern char *search_for_command __P((const char *)); extern char *user_command_matches __P((const char *, int, int)); +extern void setup_exec_ignore __P((char *)); #endif /* _FINDCMD_H_ */ Index: bash-3.2/pathexp.h === --- bash-3.2.orig/pathexp.h +++ bash-3.2/pathexp.h @@ -68,7 +68,7 @@ extern char *quote_globbing_chars __P((c extern char **shell_glob_filename __P((const char *)); /* Filename completion ignore. Used to implement the fignore facility of - tcsh and GLOBIGNORE (like ksh-93 FIGNORE). + tcsh and GLOBIGNORE (like ksh-93 FIGNORE) and EXECIGNORE. It is passed a NULL-terminated array of (char *)'s that must be free()'d if they are deleted. The first element (names[0]) is the @@ -84,7 +84,7 @@ struct ign { typedef int sh_iv_item_func_t __P((struct ign *)); struct ignorevar { - char *varname; /* FIGNORE or GLOBIGNORE */ + char *varname; /* FIGNORE or GLOBIGNORE or EXECIGNORE */ struct ign *ignores; /* Store the ignore strings here */ int num_ignores; /* How many are there? */ char *last_ignoreval;/* Last value of variable - cached for speed */ Index: bash-3.2/variables.c === --- bash-3.2.orig/variables.c +++ bash-3.2/variables.c @@ -3749,6 +3749,8 @@ static struct name_and_function special_ { GLOBIGNORE, sv_globignore }, + { EXECIGNORE, sv_execignore }, + #if defined (HISTORY) { HISTCONTROL, sv_history_control }, { HISTFILESIZE, sv_histsize }, @@ -3914,6 +3916,14 @@ sv_globignore (name) setup_glob_ignore (name); } +/* What to do when EXECIGNORE changes. */ +void +sv_execignore (name) +char *name; +{ + setup_exec_ignore (name); +} + #if defined (READLINE) void sv_comp_wordbreaks (name) Index: bash-3.2/variables.h === --- bash-3.2.orig/variables.h +++ bash-3.2/variables.h @@ -331,6 +331,7 @@ extern void sv_ifs __P((char *)); extern void sv_path __P((char *)); extern void sv_mail __P((char *)); extern void sv_globignore __P((char *)); +extern void sv_execignore __P((char *)); extern void sv_ignoreeof __P((char *)); extern void sv_strict_posix __P((char *)); extern void sv_optind __P((char *)); -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 2/8] Document EXECIGNORE in Cygwin readme
Index: bash-3.2/CYGWIN-PATCHES/bash.README === --- bash-3.2.orig/CYGWIN-PATCHES/bash.README +++ bash-3.2/CYGWIN-PATCHES/bash.README @@ -55,7 +55,14 @@ is on a binary mount with igncr disabled would be text mounts with igncr disabled and no \r in the underlying file. Next would be binary mounts with igncr enabled. And the slowest that bash will operate is on text mounts with igncr enabled. -8. If you don't like how bash behaves, then propose a patch, rather than +8. This version of bash has a new special variable EXECIGNORE. It is a +colon-separated list of extended glob patterns. If a file's full path +matches one of these, it is no considered executable for the purposes +of completion and PATH searching. The `test', `[', and `[[' builtins +are not affected. Use this variable to prevent non-executables +uselessly appearing in completion lists; EXECIGNORE=*.dll is quite +useful. +9. If you don't like how bash behaves, then propose a patch, rather than proposing idle ideas. This turn of events has already been talked to death on the mailing lists by people with many ideas, but few patches. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 3/8] Document execignore in bash
Index: bash-3.2/doc/bash.1 === --- bash-3.2.orig/doc/bash.1 +++ bash-3.2/doc/bash.1 @@ -1405,6 +1405,14 @@ subsequently reset. Expands to the effective user ID of the current user, initialized at shell startup. This variable is readonly. .TP +.B EXECIGNORE +A colon-separated list of extended glob (see \fBPattern Matching\fP) +patterns. Files with full paths matching one of these patterns are not +considered executable for the purposes of completion and PATH +searching, but the \fB[\fP, \fB[[\fP, and \fBtest\fP builtins are not +affected. Use this variable to deal with systems that set the +executable bit on files that are not actually executable. +.TP .B FUNCNAME An array variable containing the names of all shell functions currently in the execution call stack. Index: bash-3.2/doc/bashref.texi === --- bash-3.2.orig/doc/bashref.texi +++ bash-3.2/doc/bashref.texi @@ -4464,6 +4464,14 @@ emacs shell buffer and disables line edi The numeric effective user id of the current user. This variable is readonly. +...@item EXECIGNORE +A colon-separated list of extended glob ((@pxref{Pattern Matching}) +patterns. Files with full paths matching one of these patterns are not +considered executable for the purposes of completion and PATH +searching, but the @code{[}, @code{[[}, and @code{test} builtins are +not affected. Use this variable to deal with systems that set the +executable bit on files that are not actually executable. + @item FCEDIT The editor used as a default by the @option{-e} option to the @code{fc} builtin command. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 4/8] Add option completion_strip_exe for short names
Index: bash-3.2/bashline.c === --- bash-3.2.orig/bashline.c +++ bash-3.2/bashline.c @@ -220,6 +220,13 @@ int no_empty_command_completion; are the only possible matches, even if FIGNORE says to. */ int force_fignore = 1; +#if __CYGWIN__ +/* When completion_strip_exe is true and completion generates a + foo.exe file, check whether a short foo pseudo-hardlink to this + file exists, and if so, use it instead. */ +int completion_strip_exe = 1; +#endif /* __CYGWIN__ */ + static char *bash_completer_word_break_characters = \t\n\'@=;|(:; static char *bash_nohostname_word_break_characters = \t\n\'=;|(:; /* )) */ @@ -1540,6 +1547,30 @@ command_word_completion_function (hint_t if (match (searching_path ? executable_file (val) : executable_or_directory (val))) #endif { + +#if __CYGWIN__ + if (completion_strip_exe) +{ + /* val is the full name of the file we're examining; + temp is its basename */ + int val_len = strlen(val); + + if (val_len 4 strcasecmp(val[val_len - 4], .exe) == 0) +{ + char* candidate = xmalloc(val_len - 4 + 1); + memcpy(candidate, val, val_len - 4); + candidate[val_len - 4] = '\0'; + + if (same_file (val, candidate, NULL, NULL)) +{ + temp[strlen(temp) - 4] = '\0'; +} + + free (candidate); +} +} +#endif /* __CYGWIN__ */ + free (val); val = ; /* So it won't be NULL. */ return (temp); Index: bash-3.2/builtins/set.def === --- bash-3.2.orig/builtins/set.def +++ bash-3.2/builtins/set.def @@ -59,6 +59,7 @@ extern int no_line_editing; #endif /* READLINE */ #if __CYGWIN__ extern int igncr; +extern int completion_strip_exe; static int set_minus_o_option_maybe (int, const char *, int); # define INTERACTIVE_ONLY ,1 #else /* ! __CYGWIN__ */ @@ -96,6 +97,9 @@ $SHORT_DOC set [--abefhkmnptuvxBCHP] [-o #endif #if __CYGWIN__ igncron cygwin, ignore \r in line endings +completion_strip_exe + on cygwin, prefer short executable names + when available #endif ignoreeofthe shell will not exit upon reading EOF interactive-comments @@ -212,6 +216,7 @@ struct { #endif #if __CYGWIN__ { igncr, '\0', igncr, NULL, (setopt_get_func_t *)NULL }, + { completion_strip_exe, '\0', completion_strip_exe, (setopt_get_func_t *)NULL }, #endif { ignoreeof, '\0', ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, { interactive-comments, '\0', interactive_comments, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, Index: bash-3.2/builtins/shopt.def === --- bash-3.2.orig/builtins/shopt.def +++ bash-3.2/builtins/shopt.def @@ -71,6 +71,7 @@ extern int gnu_error_format; #if __CYGWIN__ extern int igncr; +extern int completion_strip_exe; #endif #if defined (EXTENDED_GLOB) @@ -155,6 +156,7 @@ static struct { { huponexit, hup_on_exit, (shopt_set_func_t *)NULL }, #if __CYGWIN__ { igncr, igncr, (shopt_set_func_t *)NULL }, + { completion_strip_exe, completion_strip_exe, (shopt_set_func_t *)NULL }, #endif { interactive_comments, interactive_comments, set_shellopts_after_change }, #if defined (HISTORY) -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 5/8] Document completion_strip_exe in Cygwin readme
Index: bash-3.2/CYGWIN-PATCHES/bash.README === --- bash-3.2.orig/CYGWIN-PATCHES/bash.README +++ bash-3.2/CYGWIN-PATCHES/bash.README @@ -62,7 +62,15 @@ of completion and PATH searching. The `t are not affected. Use this variable to prevent non-executables uselessly appearing in completion lists; EXECIGNORE=*.dll is quite useful. -9. If you don't like how bash behaves, then propose a patch, rather than +9. This version of bash has a Cygwin-specific shell option +completion_strip_exe. It is enabled by default. With this option on, +whenever bash sees a file foo.exe when trying to complete a command +name, it checks whether Cygwin has generated a pseudo-hardlinked foo +short name for the file and uses that instead. The end result is that +the names of native Windows programs are completed normally, resulting +in a more Unix-like experience overall. This substitution does not +occur if foo.exe and foo are, in fact, different files. +10. If you don't like how bash behaves, then propose a patch, rather than proposing idle ideas. This turn of events has already been talked to death on the mailing lists by people with many ideas, but few patches. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 6/8] Document completion_strip_exe in bash
Index: bash-3.2/doc/bash.1 === --- bash-3.2.orig/doc/bash.1 +++ bash-3.2/doc/bash.1 @@ -7991,6 +7991,11 @@ If set, changes its behavior to that of version 3.1 with respect to quoted arguments to the conditional command's =~ operator. .TP 8 +.B completion_strip_exe +If set, whenever Bash sees a `foo.exe' while trying to complete a +command, it checks whether a file called `foo' is a hardlink to the +former and, if so, uses the short name. +.TP 8 .B dotglob If set, .B bash Index: bash-3.2/doc/bashref.texi === --- bash-3.2.orig/doc/bashref.texi +++ bash-3.2/doc/bashref.texi @@ -3603,6 +3603,11 @@ If set, Bash changes its behavior to that of version 3.1 with respect to quoted arguments to the conditional command's =~ operator. +...@item completion_strip_exe +If set, whenever Bash sees a ``foo.exe'' while trying to complete a +command, it checks whether a file called ``foo'' is a hardlink to the +former and, if so, uses the short name. + @item dotglob If set, Bash includes filenames beginning with a `.' in the results of filename expansion. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
[patch 7/8] Backport shellword movement functions from bash 4.1
Index: bash-3.2/bashline.c === --- bash-3.2.orig/bashline.c +++ bash-3.2/bashline.c @@ -50,6 +50,8 @@ #include execute_cmd.h #include findcmd.h #include pathexp.h +#include shmbutil.h + #include builtins/common.h #include readline/rlconf.h #include readline/readline.h @@ -99,6 +101,11 @@ static int alias_expand_line __P((int, i static int history_and_alias_expand_line __P((int, int)); #endif +static int bash_forward_shellword __P((int, int)); +static int bash_backward_shellword __P((int, int)); +static int bash_kill_shellword __P((int, int)); +static int bash_backward_kill_shellword __P((int, int)); + /* Helper functions for Readline. */ static void bash_directory_expansion __P((char **)); static int bash_directory_completion_hook __P((char **)); @@ -360,6 +367,11 @@ initialize_readline () rl_add_defun (magic-space, tcsh_magic_space, -1); #endif + rl_add_defun (shell-forward-word, bash_forward_shellword, -1); + rl_add_defun (shell-backward-word, bash_backward_shellword, -1); + rl_add_defun (shell-kill-word, bash_kill_shellword, -1); + rl_add_defun (shell-backward-kill-word, bash_backward_kill_shellword, -1); + #ifdef ALIAS rl_add_defun (alias-expand-line, alias_expand_line, -1); # ifdef BANG_HISTORY @@ -912,6 +924,202 @@ posix_edit_macros (count, key) } #endif +/* Bindable commands that move `shell-words': that is, sequences of + non-unquoted-metacharacters. */ + +#define WORDDELIM(c) (shellmeta(c) || shellblank(c)) + +static int +bash_forward_shellword (count, key) + int count, key; +{ + size_t slen; + int sindex, c, p; + DECLARE_MBSTATE; + + if (count 0) +return (bash_backward_shellword (-count, key)); + + /* The tricky part of this is deciding whether or not the first character + we're on is an unquoted metacharacter. Not completely handled yet. */ + /* XXX - need to test this stuff with backslash-escaped shell + metacharacters and unclosed single- and double-quoted strings. */ + + p = rl_point; + slen = rl_end; + + while (count) +{ + if (p == rl_end) + { + rl_point = rl_end; + return 0; + } + + /* Move forward until we hit a non-metacharacter. */ + while (p rl_end (c = rl_line_buffer[p]) WORDDELIM (c)) + { + switch (c) + { + default: + ADVANCE_CHAR (rl_line_buffer, slen, p); + continue; /* straight back to loop, don't increment p */ + case '\\': + if (p rl_end rl_line_buffer[p]) + ADVANCE_CHAR (rl_line_buffer, slen, p); + break; + case '\'': + p = skip_to_delim41 (rl_line_buffer, ++p, ', SD_NOJMP); + break; + case '': + p = skip_to_delim41 (rl_line_buffer, ++p, \, SD_NOJMP); + break; + } + + if (p rl_end) + p++; + } + + if (rl_line_buffer[p] == 0 || p == rl_end) +{ + rl_point = rl_end; + rl_ding (); + return 0; +} + + /* Now move forward until we hit a non-quoted metacharacter or EOL */ + while (p rl_end (c = rl_line_buffer[p]) WORDDELIM (c) == 0) + { + switch (c) + { + default: + ADVANCE_CHAR (rl_line_buffer, slen, p); + continue; /* straight back to loop, don't increment p */ + case '\\': + if (p rl_end rl_line_buffer[p]) + ADVANCE_CHAR (rl_line_buffer, slen, p); + break; + case '\'': + p = skip_to_delim41 (rl_line_buffer, ++p, ', SD_NOJMP); + break; + case '': + p = skip_to_delim41 (rl_line_buffer, ++p, \, SD_NOJMP); + break; + } + + if (p rl_end) + p++; + } + + if (p == rl_end || rl_line_buffer[p] == 0) + { + rl_point = rl_end; + return (0); + } + + count--; +} + + rl_point = p; + return (0); +} + +static int +bash_backward_shellword (count, key) + int count, key; +{ + size_t slen; + int sindex, c, p; + DECLARE_MBSTATE; + + if (count 0) +return (bash_forward_shellword (-count, key)); + + p = rl_point; + slen = rl_end; + + while (count) +{ + if (p == 0) + { + rl_point = 0; + return 0; + } + + /* Move backward until we hit a non-metacharacter. */ + while (p 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) char_is_quoted (rl_line_buffer, p) == 0) + BACKUP_CHAR (rl_line_buffer, slen, p); + break; + } + + if (p == 0) + { + rl_point = 0; + return 0; + } + + /* Now move backward until we hit a metacharacter or BOL. */ + while (p 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) char_is_quoted
[patch 8/8] Convert between Windows and Unix paths directly on command line
Index: bash-3.2/bashline.c === --- bash-3.2.orig/bashline.c +++ bash-3.2/bashline.c @@ -37,6 +37,10 @@ # include netdb.h #endif +#if __CYGWIN__ +# include sys/cygwin.h +#endif + #include stdio.h #include chartypes.h #include bashansi.h @@ -342,6 +346,248 @@ enable_hostname_completion (on_or_off) return (old_value); } +#if __CYGWIN__ + +typedef enum cg_path_kind + { +CG_PATH_UNKNOWN, +CG_PATH_WINDOWS, +CG_PATH_UNIX + } CG_PATH_KIND; + +static void +xprintwords(WORD_LIST* wl, FILE* out) +{ + while (wl) +{ + fprintf(out, (%d)\%s\, wl-word-flags, wl-word-word); + wl = wl-next; + if (wl) { +fprintf(out, , ); + } +} +} + +/* + * Guess what kind of path the given word is + */ +static CG_PATH_KIND +cg_guess_path_kind (wdesc) + WORD_DESC *wdesc; +{ + char* w = wdesc-word; + char prev, cur, next; + + /* If a filename contains a forward slash, it's probably a unix + path */ + if (strchr(w, '/')) +return CG_PATH_UNIX; + + /* Skip leading quote characters */ + while (w[0] == '\'' || w[0] == '') +++w; + + /* UNC absolute path */ + if (w[0] == '\\' w[1] == '\\') +return CG_PATH_WINDOWS; + + /* Drive-letter-relative path */ + if (isalpha (w[0]) w[1] == ':' w[2] == '\\') +return CG_PATH_WINDOWS; + + prev = '\0'; + cur = w[0]; + next = cur ? w[1] : '\0'; + + /* If a filename contains a Windows-like backslash, + it's probably Windows */ + while (next) +{ + if (cur == '/' isalnum (prev) isalnum (next)) +return CG_PATH_WINDOWS; + + prev = cur; + cur = next; + next = *(w++); +} + + return CG_PATH_UNKNOWN; +} + +static WORD_LIST* +cg_dwim_expand_words (wl) + WORD_LIST *wl; +{ + WORD_LIST *out = NULL; + WORD_LIST *it; + + wl = copy_word_list (wl); + + for (it = wl; it; it = it-next) +{ + char* w = it-word-word; + + /* If w has suspicious-looking backslahes, single-quote the + whole word. */ + CG_PATH_KIND tkind = cg_guess_path_kind(it-word); + + if (tkind == CG_PATH_WINDOWS + w[0] != '\'' w[0] != '') +{ + it-word-word = sh_single_quote(w); + free(w); +} +} + + out = expand_words (wl); + dispose_words (wl); + return out; +} + +static CG_PATH_KIND +cg_guess_conv_target(wl) + WORD_LIST *wl; +{ + for (; wl; wl = wl-next) +{ + switch (cg_guess_path_kind(wl-word)) +{ +case CG_PATH_WINDOWS: + return CG_PATH_UNIX; + +case CG_PATH_UNIX: + return CG_PATH_WINDOWS; + +default: + ; +} +} + + return CG_PATH_UNKNOWN; +} + +/* Replace text between POS_BEG and POS_END with result of converting + all words in DATA to TARGET and joining them with a space. + + Return the length of the replacement string. */ +static int +cg_do_conv (data, target, pos_beg, pos_end) + WORD_LIST *data; + CG_PATH_KIND target; + int pos_beg; + int pos_end; +{ + cygwin_conv_path_t conv_dir = +(target == CG_PATH_WINDOWS) +? CCP_POSIX_TO_WIN_A +: CCP_WIN_A_TO_POSIX; + + rl_begin_undo_group(); + rl_delete_text(pos_beg, pos_end); + rl_point = pos_beg; + + conv_dir |= CCP_RELATIVE; + + for (; data; data = data-next) +{ + char *s = cygwin_create_path(conv_dir, data-word-word); + char *quoted; + + if (s) +{ + quoted = sh_single_quote(s); + rl_insert_text (quoted); + + if (data-next) +{ + rl_insert_text ( ); +} +} + + free(s); + free(quoted); +} + + rl_end_undo_group(); + + return rl_point - pos_beg; +} + +/* Let user toggle between unix and windows path representations */ +static int +cg_dwim (count, ignore) +int count, ignore; +{ + static CG_PATH_KIND cg_conv_target; + static WORD_LIST *lw_data; + static int pos_beg; + static int pos_end; + + if (lw_data rl_last_func == cg_dwim) +{ + /* Reuse information from last run and just toggle the + conversion direction */ + if (cg_conv_target == CG_PATH_UNIX) +cg_conv_target = CG_PATH_WINDOWS; + else +cg_conv_target = CG_PATH_UNIX; +} + else +{ + int orig_pos; + char *ss = NULL; + WORD_LIST *lw = NULL; + int pos2; + + /* Slurp up words */ + while (rl_point 0 whitespace (rl_line_buffer[rl_point - 1])) +--rl_point; + + orig_pos = rl_point; + + do { +bash_backward_shellword (1, -1); +pos2 = rl_point; + +while (pos2 orig_pos whitespace (rl_line_buffer[pos2])) + ++pos2; + +dispose_words (lw); +free (ss); + +ss = substring (rl_line_buffer, pos2, orig_pos); +lw = list_string_with_quotes (ss); + + } while(list_length
Re: [patch 0/8] Bash improvements
On 11/2/2010 12:43 PM, David Sastre wrote: Could you please resend the patches? Sorry about that; resent. The problem seems to be a bug in quilt(1) that causes empty messages to be sent when a patch's preamble doesn't end with a blank line. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: [patch 6/8] Document completion_strip_exe in bash
On 11/02/2010 02:49 PM, dan.colasci...@gmail.com wrote: Index: bash-3.2/doc/bash.1 === --- bash-3.2.orig/doc/bash.1 +++ bash-3.2/doc/bash.1 @@ -7991,6 +7991,11 @@ If set, changes its behavior to that of version 3.1 with respect to quoted arguments to the conditional command's =~ operator. .TP 8 +.B completion_strip_exe +If set, whenever Bash sees a `foo.exe' while trying to complete a +command, it checks whether a file called `foo' is a hardlink to the +former and, if so, uses the short name. +.TP 8 Awesome! A patch, including documentation, for something that I find useful! I can't help but wonder how much programmable completion could be taught to strip .exe by itself, but if you don't use bash-completion, this still makes sense (and even if you do, it is such a fundamental operation and certainly seems more efficient to build in below the compgen layer than making all compgen clients have to do it themselves). I guess I really need to find time and start testing this, to push out a new cygwin bash build. -- Eric Blake ebl...@redhat.com+1-801-349-2682 Libvirt virtualization library http://libvirt.org signature.asc Description: OpenPGP digital signature
Re: Is part of gcc3 missing?
On 2 November 2010 19:57, Lee Maschmeyer wrote: Gentlefolk, For the past couple years or more I've been building a program, brltty, from its subversion development stream. The only problems I had were in that stream and they were fixed quite rapidly by the developer, in large measure because of my reports. The last time I was able to build it successfully was on October 11. Since then I've been getting the error detailed in the attachments. I'm almost positive the problem is an update to gcc or one of its henchmen because I've downdated brltty from 5400, which no longer successfully builds, all the way back to 5300 with no success. I hope it's not providing too much information, but I've attached (yes, really :-) not only cygcheck -svr but also the typescript of the make session and config.log. Note that I'm using gcc3 because 4 has never worked. (That's a known problem however and we hope will be fixed in the next gcc update.) The typescript shows the following error: ocamlmklib -L./../../Programs -lbrlapi -oc brlapi_stubs brlapi_stubs.o ** Fatal error: Cannot find file libgcc_s libgcc_s ships with gcc4 only, so it looks like ocaml depends on gcc4 now, probably since its recent update. You may not need the OCaml bindings being built there though. I see you can disable them with the --disable-caml-bindings configure option. Andy -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: [patch 7/8] Backport shellword movement functions from bash 4.1
On 11/02/2010 02:49 PM, dan.colasci...@gmail.com wrote: + rl_add_defun (shell-forward-word, bash_forward_shellword, -1); + rl_add_defun (shell-backward-word, bash_backward_shellword, -1); + rl_add_defun (shell-kill-word, bash_kill_shellword, -1); + rl_add_defun (shell-backward-kill-word, bash_backward_kill_shellword, -1); Hmm, here, it probably makes more sense for me to bite the bullet and port my cygwin-specific stuff from bash 3.2 into bash 4.1, rather than trying to backport bash 4.1 stuff into my cygwin 3.2 build. -- Eric Blake ebl...@redhat.com+1-801-349-2682 Libvirt virtualization library http://libvirt.org signature.asc Description: OpenPGP digital signature
Re: [patch 8/8] Convert between Windows and Unix paths directly on command line
On 11/02/2010 02:49 PM, dan.colasci...@gmail.com wrote: @@ -439,6 +689,10 @@ initialize_readline () rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap); #endif +#if __CYGWIN__ + rl_bind_key_if_unbound_in_map (CTRL('W'), cg_dwim, emacs_ctlx_keymap); +#endif I'm not so convinced about this one, particularly about the fact that it consumes a default binding rather than requiring explicit effort to enable. -- Eric Blake ebl...@redhat.com+1-801-349-2682 Libvirt virtualization library http://libvirt.org signature.asc Description: OpenPGP digital signature
Re: [patch 6/8] Document completion_strip_exe in bash
On 11/2/2010 1:55 PM, Eric Blake wrote: I can't help but wonder how much programmable completion could be taught to strip .exe by itself It can't, as far as I can see. Programmable completion doesn't operate on words in command position (like the first non-variable-assignment word on a line). -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: [patch 8/8] Convert between Windows and Unix paths directly on command line
On 11/2/2010 1:59 PM, Eric Blake wrote: I'm not so convinced about this one, particularly about the fact that it consumes a default binding rather than requiring explicit effort to enable. It does require explicit effort: you have to type the key sequence. There are lots of useful functions used by nobody except the half-dozen people who know about inputrc. It's easy to tell users to type a certain key sequence. As for consuming a binding: rl_bind_key_if_unbound_in_map(), as the name would suggest, defers to user-specified keybindings, and C-x C-w isn't taken by anything by default. It's a convenient key sequence, and the Emacs command bound to it, write-file, doesn't make any sense in a readline context. Doing this substitution directly on the command line is a hell of a lot more convenient than using editing commands to wrap a word in $(cygpath -w ...). -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: [patch 7/8] Backport shellword movement functions from bash 4.1
On 11/2/2010 1:56 PM, Eric Blake wrote: On 11/02/2010 02:49 PM, dan.colasci...@gmail.com wrote: + rl_add_defun (shell-forward-word, bash_forward_shellword, -1); + rl_add_defun (shell-backward-word, bash_backward_shellword, -1); + rl_add_defun (shell-kill-word, bash_kill_shellword, -1); + rl_add_defun (shell-backward-kill-word, bash_backward_kill_shellword, -1); Hmm, here, it probably makes more sense for me to bite the bullet and port my cygwin-specific stuff from bash 3.2 into bash 4.1, rather than trying to backport bash 4.1 stuff into my cygwin 3.2 build. Getting 4.1 would be better, sure, but it's not available right now, and my patch series is. The backport is minimal and non-invasive. The backport is also a separate patch, so you can just ignore it when applying the rest of the changes to 4.1. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: [patch 2/8] Document EXECIGNORE in Cygwin readme
On 11/2/2010 3:48 PM, dan.colasci...@gmail.com wrote: Index: bash-3.2/CYGWIN-PATCHES/bash.README === --- bash-3.2.orig/CYGWIN-PATCHES/bash.README +++ bash-3.2/CYGWIN-PATCHES/bash.README @@ -55,7 +55,14 @@ is on a binary mount with igncr disabled would be text mounts with igncr disabled and no \r in the underlying file. Next would be binary mounts with igncr enabled. And the slowest that bash will operate is on text mounts with igncr enabled. -8. If you don't like how bash behaves, then propose a patch, rather than +8. This version of bash has a new special variable EXECIGNORE. It is a +colon-separated list of extended glob patterns. If a file's full path +matches one of these, it is no considered executable for the purposes ^^ That should be not instead of no. +of completion and PATH searching. The `test', `[', and `[[' builtins +are not affected. Use this variable to prevent non-executables +uselessly appearing in completion lists; EXECIGNORE=*.dll is quite +useful. +9. If you don't like how bash behaves, then propose a patch, rather than proposing idle ideas. This turn of events has already been talked to death on the mailing lists by people with many ideas, but few patches. -Jeremy -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: [patch 7/8] Backport shellword movement functions from bash 4.1
On Tue, Nov 02, 2010 at 02:10:43PM -0700, Daniel Colascione wrote: On 11/2/2010 1:56 PM, Eric Blake wrote: On 11/02/2010 02:49 PM, dan.colascione wrote: + rl_add_defun (shell-forward-word, bash_forward_shellword, -1); + rl_add_defun (shell-backward-word, bash_backward_shellword, -1); + rl_add_defun (shell-kill-word, bash_kill_shellword, -1); + rl_add_defun (shell-backward-kill-word, bash_backward_kill_shellword, -1); Hmm, here, it probably makes more sense for me to bite the bullet and port my cygwin-specific stuff from bash 3.2 into bash 4.1, rather than trying to backport bash 4.1 stuff into my cygwin 3.2 build. Getting 4.1 would be better, sure, but it's not available right now, You know you're communicating with the bash package maintainer, right? If he thinks that it makes sense to upgrade to a new version rather than rolling a new, patched older version, then you can't really use the 4.1 isn't available argument since his point is that he could make it available. He's probably the only person who understands the tradeoffs. cgf -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple