aboutsummaryrefslogtreecommitdiffstats
path: root/src/location-manual.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/location-manual.c')
-rw-r--r--src/location-manual.c42
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
+};