FDclone 2.07a patch [1/1]
しらいです。
file & directory 管理ツール FDclone 2.07a の patch です。
この記事をファイル (FILE01 とします) に ISO-2022-JP encoding
の JIS-X0208-1997 (ESC-$-B) 形式でセーブし、FDclone 2.07 の
あるディレクトリで以下のコマンドを実行して下さい。
sed '1,/^---- Cut Here/d' FILE01 | sh
cat FD-2.07a.patch | patch -p0
例えば nkf を使ってコード変換する場合は、「nkf -j -iB -oB」
で convert すると正しい漢字コードになる筈です。
以下は HISTORY より今回の変更点の抜粋です。
表示すべきファイルがない時に画面が更新されない不具合を修正。
Darwin (Mac OS X) 環境で起動に失敗する点を修正。
内蔵シェルで `` に囲まれた \ を評価するように仕様変更。
内蔵シェルで新規ファイル記述子へリダイレクト出来ない点を修正。
MD5 (FD-2.07a.patch) = 905968fcebd51a83043f23f8df7553f9
Submitted-by: shirai@chandra2
Archive-name: FD-2.07a.patch/part01
---- Cut Here and feed the following to sh ----
#!/bin/sh
# This is FD-2.07a.patch, a shell archive (produced by GNU sharutils 4.2)
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 2005-06-22 00:00 JST by <shirai@chandra2>.
# Source directory was `/usr/home/shirai/src/fd2'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
#
#
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 14756 -rw-r--r-- FD-2.07a.patch
#
echo=echo
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
shar_touch=touch
else
shar_touch=:
echo
$echo 'WARNING: not restoring timestamps. Consider getting and'
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
rm -f 1231235999 $$.touch
#
if mkdir _sh00360; then
$echo 'x -' 'creating lock directory'
else
$echo 'failed to create lock directory'
exit 1
fi
if test -r _sh00360/seq; then
$echo 'Must unpack archives in sequence!'
$echo 'Please unpack part' '`cat _sh00360/seq`' 'next!'
exit 1
fi
# ============= FD-2.07a.patch ==============
if test -f 'FD-2.07a.patch' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'FD-2.07a.patch' '(file already exists)'
rm -f _sh00360/new
else
> _sh00360/new
$echo 'x -' extracting 'FD-2.07a.patch' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'FD-2.07a.patch' &&
diff -urNP ../FD-2.07/HISTORY ./HISTORY
--- ../FD-2.07/HISTORY Thu May 26 00:00:00 2005
+++ ./HISTORY Wed Jun 22 00:00:00 2005
@@ -1,3 +1,8 @@
+Ver. 2.07a 表示すべきファイルがない時に画面が更新されない不具合を修正。
+ (06/22/05) Darwin (Mac OS X) 環境で起動に失敗する点を修正。
+ 内蔵シェルで `` に囲まれた \ を評価するように仕様変更。
+ 内蔵シェルで新規ファイル記述子へリダイレクト出来ない点を修正。
+
X Ver. 2.07 内部変数 PTYMODE, PTYTERM, PTYMENUKEY の追加。
X (05/26/05) 内部変数 DEFKCODE の追加。
X 分割ウィンドウの最大数を 5 に拡張。
diff -urNP ../FD-2.07/HISTORY.eng ./HISTORY.eng
--- ../FD-2.07/HISTORY.eng Thu May 26 00:00:00 2005
+++ ./HISTORY.eng Wed Jun 22 00:00:00 2005
@@ -1,3 +1,8 @@
+Ver. 2.07a Bug that the screen is not updated with no file is fixed.
+ (06/22/05) Failure to be invoked on Darwin (Mac OS X) is fixed.
+ Allow evaluation of \ included in `` with the internal shell.
+ Faliure to redirect to a new file descriptor is fixed.
+
X Ver. 2.07 Add 'PTYMODE', 'PTYTERM' and 'PTYMENUKEY' internal variables.
X (05/26/05) Add 'DEFKCODE' internal variable.
X Expand the maximum number of split windows into 5.
diff -urNP ../FD-2.07/README ./README
--- ../FD-2.07/README Thu May 26 00:00:00 2005
+++ ./README Wed Jun 22 00:00:00 2005
@@ -3,7 +3,7 @@
X # FDclone Ver. 2.07 に関して
X #
X # Takashi SHIRAI, <shirai@unixusers.net>
-# May 26, 2005
+# Jun 22, 2005
X #
X ############################################################
X
diff -urNP ../FD-2.07/README.eng ./README.eng
--- ../FD-2.07/README.eng Thu May 26 00:00:00 2005
+++ ./README.eng Wed Jun 22 00:00:00 2005
@@ -3,7 +3,7 @@
X # About FDclone Ver. 2.07
X #
X # Takashi SHIRAI, <shirai@unixusers.net>
-# May 26, 2005
+# Jun 22, 2005
X #
X ############################################################
X
diff -urNP ../FD-2.07/browse.c ./browse.c
--- ../FD-2.07/browse.c Thu May 26 00:00:00 2005
+++ ./browse.c Wed Jun 22 00:00:00 2005
@@ -1175,12 +1175,14 @@
X if (custno >= 0) rewritecust();
X else
X # endif
- if (filelist && filepos < maxfile)
+ if (filelist
+ && (filepos < maxfile || (!filepos && !maxfile)))
X n = listupfile(filelist, maxfile, def, 1);
X x = win_x;
X y = win_y;
X }
- else if (filelist && filepos < maxfile)
+ else if (filelist
+ && (filepos < maxfile || (!filepos && !maxfile)))
X listupfile(filelist, maxfile,
X filelist[filepos].name, 0);
X }
diff -urNP ../FD-2.07/fd.man ./fd.man
--- ../FD-2.07/fd.man Thu May 26 00:00:00 2005
+++ ./fd.man Wed Jun 22 00:00:00 2005
@@ -2,9 +2,9 @@
X .\" Copyright (c) 1995-2005 Takashi SHIRAI
X .\" <shirai@unixusers.net>
X .\"
-.\" @(#)fd.1 2.07 05/26/05
+.\" @(#)fd.1 2.07a 06/22/05
X .\" fd - File & Directory maintenance tool
-.TH FD 1 "May 26, 2005"
+.TH FD 1 "June 22, 2005"
X .de sh
X .br
X .PP
diff -urNP ../FD-2.07/fd_e.man ./fd_e.man
--- ../FD-2.07/fd_e.man Thu May 26 00:00:00 2005
+++ ./fd_e.man Wed Jun 22 00:00:00 2005
@@ -2,9 +2,9 @@
X .\" Copyright (c) 1995-2005 Takashi SHIRAI
X .\" <shirai@unixusers.net>
X .\"
-.\" @(#)fd.1 2.07 05/26/05
+.\" @(#)fd.1 2.07a 06/22/05
X .\" fd - File & Directory maintenance tool
-.TH FD 1 "May 26, 2005"
+.TH FD 1 "June 22, 2005"
X .de sh
X .br
X .PP
diff -urNP ../FD-2.07/makefile.b98 ./makefile.b98
--- ../FD-2.07/makefile.b98 Thu May 26 00:00:00 2005
+++ ./makefile.b98 Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/makefile.bpc ./makefile.bpc
--- ../FD-2.07/makefile.bpc Thu May 26 00:00:00 2005
+++ ./makefile.bpc Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/makefile.d98 ./makefile.d98
--- ../FD-2.07/makefile.d98 Thu May 26 00:00:00 2005
+++ ./makefile.d98 Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/makefile.dpc ./makefile.dpc
--- ../FD-2.07/makefile.dpc Thu May 26 00:00:00 2005
+++ ./makefile.dpc Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/makefile.g98 ./makefile.g98
--- ../FD-2.07/makefile.g98 Thu May 26 00:00:00 2005
+++ ./makefile.g98 Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/makefile.gpc ./makefile.gpc
--- ../FD-2.07/makefile.gpc Thu May 26 00:00:00 2005
+++ ./makefile.gpc Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/makefile.l98 ./makefile.l98
--- ../FD-2.07/makefile.l98 Thu May 26 00:00:00 2005
+++ ./makefile.l98 Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/makefile.lpc ./makefile.lpc
--- ../FD-2.07/makefile.lpc Thu May 26 00:00:00 2005
+++ ./makefile.lpc Wed Jun 22 00:00:00 2005
@@ -4,7 +4,7 @@
X
X TITLE = FD-
X VERSION = 2
-VER = 2.07
+VER = 2.07a
X PREFIX =
X CONFDIR =
X BUILD =
diff -urNP ../FD-2.07/pathname.c ./pathname.c
--- ../FD-2.07/pathname.c Thu May 26 00:00:00 2005
+++ ./pathname.c Wed Jun 22 00:00:00 2005
@@ -183,7 +183,7 @@
X char *, int, int));
X static int NEAR completeexe __P_((char *, int, int, char ***));
X #endif /* !FDSH && !_NOCOMPLETE */
-static int NEAR addmeta __P_((char *, char *, int, int));
+static int NEAR addmeta __P_((char *, char *, int));
X static int NEAR skipvar __P_((char **, int *, int *, int));
X #ifdef MINIMUMSHELL
X static int NEAR skipvarvalue __P_((char *, int *, char *, int, int));
@@ -2154,39 +2154,26 @@
X }
X #endif /* !FDSH && !_NOCOMPLETE */
X
-static int NEAR addmeta(s1, s2, quoted, flags)
+static int NEAR addmeta(s1, s2, quoted)
X char *s1, *s2;
-int quoted, flags;
+int quoted;
X {
- int i, j;
+ int i, j, pc, quote;
X
X if (!s2) return(0);
X for (i = j = 0; s2[i]; i++, j++) {
- if (s2[i] == '"') {
+ quote = quoted;
+ pc = parsechar(&(s2[i]), -1, '\0', EA_EOLMETA, "e, NULL);
+ if (pc == PC_OPQUOTE || pc == PC_CLQUOTE || pc == PC_META) {
X if (s1) s1[j] = PMETA;
X j++;
X }
- else if (s2[i] == PMETA) {
- if (s1) s1[j] = PMETA;
- j++;
- if (!(flags & EA_KEEPMETA) && s2[i + 1] == PMETA) i++;
- }
- else if (!quoted && s2[i] == '\'') {
- if (s1) s1[j] = PMETA;
- j++;
- }
- else if (iskanji1(s2, i)) {
- if (s1) s1[j] = s2[i];
- j++;
- i++;
- }
-#ifdef CODEEUC
- else if (isekana(s2, i)) {
+ else if (pc == PC_WORD) {
X if (s1) s1[j] = s2[i];
X j++;
X i++;
X }
-#endif
+
X if (s1) s1[j] = s2[i];
X }
X
@@ -2273,21 +2260,17 @@
X #ifdef CODEEUC
X else if (isekana(s, 0)) return(PC_WORD);
X #endif
-#ifdef NESTINGQUOTE
- else if (*qp == '`') return(PC_BQUOTE);
-#endif
X else if (*qp == '\'') return(PC_SQUOTE);
- else if (spc && *s == spc) return(*s);
X else if (ismeta(s, 0, *qp, len, flags)) return(PC_META);
+ else if (*qp == '`') return(PC_BQUOTE);
X #ifdef NESTINGQUOTE
X else if ((flags & EA_BACKQ) && *s == '`') {
X if (pqp && *qp) *pqp = *qp;
X *qp = *s;
X return(PC_OPQUOTE);
X }
-#else
- else if (*qp == '`') return(PC_BQUOTE);
X #endif
+ else if (spc && *s == spc) return(*s);
X else if (*qp) return(PC_DQUOTE);
X else if (!(flags & EA_NOEVALQ) && *s == '\'') {
X *qp = *s;
@@ -2587,20 +2570,18 @@
X #endif
X
X for (i = j = 0; arglist[i + 1]; i++)
- j += addmeta(NULL,
- arglist[i + 1], quoted, EA_KEEPMETA);
+ j += addmeta(NULL, arglist[i + 1], quoted);
X if (i <= 0) cp = strdup2("");
X else {
X j += (i - 1) * 3;
X cp = malloc2(j + 1);
- j = addmeta(cp, arglist[1],
- quoted, EA_KEEPMETA);
+ j = addmeta(cp, arglist[1], quoted);
X for (i = 2; arglist[i]; i++) {
X cp[j++] = quoted;
X cp[j++] = sp;
X cp[j++] = quoted;
X j += addmeta(&(cp[j]), arglist[i],
- quoted, EA_KEEPMETA);
+ quoted);
X }
X cp[j] = '\0';
X }
@@ -2845,9 +2826,9 @@
X }
X
X if (!mode && (c != '@' || !quoted)) {
- vlen = addmeta(NULL, cp, quoted, EA_KEEPMETA);
+ vlen = addmeta(NULL, cp, quoted);
X *bufp = insertarg(*bufp, ptr, arg, *argp - arg + 1, vlen);
- addmeta(&((*bufp)[ptr]), cp, quoted, EA_KEEPMETA);
+ addmeta(&((*bufp)[ptr]), cp, quoted);
X }
X else if (!cp) vlen = 0;
X else if (c == '@' && !*cp && quoted
@@ -3025,12 +3006,12 @@
X char *tmp;
X int len, size;
X
- stripquote(bbuf, 0);
+ stripquote(bbuf, EA_BACKQ);
X if (!(tmp = (*backquotefunc)(bbuf))) return(buf);
- len = addmeta(NULL, tmp, '\0', 0);
+ len = addmeta(NULL, tmp, '\0');
X size = *ptrp + len + rest + 1;
X buf = realloc2(buf, size);
- addmeta(&(buf[*ptrp]), tmp, '\0', 0);
+ addmeta(&(buf[*ptrp]), tmp, '\0');
X *ptrp += len;
X free(tmp);
X
@@ -3222,7 +3203,7 @@
X # else
X else if (cp[1] == '$' || cp[1] == '~') cp++;
X # endif
-#endif
+#endif /* FAKEMETA */
X else if ((i = evalvar(&buf, i, &cp, tmpq)) < 0) {
X if (bbuf) free(bbuf);
X free(buf);
@@ -3232,14 +3213,22 @@
X }
X else if (pc == PC_META) {
X cp++;
- if (flags & EA_KEEPMETA) buf[i++] = PMETA;
+ if (flags & EA_KEEPMETA) pc = PC_NORMAL;
X else if (*cp == '$') /*EMPTY*/;
X else if ((flags & EA_BACKQ) && *cp == '`') /*EMPTY*/;
X else if ((flags & EA_STRIPQ)
X && (*cp == '\'' || *cp == '"'))
X /*EMPTY*/;
- else buf[i++] = PMETA;
- buf[i++] = *cp;
+ else pc = PC_NORMAL;
+
+ if (q == '`') {
+ bbuf[j++] = PMETA;
+ bbuf[j++] = *cp;
+ }
+ else {
+ if (pc != PC_META) buf[i++] = PMETA;
+ buf[i++] = *cp;
+ }
X }
X else if (pc == PC_OPQUOTE) {
X if (*cp == '`') j = 0;
@@ -3365,17 +3354,18 @@
X for (i = j = 0, quote = '\0'; arg[i]; i++) {
X pc = parsechar(&(arg[i]), -1, '\0', 0, "e, NULL);
X if (pc == PC_OPQUOTE || pc == PC_CLQUOTE) {
- stripped = 1;
+ stripped++;
X if (flags & EA_STRIPQ) continue;
X }
X else if (pc == PC_WORD) arg[j++] = arg[i++];
X else if (pc == PC_META) {
- stripped = 1;
- if ((flags & EA_KEEPMETA)
- || quote == '\''
- || (quote == '"' && !strchr(DQ_METACHAR, arg[i + 1])))
- arg[j++] = arg[i];
X i++;
+ if (flags & EA_KEEPMETA) pc = PC_NORMAL;
+ else if (!quote && !(flags & EA_BACKQ)) /*EMPTY*/;
+ else if (!strchr(DQ_METACHAR, arg[i])) pc = PC_NORMAL;
+
+ if (pc != PC_META) arg[j++] = PMETA;
+ else stripped++;
X }
X
X arg[j++] = arg[i];
@@ -3434,8 +3424,7 @@
X else if (pc == PC_META) {
X i++;
X if ((flags & EA_KEEPMETA)
- || quote == '\''
- || (quote == '"' && !strchr(DQ_METACHAR, cp[i])))
+ || (quote && !strchr(DQ_METACHAR, cp[i])))
X tmp[j++] = PMETA;
X }
X else if (pc == PC_OPQUOTE) {
diff -urNP ../FD-2.07/system.c ./system.c
--- ../FD-2.07/system.c Thu May 26 00:00:00 2005
+++ ./system.c Wed Jun 22 00:00:00 2005
@@ -4009,7 +4009,8 @@
X closeonexec(rp -> new);
X #endif
X
- if ((rp -> old = newdup(Xdup(rp -> fd))) < 0) return(rp);
+ if (isvalidfd(rp -> fd) < 0) rp -> old = -1;
+ else if ((rp -> old = newdup(Xdup(rp -> fd))) < 0) return(rp);
X #if !MSDOS
X else if (rp -> old != STDIN_FILENO
X && rp -> old != STDOUT_FILENO
@@ -4704,7 +4705,7 @@
X {
X int id;
X
- if (!trp || !isstatement(trp -> comm)
+ if (!trp || (trp -> flags & ST_NODE) || !isstatement(trp -> comm)
X || (id = (trp -> comm) -> id) <= 0 || id > STATEMENTSIZ)
X return(-1);
X
@@ -5688,9 +5689,6 @@
X
X if (pc == PC_OPQUOTE || pc == PC_CLQUOTE || pc == PC_SQUOTE)
X rp -> filename[j++] = s[i];
-#ifdef NESTINGQUOTE
- else if (pc == PC_BQUOTE) rp -> filename[j++] = s[i];
-#endif
X else if (pc == PC_WORD) {
X rp -> filename[j++] = s[i++];
X rp -> filename[j++] = s[i];
@@ -5743,10 +5741,9 @@
X /* bash treats any meta character in ${} as just a character */
X else if ((trp -> cont & CN_SBST) == CN_VAR)
X rp -> filename[j++] = s[i];
-#else
- else if (pc == PC_BQUOTE) rp -> filename[j++] = s[i];
X #endif
- else if (pc == PC_DQUOTE) rp -> filename[j++] = s[i];
+ else if (pc == PC_DQUOTE || pc == PC_BQUOTE)
+ rp -> filename[j++] = s[i];
X #ifndef MINIMUMSHELL
X # ifdef BASHBUG
X /* bash cannot include 'case' statement within $() */
@@ -5914,6 +5911,7 @@
X #if defined (BASHSTYLE) || !defined (MINIMUMSHELL)
X else if (trp -> cont & CN_SBST) {
X red.filename[i++] = '\n';
+ red.filename[i] = '\0';
X trp = addvar(trp, NULL, NULL, red.filename, &i, 0);
X }
X #endif
@@ -8860,11 +8858,13 @@
X ret = RET_SUCCESS;
X #endif
X for (i = 1; i < (trp -> comm) -> argc; i++) {
- if (typeone((trp -> comm) -> argv[i], stdout) >= 0) {
+ if (typeone((trp -> comm) -> argv[i], stdout) >= 0)
X #ifdef BASHSTYLE
X ret = RET_SUCCESS;
+#else
+ /*EMPTY*/;
+ else ret = RET_FAIL;
X #endif
- }
X }
X
X return(ret);
@@ -9287,6 +9287,13 @@
X redirectlist *rp;
X int i, id;
X
+ if (!trp) {
+ printindent(lvl, stdout);
+ fputs("(null):", stdout);
+ fputnl(stdout);
+ return;
+ }
+
X if (trp -> flags & ST_NODE) {
X printindent(lvl, stdout);
X fputs("node:\n", stdout);
@@ -9310,7 +9317,9 @@
X show_stree(statementbody(trp), lvl + 1);
X }
X else for (i = 0; i <= (trp -> comm) -> argc; i++) {
- if (!((trp -> comm) -> argv[i])) fputs("NULL", stdout);
+ if (!((trp -> comm) -> argv)
+ || !((trp -> comm) -> argv[i]))
+ fputs("NULL", stdout);
X else if (!i && isbuiltin(trp -> comm))
X argfputs((trp -> comm) -> argv[i], stdout);
X else fprintf2(stdout, "\"%a\"",
diff -urNP ../FD-2.07/termemu.c ./termemu.c
--- ../FD-2.07/termemu.c Thu May 26 00:00:00 2005
+++ ./termemu.c Wed Jun 22 00:00:00 2005
@@ -87,7 +87,7 @@
X
X if (Xsetscroll(min, max) >= 0) {
X doscroll(n, c, x, y);
- Xsetscroll(-1, -1);
+ Xsetscroll(0, n_line - 1);
X Xlocate(x, y);
X return;
X }
@@ -761,7 +761,14 @@
X emupid = (p_id_t)0;
X safeclose(emufd);
X emufd = -1;
- dup2(STDIN_FILENO, ttyio);
+ if (fileno(ttyout) == ttyio) dup2(STDIN_FILENO, ttyio);
+ else {
+ fd = fileno(ttyout);
+ closetty(&fd, &ttyout);
+ opentty(&fd, &ttyout);
+ dup2(fd, ttyio);
+ safeclose(fd);
+ }
X maxfile = -1;
X
X setdefterment();
diff -urNP ../FD-2.07/termio.c ./termio.c
--- ../FD-2.07/termio.c Thu May 26 00:00:00 2005
+++ ./termio.c Wed Jun 22 00:00:00 2005
@@ -346,7 +346,8 @@
X if (*fdp >= 0) fd = *fdp;
X else if ((fd = newdup(open(_PATH_TTY, flags, 0600))) < 0) return(-1);
X if (*fpp) fp = *fpp;
- else if (!(fp = fdopen(fd, "w+b"))) return(-1);
+ else if (!(fp = fdopen(fd, "w+b")) && !(fp = fopen(_PATH_TTY, "w+b")))
+ return(-1);
X
X *fdp = fd;
X *fpp = fp;
diff -urNP ../FD-2.07/version.h ./version.h
--- ../FD-2.07/version.h Thu May 26 00:00:00 2005
+++ ./version.h Wed Jun 22 00:00:00 2005
@@ -5,4 +5,4 @@
X */
X
X char *distributor = NULL;
-static char version[] = "@(#)fd.c 2.07 05/26/05";
+static char version[] = "@(#)fd.c 2.07a 06/22/05";
SHAR_EOF
$shar_touch -am 06152212105 'FD-2.07a.patch' &&
chmod 0644 'FD-2.07a.patch' ||
$echo 'restore of' 'FD-2.07a.patch' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'FD-2.07a.patch:' 'MD5 check failed'
905968fcebd51a83043f23f8df7553f9 FD-2.07a.patch
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'FD-2.07a.patch'`"
test 14756 -eq "$shar_count" ||
$echo 'FD-2.07a.patch:' 'original size' '14756,' 'current size' "$shar_count!"
fi
fi
rm -fr _sh00360
exit 0
--
しらい たかし
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735