w3m 无法创建配置目录 (~C:/msys32/.w3m)!
w3m Can't create config directory (~C:/msys32/.w3m)!
我刚刚使用 TDM-GCC 编译器为 Windows 编译了 w3m,但在 运行 之后它给出了:
$ w3m
Can't create config directory (~C:/msys32/.w3m)!Can't find termcap entry xterm-256color
在我的电脑上有 C:/msys32,我在 ConEmu 终端模拟器上使用 C:/msys32/usr/bin/sh.exe 作为 shell .
$ echo ~/
打印/home/myusername
我试过使用 sysconfdir 选项配置 w3m,例如
./configure --sysconfdir=/etc
但是我给 --sysconfdir 的任何选项都对结果没有影响。
我查看了 config.log 文件,搜索 .w3m 看到了这一行:
RC_DIR='~/.w3m'
显然,w3m 正在添加 C:/msys32 所以它打印 ~C:/msys32/.w3m
我该如何解决?谢谢。
嗯,我解决了。
首先,我搜索了包含错误路径的二进制文件:
$ egrep -ir "~C:/msys32" .
几个二进制文件包含了它。但其中一个包括错误操作的起源,它是 indep.c 并且名为 "expandPath" 的函数正在生成那条错误的道路。作为一个快速而肮脏的 hack,我修改了导致错误的部分,这里是补丁:
--- indep_orig.c 2016-10-08 12:39:43.656250000 +0300
+++ indep.c 2016-10-07 19:50:18.812500000 +0300
@@ -69,6 +69,7 @@
}
#ifndef HAVE_BCOPY
+/*
void
bcopy(const void *src, void *dest, int len)
{
@@ -79,12 +80,12 @@
for (i = len - 1; i >= 0; i--)
((char *)dest)[i] = ((const char *)src)[i];
}
- else { /* src > dest */
+ else { // src > dest
for (i = 0; i < len; i++)
((char *)dest)[i] = ((const char *)src)[i];
}
}
-
+*/
void
bzero(void *ptr, int len)
{
@@ -246,12 +247,15 @@
if (*p == '/' || *p == '[=11=]') { /* ~/dir... or ~ */
extpath = Strnew_charp(getenv("HOME"));
}
- else
- goto rest;
+ else
+ { extpath = Strnew_charp(getenv("HOME"));
+ return extpath->ptr;
+ }
+ /* goto rest;
if (Strcmp_charp(extpath, "/") == 0 && *p == '/')
p++;
Strcat_charp(extpath, p);
- return extpath->ptr;
+ return extpath->ptr; */
}
rest:
return name;
我刚刚使用 TDM-GCC 编译器为 Windows 编译了 w3m,但在 运行 之后它给出了:
$ w3m
Can't create config directory (~C:/msys32/.w3m)!Can't find termcap entry xterm-256color
在我的电脑上有 C:/msys32,我在 ConEmu 终端模拟器上使用 C:/msys32/usr/bin/sh.exe 作为 shell .
$ echo ~/
打印/home/myusername
我试过使用 sysconfdir 选项配置 w3m,例如
./configure --sysconfdir=/etc
但是我给 --sysconfdir 的任何选项都对结果没有影响。
我查看了 config.log 文件,搜索 .w3m 看到了这一行:
RC_DIR='~/.w3m'
显然,w3m 正在添加 C:/msys32 所以它打印 ~C:/msys32/.w3m
我该如何解决?谢谢。
嗯,我解决了。
首先,我搜索了包含错误路径的二进制文件:
$ egrep -ir "~C:/msys32" .
几个二进制文件包含了它。但其中一个包括错误操作的起源,它是 indep.c 并且名为 "expandPath" 的函数正在生成那条错误的道路。作为一个快速而肮脏的 hack,我修改了导致错误的部分,这里是补丁:
--- indep_orig.c 2016-10-08 12:39:43.656250000 +0300
+++ indep.c 2016-10-07 19:50:18.812500000 +0300
@@ -69,6 +69,7 @@
}
#ifndef HAVE_BCOPY
+/*
void
bcopy(const void *src, void *dest, int len)
{
@@ -79,12 +80,12 @@
for (i = len - 1; i >= 0; i--)
((char *)dest)[i] = ((const char *)src)[i];
}
- else { /* src > dest */
+ else { // src > dest
for (i = 0; i < len; i++)
((char *)dest)[i] = ((const char *)src)[i];
}
}
-
+*/
void
bzero(void *ptr, int len)
{
@@ -246,12 +247,15 @@
if (*p == '/' || *p == '[=11=]') { /* ~/dir... or ~ */
extpath = Strnew_charp(getenv("HOME"));
}
- else
- goto rest;
+ else
+ { extpath = Strnew_charp(getenv("HOME"));
+ return extpath->ptr;
+ }
+ /* goto rest;
if (Strcmp_charp(extpath, "/") == 0 && *p == '/')
p++;
Strcat_charp(extpath, p);
- return extpath->ptr;
+ return extpath->ptr; */
}
rest:
return name;