2 libloc - A library to determine the location of someone on the Internet
4 Copyright (C) 2017 IPFire Development Team <info@ipfire.org>
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
21 #include <loc/libloc.h>
22 #include <loc/database.h>
23 #include <loc/writer.h>
25 #define TEST_AS_COUNT 5000
27 int main(int argc
, char** argv
) {
36 struct loc_writer
* writer
;
37 err
= loc_writer_new(ctx
, &writer
, NULL
, NULL
);
42 for (unsigned int i
= 1; i
<= TEST_AS_COUNT
; i
++) {
44 loc_writer_add_as(writer
, &as
, i
);
46 sprintf(name
, "Test AS%u", i
);
47 loc_as_set_name(as
, name
);
54 fprintf(stderr
, "Could not open file for writing: %s\n", strerror(errno
));
58 err
= loc_writer_write(writer
, f
, LOC_DATABASE_VERSION_UNSET
);
60 fprintf(stderr
, "Could not write database: %s\n", strerror(-err
));
64 loc_writer_unref(writer
);
66 // And open it again from disk
67 struct loc_database
* db
;
68 err
= loc_database_new(ctx
, &db
, f
);
70 fprintf(stderr
, "Could not open database: %s\n", strerror(-err
));
74 size_t as_count
= loc_database_count_as(db
);
75 if (as_count
!= TEST_AS_COUNT
) {
76 fprintf(stderr
, "Could not read all ASes\n");
81 for (unsigned int i
= 1; i
<= 10; i
++) {
82 err
= loc_database_get_as(db
, &as
, i
);
84 fprintf(stderr
, "Could not find AS%d\n", i
);
93 struct loc_database_enumerator
* enumerator
;
94 err
= loc_database_enumerator_new(&enumerator
, db
, LOC_DB_ENUMERATE_ASES
);
96 fprintf(stderr
, "Could not create a database enumerator\n");
100 loc_database_enumerator_set_string(enumerator
, "10");
102 err
= loc_database_enumerator_next_as(enumerator
, &as
);
104 fprintf(stderr
, "Could not enumerate next AS\n");
109 printf("Found AS%d: %s\n", loc_as_get_number(as
), loc_as_get_name(as
));
111 err
= loc_database_enumerator_next_as(enumerator
, &as
);
113 fprintf(stderr
, "Could not enumerate next AS\n");
118 loc_database_enumerator_unref(enumerator
);
119 loc_database_unref(db
);