int main(int argc, char **argv) { if(argc < 3) { printf("%s --- Error:%s Usage: %s IP_ADDRESS PORT.\n", RED, NORMAL, argv[0]); exit(0); } signal(SIGINT, sigintHandler); room_list = NULL; registered_users_list = NULL; active_users_list = NULL; createRoom(&room_list, numRooms, DEFAULT_ROOM_NAME, rooms_mutex); RprintList(&room_list, rooms_mutex); readUserFile(®istered_users_list, USERS_FILE, registered_users_mutex); printList(®istered_users_list, registered_users_mutex); // Open server socket chat_serv_sock_fd = get_server_socket(argv[1], argv[2]); // step 3: get ready to accept connections if(start_server(chat_serv_sock_fd, BACKLOG) == -1) { printf("start server error\n"); exit(1); } //Main execution loop while(1) { //Accept a connection, start a thread int new_client = accept_client(chat_serv_sock_fd); if(new_client != -1) { pthread_t new_client_thread; pthread_create(&new_client_thread, NULL, client_receive, (void *)&new_client); } } close(chat_serv_sock_fd); }
/* * Windows Main * Twitter TimeLine Cntent * */ int windows_main(int argc, char **argv){ gtk_init (&argc, &argv); char *configFile = NULL; GError *error = NULL; GtkWidget *window, *table, *scroll, *icon_menu, *table_into, //*tweet, //*avatar, *scrolled_window, *menu_bar, *layout, *toolbar, *statusbar, *statusbar_char, *new_button, *text, *file_menu_obj, *file_menu_root, *file_menu_items, *aiuto_menu_obj, *aiuto_menu_root, *aiuto_menu_items; GtkTextBuffer *buffer; asprintf(&configFile, "%s%s", g_get_home_dir(), "/.twc/config/user.twc"); /* Set all window options (color, size, position, logo, icon, etc) */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW(window), 315, 650); gtk_widget_set_size_request (window, 315, 400); gtk_window_set_title (GTK_WINDOW(window), "TwitCrusader"); gtk_container_set_border_width (GTK_CONTAINER (window), 0); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_icon_from_file (GTK_WINDOW(window), ICON_FAVICON, &error); /* CALLBACK: exit event */ g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL); /* GTK Widget: Menu */ file_menu_obj = gtk_menu_new(); aiuto_menu_obj = gtk_menu_new(); /* SuBMenu File * Fix Icons Linux * gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true * gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true * */ file_menu_items = gtk_image_menu_item_new_with_label("Nuovo Utente"); icon_menu = gtk_image_new_from_file(ICON_ADDUSER); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (file_menu_items), icon_menu); g_signal_connect (G_OBJECT (file_menu_items), "activate", G_CALLBACK (windows_adduser), NULL); gtk_menu_append(GTK_MENU (file_menu_obj), file_menu_items); file_menu_items = gtk_image_menu_item_new_with_label("Opzioni"); icon_menu = gtk_image_new_from_file(ICON_SETTINGS); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (file_menu_items), icon_menu); g_signal_connect (G_OBJECT (file_menu_items), "activate", G_CALLBACK (windows_setting), NULL); gtk_menu_append(GTK_MENU (file_menu_obj), file_menu_items); file_menu_items = gtk_image_menu_item_new_with_label("Esci"); icon_menu = gtk_image_new_from_file(ICON_CLOSE); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (file_menu_items), icon_menu); g_signal_connect (G_OBJECT (file_menu_items), "activate", G_CALLBACK (gtk_main_quit), NULL); gtk_menu_append(GTK_MENU (file_menu_obj), file_menu_items); file_menu_root = gtk_menu_item_new_with_label("File"); gtk_menu_item_set_submenu(GTK_MENU_ITEM (file_menu_root), file_menu_obj); /* SubMenu: Help */ aiuto_menu_items = gtk_image_menu_item_new_with_label("Updates"); icon_menu = gtk_image_new_from_file(ICON_UPGRADE); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (aiuto_menu_items), icon_menu); g_signal_connect (G_OBJECT (aiuto_menu_items), "activate", G_CALLBACK (windows_upgrade), NULL); gtk_menu_append(GTK_MENU (aiuto_menu_obj), aiuto_menu_items); aiuto_menu_items = gtk_image_menu_item_new_with_label("Informazioni"); icon_menu = gtk_image_new_from_file(ICON_STAR); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (aiuto_menu_items), icon_menu); g_signal_connect (G_OBJECT (aiuto_menu_items), "activate", G_CALLBACK (windows_about), NULL); gtk_menu_append(GTK_MENU (aiuto_menu_obj), aiuto_menu_items); aiuto_menu_root = gtk_menu_item_new_with_label("Aiuto"); gtk_menu_item_set_submenu(GTK_MENU_ITEM (aiuto_menu_root), aiuto_menu_obj); /* Set Layout Position */ layout = gtk_vbox_new(0, 1); gtk_container_add(GTK_CONTAINER(window), layout); menu_bar = gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(layout), menu_bar, FALSE, FALSE, 0); gtk_menu_bar_append(GTK_MENU_BAR (menu_bar), file_menu_root); gtk_menu_bar_append(GTK_MENU_BAR (menu_bar), aiuto_menu_root); /* Status Bar */ statusbar = gtk_statusbar_new (); gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR(statusbar), TRUE); gtk_statusbar_push (GTK_STATUSBAR(statusbar), 0, "TwitCrusader..."); gtk_box_pack_end (GTK_BOX (layout), statusbar, FALSE, FALSE, 0); /* GTK Widget: Twitter Menu */ toolbar = gtk_toolbar_new (); gtk_box_pack_end (GTK_BOX (layout), toolbar, FALSE, FALSE, 0); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS); gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar)); /* Twitter Menu: Buttons */ new_button = gtk_button_new(); icon_menu = gtk_image_new_from_file(ICON_HOME); gtk_button_set_image(GTK_BUTTON(new_button),icon_menu); gtk_container_add (GTK_CONTAINER (toolbar), new_button); new_button = gtk_button_new(); icon_menu = gtk_image_new_from_file(ICON_UPDATE); gtk_button_set_image(GTK_BUTTON(new_button),icon_menu); gtk_container_add (GTK_CONTAINER (toolbar), new_button); new_button = gtk_button_new(); icon_menu = gtk_image_new_from_file(ICON_MENTION); gtk_button_set_image(GTK_BUTTON(new_button),icon_menu); gtk_container_add (GTK_CONTAINER (toolbar), new_button); new_button = gtk_button_new(); icon_menu = gtk_image_new_from_file(ICON_DM); gtk_button_set_image(GTK_BUTTON(new_button),icon_menu); gtk_container_add (GTK_CONTAINER (toolbar), new_button); new_button = gtk_button_new(); icon_menu = gtk_image_new_from_file(ICON_FAVORITES); gtk_button_set_image(GTK_BUTTON(new_button),icon_menu); gtk_container_add (GTK_CONTAINER (toolbar), new_button); new_button = gtk_button_new(); icon_menu = gtk_image_new_from_file(ICON_LINK); gtk_button_set_image(GTK_BUTTON(new_button),icon_menu); gtk_container_add (GTK_CONTAINER (toolbar), new_button); new_button = gtk_button_new(); icon_menu = gtk_image_new_from_file(ICON_PHOTO); gtk_button_set_image(GTK_BUTTON(new_button),icon_menu); gtk_container_add (GTK_CONTAINER (toolbar), new_button); /* Status Bar: Twitter 140char */ statusbar_char = gtk_statusbar_new (); gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR(statusbar_char), FALSE); gtk_statusbar_push (GTK_STATUSBAR(statusbar_char), 0, "140"); gtk_box_pack_end (GTK_BOX (layout), statusbar_char, FALSE, FALSE, 0); /* Table Content Tweet/Mentions */ table = gtk_table_new (9, 3, TRUE); gtk_container_add(GTK_CONTAINER(layout), table); /* Scrolled */ table_into = gtk_table_new (1, 3, TRUE); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_table_attach (GTK_TABLE (table), scrolled_window, 0, 3, 0, 8, GTK_FILL | GTK_EXPAND,GTK_FILL | GTK_EXPAND, 0, 0); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), table_into); /*for ( rows = 0; rows < 40; rows = rows + 4 ) { for ( cols = 0; cols < 3; cols++ ) { avatar = gtk_image_new_from_file (""); tweet = gtk_label_new (""); gtk_label_set_justify (GTK_LABEL(tweet),GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap_mode (GTK_LABEL(tweet), GTK_WRAP_WORD_CHAR); gtk_table_attach (GTK_TABLE (table_into ), tweet, 0, 1,rows, rows + 4, GTK_FILL | GTK_EXPAND,GTK_FILL, 0, 0); gtk_table_attach (GTK_TABLE (table_into ), tweet, 1, 3,rows, rows + 1, GTK_FILL | GTK_EXPAND,GTK_FILL, 0, 0); tweet = gtk_label_new (""); gtk_table_attach (GTK_TABLE (table_into ), tweet, 1, 3,rows + 1, rows + 4, GTK_FILL | GTK_EXPAND,GTK_FILL, 0, 0); } }*/ // TextArea + Scrollbar scroll = gtk_scrolled_window_new(NULL,NULL); gtk_table_attach (GTK_TABLE (table), scroll, 0, 3,8, 9, GTK_FILL | GTK_EXPAND,GTK_FILL | GTK_EXPAND, 0, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); text = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(text), TRUE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW(text), GTK_WRAP_WORD_CHAR); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); gtk_text_buffer_set_text (buffer, "", -1); g_signal_connect(buffer, "changed", G_CALLBACK(update_statusbar), statusbar_char); g_signal_connect(text, "key-press-event", G_CALLBACK(send_tweet_gtk), buffer); gtk_container_add(GTK_CONTAINER(scroll), text); // Widget Show gtk_widget_show_all (window); //Exist Config File? if(readUserFile()==1) windows_adduser(); //Show GTK Main gtk_main (); return 0; }