Hello folks, Here is a patch to build ssmtp (a simple SMTP forwarder) on the Hurd.
Any comments and suggestions would bemost welcome. :) FWIW, I'm using it without any problems since Saturday (but it's a rather light usage though). Best regards, Chris -- ,''`. Christopher `Physicman' Bodenstein <[EMAIL PROTECTED]> : :' : Physicman.Net : http://www.physicman.net/ `. `' Debian GNU/Hurd : http://www.debian.org/ports/hurd/ `- The Hurd wiki : http://hurd.gnufans.org/ --- ssmtp.c 2005-01-22 20:09:02.000000000 +0100 +++ ssmtp.c 2005-01-22 20:08:46.000000000 +0100 @@ -38,6 +38,8 @@ #endif #include "ssmtp.h" +/* xgethostname used to replace MAXHOSTNAMELEN */ +#include "xgethostname.h" bool_t have_date = False; bool_t have_from = False; @@ -59,7 +61,8 @@ char *auth_method = (char)NULL; /* Mechanism for SMTP authentication */ char *mail_domain = (char)NULL; char *from = (char)NULL; /* Use this as the From: address */ -char hostname[MAXHOSTNAMELEN] = "localhost"; +/* char hostname[MAXHOSTNAMELEN] = "localhost"; */ +char *hostname = "localhost"; char *mailhost = "mailhub"; char *minus_f = (char)NULL; char *minus_F = (char)NULL; @@ -140,7 +143,8 @@ */ void dead_letter(void) { - char path[(MAXPATHLEN + 1)], buf[(BUF_SZ + 1)]; + /* char path[(MAXPATHLEN + 1)], */ + char buf[(BUF_SZ + 1)]; struct passwd *pw; uid_t uid; FILE *fp; @@ -148,6 +152,8 @@ uid = getuid(); pw = getpwuid(uid); + char path[(sizeof(pw->pw_dir) + 1)]; + if(isatty(fileno(stdin))) { if(log_level > 0) { log_event(LOG_ERR, @@ -218,19 +224,23 @@ */ char *basename(char *str) { - char buf[MAXPATHLEN +1], *p; + /* char buf[MAXPATHLEN +1], *p; */ + char buf[sizeof(str) +1], *p; if((p = strrchr(str, '/'))) { - if(strncpy(buf, ++p, MAXPATHLEN) == (char *)NULL) { + /* if(strncpy(buf, ++p, MAXPATHLEN) == (char *)NULL) { */ + if(strncpy(buf, ++p, sizeof(str)) == (char *)NULL) { die("basename() -- strncpy() failed"); } } else { - if(strncpy(buf, str, MAXPATHLEN) == (char *)NULL) { + /* if(strncpy(buf, str, MAXPATHLEN) == (char *)NULL) { */ + if(strncpy(buf, str, sizeof(str)) == (char *)NULL) { die("basename() -- strncpy() failed"); } } - buf[MAXPATHLEN] = (char)NULL; + /* buf[MAXPATHLEN] = (char)NULL; */ + buf[sizeof(str)] = (char)NULL; return(strdup(buf)); } @@ -830,8 +840,9 @@ } } else if(strcasecmp(p, "HostName") == 0) { - if(strncpy(hostname, q, MAXHOSTNAMELEN) == NULL) { - die("parse_config() -- strncpy() failed"); + /* if(strncpy(hostname, q, MAXHOSTNAMELEN) == NULL) { */ + if(strcpy(hostname, q) == NULL) { + die("parse_config() -- strcpy() failed"); } if(log_level > 0) { @@ -1885,9 +1896,16 @@ /* Set the globals */ prog = basename(argv[0]); + hostname = xgethostname(); + if(!hostname) { + perror("xgethostname"); + die("Cannot get the name of this machine"); + } + /* Don't need this anymore if(gethostname(hostname, MAXHOSTNAMELEN) == -1) { die("Cannot get the name of this machine"); } + */ new_argv = parse_options(argc, argv); exit(ssmtp(new_argv));
signature.asc
Description: Digital signature
_______________________________________________ Help-hurd mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-hurd
