struct destination_url *new_destination_url(char *url) { struct destination_url *sq_dest; char *address; int port; char *path; if (simplehttp_parse_url(url, strlen(url), &address, &port, &path) == 0) { fprintf(stderr, "ERROR: invalid destination URL: %s\n", url); return NULL; } sq_dest = malloc(sizeof(struct destination_url)); _DEBUG("destination_url: %s\n", url); _DEBUG("\taddress: %s\n", address); _DEBUG("\tport: %d\n", port); _DEBUG("\tpath: %s\n", path); sq_dest->address = address; sq_dest->port = port; sq_dest->path = path; sq_dest->next = NULL; sq_dest->method = EVHTTP_REQ_GET; return sq_dest; }
int main(int argc, char **argv) { char *pubsub_url; char *address; int port; char *path; char *filename_format = NULL; struct output_metadata *data; define_simplehttp_options(); option_define_bool("version", OPT_OPTIONAL, 0, NULL, version_cb, VERSION); option_define_str("pubsub_url", OPT_REQUIRED, "http://127.0.0.1:80/sub?multipart=0", &pubsub_url, NULL, "url of pubsub to read from"); option_define_str("filename_format", OPT_REQUIRED, NULL, &filename_format, NULL, "/var/log/pubsub.%%Y-%%m-%%d_%%H.log"); if (!option_parse_command_line(argc, argv)){ return 1; } data = calloc(1, sizeof(struct output_metadata)); data->filename_format = filename_format; data->current_filename[0] = '\0'; data->temp_filename[0] = '\0'; data->output_file = NULL; if (simplehttp_parse_url(pubsub_url, strlen(pubsub_url), &address, &port, &path)) { pubsubclient_main(address, port, path, process_message_cb, error_cb, data); if (data->output_file) { fclose(data->output_file); } free(address); free(path); } else { fprintf(stderr, "ERROR: failed to parse pubsub_url\n"); } free(data); free_options(); free(pubsub_url); free(filename_format); return 0; }