int my_select(int a[], int l, int r, int i) { if (l == r) return a[l]; int p = partition(a, l, r); int k = p - l + 1; if (k == i) return a[p]; else if (k > i) my_select(a, l, p - 1, i); else if (k < i) my_select(a, p + 1, r, i - k); }
int main(int ac, char **av) { t_list *list; t_list *tmp; struct termios t; struct termios old; list = create_list(); if (tcgetattr(0, &t) == -1) { my_putstr("Error: tcgetattr failed"); return (0); } old = t; if (manage_arg(ac, av, list) == -1) return (0); if (screen_clear() == -1) return (0); if (raw_mode(&t) == -1) return (0); tmp = list->next; tmp->cursor = 1; my_select(list, old); list_free(&list); return (0); }
/* ** Check_env: check the TERM environnement variable for tgetent. ** Init_termios: init terminal settings (!raw mode + !Echo mode). ** Create a list with arguments given by user. ** After receving selection from my_select: reinit term settings. ** Return selection to the shell. */ int main(int ac, char **av, char **env) { int i; t_termios t; t_list *list; i = 1; if (ac == 1 || ac == 1) return (msg_error("error: to few arguments\n", 1)); if (check_env(env) == 1) return (1); if (init_termios(&t) == 1) return (1); if ((list = my_create_list()) == NULL) return (reinit_termios(&t)); while (i < ac) { my_put_end_list(list, av[i], i); i = i + 1; } if (my_select(t, list, i - 2) == 1) return (reinit_termios(&t)); my_show_selected_list(list); if (reinit_termios(&t) == 1) return (msg_error("error: cannot reinit terminal settings\n", 1)); my_rm_list(list); return (0); }
int main(int argc, char **argv) { t_list *list; char *term; char *bp; int tty; struct termios t; struct termios save; init_main(&bp, &list); tty = get_tty_fd(); if (argc < 2) { my_printf("[*] Usage : %s [arg:]\n", argv[0]); return (0); } if (my_params_to_list(&list, argc, argv)) return (1); if (catch_error(&term, bp, &t, &save)) return (1); raw_mode(&t); clean_screen(tty); my_select(&list, tty); default_mode(&save); return (0); }
int main(int argc, char **argv) { t_linkedlist *args; args = NULL; if (!usage(argc)) return (1); if (!put_args_in_ll(argc, argv, &args)) return (1); if (!my_select(&args)) return (1); return (0); }
int main() { int i, a[MAX + 1]; srandom(time(NULL)); printf("before sort:\n"); for (i = 1; i <= MAX; ++i) { a[i] = 100 * (1.0 * rand() / RAND_MAX); printf("%3d ", a[i]); } printf("\n"); //quicksort(a, 1, MAX); printf("%3d\n", my_select(a, 1, MAX, 5)); //printf("after sort:\n"); //for (i = 1; i <= MAX; ++i) { // printf("%3d ", a[i]); //} //printf("\n"); return 0; }
void my_connect(t_client *client) { struct sockaddr_in server; client->socket_cli = socket(AF_INET , SOCK_STREAM , 0); if (client->socket_cli == -1) my_exit("Could not create socket", 1); if (strcmp(client->ip, "localhost") == 0) client->ip = "127.0.0.1"; server.sin_addr.s_addr = inet_addr(client->ip); server.sin_family = AF_INET; server.sin_port = htons(client->port); if (connect(client->socket_cli, (struct sockaddr *)&server, sizeof(server)) < 0) my_exit("Could not connect socket", 1); dprintf(client->socket_cli, "ID\nMAP\n"); if (pthread_create(&client->thread, NULL, (void *(*)(void *))my_display, client)) my_exit("Thread creation error", 1); my_select(client); }
int main(int ac, char **av) { int i; t_dnode *node; signal(SIGWINCH, sigwinch); i = ac - 1; my_clearscreen(); set_color(0, 2); g_list = mk_dclist(); while (i > 0) { node = mk_node(); node->data = my_strdup(av[i]); node->selected = 0; node->underline = 0; my_put_in_dclist(&g_list, node); i--; } my_select(); my_free_dclist(&g_list); return (0); }
int main(int ac, char **av) { t_env *e; int fd_max; fd_set fd_read; fd_set fd_write; if (ac != 2) my_error("Usage : ./server [port]", 0); if ((e = malloc(sizeof(t_env))) == NULL) my_error("Malloc failed", 0); if (parse_arguments(av[1], "2147483648") || atoi(av[1]) <= 0) my_error("Port need to be positif and not overflow", 0); e->port = atoi(av[1]); add_server(e); while (1) { fd_max = my_fd_set_list(e, &fd_read, &fd_write); if (!my_select(fd_max, &fd_read, &fd_write)) my_fd_isset(e, &fd_read, &fd_write); } return (0); }
int main(int ac, char **av) { fd_set set; t_fd *fds; int ret; fds = NULL; if (ac != 2) return (msg_error(EUSAGE, 0)); if (signal(SIGINT, &handle_sigint) == SIG_ERR) return (msg_error(ESIGNAL, 1)); if (create_server(atoi(av[1]), &fds) == EXIT_FAILURE) return (my_exit(fds, EXIT_FAILURE)); while (!g_sigint) { ret = my_select(fds, &set); if (ret < 0) return (my_exit(fds, EXIT_FAILURE)); if (ret > 0) if (handle_selection(fds, &set) == EXIT_FAILURE) return (my_exit(fds, EXIT_FAILURE)); } return (my_exit(fds, EXIT_SUCCESS)); }
int main ( int argc, char *argv[] ) { char buf[BUFFER_SIZE]; int pfd,ii,READ,watch,status,VERBOSE = 0,DRY_RUN = 0; const char *pathname; const char *pcopy; usage(argc); for (ii = 0;ii < argc; ii++){ if(strcmp(argv[ii],"-v") == 0){ VERBOSE = 1; } if(strcmp(argv[ii],"-n") == 0){ DRY_RUN = 1; } } if (VERBOSE == 1 && DRY_RUN == 1){ pathname = argv[5]; pcopy = argv[6]; }else if((!VERBOSE && DRY_RUN) || (VERBOSE && !DRY_RUN)){ pathname = argv[4]; pcopy = argv[5]; } else{ usage(argc); } /*creating the INOTIFY instance*/ pfd = inotify_init(); if (pfd == -1){ perror("inotify_init"); } int timeset = atoi(argv[2]); //listing changes to directory/file watch = inotify_add_watch(pfd, pathname,IN_ALL_EVENTS); if(VERBOSE) printf("syncbox: added watch for %s\n",pathname); while(my_select(pfd,timeset) != -1) { READ = read(pfd,buf,BUFFER_SIZE); int i = 0; while (i < READ) { struct inotify_event *event = ( struct inotify_event * ) &buf[i]; if (event->len) { if (event->mask & IN_CREATE) { processEvent(event, "created"); } else if ( event->mask & IN_DELETE ) { processEvent(event, "deleted-exiting"); inotify_rm_watch(pfd,watch); close(pfd); exit(1); } else if ( event->mask & IN_CLOSE_WRITE ) { processEvent(event, "opened for writing is closed"); } else if ( event->mask & IN_CLOSE_NOWRITE ) { processEvent(event, "opened not for writing is closed"); } else if ( event->mask & IN_DELETE_SELF ) { processEvent(event, "monitored is deleted-exiting"); inotify_rm_watch(pfd,watch); close(pfd); exit(1); } else if ( event->mask & IN_MODIFY ) { processEvent(event, "was modified"); } else if ( event->mask & IN_MOVE_SELF) { processEvent(event, "was itself moved"); } else if ( event->mask & IN_MOVED_FROM || event->mask & IN_MOVED_TO) { processEvent(event, "moved/renamed"); } else if ( event->mask & IN_OPEN) { processEvent(event, "was opened"); } } i += EVENT_SIZE + event->len; } } int pid = fork(); if (pid < 0) { perror("fork"); } else if(pid == 0){ if (VERBOSE && DRY_RUN==0) { printf("syncbox: synchronising %s to %s.\n",pathname,pcopy); execl("/usr/bin/rsync","rsync","-az","--delete",pathname,pcopy,(char*)NULL); perror("execl"); } else if(VERBOSE && DRY_RUN){ printf("syncbox: DRY_RUN-no synchronization took place\n"); } } else { waitpid(pid, &status, 0); if (VERBOSE && DRY_RUN == 0) { printf("syncbox: rsync -az --delete %s %s.\nsyncbox: synchronization finished.\n",pathname,pcopy); } } inotify_rm_watch(pfd,watch); close(pfd); return 0; }