diff options
Diffstat (limited to 'src/location-manual.c')
-rw-r--r-- | src/location-manual.c | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/src/location-manual.c b/src/location-manual.c index 8ce324c..137500c 100644 --- a/src/location-manual.c +++ b/src/location-manual.c @@ -33,16 +33,25 @@ #endif -int -location_manual_init(location_manual_state_t *state) +typedef struct { + location_t loc; +} location_manual_state_t; + + +static int +location_manual_init(location_manual_state_t **state) { - state->loc.lat = NAN; - state->loc.lon = NAN; + *state = malloc(sizeof(location_manual_state_t)); + if (*state == NULL) return -1; + + location_manual_state_t *s = *state; + s->loc.lat = NAN; + s->loc.lon = NAN; return 0; } -int +static int location_manual_start(location_manual_state_t *state) { /* Latitude and longitude must be set */ @@ -54,12 +63,13 @@ location_manual_start(location_manual_state_t *state) return 0; } -void +static void location_manual_free(location_manual_state_t *state) { + free(state); } -void +static void location_manual_print_help(FILE *f) { fputs(_("Specify location manually.\n"), f); @@ -75,7 +85,7 @@ location_manual_print_help(FILE *f) fputs("\n", f); } -int +static int location_manual_set_option(location_manual_state_t *state, const char *key, const char *value) { @@ -100,13 +110,13 @@ location_manual_set_option(location_manual_state_t *state, const char *key, return 0; } -int +static int location_manual_get_fd(location_manual_state_t *state) { return -1; } -int +static int location_manual_handle( location_manual_state_t *state, location_t *location, int *available) { @@ -115,3 +125,15 @@ location_manual_handle( return 0; } + + +const location_provider_t manual_location_provider = { + "manual", + (location_provider_init_func *)location_manual_init, + (location_provider_start_func *)location_manual_start, + (location_provider_free_func *)location_manual_free, + (location_provider_print_help_func *)location_manual_print_help, + (location_provider_set_option_func *)location_manual_set_option, + (location_provider_get_fd_func *)location_manual_get_fd, + (location_provider_handle_func *)location_manual_handle +}; |