# HG changeset patch # User Jiri Kukacka # Date 1389883965 28800 # Node ID cd48674f5a76e72ed25ebd707de0c1bc9396d57d # Parent ed4c692fa932821a70d3b5ab56d6b55739ba7808 15949286 update tcsh to 6.18.01 15825527 SUNBT7206801 tcsh tries to autocorrect commands that are correct 16072367 New tcsh changes the value of $HOSTTYPE from i86pc to sun386i diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/Makefile --- a/components/tcsh/Makefile Tue Jan 14 08:01:05 2014 -0800 +++ b/components/tcsh/Makefile Thu Jan 16 06:52:45 2014 -0800 @@ -20,19 +20,21 @@ # # -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # include ../../make-rules/shared-macros.mk COMPONENT_NAME= tcsh -COMPONENT_VERSION= 6.17.00 +COMPONENT_VERSION= 6.18.01 +IPS_COMPONENT_VERSION= 6.18.1 COMPONENT_PROJECT_URL= http://www.tcsh.org/ COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION) COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz COMPONENT_ARCHIVE_HASH= \ - sha256:575266122bc2bc351c84a7f858020c0e6b6f95a64ad4de3ce95e340f57e4a9a9 + sha256:d81ca27851f3e8545666399b4bcf25433e602a195113b3f7c73886fef84c9fa8 COMPONENT_ARCHIVE_URL= ftp://ftp.astron.com/pub/tcsh/$(COMPONENT_ARCHIVE) +COMPONENT_BUGDB= utility/tcsh include ../../make-rules/prep.mk include ../../make-rules/configure.mk @@ -44,11 +46,6 @@ COMPONENT_PREP_ACTION = \ (cd $(@D) ; autoconf ) -COMPONENT_POST_BUILD_ACTION = \ - (cd $(@D)/nls ; $(MAKE) all) - -CFLAGS += $(CPP_LARGEFILES) - LOCALEDIR=$(PROTO_DIR)/$(CONFIGURE_LOCALEDIR) CONFIGURE_OPTIONS += --localedir=$(CONFIGURE_LOCALEDIR) diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/manpages/tcsh.1 --- a/components/tcsh/manpages/tcsh.1 Tue Jan 14 08:01:05 2014 -0800 +++ b/components/tcsh/manpages/tcsh.1 Thu Jan 16 06:52:45 2014 -0800 @@ -75,7 +75,7 @@ .\" modified to reference existing Solaris man pages, to add the Solaris .\" stability classification, and to add a note about source availability. .\" -.TH TCSH 1 "10 July 2009" "Astron 6.17.00" +.TH TCSH 1 "14 February 2012" "Astron 6.18.01" .SH NAME tcsh \- C shell with file name completion and command line editing .SH SYNOPSIS @@ -447,6 +447,17 @@ underscores are equivalent. Periods, however, are not equivalent to hyphens or underscores. .PP +If the \fBcomplete\fR shell variable is set to `Enhance', completion +ignores case and differences between a hyphen and an underscore word +separator only when the user types a lowercase character or a hyphen. +Entering an uppercase character or an underscore will not match the +corresponding lowercase character or hyphen word separator. +Typing `rm a\-\-file[^D]' in the directory of the previous example would +still list all three files, but typing `rm A\-\-file' would match only +`A_silly_file' and typing `rm a__file[^D]' would match just `A_silly_file' +and `another_silly_file' because the user explicitly used an uppercase +or an underscore character. +.PP Completion and listing are affected by several other shell variables: \fBrecexact\fR can be set to complete on the shortest possible unique match, even if more typing might result in a longer match: @@ -612,7 +623,7 @@ .TP 8 .B expand-line \fR(not bound) Like \fIexpand-history\fR, but -expands history substitutions in each word in the input buffer, +expands history substitutions in each word in the input buffer. .TP 8 .B expand-variables \fR(^X-$) Expands the variable to the left of the cursor. @@ -863,7 +874,7 @@ .PP The \fIhistory\fR builtin command can print, store in a file, restore and clear the history list at any time, -and the \fBsavehist\fR and \fBhistfile\fR shell variables can be can be set to +and the \fBsavehist\fR and \fBhistfile\fR shell variables can be set to store the history list automatically on logout and restore it on login. .PP History substitutions introduce words from the history list into the input @@ -1153,7 +1164,7 @@ These can be displayed and changed with \fIprintenv\fR, \fIsetenv\fR and \fIunsetenv\fR. .PP -(+) Variables may be made read-only with `set \-r' (q.v.) +(+) Variables may be made read-only with `set \-r' (q.v.). Read-only variables may not be modified or unset; attempting to do so will cause an error. Once made read-only, a variable cannot be made writable, @@ -1331,14 +1342,20 @@ .PP In matching filenames, the character `.' at the beginning of a filename or immediately following a `/', as well as the character `/' must be matched -explicitly. The character `*' matches any string of characters, including the -null string. The character `?' matches any single character. The sequence -`[...]' matches any one of the characters enclosed. Within `[...]', a pair of +explicitly (unless either +.B globdot +or +.B globstar +or both are set(+)). The character `*' matches any string of characters, +including the null string. The character `?' matches any single character. +The sequence `[...]' matches any one of the characters enclosed. +Within `[...]', a pair of characters separated by `\-' matches any character lexically between the two. .PP (+) Some glob-patterns can be negated: The sequence `[^...]' matches any single character \fInot\fR specified by the characters and/or ranges of characters in the braces. + .PP An entire glob-pattern can also be negated with `^': .IP "" 4 @@ -1384,6 +1401,20 @@ of patterns) which matches nothing is left unchanged rather than causing an error. .PP +The \fBglobstar\fR shell variable can be set to allow `**' or `***' as +a file glob pattern that matches any string of characters including `/', +recursively traversing any existing sub-directories. For example, +`ls **.c' will list all the .c files in the current directory tree. +If used by itself, it will match match zero or more sub-directories +(e.g. `ls /usr/include/**/time.h' will list any file named `time.h' +in the /usr/include directory tree; `ls /usr/include/**time.h' will match +any file in the /usr/include directory tree ending in `time.h'; and +`ls /usr/include/**time**.h' will match any .h file with `time' either +in a subdirectory name or in the filename itself). +To prevent problems with recursion, the `**' glob-pattern will not +descend into a symbolic link containing a directory. To override this, +use `***' (+) +.PP The \fBnoglob\fR shell variable can be set to prevent filename substitution, and the \fIexpand-glob\fR editor command, normally bound to `^X-*', can be used to interactively expand individual filename substitutions. @@ -1504,7 +1535,7 @@ .PP On systems which do not understand the `#!' script interpreter convention the shell may be compiled to emulate it; see the \fBversion\fR shell -variable\fR. If so, the shell checks the first line of the file to +variable. If so, the shell checks the first line of the file to see if it is of the form `#!\fIinterpreter\fR \fIarg\fR ...'. If it is, the shell starts \fIinterpreter\fR with the given \fIarg\fRs and feeds the file to it on standard input. @@ -1707,7 +1738,7 @@ for a terminal device (+) .TP 4 .B R -Has been migrated (convex only) (+) +Has been migrated (Convex only) (+) .TP 4 .B L Applies subsequent operators in a multiple-operator test to a symbolic link @@ -1733,7 +1764,7 @@ in a multiple-operator test; see below. .PP It is possible but not useful, and sometimes misleading, to combine operators -which expect \fIfile\fR to be a file with operators which do not, +which expect \fIfile\fR to be a file with operators which do not (e.g., \fBX\fR and \fBt\fR). Following \fBL\fR with a non-file operator can lead to particularly strange results. .PP @@ -2264,7 +2295,7 @@ .B case \fIlabel\fB: A label in a \fIswitch\fR statement as discussed below. .TP 8 -.B cd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\fIname\fR] +.B cd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\I--\fR] [\fIname\fR] If a directory \fIname\fR is given, changes the shell's working directory to \fIname\fR. If not, changes to \fBhome\fR. If \fIname\fR is `\-' it is interpreted as the previous working directory @@ -2279,6 +2310,8 @@ With \fB\-p\fR, prints the final directory stack, just like \fIdirs\fR. The \fB\-l\fR, \fB\-n\fR and \fB\-v\fR flags have the same effect on \fIcd\fR as on \fIdirs\fR, and they imply \fB\-p\fR. (+) +Using \fB\-\-\fR forces a break from option processing so the next word +is taken as the directory \fIname\fR even if it begins with '\-'. (+) .PP See also the \fBimplicitcd\fR shell variable. .RE @@ -2562,7 +2595,7 @@ .br \&'n/\-name/f/' 'n/\-newer/f/' 'n/\-{,n}cpio/f/' \e .br -\'n/\-exec/c/' 'n/\-ok/c/' 'n/\-user/u/' \e +\&\'n/\-exec/c/' 'n/\-ok/c/' 'n/\-user/u/' \e .br \&'n/\-group/g/' 'n/\-fstype/(nfs 4.2)/' \e .br @@ -2814,7 +2847,7 @@ signal and arranges for the shell to send it a hangup signal when the shell exits. Note that commands may set their own response to hangups, overriding \fIhup\fR. -Without an argument (allowed in only a shell script), causes the shell to +Without an argument, causes the non-interactive shell only to exit on a hangup for the remainder of the script. See also \fBSignal handling\fR and the \fInohup\fR builtin command. .TP 8 @@ -2914,6 +2947,14 @@ the maximum amount of physical memory a process may have allocated to it at a given time .TP +\fIvmemoryuse\fR +the maximum amount of virtual memory a process +may have allocated to it at a given time (address space) +.TP +\fIvmemoryuse\fR +the maximum amount of virtual memory a process +may have allocated to it at a given time +.TP \fIheapsize\fR the maximum amount of memory a process may allocate per \fIbrk()\fR system call @@ -2932,15 +2973,40 @@ .TP \fIsbsize\fR the maximum size of socket buffer usage for this user +.TP +\fIswapsize\fR +the maximum amount of swap space reserved or used for this user +.TP +\fImaxlocks\fR +the maximum number of locks for this user +.TP +\fImaxsignal\fR +the maximum number of pending signals for this user +.TP +\fImaxmessage\fR +the maximum number of bytes in POSIX mqueues for this user +.TP +\fImaxnice\fR +the maximum nice priority the user is allowed to raise mapped from [19...-20] +to [0...39] for this user +.TP +\fImaxrtprio\fR +the maximum realtime priority for this user +\fImaxrttime\fR +the timeout for RT tasks in microseconds for this user. .PP \fImaximum-use\fR may be given as a (floating point or integer) number followed by a scale factor. For all limits other than \fIcputime\fR the default scale is `k' or `kilobytes' -(1024 bytes); a scale factor of `m' or `megabytes' may also -be used. For \fIcputime\fR the default scaling is `seconds', +(1024 bytes); a scale factor of `m' or `megabytes' or `g' or `gigabytes' +may also be used. For \fIcputime\fR the default scaling is `seconds', while `m' for minutes or `h' for hours, or a time of the form `mm:ss' giving minutes and seconds may be used. .PP +If \fImaximum-use\fR is `unlimited', +then the limitation on the specified \fIresource\fR +is removed (this is equivalent to the \fIunlimit\fR builtin command). +.PP For both \fIresource\fR names and scale factors, unambiguous prefixes of the names suffice. .RE @@ -3021,7 +3087,7 @@ so `alias ls ls\-F' generally does the right thing. .PP The \fBls\-F\fR builtin can list files using different colors depending on the -filetype or extension. See the \fBcolor\fR \fItcsh\fR variable and the +filetype or extension. See the \fBcolor\fR shell variable and the \fBLS_COLORS\fR environment variable. .RE .PP @@ -3037,7 +3103,7 @@ does not like to lose its tty. (TCF only) .PD .TP 8 -.B newgrp \fR[\fB\-\fR] \fIgroup\fR (+) +.B newgrp \fR[\fB\-\fR] \fI[group]\fR (+) Equivalent to `exec newgrp'; see \fInewgrp\fR(1). Available only if the shell was so compiled; see the \fBversion\fR shell variable. @@ -3055,7 +3121,7 @@ .B nohup \fR[\fIcommand\fR] With \fIcommand\fR, runs \fIcommand\fR such that it will ignore hangup signals. Note that commands may set their own response to hangups, overriding \fInohup\fR. -Without an argument (allowed in only a shell script), causes the shell to +Without an argument, causes the non-interactive shell only to ignore hangups for the remainder of the script. See also \fBSignal handling\fR and the \fIhup\fR builtin command. .TP 8 @@ -3118,11 +3184,12 @@ .B rehash Causes the internal hash table of the contents of the directories in the \fBpath\fR variable to be recomputed. This is -needed if new commands are added to directories in \fBpath\fR -while you are logged in. This should be necessary only if -you add commands to one of your own directories, or if a -systems programmer changes the contents of one of the -system directories. Also flushes the cache of home directories +needed if the \fBautorehash\fR shell variable is not set and new +commands are added to directories in \fBpath\fR while you are logged +in. With \fBautorehash\fR, a new command will be found +automatically, except in the special case where another command of +the same name which is located in a different directory already +exists in the hash table. Also flushes the cache of home directories built by tilde expansion. .TP 8 .B repeat \fIcount command @@ -3217,14 +3284,13 @@ The third form sets \fIname\fR to the single \fIword\fR. The fourth form sets \fIname\fR to the list of words in \fIwordlist\fR. In all cases the value is command and filename expanded. -If \-r is specified, the value is set read-only. If \-f or \-l are -specified, set only unique words keeping their order. -\-f prefers the first occurrence of a word, and \-l the last. -The fifth form sets the \fIindex\fR'th component of name to \fIword\fR; +If \fB\-r\fR is specified, the value is set read-only. If \fB\-f\fR or +\fB\-l\fR are specified, set only unique words keeping their order. +\fB\-f\fR prefers the first occurrence of a word, and \fB\-l\fR the last. +The fifth form sets the \fIindex\fR'th component of \fIname\fR to \fIword\fR; this component must already exist. The sixth form lists only the names of all shell variables that are read-only. The seventh form makes \fIname\fR read-only, whether or not it has a value. -The second form sets \fIname\fR to the null string. The eighth form is the same as the third form, but make \fIname\fR read-only at the same time. .PD @@ -3360,7 +3426,7 @@ 022, giving read and execute access to the group and others. Without \fIvalue\fR, prints the current file creation mask. .TP 8 -.B unalias \fIpattern +.B unalias \fIpattern\fR .br Removes all aliases whose names match \fIpattern\fR. `unalias *' thus removes all aliases. @@ -3590,8 +3656,8 @@ The first word is the number of minutes of inactivity before automatic logout. The optional second word is the number of minutes of inactivity before automatic locking. -When the shell automatically logs out, -it prints `auto-logout', sets the variable logout to `automatic' and exits. +When the shell automatically logs out, it prints `auto-logout', sets the +variable \fBlogout\fR to `automatic' and exits. When the shell automatically locks, the user is required to enter his password to continue working. Five incorrect attempts result in automatic logout. Set to `60' (automatic logout after 60 minutes, and no locking) by default @@ -3601,6 +3667,14 @@ \fBversion\fR shell variable). See also the \fBafsuser\fR and \fBlogout\fR shell variables. .TP 8 +.B autorehash \fR(+) +If set, the internal hash table of the contents of the directories in the +\fBpath\fR variable will be recomputed if a command is not found in the hash +table. In addition, the list of available commands will be rebuilt for each +command completion or spelling correction attempt if set to `complete' or +`correct' respectively; if set to `always', this will be done for both +cases. +.TP 8 .B backslash_quote \fR(+) If set, backslashes (`\\') always quote `\\', `'', and `"'. This may make complex quoting tasks easier, but it can cause syntax errors in \fIcsh\fR(1) @@ -3633,10 +3707,15 @@ \fIcsh\fR. .TP 8 .B complete \fR(+) -If set to `enhance', completion 1) ignores case and 2) considers -periods, hyphens and underscores (`.', `\-' and `_') to be word -separators and hyphens and underscores to be equivalent. If set to -`igncase', the completion becomes case insensitive. +If set to `igncase', the completion becomes case insensitive. +If set to `enhance', completion ignores case and considers +hyphens and underscores to be equivalent; it will also treat +periods, hyphens and underscores (`.', `\-' and `_') as word +separators. +If set to `Enhance', completion matches uppercase and underscore +characters explicitly and matches lowercase and hyphens in a +case-insensivite manner; it will treat periods, hypens and underscores +as word separators. .TP 8 .B continue \fR(+) If set to a list of commands, the shell will continue the listed @@ -3683,7 +3762,7 @@ See also the \fBcwd\fR and \fBowd\fR shell variables. .TP 8 .B dspmbyte \fR(+) -Has an affect iff 'dspm' is listed as part of the \fBversion\fR shell variable. +Has an effect iff 'dspm' is listed as part of the \fBversion\fR shell variable. If set to `euc', it enables display and editing EUC-kanji(Japanese) code. If set to `sjis', it enables display and editing Shift-JIS(Japanese) code. If set to `big5', it enables display and editing Big5(Chinese) code. @@ -3709,12 +3788,12 @@ 3 ... used for both the first byte and second byte of a multi-byte character. .\" SHK: I tried my best to get the following to be grammatically correct. .\" However, I still don't understand what's going on here. In the - \" following example, there are three bytes, but the text seems to refer to - \" each nybble as a character. What's going on here? It this 3-byte code - \" in the table? The text above seems to imply that there are 256 - \" characters/bytes in the table. If I get some more info on this (perhaps - \" a complete example), I could fix the text to be grammatically correct. - \" (steve.kelem@xilinx.com 1999/09/13) +.\" following example, there are three bytes, but the text seems to refer to +.\" each nybble as a character. What's going on here? It this 3-byte code +.\" in the table? The text above seems to imply that there are 256 +.\" characters/bytes in the table. If I get some more info on this (perhaps +.\" a complete example), I could fix the text to be grammatically correct. +.\" (steve.kelem@xilinx.com 1999/09/13) .PP Example: .br @@ -3782,6 +3861,12 @@ shell variable) indicate skipped directories with an ellipsis (`...') instead of `/'. .TP 8 +.B euid \fR(+) +The user's effective user ID. +.TP 8 +.B euser \fR(+) +The first matching passwd entry name corresponding to the effective user ID. +.TP 8 .B fignore \fR(+) Lists file name suffixes to be ignored by completion. .TP 8 @@ -3795,6 +3880,22 @@ .B gid \fR(+) The user's real group ID. .TP 8 +.B globdot \fR(+) +If set, wild-card glob patterns will match files and directories beginning +with `.' except for `.' and `..' +.TP 8 +.B globstar \fR(+) +If set, the `**' and `***' file glob patterns will match any string of +characters including `/' traversing any existing sub-directories. (e.g. +`ls **.c' will list all the .c files in the current directory tree). +If used by itself, it will match match zero or more sub-directories +(e.g. `ls /usr/include/**/time.h' will list any file named `time.h' +in the /usr/include directory tree; whereas `ls /usr/include/**time.h' +will match any file in the /usr/include directory tree ending in `time.h'). +To prevent problems with recursion, the `**' glob-pattern will not +descend into a symbolic link containing a directory. To override this, +use `***' +.TP 8 .B group \fR(+) The user's group name. .TP 8 @@ -3802,7 +3903,7 @@ If set, the incremental search match (in \fIi-search-back\fR and \fIi-search-fwd\fR) and the region between the mark and the cursor are highlighted in reverse video. - +.IP "" 8 Highlighting requires more frequent terminal writes, which introduces extra overhead. If you care about terminal performance, you may want to leave this unset. @@ -3926,13 +4027,12 @@ shell variable. .TP 8 .B mail -The names of the files or directories to check for incoming mail, -separated by whitespace, and optionally preceded by a numeric word. -Before each prompt, if 10 minutes have passed since the last check, the -shell checks each file and says `You have new mail.' (or, if \fBmail\fR -contains multiple files, `You have new mail in \fIname\fR.') if the -filesize is greater than zero in size and has a modification time -greater than its access time. +A list of files and directories to check for incoming mail, optionally +preceded by a numeric word. Before each prompt, if 10 minutes have +passed since the last check, the shell checks each file and says `You +have new mail.' (or, if \fBmail\fR contains multiple files, `You have +new mail in \fIname\fR.') if the filesize is greater than zero in size +and has a modification time greater than its access time. .PP .RS +8 .PD @@ -4011,7 +4111,12 @@ .TP 8 .B padhour If set, enable the printing of padding '0' for hours, in 24 and 12 hour -formats. E.G.: 07:45:42 vs. 7:45:42 +formats. E.G.: 07:45:42 vs. 7:45:42. +.TP 8 +.B parseoctal +To retain compatibily with older versions numeric variables starting with +0 are not interpreted as octal. Setting this variable enables proper octal +parsing. .TP 8 .B path A list of directories in which to look for executable commands. @@ -4105,6 +4210,9 @@ %n The user name. .TP 4 +%N +The effective user name. +.TP 4 %j The number of jobs. .TP 4 @@ -4249,7 +4357,14 @@ See also \fBloginsh\fR. .TP 8 .B status -The status returned by the last command. If it terminated +The status returned by the last command, unless the variable +.B anyerror +is set, and any error in a pipeline or a backquote expansion will be +propagated (this is the default +.B csh +behavior, and the current +.B tcsh +default). If it terminated abnormally, then 0200 is added to the status. Builtin commands which fail return exit status `1', all other builtin commands return status `0'. @@ -4992,7 +5107,7 @@ variables. .PP A new syntax for including useful information in the prompt string -(see \fBprompt\fR). +(see \fBprompt\fR), and special prompts for loops and spelling correction (see \fBprompt2\fR and \fBprompt3\fR). .PP @@ -5017,8 +5132,7 @@ Alias substitution is most often used to clumsily simulate shell procedures; shell procedures should be provided rather than aliases. .PP -Commands within loops are not placed in the history -list. Control structures should be parsed rather than being recognized as +Control structures should be parsed rather than being recognized as built-in commands. This would allow control commands to be placed anywhere, to be combined with `|', and to be used with `&' and `;' metasyntax. .PP @@ -5092,7 +5206,7 @@ malloc(3C), setlocale(3C), tty(7D), a.out(4), terminfo(4), environ(5), termio(7I), Introduction to the C Shell .SH VERSION -This manual documents tcsh 6.17.00 (Astron) 2009-07-10. +This manual documents tcsh 6.18.01 (Astron) 2012-02-14. .SH AUTHORS .PD 0 .TP 2 diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/patches/001.config_f.h.patch --- a/components/tcsh/patches/001.config_f.h.patch Tue Jan 14 08:01:05 2014 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -*** tcsh-6.17.00/config_f.h.orig Thu Aug 20 12:31:33 2009 ---- tcsh-6.17.00/config_f.h Thu Aug 20 12:31:42 2009 -*************** -*** 131,137 **** - * variable "mbytemap". - * (use for multi-byte table check) - */ -! #undef MBYTEDEBUG - - /* - * NEWGRP Provide a newgrp builtin. ---- 131,137 ---- - * variable "mbytemap". - * (use for multi-byte table check) - */ -! #define MBYTEDEBUG - - /* - * NEWGRP Provide a newgrp builtin. diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/patches/001.gethost.c.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/tcsh/patches/001.gethost.c.patch Thu Jan 16 06:52:45 2014 -0800 @@ -0,0 +1,91 @@ +RCS file: /p/tcsh/cvsroot/tcsh/gethost.c,v +retrieving revision 1.15 +diff -u -u -r1.15 gethost.c +--- tcsh-6.18.01/gethost.c.orig 15 Jan 2012 17:14:54 -0000 1.15 ++++ tcsh-6.18.01/gethost.c 4 Jan 2013 22:20:19 -0000 +@@ -150,11 +150,17 @@ + char *r; + + if (len == 0) +- len = strlen(b); +- l = strlen(a) + len + 1; ++ len = strlen(b) + 1; ++ if (a) ++ l = strlen(a) + len; ++ else ++ l = len; + if ((r = malloc(l)) == NULL) + abort(); +- snprintf(r, l, "%s%.*s", a, (int)len, b); ++ if (a) ++ snprintf(r, l, "%s%.*s", a, (int)len, b); ++ else ++ snprintf(r, l, "%.*s", (int)len, b); + return r; + } + +@@ -171,13 +177,15 @@ + return defs; + + free(buf); +- buf = strdup("("); /* ) */ ++ buf = NULL; + for (ptr = defs; (bptr = strstr(ptr, def)) != NULL; ptr = eptr + 1) { + if (ptr != bptr) + buf = cat(buf, ptr, bptr - ptr); ++ buf = cat(buf, "(", 0); /* ) */ + if ((eptr = strchr(ptr + sizeof(def) - 1, ')')) == NULL) { + (void) fprintf(stderr, "%s: missing close paren `%s'\n", + pname, defs); ++ free(buf); + return defs; + } + buf = cat(buf, bptr, eptr - bptr + 1); +@@ -186,26 +194,29 @@ + if (len < 1) { + (void) fprintf(stderr, "%s: empty define `%s'\n", + pname, defs); ++ free(buf); + return defs; + } + if (*name != '_') { + char *undername = malloc(len + 10); +- buf = cat(buf, " || defined(", 0); ++ if (undername == NULL) ++ abort(); ++ buf = cat(buf, ") || defined(", 0); + snprintf(undername, len + 10, "__%.*s__)", (int)len, + name); + buf = cat(buf, undername, len + 5); +- buf = cat(buf, " || defined(", 0); ++ buf = cat(buf, ") || defined(", 0); + snprintf(undername, len + 10, "__%.*s)", (int)len, + name); + buf = cat(buf, undername, len + 3); + } ++ buf = cat(buf, "))", 0); + } + if (!eptr) { + (void) fprintf(stderr, "%s: invalid input `%s'\n", pname, defs); + return defs; + } + buf = cat(buf, eptr + 1, 0); +- buf = cat(buf, ")", 0); + return buf; + } + + +RCS file: /p/tcsh/cvsroot/tcsh/gethost.c,v +retrieving revision 1.16 +diff -u -r1.16 gethost.c +--- tcsh-6.18.01/gethost.c.orig 4 Jan 2013 22:20:37 -0000 1.16 ++++ tcsh-6.18.01/gethost.c 5 Jan 2013 01:22:56 -0000 +@@ -180,7 +180,7 @@ + buf = NULL; + for (ptr = defs; (bptr = strstr(ptr, def)) != NULL; ptr = eptr + 1) { + if (ptr != bptr) +- buf = cat(buf, ptr, bptr - ptr); ++ buf = cat(buf, ptr, bptr - ptr + 1); + buf = cat(buf, "(", 0); /* ) */ + if ((eptr = strchr(ptr + sizeof(def) - 1, ')')) == NULL) { + (void) fprintf(stderr, "%s: missing close paren `%s'\n", diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/patches/002.sol-8bit.patch --- a/components/tcsh/patches/002.sol-8bit.patch Tue Jan 14 08:01:05 2014 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -diff -ru tcsh-6.17.00-orig/sh.c tcsh-6.17.00/sh.c ---- tcsh-6.17.00-orig/sh.c 2009-06-25 23:15:37.000000000 +0200 -+++ tcsh-6.17.00/sh.c 2009-09-10 15:38:50.703642142 +0200 -@@ -336,12 +336,14 @@ - fix_strcoll_bug(); - # endif /* STRCOLLBUG */ - -- { -+ if (MB_CUR_MAX == 1) { - int k; - -- for (k = 0200; k <= 0377 && !Isprint(CTL_ESC(k)); k++) -+ for (k = 0200; k <= 0377 && !isprint(CTL_ESC(k)); k++) - continue; -- AsciiOnly = MB_CUR_MAX == 1 && k > 0377; -+ AsciiOnly = k > 0377; -+ } else { -+ AsciiOnly = 0; - } - #else - AsciiOnly = getenv("LANG") == NULL && getenv("LC_CTYPE") == NULL; diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/patches/003.locale.patch --- a/components/tcsh/patches/003.locale.patch Tue Jan 14 08:01:05 2014 -0800 +++ b/components/tcsh/patches/003.locale.patch Thu Jan 16 06:52:45 2014 -0800 @@ -1,97 +1,15 @@ ---- tcsh-6.17.00/sh.c.orig Tue Sep 22 13:39:07 2009 -+++ tcsh-6.17.00/sh.c Wed Sep 23 00:46:27 2009 -@@ -160,6 +160,52 @@ - - int main (int, char **); +--- tcsh-6.18.01/configure.in.orig Wed Sep 5 11:52:15 2012 ++++ tcsh-6.18.01/configure.in Wed Sep 5 11:52:40 2012 +@@ -303,7 +303,6 @@ + AC_SEARCH_LIBS(gethostbyname, nsl) + AC_SEARCH_LIBS(connect, socket) + AC_SEARCH_LIBS(catgets, catgets) +-AM_ICONV -+#ifndef LOCALEDIR -+#define LOCALEDIR "/usr/share/locale" -+#endif -+ -+static void -+add_localedir_to_nslpath(char *path) -+{ -+ char *old = getenv("NLSPATH"); -+ char *new; -+ int len = 0; -+ -+ if (path == NULL) -+ return; -+ -+ if (old != NULL) -+ len += strlen(old); -+ -+#if !defined(HAVE_SETENV) -+ len += sizeof ("NLSPATH="); -+#endif -+ -+ len += (strlen(path) + sizeof ("/%L/LC_MESSAGES/%N.cat")); -+ -+ if ((new = calloc(len, 1)) == NULL) -+ return; -+ -+#if !defined(HAVE_SETENV) -+ strcpy(new, "NLSPATH="); -+#endif -+ -+ if (old != NULL) { -+ strncat(new, old, len); -+ strncat(new, ":", len); -+ } -+ -+ strncat(new, path, len); -+ strncat(new, "/%L/LC_MESSAGES/%N.cat", len); -+ -+#if defined(HAVE_SETENV) -+ setenv("NLSPATH", new, 1); -+ free(new); -+#else -+ putenv(new); -+#endif -+} -+ - int - main(int argc, char **argv) - { -@@ -192,6 +238,8 @@ - # endif /* LC_CTYPE */ - #endif /* NLS */ - -+ add_localedir_to_nslpath(LOCALEDIR); -+ - nlsinit(); - - #ifdef MALLOC_TRACE ---- tcsh-6.17.00/nls/Makefile.in.orig Wed Oct 7 13:25:44 2009 -+++ tcsh-6.17.00/nls/Makefile.in Wed Oct 7 13:31:57 2009 -@@ -0,0 +1,24 @@ -+# $tcsh: Makefile,v 1.14 2006/03/02 18:46:45 christos Exp $ -+ -+LOCALES= C et finnish french german greek italian ja pl russian \ -+ spanish ukrainian -+GENCAT= gencat -+INSTALL= ginstall -+ -+CATALOGS=$(LOCALES:%=%.cat) -+INSTALLED=$(LOCALES:%=@localedir@/%/LC_MESSAGES/tcsh.cat) -+ -+all: $(CATALOGS) -+ -+install: $(INSTALLED) -+ -+@localedir@/%/LC_MESSAGES/tcsh.cat: %.cat -+ mkdir -p $(@D) -+ $(INSTALL) $< $@ -+ -+%.cat: -+ $(GENCAT) $@ $(@:%.cat=%)/*set* -+ -+clean: -+ $(RM) $(CATALOGS) -+ - ---- tcsh-6.17.00/Makefile.in.orig Wed Jun 24 15:09:05 2009 -+++ tcsh-6.17.00/Makefile.in Wed Oct 7 14:19:01 2009 + dnl Checks for header files + AC_CHECK_HEADERS([auth.h crypt.h features.h inttypes.h paths.h] dnl +--- tcsh-6.18.01/Makefile.in.orig Wed Sep 5 11:56:12 2012 ++++ tcsh-6.18.01/Makefile.in Wed Sep 5 11:57:51 2012 @@ -12,6 +12,7 @@ BUILD=tcsh$(EXEEXT) VPATH=@srcdir@ @@ -100,18 +18,15 @@ ################################################################ ## CFLAGS. For various -D things, see config.h -@@ -137,8 +138,10 @@ +@@ -145,6 +146,7 @@ #DFLAGS=-D_PATH_TCSHELL='"${DESTBIN}/tcsh"' ## The following is set by autoconf. DFLAGS = -D_PATH_TCSHELL='"${bindir}/tcsh"' @DFLAGS@ @CPPFLAGS@ +DFLAGS += -DLOCALEDIR='"${localedir}"' -+ ################################################################ - ## LDFLAGS. Define something here if you need to - ################################################################ -@@ -231,7 +234,7 @@ +@@ -296,7 +298,7 @@ # EXTRAFLAGS = @HESDEF@ $(AFSDEF) @@ -120,21 +35,34 @@ ---- tcsh-6.17.00/configure.in Fri Jul 10 10:13:56 2009 -+++ tc/configure.in Wed Oct 7 14:21:21 2009 -@@ -281,7 +281,6 @@ - AC_SEARCH_LIBS(tgetent, termlib termcap curses ncurses) - AC_SEARCH_LIBS(gethostbyname, nsl) - AC_SEARCH_LIBS(connect, socket) --AM_ICONV +--- tcsh-6.18.01/sh.c.orig Thu Nov 15 14:26:18 2012 ++++ tcsh-6.18.01/sh.c Thu Nov 15 14:26:37 2012 +@@ -175,17 +175,10 @@ + size_t len; + int add_LOC = 1; + int add_lang = 1; +- char trypath[MAXPATHLEN]; +- struct stat st; + + if (path == NULL) + return; - dnl Checks for header files - AC_CHECK_HEADERS([auth.h crypt.h inttypes.h shadow.h stdint.h utmp.h utmpx.h]) -@@ -440,5 +440,5 @@ - AC_SUBST(HESDEF) - AC_SUBST(HESLIB) +- (void) xsnprintf(trypath, sizeof(trypath), "%s/en/LC_MESSAGES/tcsh.cat", +- path); +- if (stat(trypath, &st) == -1) +- return; +- + if ((old = getenv("NLSPATH")) != NULL) + len = strlen(old) + 1; /* don't forget the colon. */ + else +--- tcsh-6.18.01/sh.func.c.orig Mon Dec 3 13:09:33 2012 ++++ tcsh-6.18.01/sh.func.c Mon Dec 3 13:09:54 2012 +@@ -2627,6 +2627,8 @@ --AC_CONFIG_FILES([Makefile]) -+AC_CONFIG_FILES([Makefile nls/Makefile]) - AC_OUTPUT - + if (adrof(STRcatalog) != NULL) + catalog = xasprintf("tcsh.%s", short2str(varval(STRcatalog))); ++/* for compatibility */ ++#undef NL_CAT_LOCALE + #ifdef NL_CAT_LOCALE /* POSIX-compliant. */ + /* + * Check if LC_MESSAGES is set in the environment and use it, if so. diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/patches/004.tcsh-6.14.00-avoid_null_for_cwd.patch --- a/components/tcsh/patches/004.tcsh-6.14.00-avoid_null_for_cwd.patch Tue Jan 14 08:01:05 2014 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -diff -up tcsh-6.14.00/sh.proc.c.orig tcsh-6.14.00/sh.proc.c ---- tcsh-6.14.00/sh.proc.c.orig 2010-09-08 10:31:31.000000000 +0200 -+++ tcsh-6.14.00/sh.proc.c 2010-09-08 10:48:07.996573506 +0200 -@@ -396,7 +396,7 @@ found: - #ifdef notdef - jobflags & PAEXITED || - #endif /* notdef */ -- !eq(dcwd->di_name, fp->p_cwd->di_name))) { -+ fp->p_cwd == NULL || !eq(dcwd->di_name, fp->p_cwd->di_name))) { - /* PWP: print a newline after ^C */ - if (jobflags & PINTERRUPTED) { - #ifdef SHORT_STRINGS diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/tcsh.license --- a/components/tcsh/tcsh.license Tue Jan 14 08:01:05 2014 -0800 +++ b/components/tcsh/tcsh.license Thu Jan 16 06:52:45 2014 -0800 @@ -1,9 +1,3 @@ ----------------- -- tcsh 6.17.00 - ----------------- - -Oracle Internal Tracking Number 5688 - /*- * Copyright (c) 1980, 1991 The Regents of the University of California. * All rights reserved. diff -r ed4c692fa932 -r cd48674f5a76 components/tcsh/tcsh.p5m --- a/components/tcsh/tcsh.p5m Tue Jan 14 08:01:05 2014 -0800 +++ b/components/tcsh/tcsh.p5m Thu Jan 16 06:52:45 2014 -0800 @@ -18,7 +18,7 @@ # # CDDL HEADER END # -# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011. 2014, Oracle and/or its affiliates. All rights reserved. # default mangler.man.stability volatile> @@ -27,6 +27,8 @@ set name=pkg.description \ value="C shell with file name completion and command line editing" set name=pkg.summary value="Tenex C-shell (tcsh)" +set name=com.oracle.info.description value="tcsh, the Tenex C-shell" +set name=com.oracle.info.tpno value=5688 set name=info.classification value=org.opensolaris.category.2008:System/Shells set name=info.source-url value=$(COMPONENT_ARCHIVE_URL) set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)