hostname/hostname-initial.patch
2009-12-08 08:20:09 +00:00

194 lines
6.0 KiB
Diff

diff -up hostname/hostname.1.initial hostname/hostname.1
--- hostname/hostname.1.initial 2009-09-22 14:21:50.000000000 +0200
+++ hostname/hostname.1 2009-11-06 16:30:20.000000000 +0100
@@ -91,6 +91,33 @@ will print the domain part of the FQDN (
complete FQDN of the system is returned with
.BR "hostname \-\-fqdn" .
+.LP
+The function
+.BR gethostname(2)
+is used to get the hostname. When the
+.BR "hostname \-a, \-d, \-f or \-i"
+is called will
+.BR gethostbyname(3)
+be called. The difference in
+.BR gethostname(2)
+and
+.BR gethostbyname(3)
+is that
+.BR gethostbyname(3)
+is network aware, so it consults
+.IR /etc/nsswitch.conf
+and
+.IR /etc/host.conf
+to decide whether to read information in
+.IR /etc/sysconfig/network
+or
+.IR /etc/hosts
+
+To add another dimension to this,
+the
+.B hostname
+is also set when the network interface is brought up.
+
.SS "SET NAME"
When called with one argument or with the
.B \-\-file
@@ -106,7 +133,7 @@ and
use the
.BR setdomainname (2).
Note that this is effective only until the next reboot.
-Edit /etc/hostname for permanent change.
+After reboot original names from \fI/etc/hosts\fR are used again.
.LP
Note, that only the super-user can change the names.
.LP
@@ -117,10 +144,10 @@ command (see
below).
.LP
The host name is usually set once at system startup in
-.I /etc/init.d/hostname.sh
+.I /etc/rc.d/rc.sysinit
(normally by reading the contents of a file which contains
the host name, e.g.
-.IR /etc/hostname ).
+.IR /etc/sysconfig/network ).
.SS THE FQDN
You can't change the FQDN (as returned by
@@ -185,7 +212,7 @@ Display the short host name. This is the
Print version information on standard output and exit successfully.
.TP
.I "\-v, \-\-verbose"
-Be verbose and tell what's going on.
+Verbose output was removed.
.TP
.I "\-y, \-\-yp, \-\-nis"
Display the NIS domain name. If a parameter is given (or
@@ -203,9 +230,7 @@ option in
.BR /etc/resolv.conf .
.SH FILES
.B /etc/hosts
-
-.B /etc/hostname
-This file should only contain the hostname and not the full FQDN.
+.B /etc/sysconfig/network
.SH AUTHORS
Peter Tobias, <tobias@et-inf.fho-emden.de>
.br
diff -up hostname/hostname.c.initial hostname/hostname.c
--- hostname/hostname.c.initial 2009-10-27 13:19:28.000000000 +0100
+++ hostname/hostname.c 2009-11-06 16:14:23.000000000 +0100
@@ -43,7 +43,7 @@
#include <err.h>
#include <rpcsvc/ypclnt.h>
-#define VERSION "3.00"
+#define VERSION "3.01"
enum type_t { DEFAULT, DNS, FQDN, SHORT, ALIAS, IP, NIS, NIS_DEF };
@@ -112,7 +112,7 @@ localdomain()
* If something goes wrong, program exits.
*/
char *
-localhost()
+localhost(enum type_t type)
{
char *buf = 0;
size_t buf_len = 0;
@@ -134,10 +134,11 @@ localhost()
|| errno == ENAMETOOLONG);
/*
- * a hostname must not contain a dot, so if we find one,
+ * short hostname must not contain a dot, so if we find one,
* we also have a domain in here, which we better remove
*/
- *(strchrnul(buf, '.')) = '\0';
+ if (type == SHORT)
+ *(strchrnul(buf, '.')) = '\0';
/* gethostname failed, abort. */
if (myerror)
@@ -257,7 +258,7 @@ show_name(enum type_t type)
{
case DEFAULT:
case SHORT:
- printf("%s\n", localhost());
+ printf("%s\n", localhost(type));
break;
case NIS:
printf("%s\n", localdomain());
@@ -270,7 +271,7 @@ show_name(enum type_t type)
hints.ai_socktype = SOCK_DGRAM;
hints.ai_flags = AI_CANONNAME;
- if ((ret = getaddrinfo(localhost(), NULL, &hints, &res)) != 0)
+ if ((ret = getaddrinfo(localhost(type), NULL, &hints, &res)) != 0)
errx(1, "%s", gai_strerror(ret));
switch (type) {
@@ -278,7 +279,7 @@ show_name(enum type_t type)
struct hostent *hp;
int i;
- if ((hp = gethostbyname(localhost())) == NULL)
+ if ((hp = gethostbyname(localhost(type))) == NULL)
errx(1, "%s", hstrerror(h_errno));
for (i = 0; hp->h_aliases[i]; i++) {
@@ -449,7 +450,7 @@ main(int argc, char **argv)
if (boot && (name == NULL || name[0] == '\0')) {
free(name);
- name = localhost();
+ name = localhost(type);
if (name[0] == '\0' || !strcmp(name,"(none)"))
strcpy(name, "localhost");
}
diff -up hostname/Makefile.initial hostname/Makefile
--- hostname/Makefile.initial 2009-09-22 14:21:50.000000000 +0200
+++ hostname/Makefile 2009-11-06 16:14:23.000000000 +0100
@@ -7,26 +7,28 @@ OBJS=hostname.o
hostname: $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS) -lnsl
- ln -fs hostname dnsdomainname
- ln -fs hostname domainname
- ln -fs hostname ypdomainname
- ln -fs hostname nisdomainname
install: hostname
install -d ${BASEDIR}/usr/share/man/man1
- install -o root -g root -m 0644 hostname.1 ${BASEDIR}/usr/share/man/man1
+ install -m 0644 hostname.1 ${BASEDIR}/usr/share/man/man1
ln -fs hostname.1 ${BASEDIR}/usr/share/man/man1/dnsdomainname.1
ln -fs hostname.1 ${BASEDIR}/usr/share/man/man1/domainname.1
ln -fs hostname.1 ${BASEDIR}/usr/share/man/man1/ypdomainname.1
ln -fs hostname.1 ${BASEDIR}/usr/share/man/man1/nisdomainname.1
- install -o root -g root -m 0644 hostname.1.fr ${BASEDIR}/usr/share/man/fr/man1/hostname.1
+ install -d ${BASEDIR}/usr/share/man/fr/man1
+ install -m 0644 hostname.1.fr ${BASEDIR}/usr/share/man/fr/man1/hostname.1
+ ln -fs hostname.1 ${BASEDIR}/usr/share/man/fr/man1/dnsdomainname.1
+ ln -fs hostname.1 ${BASEDIR}/usr/share/man/fr/man1/domainname.1
+ ln -fs hostname.1 ${BASEDIR}/usr/share/man/fr/man1/ypdomainname.1
+ ln -fs hostname.1 ${BASEDIR}/usr/share/man/fr/man1/nisdomainname.1
+
install -d ${BASEDIR}/bin
- install -o root -g root -m 0755 hostname ${BASEDIR}/bin
- ln -f hostname ${BASEDIR}/bin/dnsdomainname
- ln -f hostname ${BASEDIR}/bin/domainname
- ln -f hostname ${BASEDIR}/bin/nisdomainname
- ln -f hostname ${BASEDIR}/bin/ypdomainname
+ install -m 0755 hostname ${BASEDIR}/bin
+ ln -fs hostname ${BASEDIR}/bin/dnsdomainname
+ ln -fs hostname ${BASEDIR}/bin/domainname
+ ln -fs hostname ${BASEDIR}/bin/nisdomainname
+ ln -fs hostname ${BASEDIR}/bin/ypdomainname
clean:
-rm -f $(OBJS) hostname dnsdomainname domainname nisdomainname ypdomainname