Während man mit wget Dateien herunterladen kann (analog zu curl), lassen sich mit wput Dateien via FTP-Protokoll mit einem Einzeiler hochladen.

Als ich letztens wput auf einem weiteren Mac installieren wollte, musste ich feststellen, dass es hier einige Tücken gibt. Zum Glück hatte ich mir, als ich vor Jahren schon einmal das Problem hatte, Notizen gemacht, denn die Website, die mir damals weitergeholft hatte, existiert inzwischen nicht mehr.

Lädt man den wput-Quellcode herunter (Version 0.6.1 in meinem Fall) und versucht sich mit configure und make, verursacht make folgenden Fehler:

socketlib.c:23:20: error: malloc.h: No such file or directory
make[1]: *** [socketlib.o] Error 1 make: *** [all] Error 2

Der Compiler gcc findet malloc.h nicht, welches aber tatsächlich bei MacOS X in /usr/include/malloc vorhanden ist.
Darauf müssen wir den Compiler hinweisen.

Dies alleine reicht aber nicht aus, da daraufhin folgende Fehlermeldung erscheinen würde:

In file included from ftp.h:3,
                 from wput.h:49,
                 from utils.h:4,
                 from socketlib.c:40:
ftplib.h:17: error: conflicting types for 'host_t'
/usr/include/mach/mach_types.h:120: error: previous declaration of 'host_t' was here
make[1]: *** [socketlib.o] Error 1 make: *** [all] Error 2

host_t ist schon irgendwo definiert, benennen wir die Variable in diesem Fall zu Host_t um, dann wäre auch dieses Problem behoben.

Alle Schritte nacheinander:

Wir befinden uns im Terminal im entpackten wput-Verzeichnis.

# Falls man schon einen make-Versuch gewagt hatte,
# der in einem Fehler resultierte: Erst einmal aufräumen!
make clean

# host_t durch Host_t ersetzen
for f in $(grep -R -l host_t .); do sed -i .tmp -e 's/host_t/Host_t/g' $f; done

# Compiler auf den Speicherort von malloc.h hinweisen,
# configure, make und Installation (ggf. mit "sudo" ausführen"!)
CFLAGS="$CFLAGS -I/usr/include/malloc" ./configure && make && make install

Nun sollte wput problemlos kompiliert und installiert werden.