Sync from SUSE:SLFO:Main tcsh revision 74a75f8f946692c4ba1185cfab1a8d97

This commit is contained in:
Adrian Schröter 2024-05-04 01:06:00 +02:00
commit 25ea9fbc97
15 changed files with 4459 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

926
bindkey.tcsh Normal file
View File

@ -0,0 +1,926 @@
#
# bindkey.tcsh Bind keys on escape sequences of xterm
# and linux console
#
# Copyright: 1993-2007 Werner Fink, 1996-2002 SuSE Linux AG, Germany
# Copyright: 2007 SuSE LINUX Products GmbH, Nuernberg, Germany.
#
# Author: Werner Fink <feedback@suse.de>
#
# Default values
#
if ( ! ${?TERM} ) setenv TERM linux
if ( ! ${?CSHEDIT} ) setenv CSHEDIT emacs
#
# VI line editing
#
if ( "$CSHEDIT" == "vi" ) then
bindkey -v
else
bindkey "^[ " magic-space
bindkey "^[!" expand-history
endif
#
# Common standard keypad and cursor
#
bindkey "^[[1~" beginning-of-line
bindkey "^[[2~" yank
bindkey "^[[3~" delete-char
bindkey "^[[4~" end-of-line
bindkey "^[[5~" history-search-backward
bindkey "^[[6~" history-search-forward
if ( ${?MC_SID} == 0 ) then
#
# Those bindings interfere with Midnight Commander
#
bindkey "^M[1~" beginning-of-line
bindkey "^M[2~" yank
bindkey "^M[3~" delete-char
bindkey "^M[4~" end-of-line
bindkey "^M[5~" history-search-backward
bindkey "^M[6~" history-search-forward
endif
bindkey -r "\233"
bindkey "\2331~" beginning-of-line
bindkey "\2332~" yank
bindkey "\2333~" delete-char
bindkey "\2334~" end-of-line
bindkey "\2335~" history-search-backward
bindkey "\2336~" history-search-forward
if ( "$TERM" =~ xterm* ) then
bindkey "^[[2;2~" yank
bindkey "^[[3;2~" delete-char
bindkey "^[[5;2~" history-search-backward
bindkey "^[[6;2~" history-search-forward
bindkey "^[[2;3~" yank
bindkey "^[[3;3~" delete-char
bindkey "^[[5;3~" history-search-backward
bindkey "^[[6;3~" history-search-forward
bindkey "^[[2;4~" yank
bindkey "^[[3;4~" delete-char
bindkey "^[[5;4~" history-search-backward
bindkey "^[[6;4~" history-search-forward
bindkey "^[[2;5~" yank
bindkey "^[[3;5~" delete-char
bindkey "^[[5;5~" history-search-backward
bindkey "^[[6;5~" history-search-forward
bindkey "^[[2;6~" yank
bindkey "^[[3;6~" delete-char
bindkey "^[[5;6~" history-search-backward
bindkey "^[[6;6~" history-search-forward
bindkey "^[[2;7~" yank
bindkey "^[[3;7~" delete-char
bindkey "^[[5;7~" history-search-backward
bindkey "^[[6;7~" history-search-forward
bindkey "^[[2;8~" yank
bindkey "^[[3;8~" delete-char
bindkey "^[[5;8~" history-search-backward
bindkey "^[[6;8~" history-search-forward
endif
bindkey "^[[C" forward-char
bindkey "^[[D" backward-char
bindkey "^[[A" up-history
bindkey "^[[B" down-history
bindkey -r "\217"
bindkey "\217C" forward-char
bindkey "\217D" backward-char
bindkey "\217A" up-history
bindkey "\217B" down-history
bindkey "\233C" forward-char
bindkey "\233D" backward-char
bindkey "\233A" up-history
bindkey "\233B" down-history
#
# Cursor keys in keypad mode
#
bindkey "^C[OC" forward-char
bindkey "^C[OD" backward-char
bindkey "^C[OA" up-history
bindkey "^C[OB" down-history
#
# Cursor keys in ANSI mode
#
bindkey "^C[[C" forward-char
bindkey "^C[[D" backward-char
bindkey "^C[[A" up-history
bindkey "^C[[B" down-history
#
# Cursor keys in 8 bit keypad mode
#
bindkey "^C^MOC" forward-char
bindkey "^C^MOD" backward-char
bindkey "^C^MOA" up-history
bindkey "^C^MOB" down-history
#
# Cursor keys in 8 bit ANSI mode
#
bindkey "^C^M[C" forward-char
bindkey "^C^M[D" backward-char
bindkey "^C^M[A" up-history
bindkey "^C^M[B" down-history
bindkey "^C^[[D" backward-char
#
if ( "$TERM" =~ xterm* ) then
bindkey -c "^[[E" "source /etc/csh.cshrc"
bindkey -c "^[[1;2E" "source /etc/csh.cshrc"
bindkey -c "^[[1;3E" "source /etc/csh.cshrc"
bindkey -c "^[[1;4E" "source /etc/csh.cshrc"
bindkey -c "^[[1;5E" "source /etc/csh.cshrc"
bindkey -c "^[[1;6E" "source /etc/csh.cshrc"
bindkey -c "^[[1;7E" "source /etc/csh.cshrc"
bindkey -c "^[[1;8E" "source /etc/csh.cshrc"
bindkey "^[[2C" forward-word
bindkey "^[[2D" backward-word
bindkey "^[[2A" history-search-backward
bindkey "^[[2B" history-search-forward
bindkey "^[[1;2C" forward-word
bindkey "^[[1;2D" backward-word
bindkey "^[[1;2A" history-search-backward
bindkey "^[[1;2B" history-search-forward
bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word
bindkey "^[[1;3A" history-search-backward
bindkey "^[[1;3B" history-search-forward
bindkey "^[[1;4C" forward-word
bindkey "^[[1;4D" backward-word
bindkey "^[[1;4A" history-search-backward
bindkey "^[[1;4B" history-search-forward
bindkey "^[[5C" forward-word
bindkey "^[[5D" backward-word
bindkey "^[[5A" history-search-backward
bindkey "^[[5B" history-search-forward
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5A" history-search-backward
bindkey "^[[1;5B" history-search-forward
bindkey "^[[1;6C" forward-word
bindkey "^[[1;6D" backward-word
bindkey "^[[1;6A" history-search-backward
bindkey "^[[1;6B" history-search-forward
bindkey "^[[1;7C" forward-word
bindkey "^[[1;7D" backward-word
bindkey "^[[1;7A" history-search-backward
bindkey "^[[1;7B" history-search-forward
bindkey "^[[1;8C" forward-word
bindkey "^[[1;8D" backward-word
bindkey "^[[1;8A" history-search-backward
bindkey "^[[1;8B" history-search-forward
bindkey "\2332C" forward-word
bindkey "\2332D" backward-word
bindkey "\2332A" history-search-backward
bindkey "\2332B" history-search-forward
bindkey "\2331;2C" forward-word
bindkey "\2331;2D" backward-word
bindkey "\2331;2A" history-search-backward
bindkey "\2331;2B" history-search-forward
bindkey "\2331;3C" forward-word
bindkey "\2331;3D" backward-word
bindkey "\2331;3A" history-search-backward
bindkey "\2331;3B" history-search-forward
bindkey "\2331;4C" forward-word
bindkey "\2331;4D" backward-word
bindkey "\2331;4A" history-search-backward
bindkey "\2331;4B" history-search-forward
bindkey "\2335C" forward-word
bindkey "\2335D" backward-word
bindkey "\2335A" history-search-backward
bindkey "\2335B" history-search-forward
bindkey "\2331;5C" forward-word
bindkey "\2331;5D" backward-word
bindkey "\2331;5A" history-search-backward
bindkey "\2331;5B" history-search-forward
bindkey "\2331;6C" forward-word
bindkey "\2331;6D" backward-word
bindkey "\2331;6A" history-search-backward
bindkey "\2331;6B" history-search-forward
bindkey "\2331;7C" forward-word
bindkey "\2331;7D" backward-word
bindkey "\2331;7A" history-search-backward
bindkey "\2331;7B" history-search-forward
bindkey "\2331;8C" forward-word
bindkey "\2331;8D" backward-word
bindkey "\2331;8A" history-search-backward
bindkey "\2331;8B" history-search-forward
else
bindkey -c "^[[G" "source /etc/csh.cshrc"
endif
#
# Avoid network problems
# ... \177 (ASCII-DEL) and \010 (ASCII-BS)
# do `backward-delete-char'
# Note: `delete-char' is maped to \033[3~
# Therefore xterm's responce on pressing
# key Delete or KP-Delete should be
# \033[3~ ... NOT \177
#
bindkey "^?" backward-delete-char
bindkey "^H" backward-delete-char
if ( "$TERM" =~ xterm* ) then
#
# XTerm in UTF-8 mode
#
bindkey "^[\303\277" backward-delete-word
bindkey "^[ÿ" backward-delete-word
endif
#
# Home and End
#
if ( "$TERM" =~ xterm* ) then
#
# Normal keypad and cursor of xterm
#
bindkey "^[[1~" history-search-backward
bindkey "^[[4~" set-mark-command
bindkey "^[[H" beginning-of-line
bindkey "^[[F" end-of-line
bindkey "^[[1;2H" beginning-of-line
bindkey "^[[1;2F" end-of-line
bindkey "^[[1;3H" beginning-of-line
bindkey "^[[1;3F" end-of-line
bindkey "^[[1;4H" beginning-of-line
bindkey "^[[1;4F" end-of-line
bindkey "^[[1;5H" beginning-of-line
bindkey "^[[1;5F" end-of-line
bindkey "^[[1;6H" beginning-of-line
bindkey "^[[1;6F" end-of-line
bindkey "^[[1;7H" beginning-of-line
bindkey "^[[1;7F" end-of-line
bindkey "^[[1;8H" beginning-of-line
bindkey "^[[1;8F" end-of-line
bindkey "\2331;2H" beginning-of-line
bindkey "\2331;2F" end-of-line
bindkey "\2331;3H" beginning-of-line
bindkey "\2331;3F" end-of-line
bindkey "\2331;4H" beginning-of-line
bindkey "\2331;4F" end-of-line
bindkey "\2331;5H" beginning-of-line
bindkey "\2331;5F" end-of-line
bindkey "\2331;6H" beginning-of-line
bindkey "\2331;6F" end-of-line
bindkey "\2331;7H" beginning-of-line
bindkey "\2331;7F" end-of-line
bindkey "\2331;8H" beginning-of-line
bindkey "\2331;8F" end-of-line
bindkey "^[[2H" beginning-of-line
bindkey "^[[2F" end-of-line
bindkey "^[[5H" beginning-of-line
bindkey "^[[5F" end-of-line
# Home and End of application keypad and cursor of xterm
bindkey "^[OH" beginning-of-line
bindkey "^[OF" end-of-line
bindkey "^[O2H" beginning-of-line
bindkey "^[O2F" end-of-line
bindkey "^[O5H" beginning-of-line
bindkey "^[O5F" end-of-line
else
if ( "$TERM" =~ kvt* ) then
bindkey "^[[1~" history-search-backward
bindkey "^[[4~" set-mark-command
bindkey "^[OH" beginning-of-line
bindkey "^[OF" end-of-line
endif
#
# TERM=linux or console
#
bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line
endif
#
# Application keypad and cursor of xterm
#
if ( "$TERM" =~ xterm* ) then
bindkey "^[OD" backward-char
bindkey "^[OC" forward-char
bindkey "^[OA" up-history
bindkey "^[OB" down-history
bindkey -c "^[OE" "source /etc/csh.cshrc"
bindkey "^[O2D" backward-word
bindkey "^[O2C" forward-word
bindkey "^[O2A" history-search-backward
bindkey "^[O2B" history-search-forward
bindkey "^[O3D" backward-word
bindkey "^[O3C" forward-word
bindkey "^[O3A" history-search-backward
bindkey "^[O3B" history-search-forward
bindkey "^[O4D" backward-word
bindkey "^[O4C" forward-word
bindkey "^[O4A" history-search-backward
bindkey "^[O4B" history-search-forward
bindkey "^[O5D" backward-word
bindkey "^[O5C" forward-word
bindkey "^[O5A" history-search-backward
bindkey "^[O5B" history-search-forward
bindkey "^[O6D" backward-word
bindkey "^[O6C" forward-word
bindkey "^[O6A" history-search-backward
bindkey "^[O6B" history-search-forward
bindkey "^[O7D" backward-word
bindkey "^[O7C" forward-word
bindkey "^[O7A" history-search-backward
bindkey "^[O7B" history-search-forward
bindkey "^[O8D" backward-word
bindkey "^[O8C" forward-word
bindkey "^[O8A" history-search-backward
bindkey "^[O8B" history-search-forward
# DEC keyboard KP_F1 - KP_F4 or
# XTerm of XFree86 in VT220 mode F1 - F4
bindkey -s "^[OP" "^["
bindkey "^[OQ" vi-undo
bindkey "^[OR" undefined-key
bindkey "^[OS" kill-line
bindkey -s "^[O2P" "^["
bindkey "^[O2Q" vi-undo
bindkey "^[O2R" undefined-key
bindkey "^[O2S" kill-line
bindkey -s "^[O3P" "^["
bindkey "^[O3Q" vi-undo
bindkey "^[O3R" undefined-key
bindkey "^[O3S" kill-line
bindkey -s "^[O4P" "^["
bindkey "^[O4Q" vi-undo
bindkey "^[O4R" undefined-key
bindkey "^[O4S" kill-line
bindkey -s "^[O5P" "^["
bindkey "^[O5Q" vi-undo
bindkey "^[O5R" undefined-key
bindkey "^[O5S" kill-line
bindkey -s "^[O6P" "^["
bindkey "^[O6Q" vi-undo
bindkey "^[O6R" undefined-key
bindkey "^[O6S" kill-line
bindkey -s "^[O7P" "^["
bindkey "^[O7Q" vi-undo
bindkey "^[O7R" undefined-key
bindkey "^[O7S" kill-line
bindkey -s "^[O8P" "^["
bindkey "^[O8Q" vi-undo
bindkey "^[O8R" undefined-key
bindkey "^[O8S" kill-line
bindkey -s "^[O1;2P" "^["
bindkey "^[O1;2Q" vi-undo
bindkey "^[O1;2R" undefined-key
bindkey "^[O1;2S" kill-line
bindkey -s "^[O1;3P" "^["
bindkey "^[O1;3Q" vi-undo
bindkey "^[O1;3R" undefined-key
bindkey "^[O1;3S" kill-line
bindkey -s "^[O1;4P" "^["
bindkey "^[O1;4Q" vi-undo
bindkey "^[O1;4R" undefined-key
bindkey "^[O1;4S" kill-line
bindkey -s "^[O1;5P" "^["
bindkey "^[O1;5Q" vi-undo
bindkey "^[O1;5R" undefined-key
bindkey "^[O1;5S" kill-line
bindkey -s "^[O1;6P" "^["
bindkey "^[O1;6Q" vi-undo
bindkey "^[O1;6R" undefined-key
bindkey "^[O1;6S" kill-line
bindkey -s "^[O1;7P" "^["
bindkey "^[O1;7Q" vi-undo
bindkey "^[O1;7R" undefined-key
bindkey "^[O1;7S" kill-line
bindkey -s "^[O1;8P" "^["
bindkey "^[O1;8Q" vi-undo
bindkey "^[O1;8R" undefined-key
bindkey "^[O1;8S" kill-line
endif
if ( "$TERM" =~ gnome* ) then
# or gnome terminal F1 - F4
bindkey -s "^[OP" "^["
bindkey "^[OQ" vi-undo
bindkey "^[OR" undefined-key
bindkey "^[OS" kill-line
endif
#
# Function keys F1 - F12
#
if ( "$TERM" =~ linux* ) then
#
# On console the first five function keys
#
bindkey -s "^[[[A" "^["
bindkey "^[[[B" vi-undo
bindkey "^[[[C" undefined-key
bindkey "^[[[D" kill-line
bindkey "^[[[E" undefined-key
else
#
# The first five standard function keys
#
bindkey -s "^[[11~" "^["
bindkey "^[[12~" vi-undo
bindkey "^[[13~" undefined-key
bindkey "^[[14~" kill-line
bindkey "^[[15~" undefined-key
endif
bindkey "^[[17~" undefined-key
bindkey "^[[18~" undefined-key
bindkey "^[[19~" undefined-key
bindkey "^[[20~" undefined-key
bindkey "^[[21~" undefined-key
bindkey "^[[23~" undefined-key
bindkey "^[[24~" undefined-key
bindkey "^[[25~" undefined-key
bindkey "^[[26~" undefined-key
# DEC keyboard: F15=^[[28~ is Help
bindkey "^[[28~" undefined-key
# DEC keyboard: F16=^[[29~ is Menu
bindkey "^[[29~" undefined-key
bindkey "^[[31~" undefined-key
bindkey "^[[32~" undefined-key
bindkey "^[[33~" undefined-key
bindkey "^[[34~" undefined-key
bindkey "^[[35~" undefined-key
bindkey "^[[36~" undefined-key
bindkey "\23317~" undefined-key
bindkey "\23318~" undefined-key
bindkey "\23319~" undefined-key
bindkey "\23320~" undefined-key
bindkey "\23321~" undefined-key
bindkey "\23323~" undefined-key
bindkey "\23324~" undefined-key
bindkey "\23325~" undefined-key
bindkey "\23326~" undefined-key
bindkey "\23328~" undefined-key
bindkey "\23329~" undefined-key
bindkey "\23331~" undefined-key
bindkey "\23332~" undefined-key
bindkey "\23333~" undefined-key
bindkey "\23334~" undefined-key
bindkey "\23335~" undefined-key
bindkey "\23336~" undefined-key
if ( "$TERM" =~ xterm* ) then
bindkey "^[[1;2P" undefined-key
bindkey "^[[1;2Q" undefined-key
bindkey "^[[1;2R" undefined-key
bindkey "^[[1;2S" undefined-key
bindkey "^[[15;2~" undefined-key
bindkey "^[[17;2~" undefined-key
bindkey "^[[18;2~" undefined-key
bindkey "^[[19;2~" undefined-key
bindkey "^[[20;2~" undefined-key
bindkey "^[[21;2~" undefined-key
bindkey "^[[23;2~" undefined-key
bindkey "^[[24;2~" undefined-key
bindkey "^[[1;3P" undefined-key
bindkey "^[[1;3Q" undefined-key
bindkey "^[[1;3R" undefined-key
bindkey "^[[1;3S" undefined-key
bindkey "^[[15;3~" undefined-key
bindkey "^[[17;3~" undefined-key
bindkey "^[[18;3~" undefined-key
bindkey "^[[19;3~" undefined-key
bindkey "^[[20;3~" undefined-key
bindkey "^[[21;3~" undefined-key
bindkey "^[[23;3~" undefined-key
bindkey "^[[24;3~" undefined-key
bindkey "^[[1;4P" undefined-key
bindkey "^[[1;4Q" undefined-key
bindkey "^[[1;4R" undefined-key
bindkey "^[[1;4S" undefined-key
bindkey "^[[15;4~" undefined-key
bindkey "^[[17;4~" undefined-key
bindkey "^[[18;4~" undefined-key
bindkey "^[[19;4~" undefined-key
bindkey "^[[20;4~" undefined-key
bindkey "^[[21;4~" undefined-key
bindkey "^[[23;4~" undefined-key
bindkey "^[[24;4~" undefined-key
bindkey "^[[1;5P" undefined-key
bindkey "^[[1;5Q" undefined-key
bindkey "^[[1;5R" undefined-key
bindkey "^[[1;5S" undefined-key
bindkey "^[[15;5~" undefined-key
bindkey "^[[17;5~" undefined-key
bindkey "^[[18;5~" undefined-key
bindkey "^[[19;5~" undefined-key
bindkey "^[[20;5~" undefined-key
bindkey "^[[21;5~" undefined-key
bindkey "^[[23;5~" undefined-key
bindkey "^[[24;5~" undefined-key
bindkey "^[[1;6P" undefined-key
bindkey "^[[1;6Q" undefined-key
bindkey "^[[1;6R" undefined-key
bindkey "^[[1;6S" undefined-key
bindkey "^[[15;6~" undefined-key
bindkey "^[[17;6~" undefined-key
bindkey "^[[18;6~" undefined-key
bindkey "^[[19;6~" undefined-key
bindkey "^[[20;6~" undefined-key
bindkey "^[[21;6~" undefined-key
bindkey "^[[23;6~" undefined-key
bindkey "^[[24;6~" undefined-key
bindkey "^[[1;7P" undefined-key
bindkey "^[[1;7Q" undefined-key
bindkey "^[[1;7R" undefined-key
bindkey "^[[1;7S" undefined-key
bindkey "^[[15;7~" undefined-key
bindkey "^[[17;7~" undefined-key
bindkey "^[[18;7~" undefined-key
bindkey "^[[19;7~" undefined-key
bindkey "^[[20;7~" undefined-key
bindkey "^[[21;7~" undefined-key
bindkey "^[[23;7~" undefined-key
bindkey "^[[24;7~" undefined-key
bindkey "^[[1;8P" undefined-key
bindkey "^[[1;8Q" undefined-key
bindkey "^[[1;8R" undefined-key
bindkey "^[[1;8S" undefined-key
bindkey "^[[15;8~" undefined-key
bindkey "^[[17;8~" undefined-key
bindkey "^[[18;8~" undefined-key
bindkey "^[[19;8~" undefined-key
bindkey "^[[20;8~" undefined-key
bindkey "^[[21;8~" undefined-key
bindkey "^[[23;8~" undefined-key
bindkey "^[[24;8~" undefined-key
endif
#
if ( "$TERM" =~ xterm* ) then
#
# Application keypad and cursor of xterm
# with NumLock ON
#
# Operators
bindkey -s "^[Oo" "/"
bindkey -s "^[Oj" "*"
bindkey -s "^[Om" "-"
bindkey -s "^[Ok" "+"
bindkey -s "^[Ol" ","
bindkey "^[OM" newline
bindkey -s "^[On" "."
# Numbers
bindkey -s "^[Op" "0"
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# Operators
bindkey -s "\217o" "/"
bindkey -s "\217j" "*"
bindkey -s "\217m" "-"
bindkey -s "\217k" "+"
bindkey -s "\217l" ","
bindkey "\217M" newline
bindkey -s "\217n" "."
# Numbers
bindkey -s "\217p" "0"
bindkey -s "\217q" "1"
bindkey -s "\217r" "2"
bindkey -s "\217s" "3"
bindkey -s "\217t" "4"
bindkey -s "\217u" "5"
bindkey -s "\217v" "6"
bindkey -s "\217w" "7"
bindkey -s "\217x" "8"
bindkey -s "\217y" "9"
# Shift+Alt+KP_<0...9> of konsole
bindkey "^[0" yank
bindkey "^[1" end-of-line
bindkey "^[2" down-history
bindkey "^[3" history-search-forward
bindkey "^[4" backward-word
bindkey -c "^[5" "source /etc/csh.cshrc"
bindkey "^[6" forward-word
bindkey "^[7" beginning-of-line
bindkey "^[8" up-history
bindkey "^[9" history-search-backward
endif
#
if ( "$TERM" =~ kterm* ) then
bindkey "^[[\000" undefined-key
endif
#
if ( "$TERM" =~ mlterm* ) then
bindkey -c "^[[E" "source /etc/csh.cshrc"
bindkey "^[OH" beginning-of-line
bindkey "^[OF" end-of-line
bindkey "^[^[OH" beginning-of-line
bindkey "^[^[OF" end-of-line
bindkey "^[[1;2C" forward-word
bindkey "^[[1;2D" backward-word
bindkey "^[[1;2A" history-search-backward
bindkey "^[[1;2B" history-search-forward
bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word
bindkey "^[[1;3A" history-search-backward
bindkey "^[[1;3B" history-search-forward
bindkey "^[[1;4C" forward-word
bindkey "^[[1;4D" backward-word
bindkey "^[[1;4A" history-search-backward
bindkey "^[[1;4B" history-search-forward
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5A" history-search-backward
bindkey "^[[1;5B" history-search-forward
bindkey "^[[1;6C" forward-word
bindkey "^[[1;6D" backward-word
bindkey "^[[1;6A" history-search-backward
bindkey "^[[1;6B" history-search-forward
bindkey "^[[1;7C" forward-word
bindkey "^[[1;7D" backward-word
bindkey "^[[1;7A" history-search-backward
bindkey "^[[1;7B" history-search-forward
bindkey "^[[1;8C" forward-word
bindkey "^[[1;8D" backward-word
bindkey "^[[1;8A" history-search-backward
bindkey "^[[1;8B" history-search-forward
bindkey "^[[11;2~" undefined-key
bindkey "^[[12;2~" undefined-key
bindkey "^[[13;2~" undefined-key
bindkey "^[[14;2~" undefined-key
bindkey "^[[15;2~" undefined-key
bindkey "^[[17;2~" undefined-key
bindkey "^[[18;2~" undefined-key
bindkey "^[[19;2~" undefined-key
bindkey "^[[20;2~" undefined-key
bindkey "^[[21;2~" undefined-key
bindkey "^[[23;2~" undefined-key
bindkey "^[[24;2~" undefined-key
bindkey "^[[11;3~" undefined-key
bindkey "^[[12;3~" undefined-key
bindkey "^[[13;3~" undefined-key
bindkey "^[[14;3~" undefined-key
bindkey "^[[15;3~" undefined-key
bindkey "^[[17;3~" undefined-key
bindkey "^[[18;3~" undefined-key
bindkey "^[[19;3~" undefined-key
bindkey "^[[20;3~" undefined-key
bindkey "^[[21;3~" undefined-key
bindkey "^[[23;3~" undefined-key
bindkey "^[[24;3~" undefined-key
bindkey "^[[11;4~" undefined-key
bindkey "^[[12;4~" undefined-key
bindkey "^[[13;4~" undefined-key
bindkey "^[[14;4~" undefined-key
bindkey "^[[15;4~" undefined-key
bindkey "^[[17;4~" undefined-key
bindkey "^[[18;4~" undefined-key
bindkey "^[[19;4~" undefined-key
bindkey "^[[20;4~" undefined-key
bindkey "^[[21;4~" undefined-key
bindkey "^[[23;4~" undefined-key
bindkey "^[[24;4~" undefined-key
bindkey "^[[11;5~" undefined-key
bindkey "^[[12;5~" undefined-key
bindkey "^[[13;5~" undefined-key
bindkey "^[[14;5~" undefined-key
bindkey "^[[15;5~" undefined-key
bindkey "^[[17;5~" undefined-key
bindkey "^[[18;5~" undefined-key
bindkey "^[[19;5~" undefined-key
bindkey "^[[20;5~" undefined-key
bindkey "^[[21;5~" undefined-key
bindkey "^[[23;5~" undefined-key
bindkey "^[[24;5~" undefined-key
bindkey "^[[11;6~" undefined-key
bindkey "^[[12;6~" undefined-key
bindkey "^[[13;6~" undefined-key
bindkey "^[[14;6~" undefined-key
bindkey "^[[15;6~" undefined-key
bindkey "^[[17;6~" undefined-key
bindkey "^[[18;6~" undefined-key
bindkey "^[[19;6~" undefined-key
bindkey "^[[20;6~" undefined-key
bindkey "^[[21;6~" undefined-key
bindkey "^[[23;6~" undefined-key
bindkey "^[[24;6~" undefined-key
bindkey "^[[11;7~" undefined-key
bindkey "^[[12;7~" undefined-key
bindkey "^[[13;7~" undefined-key
bindkey "^[[14;7~" undefined-key
bindkey "^[[15;7~" undefined-key
bindkey "^[[17;7~" undefined-key
bindkey "^[[18;7~" undefined-key
bindkey "^[[19;7~" undefined-key
bindkey "^[[20;7~" undefined-key
bindkey "^[[21;7~" undefined-key
bindkey "^[[23;7~" undefined-key
bindkey "^[[24;7~" undefined-key
bindkey "^[[11;8~" undefined-key
bindkey "^[[12;8~" undefined-key
bindkey "^[[13;8~" undefined-key
bindkey "^[[14;8~" undefined-key
bindkey "^[[15;8~" undefined-key
bindkey "^[[17;8~" undefined-key
bindkey "^[[18;8~" undefined-key
bindkey "^[[19;8~" undefined-key
bindkey "^[[20;8~" undefined-key
bindkey "^[[21;8~" undefined-key
bindkey "^[[23;8~" undefined-key
bindkey "^[[24;8~" undefined-key
# Shift+Alt+KP_<0...9>
bindkey "^[0" yank
bindkey "^[1" end-of-line
bindkey "^[2" down-history
bindkey "^[3" history-search-forward
bindkey "^[4" backward-word
bindkey -c "^[5" "source /etc/csh.cshrc"
bindkey "^[6" forward-word
bindkey "^[7" beginning-of-line
bindkey "^[8" up-history
bindkey "^[9" history-search-backward
endif
#
if ( "$TERM" =~ rxvt-unicode* ) then
bindkey '^[[23$' undefined-key
bindkey '^[[24$' undefined-key
bindkey "^[[11\^" undefined-key
bindkey "^[[12\^" undefined-key
bindkey "^[[13\^" undefined-key
bindkey "^[[14\^" undefined-key
bindkey "^[[15\^" undefined-key
bindkey "^[[17\^" undefined-key
bindkey "^[[18\^" undefined-key
bindkey "^[[19\^" undefined-key
bindkey "^[[20\^" undefined-key
bindkey "^[[21\^" undefined-key
bindkey "^[[23\^" undefined-key
bindkey "^[[24\^" undefined-key
bindkey -s "^[Oo" "/"
bindkey -s "^[Oj" "*"
bindkey -s "^[Om" "-"
bindkey -s "^[Ok" "+"
bindkey -s "^[Ol" ","
bindkey "^[OM" newline
bindkey -s "^[On" "."
bindkey -s "^[Op" "0"
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
bindkey "^[^[Oo" undefined-key
bindkey "^[^[Oj" undefined-key
bindkey "^[^[Om" undefined-key
bindkey "^[^[Ok" undefined-key
bindkey "^[^[Ol" delete-char
bindkey "^[^[OM" newline
bindkey "^[^[On" delete-char
bindkey "^[^[Op" yank
bindkey "^[^[Oq" end-of-line
bindkey "^[^[Or" down-history
bindkey "^[^[Os" history-search-forward
bindkey "^[^[Ot" backward-char
bindkey -s "^[^[Ou" "source /etc/csh.cshrc"
bindkey "^[^[Ov" forward-char
bindkey "^[^[Ow" beginning-of-line
bindkey "^[^[Ox" up-history
bindkey "^[^[Oy" history-search-backward
bindkey "^[Oc" forward-word
bindkey "^[Od" backward-word
bindkey "^[Oa" history-search-backward
bindkey "^[Ob" history-search-forward
bindkey "^[[c" forward-word
bindkey "^[[d" backward-word
bindkey "^[[a" history-search-backward
bindkey "^[[b" history-search-forward
bindkey "^[^[[c" forward-word
bindkey "^[^[[d" backward-word
bindkey "^[^[[a" history-search-backward
bindkey "^[^[[b" history-search-forward
bindkey "^[^[[C" forward-word
bindkey "^[^[[D" backward-word
bindkey "^[^[[A" history-search-backward
bindkey "^[^[[B" history-search-forward
bindkey "^[[2\^" yank
bindkey "^[[3\^" delete-char
bindkey "^[[5\^" history-search-backward
bindkey "^[[6\^" history-search-forward
bindkey "^[[7\^" beginning-of-line
bindkey "^[[8\^" end-of-line
bindkey '^[[2$' yank
bindkey '^[[3$' delete-char
bindkey '^[[5$' history-search-backward
bindkey '^[[6$' history-search-forward
bindkey '^[[7$' beginning-of-line
bindkey '^[[8$' end-of-line
bindkey '^[^[[2$' yank
bindkey '^[^[[3$' delete-char
bindkey '^[^[[5$' history-search-backward
bindkey '^[^[[6$' history-search-forward
bindkey '^[^[[7$' beginning-of-line
bindkey '^[^[[8$' end-of-line
bindkey "^[=" newline
# Shift+Ctrl+(Alt+)KP_<0...9> generates
# \000 ... \011 (^@ upto TAB) we ignore these
endif
#
# EMACS line editing
#
if ( "$CSHEDIT" == "emacs" ) then
#
# ... xterm application cursor
#
if ( "$TERM" =~ xterm* ) then
bindkey "^[^[OD" backward-word
bindkey "^[^[OC" forward-word
bindkey "^[^[OA" up-history
bindkey "^[^[OB" down-history
bindkey "^^[OD" backward-char
bindkey "^^[OC" forward-char
bindkey "^^[OA" up-history
bindkey "^^[OB" down-history
endif
#
# Standard cursor
#
bindkey "^[^[[D" backward-word
bindkey "^[^[[C" forward-word
bindkey "^[^[[A" up-history
bindkey "^[^[[B" down-history
bindkey "^^[[D" backward-char
bindkey "^^[[C" forward-char
bindkey "^^[[A" up-history
bindkey "^^[[B" down-history
endif
#
# Screen
#
if ( "$TERM" =~ screen* ) then
bindkey "\e[1;2D" backward-word
bindkey "\e[1;2C" forward-word
bindkey "\e[1;2A" up-history
bindkey "\e[1;2B" down-history
bindkey "\e[1;2H" beginning-of-line
bindkey "\e[1;2F" end-of-line
bindkey "\e[2;2~" yank
bindkey "\e[3;2~" delete-char
bindkey "\e[5;2~" history-search-backward
bindkey "\e[6;2~" history-search-forward
bindkey "\e[1;5D" backward-word
bindkey "\e[1;5C" forward-word
bindkey "\e[1;5A" up-history
bindkey "\e[1;5B" down-history
bindkey "\e[1;5H" beginning-of-line
bindkey "\e[1;5F" end-of-line
bindkey "\e[2;5~" yank
bindkey "\e[3;5~" delete-char
bindkey "\e[5;5~" history-search-backward
bindkey "\e[6;5~" history-search-forward
bindkey "\e[1;3D" backward-word
bindkey "\e[1;3C" forward-word
bindkey "\e[1;3A" up-history
bindkey "\e[1;3B" down-history
bindkey "\e[1;3H" beginning-of-line
bindkey "\e[1;3F" end-of-line
bindkey "\e[2;3~" yank
bindkey "\e[3;3~" delete-char
bindkey "\e[5;3~" history-search-backward
bindkey "\e[6;3~" history-search-forward
#
bindkey "\e[1;2P" undefined-key
bindkey "\e[1;2Q" undefined-key
bindkey "\e[1;2R" undefined-key
bindkey "\e[1;2S" undefined-key
bindkey "\e[15;2~" undefined-key
bindkey "\e[17;2~" undefined-key
bindkey "\e[18;2~" undefined-key
bindkey "\e[19;2~" undefined-key
bindkey "\e[20;2~" undefined-key
bindkey "\e[21;2~" undefined-key
bindkey "\e[23;2~" undefined-key
bindkey "\e[24;2~" undefined-key
#
bindkey "\e[1;5P" undefined-key
bindkey "\e[1;5Q" undefined-key
bindkey "\e[1;5R" undefined-key
bindkey "\e[1;5S" undefined-key
bindkey "\e[15;5~" undefined-key
bindkey "\e[17;5~" undefined-key
bindkey "\e[18;5~" undefined-key
bindkey "\e[19;5~" undefined-key
bindkey "\e[20;5~" undefined-key
bindkey "\e[21;5~" undefined-key
bindkey "\e[23;5~" undefined-key
bindkey "\e[24;5~" undefined-key
#
bindkey "\e[1;3P" undefined-key
bindkey "\e[1;3Q" undefined-key
bindkey "\e[1;3R" undefined-key
bindkey "\e[1;3S" undefined-key
bindkey "\e[15;3~" undefined-key
bindkey "\e[17;3~" undefined-key
bindkey "\e[18;3~" undefined-key
bindkey "\e[19;3~" undefined-key
bindkey "\e[20;3~" undefined-key
bindkey "\e[21;3~" undefined-key
bindkey "\e[23;3~" undefined-key
bindkey "\e[24;3~" undefined-key
endif
#
# end bindkey.tcsh
#

