29. maj 2001 - 11:44Der er
2 kommentarer og 1 løsning
Parsing af /etc/resolv.conf
Jeg sidder og forsøger at lave en eller anden pæn funktion, der kan parse /etc/resolv.conf og returnere nameserverne. Jeg havde forestillet mig en funktionserklæring i stil med:
char **nameservers(void);
Svaret ønskes så vidt muligt i ANSI C.
En kort beskrivelse af /etc/resolv.conf:
Hver linie består af et keyword og en indstilling. Linier, der begynder med # er kommentarer og bør ignoreres.
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Fandt selv ud af det. Besluttede mig i øvrigt for, at lave funktionserklæringen en lille smule om. Her er min egen løsning. Kommentarer er meget velkomne:
int nameservers(char **theanswer) { FILE *resolvconf; char *s, *tmp, *tmp2; int number_of_nameservers = 0;
resolvconf = fopen(\"/etc/resolv.conf\",\"r\"); s = (char *) malloc(100); while (fgets(s,100,resolvconf) != NULL) { if ((tmp = strstr(s,\"nameserver\")) != NULL) if (((tmp2 = strchr(s,\'#\')) == NULL) || tmp2 > tmp) { s = strpbrk(s,\"0123456789.\"); *(s+strspn(s,\"1234567890.\")) = \'\\0\'; *(theanswer+number_of_nameservers) = s; number_of_nameservers++; s = (char *) malloc(100); } } free(s); fclose(resolvconf); return number_of_nameservers; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.