00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00042 #if (HAVE_CONFIG_H)
00043 #include "../include/config.h"
00044 #endif
00045
00046 #include "./libipg.h"
00047
00048 ipgeo_t *
00049 ipgeo_init(char *file, u_int8_t flags, char *err_buf)
00050 {
00051 ipgeo_t *ipg = NULL;
00052
00053 ipg = (ipgeo_t *)malloc(sizeof (ipgeo_t));
00054 if (ipg == NULL)
00055 {
00056 snprintf(err_buf, IPGEO_ERRBUF_SIZE, "malloc(): %s\n", strerror(errno));
00057 goto bad;
00058 }
00059
00060 memset(ipg, 0, sizeof (ipg));
00061
00062 ipg->db = fopen(file, "r");
00063 if (ipg->db == NULL)
00064 {
00065 snprintf(err_buf, IPGEO_ERRBUF_SIZE, "fopen() (%s): %s\n", file,
00066 strerror(errno));
00067 goto bad;
00068 }
00069
00071 ipg->dbt = 6;
00072
00074 ipg->flags = flags;
00075
00076 return (ipg);
00077
00078 bad:
00079 if (ipg)
00080 {
00081 if (ipg->db)
00082 {
00083 fclose(ipg->db);
00084 }
00085 free (ipg);
00086 }
00087 return (NULL);
00088 }
00089
00090 void
00091 ipgeo_destroy(ipgeo_t *ipg)
00092 {
00093 if (ipg)
00094 {
00095 if (ipg->db)
00096 {
00097 fclose(ipg->db);
00098 }
00099 free (ipg);
00100 }
00101 }
00102
00103 char *
00104 ipgeo_geterror(ipgeo_t *ipg)
00105 {
00106 return (ipg->err_buf);
00107 }
00108
00109 int
00110 ipgeo_getdbt(ipgeo_t *ipg)
00111 {
00112 if (ipg == NULL || ipg->db == NULL)
00113 {
00114 return (-1);
00115 }
00116 return (ipg->dbt);
00117 }
00118
00119 int
00120 ipgeo_getfd(ipgeo_t *ipg)
00121 {
00122 if (ipg == NULL || ipg->db == NULL)
00123 {
00124 return (-1);
00125 }
00126
00131 return (fileno(ipg->db));
00132 }
00133
00134