summaryrefslogtreecommitdiff
path: root/shells/fd
diff options
context:
space:
mode:
authorAkinori MUSHA <knu@FreeBSD.org>2002-04-15 17:55:19 +0000
committerAkinori MUSHA <knu@FreeBSD.org>2002-04-15 17:55:19 +0000
commitc453eb1186d4f111f1ac4927dbad55281408d0f2 (patch)
treeab0262c5d9744bc067420f88cc18d544d4ca36a2 /shells/fd
parentUpdate to match recent changes to current kernel API (mtx_init, suser). (diff)
- Add a patch from the author that fixes a bug in file name
completion. Bump PORTREVISION accordingly. - Default the number of columns to 1. - Add some nifty launcher definitions. Submitted by: nork (partly)
Notes
Notes: svn path=/head/; revision=57726
Diffstat (limited to 'shells/fd')
-rw-r--r--shells/fd/Makefile1
-rw-r--r--shells/fd/files/patch-_fdrc27
-rw-r--r--shells/fd/files/patch-input.c189
3 files changed, 209 insertions, 8 deletions
diff --git a/shells/fd/Makefile b/shells/fd/Makefile
index 693a36cfb5e7..02435ffde518 100644
--- a/shells/fd/Makefile
+++ b/shells/fd/Makefile
@@ -7,6 +7,7 @@
PORTNAME= fd
PORTVERSION= 2.00b
+PORTREVISION= 1
CATEGORIES= shells
MASTER_SITES= http://hp.vector.co.jp/authors/VA012337/soft/fd/ \
ftp://ftp.vector.co.jp/pack/unix/util/file/filer/fd/
diff --git a/shells/fd/files/patch-_fdrc b/shells/fd/files/patch-_fdrc
index 79d467965444..7a4f731552d2 100644
--- a/shells/fd/files/patch-_fdrc
+++ b/shells/fd/files/patch-_fdrc
@@ -1,5 +1,5 @@
---- _fdrc.orig Wed Feb 6 00:00:00 2002
-+++ _fdrc Mon Feb 11 01:28:06 2002
+--- _fdrc.orig Wed Mar 27 00:00:00 2002
++++ _fdrc Thu Apr 11 22:06:39 2002
@@ -13,2 +13,3 @@
#SORTTYPE=0
+FD_SORTTYPE=101
@@ -12,19 +12,23 @@
#ADJTTY=0
+FD_ADJTTY=1
-@@ -104,2 +107,3 @@
+@@ -62,2 +65,3 @@
+ #COLUMNS=2
++FD_COLUMNS=1
+
+@@ -104,2 +108,3 @@
#ANSICOLOR=0
+FD_ANSICOLOR=1
-@@ -144,2 +148,3 @@
+@@ -144,2 +149,3 @@
#LANGUAGE=$LANG
+FD_LANGUAGE=$LANG
-@@ -215,2 +220,3 @@
+@@ -215,2 +221,3 @@
#PAGER=more%K
-+FD_PAGER=${PAGER:-more}%K
++FD_PAGER=${PAGER:-/usr/bin/more}%K
#EDITOR=vi
-@@ -222,2 +228,35 @@
+@@ -222,2 +229,42 @@
# launcher definition
+tar="tar"
+
@@ -59,8 +63,15 @@
+
+launch ".bz2" "bzip2 -cd %C | $PAGER"
+
++# RCS/CVS files
++launch ",v" "rlog %C | $PAGER"
++
++# distribution files
++launch ".aa" "cat %X.?? | $tar tvfz -" "$tar_format"
++arch ".aa" "echo ERROR" "cat %X.?? | $tar zxf - %TA"
++
#(Default)
-@@ -325,2 +364,33 @@
+@@ -325,2 +372,33 @@
# archiver definition
+
+arch ".tar" "$tar cf %C %T" "$tar xf %C %TA"
diff --git a/shells/fd/files/patch-input.c b/shells/fd/files/patch-input.c
new file mode 100644
index 000000000000..b96651d9f2d9
--- /dev/null
+++ b/shells/fd/files/patch-input.c
@@ -0,0 +1,189 @@
+diff -u ../old/FD-2.00b/input.c ./input.c
+--- ../old/FD-2.00b/input.c Wed Mar 27 00:00:00 2002
++++ ./input.c Fri Apr 12 12:01:19 2002
+@@ -1047,8 +1047,11 @@
+ char *s;
+ int cx, len, plen, max, linemax, comline, cont;
+ {
++# if !MSDOS || !defined (_NOORIGSHELL)
++ int bq;
++# endif
+ char *cp1, *cp2, **argv;
+- int i, l, ins, top, fix, argc, quote, quoted;
++ int i, l, ins, top, fix, argc, quote, quoted, hasmeta;
+
+ if (selectlist && cont > 0) {
+ selectfile(tmpfilepos++, NULL);
+@@ -1056,17 +1059,26 @@
+ return(0);
+ }
+
+- for (i = top = 0, quote = '\0'; i < cx; i++) {
+- if (s[i] == quote) quote = '\0';
++# if !MSDOS || !defined (_NOORIGSHELL)
++ bq = 0;
++# endif
++ quote = '\0';
++ quoted = 0;
++ for (i = top = 0; i < cx; i++) {
++ if (s[i] == quote) {
++ if (quote == '"') quoted = i;
++# if !MSDOS || !defined (_NOORIGSHELL)
++ if (quote == '\'') quoted = i;
++# endif
++ quote = '\0';
++ }
+ else if (iskanji1(s, i)) i++;
+ else if (quote);
+-# if MSDOS && defined (_NOORIGSHELL)
+ else if (s[i] == '"') quote = s[i];
+-# else
+- else if (s[i] == '"' || s[i] == '\'') quote = s[i];
++# if !MSDOS || !defined (_NOORIGSHELL)
++ else if (s[i] == '\'') quote = s[i];
+ else if (s[i] == '`') {
+- top = i + 1;
+- quote = s[i];
++ if ((bq = 1 - bq)) top = i + 1;
+ }
+ # endif
+ else if (s[i] == '=' || strchr(CMDLINE_DELIM, s[i]))
+@@ -1076,13 +1088,6 @@
+ putterm(t_bell);
+ return(0);
+ }
+-# if MSDOS && defined (_NOORIGSHELL)
+- quoted = (!quote && cx > 0 && s[cx - 1] == '"')
+-# else
+- if (quote == '`') quote = '\0';
+- quoted = (!quote && cx > 0 && s[cx - 1] == '"' || s[cx - 1] == '\'')
+-# endif
+- ? s[cx - 1] : '\0';
+ if (comline && top > 0) {
+ for (i = top - 1; i >= 0; i--)
+ if (s[i] != ' ' && s[i] != '\t') break;
+@@ -1092,6 +1097,14 @@
+ cp1 = malloc2(cx - top + 1);
+ strncpy2(cp1, s + top, cx - top);
+ cp1 = evalpath(cp1, 1);
++ hasmeta = 0;
++ for (i = 0; cp1[i]; i++) {
++ if (strchr(METACHAR, cp1[i])) {
++ hasmeta = 1;
++ break;
++ }
++ if (iskanji1(cp1, i)) i++;
++ }
+
+ if (selectlist && cont < 0) {
+ argv = (char **)malloc2(1 * sizeof(char *));
+@@ -1128,13 +1141,11 @@
+ }
+
+ cp1 = findcommon(argc, argv);
+- fix = 0;
+- if (argc == 1 && cp1) {
+- if (isdelim(cp1, (int)strlen(cp1) - 1)) fix--;
+- else fix++;
+- }
++ fix = '\0';
++ if (argc == 1 && cp1)
++ fix = ((cp2 = strrdelim(cp1, 0)) && !*(cp2 + 1)) ? _SC_ : ' ';
+
+- if (!cp1 || ((ins = (int)strlen(cp1) - ins) <= 0 && fix <= 0)) {
++ if (!cp1 || ((ins = (int)strlen(cp1) - ins) <= 0 && fix != ' ')) {
+ if (cont <= 0) {
+ putterm(t_bell);
+ l = 0;
+@@ -1157,12 +1168,25 @@
+ free(argv);
+
+ l = 0;
+- if (!quote && !quoted && len < max) {
+- for (i = 0; cp1[i]; i++) {
+- if (strchr(METACHAR, cp1[i])) break;
+- if (iskanji1(cp1, i)) i++;
++ if (!hasmeta) for (i = 0; cp1[i]; i++) {
++ if (strchr(METACHAR, cp1[i])) {
++ hasmeta = 1;
++ break;
++ }
++ if (iskanji1(cp1, i)) i++;
++ }
++
++ if (hasmeta) {
++ if (quote);
++ else if (quoted) {
++ quote = s[quoted];
++ setcursor(vlen(s, quoted), plen, max, linemax);
++ deletechar(s, quoted, len, plen, max, linemax, 1);
++ delshift(s, quoted, len--, 1);
++ l--;
++ setcursor(vlen(s, --cx), plen, max, linemax);
+ }
+- if (cp1[i]) {
++ else if (len < max) {
+ setcursor(vlen(s, top), plen, max, linemax);
+ insertchar(s, top, len, plen, max, linemax, 1);
+ insshift(s, top, len++, 1);
+@@ -1171,43 +1195,30 @@
+ putch2(quote);
+ setcursor(vlen(s, ++cx), plen, max, linemax);
+ }
++ else hasmeta = 0;
+ }
+
+ cp2 = cp1 + (int)strlen(cp1) - ins;
+- if (quote && fix < 0 && len + 1 < max) {
+- i = insertstr(s, cx, len, plen,
+- max, linemax, cp2, ins - 1, quote);
+- l += i;
++ if (fix == _SC_) {
++ ins--;
++ if (!hasmeta) quote = '\0';
++ }
++ i = insertstr(s, cx, len, plen, max, linemax, cp2, ins, quote);
++ l += i;
++ if (fix && (len += i) < max) {
+ cx += i;
+- insertchar(s, cx, len, plen, max, linemax, 1);
+- insshift(s, cx, len++, 1);
+- l++;
+- s[cx++] = quote;
+- putcursor(quote, 1);
+- insertchar(s, cx, len, plen, max, linemax, 1);
+- insshift(s, cx, len, 1);
+- l++;
+- s[cx] = _SC_;
+- putcursor(_SC_, 1);
+- }
+- else {
+- i = insertstr(s, cx, len, plen, max, linemax, cp2, ins, quote);
+- l += i;
+- if (fix > 0 && (len += i) < max) {
+- cx += i;
+- if (quote && len + 1 < max) {
+- insertchar(s, cx, len, plen, max, linemax, 1);
+- insshift(s, cx, len++, 1);
+- l++;
+- s[cx++] = quote;
+- putcursor(quote, 1);
+- }
++ if (quote && len + 1 < max) {
+ insertchar(s, cx, len, plen, max, linemax, 1);
+- insshift(s, cx, len, 1);
++ insshift(s, cx, len++, 1);
+ l++;
+- s[cx] = ' ';
+- putcursor(' ', 1);
++ s[cx++] = quote;
++ putcursor(quote, 1);
+ }
++ insertchar(s, cx, len, plen, max, linemax, 1);
++ insshift(s, cx, len, 1);
++ l++;
++ s[cx] = fix;
++ putcursor(fix, 1);
+ }
+
+ free(cp1);