my blog

Friday 30 July 2004

gethostname et FQDN

Plusieurs programmes ont besoin d'avoir le FQDN de l'hôte sur lequel ils tournent, notamment lorsqu'ils communiquent avec des programmes ou des personnes utilisant une autre machine. Le réflexe naturel est d'utiliser gethostname. Seulement voilà : gethostname peut parfois retourner le nom de l'hôte, sans le domaine. Ainsi, il est possible que gethostname renvoie 3rivieres alors que je souhaite obtenir 3rivieres.vuntz.net. Et le problème est qu'il n'y a pas de recette miracle pour obtenir directement 3rivieres.vuntz.net. Il faut mettre les mains dans le cambouis. Voici un petit exemple de code qui montre comment faire.

#include <errno.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#ifndef HOST_NAME_MAX
#define HOST_NAME_MAX 255
#endif

static void is_fqdn (char *display, char *name)
{
	if (strchr (name, '.') != NULL) {
		if (strncasecmp (name, "localhost", 9) == 0) {
			printf ("%s is a FQDN, but it's localhost: "
				"%s\n", display, name);
		} else {
			printf ("%s is a FQDN: %s\n", display, name);
		}
	} else {
		printf ("%s isn't a FQDN: %s\n", display, name);
	}
}

int main (int argc, char **argv)
{
	char             hostname[HOST_NAME_MAX];
	struct hostent  *he;
	char           **alias;
	char             buffer[64];

	if (gethostname (hostname, HOST_NAME_MAX)) {
		perror("gethostname");
		return 1;
	}

	/* man gethostname(2): we don't know if hostname is NUL-terminated */
	hostname[HOST_NAME_MAX - 1] = '\0';

	is_fqdn ("gethostname return value", hostname);

	he = gethostbyname (hostname);
	if (he == NULL) {
		herror ("gethostbyname");
		return 1;
	}

	is_fqdn ("The name returned by gethostbyname", he->h_name);

	alias = he->h_aliases;
	while (alias && *alias) {
		snprintf (buffer, 64, "Alias %d returned by gethostbyname",
			  alias + 1 - he->h_aliases);
		is_fqdn (buffer, *alias);
		alias++;
	}

	return 0;
}

Allez, maintenant, j'envoie un petit patch aux auteurs de libspf2 pour pouvoir fermer mon bug.

Thursday 29 July 2004

A Modest Destiny

Je ne suis pas un grand fan des web comic en général, mais j'ai découvert par l'intermédiaire de Romaric (à quand une vraie page web, Romaric ?) A Modest Destiny. Je ne vais pas raconter l'histoire, mais l'univers et le dessin sont proches de ce qu'on trouvait dans les RPG de la NES.

En tout cas, j'ai dévoré l'ensemble en deux ou trois jours tellement cela m'a plus... Le seul défaut que j'ai trouvé est qu'il manque un fil RSS.

Le blog de Guillaume

Tiens, Guillaume vient d'ouvrir un blog. Cela va encore nous faire de la bonne lecture. C'est bien™.

rss2email

Il y a plusieurs mois, j'annonçais avec fierté que j'avais créé ma planète. C'était bien. Mais cela me posait quelques problèmes, notamment le fait que je perdais les différentes informations au fur et à mesure que de nouvelles entrées apparaissaient. Par exemple, si je m'absentais cinq jours, le résultat était que je perdais les entrées datant du début de mon absence. Ajoutons à cela que Planet avaient quelques bugs qui m'agaçaient un peu (notamment en terme d'internationalisation, totalement inexistante) et que la page générée devenait vite énorme, et voilà : le vase déborde petit à petit.

J'ai donc profité de l'installation de ma nouvelle machine pour passer à rss2email. Et désormais je reçois toutes les informations que j'allais lire sur Internet par mail. Très très pratique. Et tellement naturel, comme lorsqu'on reçoit le journal à la maison tous les matins.

Wednesday 28 July 2004

Réveil

A qui est-ce que cela n'est jamais arrivé ?

- page 90 of 119 -

by Vincent