1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-13 07:34:50 +00:00

- Apply a couple of patches posted on the FD-clone mailing list,

which fix bugs in file name completion and handling of tar archives
  that contain ".".

- Update fd2rc:
  o Properly call zip(1) with -r (recursive).
  o Make some file extensions case insensitive.
  o Source /etc/fd2rc.local so administrators can put their own local
    configurations in it.
  o Set FD_WRITEFS to 1 (do not ask).
  o Set FD_INHERITCOPY to 1 (preserve timestamps).
This commit is contained in:
Akinori MUSHA 2002-09-15 20:55:58 +00:00
parent 2dd80b19db
commit 6a228fad08
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=66376
4 changed files with 310 additions and 24 deletions

View File

@ -7,7 +7,7 @@
PORTNAME= fd
PORTVERSION= 2.01b
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= shells
MASTER_SITES= http://hp.vector.co.jp/authors/VA012337/soft/fd/ \
ftp://ftp.vector.co.jp/pack/unix/util/file/filer/fd/

View File

@ -1,5 +1,5 @@
--- _fdrc.orig Mon Jun 10 00:00:00 2002
+++ _fdrc Sun Aug 11 22:18:20 2002
--- _fdrc.orig Wed Jul 10 00:00:00 2002
+++ _fdrc Mon Sep 16 05:39:03 2002
@@ -13,2 +13,3 @@
#SORTTYPE=0
+FD_SORTTYPE=101
@ -8,38 +8,50 @@
#SORTTREE=0
+FD_SORTTREE=1
@@ -50,2 +52,3 @@
@@ -35,2 +37,3 @@
#WRITEFS=0
+FD_WRITEFS=1
@@ -45,2 +48,3 @@
#INHERITCOPY=0
+FD_INHERITCOPY=1
@@ -50,2 +54,3 @@
#ADJTTY=0
+FD_ADJTTY=1
@@ -62,2 +65,3 @@
@@ -62,2 +67,3 @@
#DEFCOLUMNS=2
+FD_DEFCOLUMNS=1
@@ -104,2 +108,3 @@
@@ -104,2 +110,3 @@
#ANSICOLOR=0
+FD_ANSICOLOR=1
@@ -144,2 +149,3 @@
@@ -144,2 +151,3 @@
#LANGUAGE=$LANG
+FD_LANGUAGE=$LANG
@@ -215,2 +221,3 @@
@@ -215,2 +223,3 @@
#PAGER=more%K
+FD_PAGER=${PAGER:-/usr/bin/more}%K
#EDITOR=vi
@@ -222,2 +229,34 @@
@@ -222,2 +231,38 @@
# launcher definition
+tar="tar"
+tar_format="%a %u/%g %s %m %d %t %y %f"
+
+launch ".tar" "$tar tvf" "$tar_format"
+launch "/.tar" "$tar tvf" "$tar_format"
+
+for ext in .tar.Z .taZ .tar.gz .tgz .taz; do
+for ext in .tar.Z .taZ .TAZ; do
+ launch "$ext" "$tar Ztvf %C" "$tar_format"
+done
+
+for ext in .tar.gz /.tgz .taz; do
+ launch "$ext" "$tar ztvf %C" "$tar_format"
+done
+
+for ext in .tar.bz2 .tbz2 .tbz; do
+for ext in .tar.bz2 .tbz2 /.tbz; do
+ launch "$ext" "$tar jtvf %C" "$tar_format"
+done
+
@ -49,45 +61,47 @@
+ launch "$ext" "unzip -lqq" "%s %m-%d-%y %t %f"
+done
+
+for ext in .Z .gz; do
+for ext in .Z /.gz; do
+ launch "$ext" "zcat %C | $PAGER"
+done
+
+launch ".bz2" "bzip2 -cd %C | $PAGER"
+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"
+launch "/.aa" "cat %X.?? | $tar tvfz -" "$tar_format"
+arch "/.aa" "echo ERROR" "cat %X.?? | $tar zxf - %TA"
+
#(Default)
@@ -325,2 +364,37 @@
@@ -325,2 +370,39 @@
# archiver definition
+
+arch ".tar" "$tar cf %C %T" "$tar xf %C %TA"
+for ext in /.tar; do
+ arch "$ext" "$tar cf %C %T" "$tar xf %C %TA"
+done
+
+for ext in .tar.Z .taZ; do
+for ext in .tar.Z .taZ .TAZ; do
+ arch "$ext" "$tar Zcf %C %T" "$tar Zxf %C %TA"
+done
+
+for ext in .tar.gz .tgz .taz; do
+for ext in .tar.gz /.tgz .taz; do
+ arch "$ext" "$tar cf - %T | gzip -9c > %C" "$tar zxf %C %TA"
+done
+
+for ext in .tar.bz2 .tbz2 .tbz; do
+for ext in .tar.bz2 .tbz2 /.tbz; do
+ arch "$ext" "$tar cf - %T | bzip2 -9c > %C" "$tar jxf %C %TA"
+done
+
+arch ".Z" "compress %M" "uncompress %C"
+arch ".gz" "gzip -9 %M" "gzip -d %C"
+arch ".bz2" "bzip2 -9 %M" "bzip2 -d %C"
+arch "/.gz" "gzip -9 %M" "gzip -d %C"
+arch "/.bz2" "bzip2 -9 %M" "bzip2 -d %C"
+
+arch "/.lzh" "lha aq %C %TA" "lha xq %C %TA"
+
+for ext in /.zip /.jar; do
+ arch "$ext" "zip -q %C %TA" "unzip -q %C %TA"
+ arch "$ext" "zip -qr %C %TA" "unzip -q %C %TA"
+done
+
+_uuencode() {
@ -101,3 +115,9 @@
+arch ".uu" "_uuencode %C %TA" "uudecode -ic < %C"
+
#(Default)
@@ -387 +469,5 @@
#keymap DEL "\033[3~"
+
+if [ -f /etc/fd2rc.local ]; then
+ source /etc/fd2rc.local
+fi

View File

@ -0,0 +1,14 @@
A patch taken from: [FDclone-users:00027]
diff -ur ../old/FD-2.01b/archive.c ./archive.c
--- ../old/FD-2.01b/archive.c Wed Jul 10 00:00:00 2002
+++ ./archive.c Mon Aug 19 08:11:18 2002
@@ -1188,7 +1188,7 @@
if (*path == _SC_) len = 1;
else if ((cp = strdelim(path, 0))) len = cp - path;
else len = strlen(path);
- if (strncmp(path, "..", len)) {
+ if (len != 2 || strncmp(path, "..", len)) {
if (!searcharcdir(path, len)) {
strcpy(archivedir, duparcdir);
return(NULL);

View File

@ -0,0 +1,252 @@
A patch taken from: [FDclone-users:00020]
diff -u ../old/FD-2.01b/input.c ./input.c
--- ../old/FD-2.01b/input.c Wed Jul 10 00:00:00 2002
+++ ./input.c Mon Jul 29 14:54:00 2002
@@ -1052,7 +1052,7 @@
int cx, len, plen, max, linemax, comline, cont;
{
# if !MSDOS || !defined (_NOORIGSHELL)
- int bq;
+ int bq, hadmeta;
# endif
char *cp1, *cp2, **argv;
int i, l, ins, top, fix, argc, quote, quoted, hasmeta;
@@ -1064,7 +1064,7 @@
}
# if !MSDOS || !defined (_NOORIGSHELL)
- bq = 0;
+ bq = hadmeta = 0;
# endif
quote = '\0';
quoted = 0;
@@ -1077,6 +1077,13 @@
quote = '\0';
}
else if (iskanji1(s, i)) i++;
+# if !MSDOS || !defined (_NOORIGSHELL)
+ else if (quote == '\'');
+ else if (isnmeta(s, i, quote, cx)) {
+ i++;
+ hadmeta++;
+ }
+# endif
else if (quote);
else if (s[i] == '"') quote = s[i];
# if !MSDOS || !defined (_NOORIGSHELL)
@@ -1182,8 +1189,23 @@
}
if (hasmeta) {
+ char *tmp, *home;
+ int hlen;
+
+ if (quote || quoted > top || s[top] != '~') {
+ home = NULL;
+ i = hlen = 0;
+ }
+ else {
+ tmp = &(s[top]);
+ s[len] = '\0';
+ home = malloc2(len - top + 1);
+ hlen = evalhome(&home, 0, &tmp);
+ i = ++tmp - &(s[top]);
+ }
+
if (quote);
- else if (quoted) {
+ else if (quoted > top) {
quote = s[quoted];
setcursor(vlen(s, quoted), plen, max, linemax);
deletechar(s, quoted, len, plen, max, linemax, 1);
@@ -1191,7 +1213,35 @@
l--;
setcursor(vlen(s, --cx), plen, max, linemax);
}
- else if (len < max) {
+ else if (len + hlen - i < max) {
+ if (home) {
+ setcursor(vlen(s, top), plen, max, linemax);
+ deletechar(s, top, len, plen, max, linemax, i);
+ delshift(s, top, len, i);
+ len -= i;
+ l -= i;
+ cx -= i;
+ i = insertstr(s, top, len, plen, max, linemax,
+ home, hlen, '\0');
+ len += i;
+ l += i;
+ cx += i;
+ free(home);
+ }
+# if !MSDOS || !defined (_NOORIGSHELL)
+ if (hadmeta) for (i = top; i < cx; i++) {
+ if (iskanji1(s, i)) {
+ i++;
+ continue;
+ }
+ if (!isnmeta(s, i, '\0', cx)) continue;
+ setcursor(vlen(s, i), plen, max, linemax);
+ deletechar(s, i, len, plen, max, linemax, 1);
+ delshift(s, i, len--, 1);
+ l--;
+ cx--;
+ }
+# endif /* !MSDOS || !_NOORIGSHELL */
setcursor(vlen(s, top), plen, max, linemax);
insertchar(s, top, len, plen, max, linemax, 1);
insshift(s, top, len++, 1);
diff -u ../old/FD-2.01b/pathname.c ./pathname.c
--- ../old/FD-2.01b/pathname.c Wed Jul 10 00:00:00 2002
+++ ./pathname.c Mon Jul 29 13:40:14 2002
@@ -178,7 +178,6 @@
static int NEAR replacevar __P_((char *, char **, int, int, int, int));
static char *NEAR insertarg __P_((char *, int, char *, int, int));
static int NEAR evalvar __P_((char **, int, char **, int));
-static int NEAR evalhome __P_((char **, int, char **));
#ifdef LSI_C
#include <jctype.h>
@@ -2480,7 +2479,7 @@
return(NULL);
}
-static int NEAR evalhome(bufp, ptr, argp)
+int evalhome(bufp, ptr, argp)
char **bufp;
int ptr;
char **argp;
diff -u ../old/FD-2.01b/pathname.h ./pathname.h
--- ../old/FD-2.01b/pathname.h Wed Jul 10 00:00:00 2002
+++ ./pathname.h Mon Jul 29 13:39:48 2002
@@ -161,6 +161,7 @@
# endif
#endif
extern char *gethomedir __P_((VOID_A));
+extern int evalhome __P_((char **, int, char **));
extern char *evalarg __P_((char *, int, int));
extern int evalifs __P_((int, char ***, char *));
extern int evalglob __P_((int, char ***, int));
A patch taken from: [FDclone-users:00035]
diff -u old/input.c ./input.c
--- old/input.c Wed Aug 21 14:19:15 2002
+++ ./input.c Wed Aug 21 14:08:27 2002
@@ -852,52 +852,78 @@
dupl = malloc2(ins * 2 + 1);
insertchar(s, cx, len, plen, max, linemax, vlen(strins, ins));
insshift(s, cx, len, ins);
+ for (i = 0; i < ins; i++) s[cx + i] = ' ';
+ len += ins;
for (i = j = 0; i < ins; i++, j++) {
if (isctl(strins[i])) {
- if (len + ins + j - i >= max)
+ if (len + j - i >= max)
dupl[j] = s[cx + j] = '?';
else {
+ insertchar(s, cx, len, plen, max, linemax, 1);
+ insshift(s, cx + j, len, 1);
dupl[j] = '^';
s[cx + j] = QUOTE;
- dupl[++j] = (strins[i] + '@') & 0x7f;
+ j++;
+ dupl[j] = (strins[i] + '@') & 0x7f;
s[cx + j] = strins[i];
}
}
#ifdef CODEEUC
else if (isekana(strins, i)) {
- if (len + ins + j - i >= max)
+ if (len + j - i >= max)
dupl[j] = s[cx + j] = '?';
else {
dupl[j] = s[cx + j] = strins[i];
- dupl[j + 1] = s[cx + j + 1] = strins[++i];
j++;
+ dupl[j] = s[cx + j] = strins[++i];
}
}
#endif
else if (iskanji1(strins, i)) {
- if (len + ins + j - i >= max)
+ if (len + j - i >= max)
dupl[j] = s[cx + j] = '?';
else {
dupl[j] = s[cx + j] = strins[i];
- dupl[j + 1] = s[cx + j + 1] = strins[++i];
j++;
+ dupl[j] = s[cx + j] = strins[++i];
}
}
#if MSDOS && defined (_NOORIGSHELL)
- else if (strchr(DQ_METACHAR, strins[i])) {
+ else if (strchr(DQ_METACHAR, strins[i])
#else
- else if (quote == '"' && strchr(DQ_METACHAR, strins[i])) {
+ else if ((quote == '\'' && strins[i] == '\'')
+ || (quote == '"' && strins[i] == '!')) {
+ f = 3;
+ if (!strins[i + 1]) f--;
+ if (len + j - i + f > max)
+ dupl[j] = s[cx + j] = '?';
+ else {
+ insertchar(s, cx, len, plen, max, linemax, f);
+ insshift(s, cx + j, len, f);
+ dupl[j] = s[cx + j] = quote;
+ j++;
+ dupl[j] = s[cx + j] = PMETA;
+ j++;
+ dupl[j] = s[cx + j] = strins[i];
+ j++;
+ dupl[j] = s[cx + j] = quote;
+ }
+ }
+ else if ((quote == '"' && strchr(DQ_METACHAR, strins[i]))
#endif
- if (len + ins + j - i >= max)
+ || (!quote && strchr(METACHAR, strins[i]))) {
+ if (len + j - i >= max)
dupl[j] = s[cx + j] = '?';
else {
+ insertchar(s, cx, len, plen, max, linemax, 1);
+ insshift(s, cx + j, len, 1);
#if MSDOS && defined (_NOORIGSHELL)
- dupl[j] = s[cx + j] =
+ dupl[j] = s[cx + j] = strins[i];
#else
dupl[j] = s[cx + j] = PMETA;
#endif
- dupl[j + 1] = s[cx + j + 1] = strins[i];
j++;
+ dupl[j] = s[cx + j] = strins[i];
}
}
else dupl[j] = s[cx + j] = strins[i];
@@ -1235,6 +1261,7 @@
continue;
}
if (!isnmeta(s, i, '\0', cx)) continue;
+ if (strchr(DQ_METACHAR, s[i + 1])) continue;
setcursor(vlen(s, i), plen, max, linemax);
deletechar(s, i, len, plen, max, linemax, 1);
delshift(s, i, len--, 1);
@@ -1254,15 +1281,12 @@
}
cp2 = cp1 + (int)strlen(cp1) - ins;
- if (fix == _SC_) {
- ins--;
- if (!hasmeta) quote = '\0';
- }
+ if (fix == _SC_) ins--;
i = insertstr(s, cx, len, plen, max, linemax, cp2, ins, quote);
l += i;
if (fix && (len += i) < max) {
cx += i;
- if (quote && len + 1 < max) {
+ if (quote && len + 1 < max && (fix != _SC_ || hasmeta)) {
insertchar(s, cx, len, plen, max, linemax, 1);
insshift(s, cx, len++, 1);
l++;