예제 #1
0
파일: twats.c 프로젝트: vrld/twat
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;
}
예제 #2
0
파일: xtwitter.c 프로젝트: hamano/xtwitter
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;
}