🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #6922

[C] gethostbyname en setenv werken niet samen

#6922
From: Sven Vermeulen
Date: Sun, 03 Nov 2002 12:11
62 lines
2821 bytes
Voor een opgave moeten we in C een programma schrijven die een hosts-file
(zoals in /etc/hosts of %windowsroot%system32\drivers\etc\hosts) inleest
alsook een alias (e.g. "localhost") en er de IP van retourneert (e.g.
"127.0.0.1").

Het is echter wel de bedoeling dat niet de normale (i.e.
systeemgedefinieerde) hosts-file _en_ DNS-server(s) worden geraadpleegt, maar
enkel een zelf-te-definieren hosts-file.

Nu had ik geen goesting om nen ganse functie te schrijven die zo'n file
inleest, de nodige struct's aanmaakt e.d. dus wou ik gebruik maken van
gethostbyname. In de manpage van gethostnyname staat dat het mogelijk is om
de hosts-file van een andere plaats te raadplegen als deze gedefinieerd is in
de globale (omgevings)variabele HOSTALIASES. Dus wou ik via setenv die
variabele instellen op een andere locatie, maar zonder success :( Blijkbaar
wordt er niet naar die setenv geluisterd...

Kent er iemand een andere manier of ben ik toch verplicht om manueel de
hosts-file te gaan inlezen e.d. ?

De code:

/* 
 * Opgave 2 - Oefening 4 : Parse a hosts-file and query it
 *
 * 		Sven Vermeulen <sven.vermeulen@rug.ac.be>
 *
 */

#include <netdb.h>
#include <stdlib.h>
#include <stdio.h>

struct hostent *host;

int main(void) {
	char alias[251];
	int count = 0;
	
	printf("Alias: ");
	scanf("%250s", alias);

	setenv("HOSTALIASES", "/home/swift/work/rug/pii/oef4/opgave2/hosts");

	if ((host = gethostbyname(alias)) == NULL) {
		perror("No IP found for that alias.\n");
		exit(1);
	}

	printf("The hosts IP(s) is/are: \n");
	
	while(host->h_addr_list[count]) {
		printf(" \n   %u.%u.%u.%u",
			(unsigned char) host->h_addr_list[count][0],
			(unsigned char) host->h_addr_list[count][1],
			(unsigned char) host->h_addr_list[count][2],
			(unsigned char) host->h_addr_list[count][3]);
		count++;
	}

	return 0;
}
Technical Details
Message-ID: <Bn8x9.1765$Nd.459@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-06!sn-xit-04!supernews.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!syros.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,2b193f7ea2f6656f,start
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-11-03 04:20:15 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-06!sn-xit-04!supernews.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!syros.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
Newsgroups: be.comp.programming
From: Sven Vermeulen <svenPUNTJEvermeulen@rug.ac.be>
Subject: [C] gethostbyname en setenv werken niet samen
User-Agent: slrn/0.9.7.4 (Linux)
Lines: 63
Message-ID: <Bn8x9.1765$Nd.459@afrodite.telenet-ops.be>
Date: Sun, 03 Nov 2002 12:11:13 GMT
NNTP-Posting-Host: 213.224.109.38
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1036325473 213.224.109.38 (Sun, 03 Nov 2002 13:11:13 MET)
NNTP-Posting-Date: Sun, 03 Nov 2002 13:11:13 MET
Organization: Telenet Internet