int main(int argc, char** argv) { struct sockaddr_in server; struct sockaddr_in client; char buffer[BUFSIZE]; socklen_t len_client; int transfered = 0; char* msg; pthread_t thread_tweet_fetcher; if (argc < 2) { printf("USAGE: %s [port]\n", argv[0]); return 0; } atexit(at_exit); set_signal_handlers(); T = twitter_new(); printf("Reading tweets...\n"); fetch_tweets(T, 15); pthread_create(&thread_tweet_fetcher, NULL, thread_fetch_tweets, NULL); printf("Opening server...\n"); sock = udp_create_socket(&server, sizeof(server), htonl(INADDR_ANY), atoi(argv[1]), 0); if (sock < 0) error_and_exit("cannot create socket", __FILE__, __LINE__); if (bind(sock, (struct sockaddr*)&server, sizeof(server)) < 0) error_and_exit("Cannot bind to socket", __FILE__, __LINE__); len_client = sizeof(client); for (;;) { transfered = udp_receive(sock, buffer, BUFSIZE, &client, len_client); switch (transfered) { case -1: error_and_exit("Failed to receive message", __FILE__, __LINE__); case 0: error_and_exit("Client has shut down...", __FILE__, __LINE__); } msg = get_tweet(T); transfered = udp_send(sock, msg, &client, sizeof(client)); free(msg); if (!transfered) error_and_exit("Sending has failed!", __FILE__, __LINE__); } close(sock); return 0; }
int main(int argc, char *argv[]){ int ret; int opt; int opt_debug = 0; int opt_search = 0; int opt_daemonize = 0; char *opt_search_word = NULL; char *opt_update = NULL; char *opt_count = NULL; char *opt_lang = NULL; twitter_t *twitter = NULL; while((opt = getopt(argc, argv, "ds:l:u:c:vD")) != -1){ switch(opt){ case 'd': opt_debug++; break; case 's': opt_search = 1; if(optarg[0] == '#'){ asprintf(&opt_search_word, "%%23%s", optarg + 1); }else{ asprintf(&opt_search_word, "%s", optarg); } break; case 'l': opt_lang = optarg; break; case 'u': opt_update = optarg; break; case 'c': opt_count = optarg; break; case 'v': printf("%s %s\n", PACKAGE, VERSION); return EXIT_SUCCESS; case 'D': opt_daemonize = 1; break; default: fprintf(stderr, "usage:\n"); fprintf(stderr, " %s\n", PACKAGE); fprintf(stderr, " or\n"); fprintf(stderr, " %s -u \"update status\"\n", PACKAGE); return EXIT_FAILURE; } } twitter = twitter_new(); ret = twitter_config(twitter); if(ret){ fprintf(stderr, "config error.\n"); return EXIT_FAILURE; } if(opt_debug){ twitter->debug = opt_debug; printf("debug: %d\n", twitter->debug); } if(opt_lang){ twitter->lang = opt_lang; printf("lang: %s\n", twitter->lang); } if(opt_search){ twitter->search_word = opt_search_word; printf("search_word: %s\n", twitter->search_word); } if(opt_count){ xtwitter_count(twitter, opt_count); twitter_free(twitter); return EXIT_SUCCESS; } ret = twitter_xauth(twitter); if(ret){ fprintf(stderr, "error: xAuth failed.\n"); twitter_free(twitter); return EXIT_FAILURE; } if(opt_update){ if(!strcmp(opt_update, "-")){ xtwitter_update_stdin(twitter); }else{ xtwitter_update(twitter, opt_update); } twitter_free(twitter); return EXIT_SUCCESS; } regcomp(&id_regex, twitter->user, REG_EXTENDED | REG_NOSUB); //ret = xtwitter_x_init(); ret = xtwitter_xaw_init(); if(ret){ fprintf(stderr, "xtwitter: error at xtwitter_init_x()\n"); return EXIT_FAILURE; } //twitter->popup = xtwitter_x_popup; twitter->popup = xtwitter_xaw_insert; pthread_t thread; int thread_status; thread_status = pthread_create(&thread, NULL, xtwitter_stream_thread, twitter); if(thread_status){ fprintf(stderr, "xtwitter: error at pthread_create()\n"); return EXIT_FAILURE; } if(opt_daemonize){ daemonize(); } xtwitter_xaw_loop(); pthread_join(thread, NULL); twitter_free(twitter); return EXIT_SUCCESS; }