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.
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.