2016-10-06 2 views
0

Ich habe aber nachdem es läuft es gibt:w3m Kann kein Konfigurationsverzeichnis erstellen (~ C: /msys32/.w3m)! gerade kompiliert w3m für die Verwendung von Windows TDM-GCC Compiler

$ w3m 
Can't create config directory (~C:/msys32/.w3m)!Can't find termcap entry xterm-256color 

Auf meinem Computer gibt es C:/msys32 und ich bin mit C:/msys32 /usr/bin/sh.exe als die Shell auf ConEmu Terminal Emulator.

$ echo ~/ 

drucke /home/myusername

Ich habe versucht, die Konfiguration w3m mit der sysconfdir Option wie

./configure --sysconfdir=/etc 

aber was auch immer Option gab ich die --sysconfdir , hatte keinen Einfluss auf das Ergebnis.

Ich habe einen Blick auf die Datei config.log genommen, nach .w3m diese Linie gesehen:

RC_DIR='~/.w3m' 

Offensichtlich ist w3m Zugabe C:/msys32, um es so druckt ~ C:/msys32 /.w3m

Wie kann ich das beheben? Vielen Dank.

Antwort

0

Nun, ich habe es gelöst.

Zuerst suchte ich für die Binärdateien, wo das falsche Pfad enthalten wurde:

$ egrep -ir "~C:/msys32" . 

Mehrere Binärdateien, die enthalten. Aber einer von ihnen enthielt den Ursprung der fehlerhaften Operation, es war indep.c und die Funktion mit dem Namen "expandPath" produzierte diesen fehlerhaften Pfad. Als eine schnelle und schmutzige Hack, ich habe den Teil, der den Fehler verursacht, geändert, hier ist der Patch:

--- 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 == '\0') { /* ~/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; 
Verwandte Themen