1007
complete.tcsh Normal file

File diff suppressed because it is too large Load Diff

15
tcsh-6.15.00-pipe.dif Normal file
View File

@ -0,0 +1,15 @@
---
sh.dol.c | 2 ++
1 file changed, 2 insertions(+)
--- sh.dol.c
+++ sh.dol.c 2016-11-25 08:00:30.455106978 +0000
@@ -462,6 +462,8 @@ Dgetdol(void)
size_t cbp = 0;
int old_pintr_disabled;
+ memset(&cbuf[0], 0, sizeof(cbuf));
+
for (;;) {
int len;
ssize_t res;

40
tcsh-6.16.00-norm-cmd.dif Normal file
View File

@ -0,0 +1,40 @@
---
ed.defns.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
--- ed.defns.c
+++ ed.defns.c 2021-04-27 07:32:34.710964878 +0000
@@ -1404,16 +1404,6 @@ editinit(void)
f->desc = CSAVS(3, 52, "Execute command");
f++;
- f->name = "newline-and-hold";
- f->func = F_NEWLINE_HOLD;
- f->desc = CSAVS(3, 122, "Execute command and keep current line");
-
- f++;
- f->name = "newline-and-down-history";
- f->func = F_NEWLINE_DOWN_HIST;
- f->desc = CSAVS(3, 123, "Execute command and move to next history line");
-
- f++;
f->name = "normalize-path";
f->func = F_PATH_NORM;
f->desc = CSAVS(3, 53,
@@ -1768,6 +1758,16 @@ editinit(void)
f->desc = CSAVS(3, 121, "(WIN32 only) Page visible console window down");
f++;
+ f->name = "newline-and-hold";
+ f->func = F_NEWLINE_HOLD;
+ f->desc = CSAVS(3, 122, "Execute command and keep current line");
+
+ f++;
+ f->name = "newline-and-down-history";
+ f->func = F_NEWLINE_DOWN_HIST;
+ f->desc = CSAVS(3, 123, "Execute command and move to next history line");
+
+ f++;
f->name = NULL;
f->func = 0;
f->desc = NULL;

137
tcsh-6.17.06-dspmbyte.dif Normal file
View File

@ -0,0 +1,137 @@
---
sh.c | 4 ++--
sh.func.c | 15 +++++++--------
sh.set.c | 14 ++++++++++----
tc.const.c | 4 +++-
4 files changed, 22 insertions(+), 15 deletions(-)
--- sh.c
+++ sh.c 2021-04-27 07:35:35.059651991 +0000
@@ -865,9 +865,9 @@ main(int argc, char **argv)
/* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
#if defined(DSPMBYTE)
#if defined(NLS) && defined(LC_CTYPE)
- if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL) && !adrof(CHECK_MBYTEVAR))
+ if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL))
#else
- if ((tcp = getenv("LANG")) != NULL && !adrof(CHECK_MBYTEVAR))
+ if ((tcp = getenv("LANG")) != NULL)
#endif
{
autoset_dspmbyte(str2short(tcp));
--- sh.func.c
+++ sh.func.c 2021-04-27 07:36:57.210162751 +0000
@@ -1374,14 +1374,6 @@ dosetenv(Char **v, struct command *c)
}
#endif /* apollo */
- /* dspkanji/dspmbyte autosetting */
- /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
-#if defined(DSPMBYTE)
- if (eq(vp, STRLANG) && !adrof(CHECK_MBYTEVAR)) {
- autoset_dspmbyte(lp);
- }
-#endif
-
if (islocale_var(vp)) {
#ifdef NLS
int k;
@@ -1406,6 +1398,13 @@ dosetenv(Char **v, struct command *c)
nlsclose();
nlsinit();
# endif /* NLS_CATALOGS */
+# if defined(DSPMBYTE)
+ /* dspkanji/dspmbyte autosetting */
+ /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
+ if (eq(vp, STRLANG)) {
+ autoset_dspmbyte(lp);
+ }
+# endif
# ifdef SETLOCALEBUG
dont_free = 0;
# endif /* SETLOCALEBUG */
--- sh.set.c
+++ sh.set.c 2021-04-27 07:38:12.412808424 +0000
@@ -1163,11 +1163,11 @@ update_dspmbyte_vars(void)
dstr1 = vp->vec[0];
if (eq (dstr1, STRsjis))
iskcode = 1;
- else if (eq(dstr1, STReuc))
+ else if (eq(dstr1, STReuc) || eq(dstr1, STReucjp) || eq(dstr1, STRGB2312))
iskcode = 2;
else if (eq(dstr1, STRbig5))
iskcode = 3;
- else if (eq(dstr1, STRutf8))
+ else if (eq(dstr1, STRutf8) || eq(dstr1, STRutfx8))
iskcode = 4;
else if ((dstr1[0] - '0') >= 0 && (dstr1[0] - '0') <= 3) {
iskcode = 0;
@@ -1251,7 +1251,7 @@ update_dspmbyte_vars(void)
_enable_mbdisp = 0;
dspmbyte_ls = 0;
}
-#ifdef MBYTEDEBUG /* Sorry, use for beta testing */
+# ifdef MBYTEDEBUG /* Sorry, use for beta testing */
{
Char mbmapstr[300];
for (lp = 0; lp < 256; lp++)
@@ -1259,7 +1259,7 @@ update_dspmbyte_vars(void)
mbmapstr[lp] = 0;
setcopy(STRmbytemap, mbmapstr, VAR_READWRITE);
}
-#endif /* MBYTEMAP */
+# endif /* MBYTEMAP */
}
/* dspkanji/dspmbyte autosetting */
@@ -1268,6 +1268,7 @@ void
autoset_dspmbyte(const Char *pcp)
{
int i;
+ struct varent *vp;
static const struct dspm_autoset_Table {
Char *n;
Char *v;
@@ -1290,13 +1291,18 @@ autoset_dspmbyte(const Char *pcp)
#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
static const struct dspm_autoset_Table dspmc[] = {
{ STRstarutfstar8, STRutf8 },
+ { STRutfx8, STRutf8 },
{ STReuc, STReuc },
+ { STReucjp, STReuc },
{ STRGB2312, STReuc },
{ STRLANGBIG5, STRbig5 },
{ NULL, NULL }
};
Char *codeset;
+ if ((vp = adrof(CHECK_MBYTEVAR)))
+ unsetv1(vp);
+
codeset = str2short(nl_langinfo(CODESET));
if (*codeset != '\0') {
for (i = 0; dspmc[i].n; i++) {
--- tc.const.c
+++ tc.const.c 2021-04-27 07:35:35.059651991 +0000
@@ -130,10 +130,12 @@ Char STRmmliteral[] = { '-', 'G', '\0' }
Char STRmmliteral[] = { '-', '-', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\0' };
# endif
Char STReuc[] = { 'e', 'u', 'c', '\0' };
+Char STReucjp[] = { 'e', 'u', 'c', '-', 'j', 'p', '\0' };
Char STRsjis[] = { 's', 'j', 'i', 's', '\0' };
Char STRbig5[] = { 'b', 'i', 'g', '5', '\0' };
Char STRutf8[] = { 'u', 't', 'f', '8', '\0' };
Char STRstarutfstar8[] = { '*', 'u', 't', 'f', '*', '8', '\0' };
+Char STRutfx8[] = { 'u', 't', 'f', '-', '8', '\0' };
Char STRGB2312[] = { 'g', 'b', '2', '3', '1', '2', '\0' };
# ifdef MBYTEDEBUG /* Sorry, use for beta testing */
Char STRmbytemap[] = { 'm', 'b', 'y', 't', 'e', 'm', 'a', 'p', '\0' };
@@ -441,7 +443,7 @@ Char STRkilldup[] = { 'k', 'i', 'l', 'l
Char STRshlvl[] = { 's', 'h', 'l', 'v', 'l', '\0' };
Char STRKSHLVL[] = { 'S', 'H', 'L', 'V', 'L', '\0' };
Char STRLANG[] = { 'L', 'A', 'N', 'G', '\0' };
-Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
+Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
Char STRLC_CTYPE[] = { 'L', 'C', '_', 'C', 'T', 'Y', 'P', 'E' ,'\0' };
Char STRLC_NUMERIC[] = { 'L', 'C', '_', 'N', 'U', 'M', 'E', 'R', 'I',
'C', '\0' };

150
tcsh-6.18.03-catalogs.dif Normal file
View File

@ -0,0 +1,150 @@
---
nls/Makefile.in | 48 ++++++++++++++++++++++++------------------------
sh.c | 9 ++++++---
2 files changed, 30 insertions(+), 27 deletions(-)
--- nls/Makefile.in
+++ nls/Makefile.in 2022-01-11 15:20:37.731596998 +0000
@@ -18,96 +18,96 @@ CATGEN= ${srcdir}/catgen
all: ${CATALOGS}
-INSTALLED+=${localedir}/C/LC_MESSAGES/tcsh.cat
-${localedir}/C/LC_MESSAGES/tcsh.cat: C.cat
+INSTALLED+=${localedir}/C/LC_MESSAGES/tcsh
+${localedir}/C/LC_MESSAGES/tcsh: C.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
C.cat: ${srcdir}/C/charset ${srcdir}/C/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/et/LC_MESSAGES/tcsh.cat
-${localedir}/et/LC_MESSAGES/tcsh.cat: et.cat
+INSTALLED+=${localedir}/et/LC_MESSAGES/tcsh
+${localedir}/et/LC_MESSAGES/tcsh: et.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
et.cat: ${srcdir}/et/charset ${srcdir}/et/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/fi/LC_MESSAGES/tcsh.cat
-${localedir}/fi/LC_MESSAGES/tcsh.cat: finnish.cat
+INSTALLED+=${localedir}/fi/LC_MESSAGES/tcsh
+${localedir}/fi/LC_MESSAGES/tcsh: finnish.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
finnish.cat: ${srcdir}/finnish/charset ${srcdir}/finnish/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/fr/LC_MESSAGES/tcsh.cat
-${localedir}/fr/LC_MESSAGES/tcsh.cat: french.cat
+INSTALLED+=${localedir}/fr/LC_MESSAGES/tcsh
+${localedir}/fr/LC_MESSAGES/tcsh: french.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
french.cat: ${srcdir}/french/charset ${srcdir}/french/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/de/LC_MESSAGES/tcsh.cat
-${localedir}/de/LC_MESSAGES/tcsh.cat: german.cat
+INSTALLED+=${localedir}/de/LC_MESSAGES/tcsh
+${localedir}/de/LC_MESSAGES/tcsh: german.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
german.cat: ${srcdir}/german/charset ${srcdir}/german/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/gr/LC_MESSAGES/tcsh.cat
-${localedir}/gr/LC_MESSAGES/tcsh.cat: greek.cat
+INSTALLED+=${localedir}/el_GR/LC_MESSAGES/tcsh
+${localedir}/el_GR/LC_MESSAGES/tcsh: greek.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
greek.cat: ${srcdir}/greek/charset ${srcdir}/greek/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/it/LC_MESSAGES/tcsh.cat
-${localedir}/it/LC_MESSAGES/tcsh.cat: italian.cat
+INSTALLED+=${localedir}/it/LC_MESSAGES/tcsh
+${localedir}/it/LC_MESSAGES/tcsh: italian.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
italian.cat: ${srcdir}/italian/charset ${srcdir}/italian/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/ja/LC_MESSAGES/tcsh.cat
-${localedir}/ja/LC_MESSAGES/tcsh.cat: ja.cat
+INSTALLED+=${localedir}/ja/LC_MESSAGES/tcsh
+${localedir}/ja/LC_MESSAGES/tcsh: ja.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
ja.cat: ${srcdir}/ja/charset ${srcdir}/ja/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/pl/LC_MESSAGES/tcsh.cat
-${localedir}/pl/LC_MESSAGES/tcsh.cat: pl.cat
+INSTALLED+=${localedir}/pl/LC_MESSAGES/tcsh
+${localedir}/pl/LC_MESSAGES/tcsh: pl.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
pl.cat: ${srcdir}/pl/charset ${srcdir}/pl/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/ru/LC_MESSAGES/tcsh.cat
-${localedir}/ru/LC_MESSAGES/tcsh.cat: russian.cat
+INSTALLED+=${localedir}/ru_RU/LC_MESSAGES/tcsh
+${localedir}/ru_RU/LC_MESSAGES/tcsh: russian.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
russian.cat: ${srcdir}/russian/charset ${srcdir}/russian/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/es/LC_MESSAGES/tcsh.cat
-${localedir}/es/LC_MESSAGES/tcsh.cat: spanish.cat
+INSTALLED+=${localedir}/es/LC_MESSAGES/tcsh
+${localedir}/es/LC_MESSAGES/tcsh: spanish.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
spanish.cat: ${srcdir}/spanish/charset ${srcdir}/spanish/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
-INSTALLED+=${localedir}/ru_UA/LC_MESSAGES/tcsh.cat
-${localedir}/ru_UA/LC_MESSAGES/tcsh.cat: ukrainian.cat
+INSTALLED+=${localedir}/ru_UA.koi8u/LC_MESSAGES/tcsh
+${localedir}/ru_UA.koi8u/LC_MESSAGES/tcsh: ukrainian.cat
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $> $^ $@
--- sh.c
+++ sh.c 2022-01-11 15:13:07.548063798 +0000
@@ -166,8 +166,8 @@ static void st_restore (void *);
static void
add_localedir_to_nlspath(const char *path)
{
- static const char msgs_LOC[] = "/%L/LC_MESSAGES/%N.cat";
- static const char msgs_lang[] = "/%l/LC_MESSAGES/%N.cat";
+ static const char msgs_LOC[] = "/%L/LC_MESSAGES/%N";
+ static const char msgs_lang[] = "/%l/LC_MESSAGES/%N";
char *old;
char *new, *new_p;
size_t len;
@@ -179,7 +179,7 @@ add_localedir_to_nlspath(const char *pat
if (path == NULL)
return;
- (void) xsnprintf(trypath, sizeof(trypath), "%s/C/LC_MESSAGES/tcsh.cat",
+ (void) xsnprintf(trypath, sizeof(trypath), "%s/C/LC_MESSAGES/tcsh",
path);
if (stat(trypath, &st) == -1)
return;

118
tcsh-6.18.03-colorls.dif Normal file
View File

@ -0,0 +1,118 @@
---
tests/ls-F.at | 36 ++++++++++++++++++------------------
tw.color.c | 10 ++++------
2 files changed, 22 insertions(+), 24 deletions(-)
--- tests/ls-F.at
+++ tests/ls-F.at 2023-04-13 12:51:33.133052023 +0000
@@ -358,9 +358,9 @@ dnl
dnl Fail: environment LS_COLORS=YY:XX=0 exits with unknown 'XX'.
dnl (Unknown 'YY' is ignored.)
dnl
-AT_CHECK([LS_COLORS=YY:XX=0 tcsh -f -c 'set color;cd DIR && ls-F'], [1], [], [dnl
-Unknown LS_COLORS color variable 'XX'.
-])
+dnl AT_CHECK([LS_COLORS=YY:XX=0 tcsh -f -c 'set color;cd DIR && ls-F'], [1], [], [dnl
+dnl Unknown LS_COLORS color variable 'XX'.
+dnl ])
dnl
dnl setenv LS_COLORS "YY:XX=0" warns for unknown 'XX='. (Unknown 'YY' is ignored').
@@ -368,11 +368,11 @@ dnl listflags=A, listlinks
dnl
dnl As per ls-F-color-default.out.
dnl
-TCSH_LS_F([${tests_dir}/ls-F-color-default.out],
- [],
- [setenv LS_COLORS "YY:XX=0"; set color listflags=A listlinks], [dnl
-Unknown LS_COLORS color variable 'XX'.
-])
+dnl TCSH_LS_F([${tests_dir}/ls-F-color-default.out],
+dnl [],
+dnl [setenv LS_COLORS "YY:XX=0"; set color listflags=A listlinks], [dnl
+dnl Unknown LS_COLORS color variable 'XX'.
+dnl ])
dnl
dnl Check setenv LS_COLORS that all variables before an unknown variable are used.
@@ -383,11 +383,11 @@ dnl listflags=A, listlinks
dnl
dnl As per ls-F-LS_COLORS-all.out.
dnl
-TCSH_LS_F([${tests_dir}/ls-F-LS_COLORS-all.out],
- [],
- [setenv LS_COLORS "TCSH_TEXT_LS_COLORS:YY:XX=0"; set color listflags=A listlinks], [dnl
-Unknown LS_COLORS color variable 'XX'.
-])
+dnl TCSH_LS_F([${tests_dir}/ls-F-LS_COLORS-all.out],
+dnl [],
+dnl [setenv LS_COLORS "TCSH_TEXT_LS_COLORS:YY:XX=0"; set color listflags=A listlinks], [dnl
+dnl Unknown LS_COLORS color variable 'XX'.
+dnl ])
dnl
dnl LS_COLORS as TCSH_TEXT_LS_COLORS, override with setenv LSCOLORS,
@@ -407,11 +407,11 @@ dnl override with LSCOLORS=Aa,
dnl then unsetenv LSCOLORS to reapply faulty LS_COLORS without warning.
dnl and results in default colors.
dnl
-TCSH_LS_F([${tests_dir}/ls-F-color-default.out],
- [],
- [setenv LS_COLORS XX=0; setenv LSCOLORS Aa; unsetenv LSCOLORS || echo FAIL; set color listflags=A listlinks], [dnl
-Unknown LS_COLORS color variable 'XX'.
-])
+dnl TCSH_LS_F([${tests_dir}/ls-F-color-default.out],
+dnl [],
+dnl [setenv LS_COLORS XX=0; setenv LSCOLORS Aa; unsetenv LSCOLORS || echo FAIL; set color listflags=A listlinks], [dnl
+dnl Unknown LS_COLORS color variable 'XX'.
+dnl ])
m4_popdef([TCSH_TEXT_LS_COLORS])
--- tw.color.c
+++ tw.color.c 2023-04-13 12:33:48.052952714 +0000
@@ -56,7 +56,7 @@ typedef struct {
typedef enum {
Vdi, Vln, Vor, Vpi, Vso, Vdo, Vbd, Vcd,
Vex, Vfi, Vno, Vmi, Vlc, Vrc, Vec, Vsu,
- Vsg, Vtw, Vow, Vst, Vrs, Vhl, Vmh, Vca,
+ Vsg, Vtw, Vow, Vst, Vrs, Vhl, Vmh, Vca, Vcl,
} VARINDEX;
typedef struct {
@@ -100,6 +100,7 @@ static Variable variables[] = {
VAR(Vhl, CV_NONE, "hl", ""), /* Obsolete, use mh */
VAR(Vmh, CV_HARD, "mh", ""), /* Regular file with multiple hard links */
VAR(Vca, CV_NONE, "ca", ""), /* File with capability. Not implemented. */
+ VAR(Vcl, CV_NONE, "cl", ""), /* CLRTOEOL */
};
#define nvariables (sizeof(variables)/sizeof(variables[0]))
@@ -369,7 +370,7 @@ parseLS_COLORS(const Char *value, int si
size_t i, len;
const Char *v; /* pointer in value */
char *c; /* pointer in colors */
- Extension *volatile e; /* pointer in extensions */
+ static Extension *volatile e; /* pointer in extensions */
jmp_buf_t osetexit;
size_t omark;
@@ -426,17 +427,14 @@ parseLS_COLORS(const Char *value, int si
if ((Char)variables[i].variable[0] == (v[0] & CHAR) &&
(Char)variables[i].variable[1] == (v[1] & CHAR))
break;
+ v += 3;
if (i < nvariables) {
- v += 3;
getstring(&c, &v, &variables[i].color, ':');
if (i == Vln)
color_as_referent = Str_equal_literal(
&variables[Vln].color, "target");
continue;
}
- else
- stderror(ERR_BADCOLORVAR | (silent ? ERR_SILENT : 0),
- "LS_COLORS", v[0], v[1]);
}
break;
}

245
tcsh-6.21.00.dif Normal file
View File

@ -0,0 +1,245 @@
---
system/linux | 10 ++++++++++
config_f.h | 9 +++++++--
glob.h | 3 ++-
host.defs | 9 +++------
pathnames.h | 2 +-
sh.c | 3 +++
tc.alloc.c | 10 ++++++----
tc.func.c | 8 ++++++--
tc.str.c | 2 +-
tc.who.c | 3 +++
tcsh.man.in | 2 +-
tw.h | 4 ++++
12 files changed, 47 insertions(+), 18 deletions(-)
--- system/linux
+++ system/linux 2021-04-27 07:41:53.192829973 +0000
@@ -99,6 +99,9 @@
#ifndef _SVID_SOURCE
# define _SVID_SOURCE
#endif
+#ifndef _DEFAULT_SOURCE
+# define _DEFAULT_SOURCE
+#endif
#ifndef _POSIX_SOURCE
# define _POSIX_SOURCE
#endif
@@ -139,4 +142,11 @@
# define POSIX
#endif
+#if !defined(PW_SHADOW)
+# define PW_SHADOW
+#endif
+#if !defined(SuSE)
+# define SuSE
+#endif
+
#endif /* _h_config */
--- config_f.h
+++ config_f.h 2021-04-27 07:41:53.192829973 +0000
@@ -72,7 +72,12 @@
/*
* LOGINFIRST Source ~/.login before ~/.cshrc
*/
-#undef LOGINFIRST
+#define LOGINFIRST
+
+/*
+ * USERLOGINFIRST Source ~/.login before ~/.cshrc
+ */
+#undef USERLOGINFIRST
/*
* VIDEFAULT Make the VI mode editor the default
@@ -166,7 +171,7 @@
* successful, set $REMOTEHOST to the name or address of the
* host
*/
-#define REMOTEHOST
+#undef REMOTEHOST
/*
* COLOR_LS_F Do you want to use builtin color ls-F ?
--- glob.h
+++ glob.h 2021-04-27 07:41:53.192829973 +0000
@@ -72,6 +72,7 @@ typedef struct {
#define GLOB_NOSYS (-4) /* Implementation does not support function. */
/* #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) */
+#if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE || defined _GNU_SOURCE)
#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */
#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
@@ -84,7 +85,7 @@ typedef struct {
#define GLOB_DOT 0x8000 /* don't skip dotfiles (except . and ..) */
#define GLOB_ABEND GLOB_ABORTED /* source compatibility */
-/* #endif */
+#endif
int glob (const char *, int, int (*)(const char *, int), glob_t *);
void globfree (glob_t *);
--- host.defs
+++ host.defs 2021-05-28 09:44:03.337584826 +0000
@@ -189,9 +189,8 @@ static void populate(void)
#endif
}
xsnprintf(ostype, sizeof(ostype), "%s", p);
- xsnprintf(mach, sizeof(mach), "%s", e != -1 ? uts.machine : "unknown");
- xsnprintf(host, sizeof(host), "%s-%s",
- e != -1 ? uts.machine : "unknown", ostype);
+ xsnprintf(mach, sizeof(mach), "%s-suse-linux", e != -1 ? uts.machine : "unknown");
+ xsnprintf(host, sizeof(host), "%s", e != -1 ? uts.machine : "unknown");
}
static char *
@@ -1275,9 +1274,7 @@ newcode :
#ifndef _ostype_
ostype = "unknown";
#endif
-#ifndef _vendor_
- vendor = "unknown";
-#endif
+ vendor = "suse";
#ifndef _machtype_
machtype = "unknown";
#endif
--- pathnames.h
+++ pathnames.h 2021-04-27 07:41:53.192829973 +0000
@@ -83,7 +83,7 @@
# endif /* !_PATH_DOTLOGIN */
#endif /* sgi || OREO || cray || AMIX || CDC */
-#if (defined(_CRAYCOM) || defined(Lynx)) && !defined(_PATH_TCSHELL)
+#if (defined(_CRAYCOM) || defined(Lynx) || defined(linux)) && !defined(_PATH_TCSHELL)
# define _PATH_TCSHELL "/bin/tcsh" /* 1st class shell */
#endif /* _CRAYCOM && !_PATH_TCSHELL */
--- sh.c
+++ sh.c 2021-04-27 07:41:53.192829973 +0000
@@ -1348,6 +1348,9 @@ main(int argc, char **argv)
setintr = osetintr;
parintr = oparintr;
}
+#ifndef USERLOGINFIRST
+# undef LOGINFIRST
+#endif
#ifdef LOGINFIRST
if (loginsh)
(void) srccat(varval(STRhome), STRsldotlogin);
--- tc.alloc.c
+++ tc.alloc.c 2021-04-27 07:41:53.192829973 +0000
@@ -518,7 +518,7 @@ smalloc(size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef USE_SBRK
if (membot == NULL)
@@ -541,7 +541,7 @@ srealloc(ptr_t p, size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef USE_SBRK
if (membot == NULL)
@@ -565,7 +565,7 @@ scalloc(size_t s, size_t n)
ptr_t ptr;
n *= s;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef USE_SBRK
if (membot == NULL)
@@ -590,8 +590,10 @@ scalloc(size_t s, size_t n)
void
sfree(ptr_t p)
{
- if (p && !dont_free)
+ if (p && !dont_free) {
free(p);
+ p = (ptr_t)NULL;
+ }
}
#endif /* SYSMALLOC */
--- tc.func.c
+++ tc.func.c 2021-04-27 07:41:53.196829900 +0000
@@ -743,9 +743,13 @@ auto_lock(void)
handle_pending_signals();
errno = 0;
}
- if (spw != NULL) /* shadowed passwd */
+ if (spw != NULL) /* shadowed passwd */
srpp = spw->sp_pwdp;
+ else
+ srpp = pw->pw_passwd; /* nis extended passwd? */
}
+ endspent();
+ endpwent();
#else
@@ -1961,7 +1965,7 @@ getremotehost(int dest_fd)
* have not caught up yet.
*/
addr.s_addr = inet_addr(name);
- if (addr.s_addr != (unsigned int)~0)
+ if (addr.s_addr != ~0U)
host = name;
else {
if (sptr != name) {
--- tc.str.c
+++ tc.str.c 2021-04-27 07:41:53.196829900 +0000
@@ -347,7 +347,7 @@ s_strlen(const Char *str)
{
size_t n;
- for (n = 0; *str++; n++)
+ for (n = 0; str && *str; n++, str++)
continue;
return (n);
}
--- tc.who.c
+++ tc.who.c 2021-04-27 07:41:53.196829900 +0000
@@ -259,6 +259,9 @@ watch_login(int force)
}
stlast = sta.st_mtime;
#if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
+# ifndef HAVE_UTMPX_H
+ utmpname( _PATH_UTMP );
+# endif
setutent();
#else
if ((utmpfd = xopen(TCSH_PATH_UTMP, O_RDONLY|O_LARGEFILE)) < 0) {
--- tcsh.man.in
+++ tcsh.man.in 2021-04-27 07:41:53.196829900 +0000
@@ -1012,7 +1012,7 @@ much like
.Ic history-search-backward
does.
.
-.It Ic delete-char No (not bound)
+.It Ic delete-char \fR(bound to `Del' if using the standard \fI/etc/csh.cshrc\fR)
Deletes the character under the cursor.
See also
.Ic delete-char-or-list-or-eof .
--- tw.h
+++ tw.h 2021-04-27 07:41:53.196829900 +0000
@@ -32,6 +32,10 @@
#ifndef _h_tw
#define _h_tw
+#ifndef _h_sh
+# include "sh.h"
+#endif
+
#define TW_PATH 0x1000
#define TW_ZERO 0x0fff

View File

@ -0,0 +1,203 @@
Avoid left over dot lock file after reboot
---
dotlock.c | 124 ++++++++++++++------------------------------------------------
dotlock.h | 2 -
sh.hist.c | 11 +++--
3 files changed, 36 insertions(+), 101 deletions(-)
--- dotlock.c
+++ dotlock.c 2020-02-19 12:07:22.228255145 +0000
@@ -29,7 +29,9 @@
#ifndef O_SYNC
#define O_SYNC 0
#endif
-
+#include <unistd.h>
+#include <fcntl.h>
+
#include "dotlock.h"
static int create_exclusive(const char *);
@@ -46,77 +48,26 @@ static int create_exclusive(const char *
static int
create_exclusive(const char *fname)
{
- char path[MAXPATHLEN], hostname[MAXHOSTNAMELEN + 1];
- const char *ptr;
- struct timeval tv;
- pid_t pid;
- size_t ntries, cookie;
- int fd, serrno;
- struct stat st;
-
- (void)gettimeofday(&tv, NULL);
- (void)gethostname(hostname, sizeof(hostname));
- hostname[sizeof(hostname) - 1] = '\0';
- pid = getpid();
-
- cookie = pid ^ tv.tv_usec;
-
- /*
- * We generate a semi-unique filename, from hostname.(pid ^ usec)
- */
- if ((ptr = strrchr(fname, '/')) == NULL)
- ptr = fname;
- else
- ptr++;
-
- (void)snprintf(path, sizeof(path), "%.*s.%s.%lx",
- (int)(ptr - fname), fname, hostname, (u_long)cookie);
-
- /*
- * We try to create the unique filename.
- */
- for (ntries = 0; ntries < 5; ntries++) {
- fd = open(path, O_WRONLY|O_CREAT|O_TRUNC|O_EXCL|O_SYNC, 0);
- if (fd != -1) {
- (void)close(fd);
+ struct flock fl = { F_WRLCK, SEEK_SET, 0, 0, getpid()};
+ int fd, retval;
+
+ fd = open(fname, O_WRONLY|O_CREAT|O_SYNC, S_IWUSR);
+ if (fd < 0)
+ return -1;
+ do {
+ int ret;
+ retval = fcntl(fd, F_SETLKW, &fl);
+ if (retval < 0) {
+ if (errno == EINTR)
+ continue;
+ close(fd);
+ fd = -1;
break;
}
- else if (errno == EEXIST)
- continue;
- else
- return -1;
- }
-
- /*
- * We link the path to the name
- */
- if (link(path, fname) == -1)
- goto bad;
-
- /*
- * Note that we stat our own exclusively created name, not the
- * destination, since the destination can be affected by others.
- */
- if (stat(path, &st) == -1)
- goto bad;
-
- (void)unlink(path);
-
- /*
- * If the number of links was two (one for the unique file and one
- * for the lock), we've won the race
- */
- if (st.st_nlink != 2) {
- errno = EEXIST;
- return -1;
- }
- return 0;
+ } while (retval < 0);
-bad:
- serrno = errno;
- (void)unlink(path);
- errno = serrno;
- return -1;
+ (void)unlink(fname);
+ return fd;
}
/*
@@ -143,37 +94,18 @@ dot_lock(const char *fname, int pollinte
(void)snprintf(path, sizeof(path), "%s.lock", fname);
retval = -1;
- for (;;) {
- handle_pending_signals();
- (void)sigprocmask(SIG_BLOCK, &nset, &oset);
- if (create_exclusive(path) != -1) {
- (void)sigprocmask(SIG_SETMASK, &oset, NULL);
- retval = 0;
- break;
- }
- else
- (void)sigprocmask(SIG_SETMASK, &oset, NULL);
-
- if (errno != EEXIST)
- break;
-
- if (pollinterval) {
- if (pollinterval == -1) {
- errno = EEXIST;
- break;
- }
- (void)usleep((unsigned int)pollinterval * 1000);
- }
- }
+ handle_pending_signals();
+ (void)sigprocmask(SIG_BLOCK, &nset, &oset);
+ retval = create_exclusive(path);
+ (void)sigprocmask(SIG_SETMASK, &oset, NULL);
handle_pending_signals();
return retval;
}
void
-dot_unlock(const char *fname)
+dot_unlock(const int fd)
{
- char path[MAXPATHLEN];
-
- (void)snprintf(path, sizeof(path), "%s.lock", fname);
- (void)unlink(path);
+ struct flock fl = { F_UNLCK, SEEK_SET, 0, 0, getpid()};
+ fcntl(fd, F_SETLK, &fl);
+ close(fd);
}
--- dotlock.h
+++ dotlock.h 2020-02-19 09:40:16.034422159 +0000
@@ -30,6 +30,6 @@
* pollinterval -- Interval (miliseconds) to check for lock, -1 return
*/
int dot_lock(const char *fname, int pollinterval);
-void dot_unlock(const char *fname);
+void dot_unlock(const int fd);
#endif /* #ifndef _DOTLOCK_H_ */
--- sh.hist.c
+++ sh.hist.c 2020-02-19 09:48:57.640589111 +0000
@@ -1243,9 +1243,11 @@ fmthist(int fmt, ptr_t ptr)
}
static void
-dotlock_cleanup(void* lockpath)
+dotlock_cleanup(void* xfdp)
{
- dot_unlock((char*)lockpath);
+ int *fdp;
+ fdp = xfdp;
+ dot_unlock(*fdp);
}
/* Save history before exiting the shell. */
@@ -1324,11 +1326,12 @@ rechist(Char *fname, int ref)
jmp_buf_t osetexit;
if (lock) {
#ifndef WINNT_NATIVE
+ int fdlk;
char *lockpath = strsave(short2str(fname));
cleanup_push(lockpath, xfree);
/* Poll in 100 miliseconds interval to obtain the lock. */
- if ((dot_lock(lockpath, 100) == 0))
- cleanup_push(lockpath, dotlock_cleanup);
+ if ((fdlk = dot_lock(lockpath, 100)) != -1)
+ cleanup_push(&fdlk, dotlock_cleanup);
#endif
}
getexit(osetexit);

BIN
tcsh-6.24.10.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

16
tcsh-6.24.10.tar.gz.asc Normal file
View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEErYcQl2PY2MLJTLqAZcJuRx9FsSMFAmQ5PqUACgkQZcJuRx9F
sSNDoBAAnDMfpry6SFb82dqDAn2Egio90Qh0H6DmgPYpwwaeUjCzVDRXrQBZhRRP
t4d7HHvUpdckQSuxYfRyvrk/btful4/I1Eh4R6JeHs7Knztzo5N4OHAom//0eRZ8
ZpqwjiJLRNC+Gfn+0EPux+lIIoBA8vpbfF5Q/ZhHY6EI2sZtgRlL1gVuvhv6F8dh
hOe1QaPm0aOY3BXvOGIsNpvrUjOzU0wAWkwBEn2mt7PVv9GrMAXdeZfhD38JBtm8
x+gtDICBxWV4EXp4myOv+rOebUxHDFqGI0/vnXmAvh5uyw/mHZLK5sMzz+GQH2T/
3HB9McK9V2JNS+uro1JAjMDadf6lq4/eEVjrvmomDeqamQcqGS7gDj9/YrfKd75L
i1A9+fpFad1vUDD7ksjGDBDdnTv3WHALDOtL9Yu+VHbuZ8EeBgsn+LiBtSpCl1Nr
/es1DoZvlljh26iI2iZHJAgspBZ3lxFKLOcF37lN++LdDuhBRYku6E5AzbB7tMzw
jKowySoUIBkhfgC2sCNJJGNVr9XiqZEPjCymiyzYT/vC4u7kKkCL3JB8u/whLefb
ClWdrBNrEFA3r8ysxXH1jPk0ptpdLF15ite3M1+yMdPCjrMq5cTW1+2zjUCdlzCU
6pW0pTjpIWAVECANBtI4nqUfa9F1bydsCUrYkHD3HcPJSiDicmM=
=N0Pf
-----END PGP SIGNATURE-----

1270
tcsh.changes Normal file

File diff suppressed because it is too large Load Diff

94
tcsh.keyring Normal file
View File

@ -0,0 +1,94 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
3fhT6pGrAJ42qJm0ptKqlSBwuYo2Ci36ZIQCaQ==
=IJYi
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=+OYc
-----END PGP PUBLIC KEY BLOCK-----

212
tcsh.spec Normal file
View File

@ -0,0 +1,212 @@
#
# spec file for package tcsh
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: tcsh
Version: 6.24.10
Release: 0
Summary: The C SHell
License: BSD-3-Clause
Group: System/Shells
URL: https://www.tcsh.org/
Source0: https://astron.com/pub/%{name}/%{name}-%{version}.tar.gz
Source1: https://astron.com/pub/%{name}/%{name}-%{version}.tar.gz.asc
Source2: bindkey.tcsh
Source3: complete.tcsh
Source4: tcsh.keyring
Patch0: tcsh-6.21.00.dif
Patch1: tcsh-6.15.00-pipe.dif
Patch2: tcsh-6.16.00-norm-cmd.dif
Patch4: tcsh-6.18.03-colorls.dif
Patch5: tcsh-6.17.06-dspmbyte.dif
Patch6: tcsh-6.18.03-catalogs.dif
Patch8: tcsh-6.22.02-local-dotlock.dif
BuildRequires: autoconf
BuildRequires: fdupes
BuildRequires: ncurses-devel
BuildRequires: screen
Requires: gawk
Requires: textutils
Recommends: tcsh-lang = %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Tcsh is an enhanced, but completely compatible, version of the Berkeley
UNIX C shell, csh(1). It is a command language interpreter usable as an
interactive login shell and a shell script command processor. It
includes a command-line editor, programmable word completion, spelling
correction, a history mechanism, job control, and a C-like syntax.
%lang_package
%prep
%setup -q
%patch1 -b .pipe
%patch2 -b .normcmd
%patch4 -b .colorls
%patch5 -b .dspmbyte
%patch6 -b .catalogs
%patch8 -p 0 -b .dotlock
%patch0 -b .0
%build
cflags ()
{
local flag=$1; shift
local var=$1; shift
test -n "${flag}" -a -n "${var}" || return
case "${!var}" in
*${flag}*) return
esac
set -o noclobber
case "$flag" in
-Wl,*)
if echo 'int main () { return 0; }' | \
${CC:-gcc} -Werror $flag -o /dev/null -xc - > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
;;
*)
if ${CC:-gcc} -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
if ${CXX:-g++} -Werror $flag -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
esac
set +o noclobber
}
CC=gcc
CFLAGS="%{optflags} -D_GNU_SOURCE -DBUFSIZE=8192 -pipe"
cflags -ftree-loop-linear CFLAGS
cflags -Wl,-O2 LDFLAGS
cflags -Wl,--as-needed LDFLAGS
export CC CFLAGS LDFLAGS
%ifarch %ix86
CPU=i586
%else
CPU=${RPM_ARCH}
%endif
./configure --build=${CPU}-suse-linux \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--sharedstatedir=%{_datadir} \
--infodir=%{_infodir} \
--mandir=%{_mandir} \
--libexecdir=%{_libdir}/tcsh \
--disable-rpath \
--with-gnu-ld
make %{?_smp_mflags} CC_FOR_GETHOST="$CC $CFLAGS"
%check
SCREENDIR=$(mktemp -d ${PWD}/screen.XXXXXXXXXX) || exit 1
SCREENRC=${SCREENDIR}/tcsh
TMPDIR=$(mktemp -d /tmp/tcsh.XXXXXXXXXX) || exit 1
export SCREENRC SCREENDIR TMPDIR
exec 0< /dev/null
SCREENLOG=${SCREENDIR}/log
cat > $SCREENRC<<-EOF
deflogin off
deflog on
logfile $SCREENLOG
logfile flush 1
logtstamp off
log on
setsid on
scrollback 0
silence on
utf8 on
EOF
> $SCREENLOG
tail -q -s 0.5 -f $SCREENLOG & pid=$!
env -i HOME=$HOME TERM=$TERM TMPDIR=$TMPDIR PATH=$PATH \
SCREENRC=$SCREENRC SCREENDIR=$SCREENDIR \
screen -D -m make check
sleep 1
kill -TERM $pid
rm -rf $SCREENDIR $TMPDIR
if grep -iq failed testsuite.log
then
echo FAILED
exit 127
fi
%install
for nls in nls/*.cat ; do
msg=$nls
nls=${nls##*/}
nls=${nls%%.*}
case "${nls}" in
fi*) nls=fi ;;
fr*) nls=fr ;;
ge*) nls=de ;;
gr*) nls=el ;;
it*) nls=it ;;
ru*) nls=ru_RU ;;
sp*) nls=es ;;
uk*) nls=uk_UA ;;
C) continue ;;
esac
dir=%{buildroot}%{_datadir}/locale/${nls}/LC_MESSAGES
test ! -e ${dir}/tcsh || continue
mkdir -p -m 0755 $dir
install -m 0644 ${msg} ${dir}/tcsh
done
make DESTDIR=%{buildroot} GENCAT='%{_bindir}/gencat --new' install
make DESTDIR=%{buildroot} GENCAT='%{_bindir}/gencat --new' install.man
find %{buildroot}%{_datadir}/locale -name tcsh | xargs chmod 0644
%fdupes -s %{buildroot}%{_datadir}/locale
mkdir -p %{buildroot}%{_docdir}/tcsh
install -m 0644 FAQ %{buildroot}%{_docdir}/tcsh/FAQ.tcsh
install -m 0644 Copyright %{buildroot}%{_docdir}/tcsh/Copyright
mkdir -p %{buildroot}%{_sysconfdir}/profile.d/
mkdir -p %{buildroot}%{_prefix}/bin
install -m 644 $RPM_SOURCE_DIR/bindkey.tcsh %{buildroot}%{_sysconfdir}/profile.d/
install -m 644 $RPM_SOURCE_DIR/complete.tcsh %{buildroot}%{_sysconfdir}/profile.d/
rm -f %{buildroot}%{_mandir}/man1/csh.*
rm -rf %{buildroot}%{_datadir}/locale/C
ln -sf tcsh %{buildroot}/%{_bindir}/csh
ln -sf tcsh.1.gz %{buildroot}%{_mandir}/man1/csh.1.gz
%if 0%{?suse_version} < 1550
mkdir -p %{buildroot}/bin
ln -s %{_bindir}/tcsh %{buildroot}/bin/tcsh
ln -s %{_bindir}/tcsh %{buildroot}/bin/csh
%endif
%files
%defattr(-,root,root)
%dir %{_docdir}/tcsh
%if 0%{?suse_version} < 1550
/bin/csh
/bin/tcsh
%endif
%config %{_sysconfdir}/profile.d/bindkey.tcsh
%config %{_sysconfdir}/profile.d/complete.tcsh
%{_bindir}/csh
%{_bindir}/tcsh
%doc %{_docdir}/tcsh/Copyright
%doc %{_docdir}/tcsh/FAQ.tcsh
%doc %{_mandir}/man1/csh.1.gz
%doc %{_mandir}/man1/tcsh.1.gz
%files lang
%defattr(0644,root,root)
%{_datadir}/locale/*/LC_MESSAGES/tcsh*
%changelog