]> git.llucax.com Git - software/mutt-debian.git/blob - debian/patches/debian-specific/Md.etc_mailname_gethostbyname.diff
bug annotations
[software/mutt-debian.git] / debian / patches / debian-specific / Md.etc_mailname_gethostbyname.diff
1 If /etc/mailname is present, the hostname inside the file will be
2 used, rather than calling gethostbyname() on the actual hostname
3
4 --- a/init.c
5 +++ b/init.c
6 @@ -47,6 +47,7 @@
7  #include <unistd.h>
8  #include <string.h>
9  #include <sys/utsname.h>
10 +#include <netdb.h>
11  #include <errno.h>
12  #include <sys/wait.h>
13  
14 @@ -2953,6 +2954,31 @@
15    return 0;
16  }
17  
18 +int getmailname(char *s, size_t l)
19 +{
20 +    FILE *f;
21 +    char tmp[512];
22 +    char *p = tmp;
23 +
24 +    if ((f = fopen ("/etc/mailname", "r")) == NULL)
25 +       return (-1);
26 +
27 +    if (fgets (tmp, 510, f) != NULL) {
28 +      while (*p && !ISSPACE(*p) && l > 0) {
29 +       *s++ = *p++;
30 +       l--;
31 +      }
32 +      if (*(s-1) == '.')
33 +       s--;
34 +      *s = 0;
35 +
36 +      fclose (f);
37 +      return 0;
38 +    }
39 +    fclose (f);
40 +    return (-1);
41 +}
42 +
43  void mutt_init (int skip_sys_rc, LIST *commands)
44  {
45    struct passwd *pw;
46 @@ -3027,10 +3053,25 @@
47      Hostname = mutt_substrdup (utsname.nodename, p);
48      p++;
49      strfcpy (buffer, p, sizeof (buffer)); /* save the domain for below */
50 +    Fqdn = safe_strdup (utsname.nodename);
51    }
52    else
53      Hostname = safe_strdup (utsname.nodename);
54  
55 +  /* if /etc/mailname exists use it and ignore everything else */
56 +  if (getmailname(buffer, sizeof (buffer)) != -1)
57 +      Fqdn = safe_strdup(buffer);
58 +
59 +  /* try gethostbyname(3) if /etc/mailname does not exists */
60 +  if (!Fqdn) {
61 +    struct hostent *hp;
62 +
63 +    if ((hp = gethostbyname(Hostname)))
64 +       Fqdn = safe_strdup(hp->h_name);
65 +  }
66 +
67 +  if (Fqdn) {
68 +  } else
69  #ifndef DOMAIN
70  #define DOMAIN buffer
71    if (!p && getdnsdomainname (buffer, sizeof (buffer)) == -1)