Avatar billede sh_freesite.dk Nybegynder
29. maj 2001 - 11:44 Der 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.



Eksempel:

---

search stofanet.dk

#nameserver 212.10.24.252

nameserver 212.10.10.5

nameserver 195.41.45.10

---



Avatar billede borrisholt Novice
29. maj 2001 - 12:27 #1
sh_freesite.dk>> Dvs. i det konkrete tilfælde ønsker du at din funktion skal retunete

212.10.10.5
195.41.45.10

?

Jens B
Avatar billede sh_freesite.dk Nybegynder
29. maj 2001 - 13:57 #2
Æh, tjah, noget i den stil. Den skal returnere en pointer til de to strenge, ja..
Avatar billede sh_freesite.dk Nybegynder
30. maj 2001 - 09:42 #3
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;
}
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester