Ejemplo n.º 1
0
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);
}	
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
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);
}
Ejemplo n.º 4
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);
}
Ejemplo n.º 5
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);
}
Ejemplo n.º 6
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;
}	
Ejemplo n.º 7
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);
}
Ejemplo n.º 8
0
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);
}
Ejemplo n.º 9
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);
}
Ejemplo n.º 10
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));
}
Ejemplo n.º 11
0
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;
}