コード例 #1
0
ファイル: otool.c プロジェクト: Bulliby/tests
static void			*map_file(char * const path, int *fd)
{
	t_stat		st;
	void		*ret;

	if ((*fd = open(path, O_RDWR)) == -1)
		ft_quit("open error", 2, 42);
	arch_64(*fd);
	if (fstat(*fd, &st) == -1)
		ft_quit("stat error", 2, 42);
	if ((ret = mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, *fd, 0)) == MAP_FAILED)
	   ft_quit("map error2", 2, 42);	
	return (ret);
}
コード例 #2
0
ファイル: main.c プロジェクト: gmpetrov/ft_select
int		ft_while(t_data *d, struct termios *term, t_list *list)
{
	while (42)
	{
		ft_bzero(d->read_char, 3);
		read(0, d->read_char, 3);
		if (is_rtn(d->read_char))
		{
			ft_quit(term);
			final_print(list);
			return (1);
		}
		if (ft_while_help(d, term, list, d->read_char))
			;
		else if (is_arrow(d->read_char, d, list) == 0)
			;
		else if (is_spc(d->read_char,  list, d) == 0)
			;
		else if (is_del(d->read_char))
			list = ft_del_elem(list, d, term);
		if (list == NULL)
			return (0);
	}
	return (0);
}
コード例 #3
0
ファイル: otool.c プロジェクト: Bulliby/tests
static void		arch_64(int fd)
{
	char			stamp[5];

	ft_bzero(stamp, 5);
	read(fd, stamp, 4);
	if (*(int *)stamp != MH_MAGIC_64)
		ft_quit("Bad architecture", 2, 42);
}	
コード例 #4
0
ファイル: self-pipe-trick.c プロジェクト: Bulliby/tests
 static void
 handler(int sig)
 {
     int savedErrno;                     /* In case we change 'errno' */
 
     savedErrno = errno;
     if (write(pfd[1], "x", 1) == -1 && errno != EAGAIN)
		 ft_quit("write", 2, 42);
     errno = savedErrno;
 }
コード例 #5
0
ファイル: otool.c プロジェクト: Bulliby/tests
int			main(int argc, char **argv)
{
	char	*macho;
	int		fd;

	if (argc != 2)
		ft_quit("At least one arg", 2, 42);
	macho = map_file(argv[1], &fd);
	get_text(macho, fd);
	return (42);
}
コード例 #6
0
ファイル: ft_broadcast.c プロジェクト: jdG-/zap
void		ft_broadcast(t_client *c, char *msg)
{
	char	*line;

	line = NULL;
	ft_putstr_fd("broadcast ", c->cs);
	ft_putendl_fd(msg, c->cs);
	get_next_line(c->cs, &line);
	if (ft_strcmp(line, "mort") == 0)
		ft_quit(c);
	free(line);
}
コード例 #7
0
ファイル: ft_inputs.c プロジェクト: xacoquan/SH1
static int	ft_manage_inputs(t_env *e, char *inputs)
{
	int		value;

	if ((inputs[0] == 4 || inputs[0] == 10) &&
		inputs[1] == 0 && inputs[2] == 0 && inputs[3] == 0 &&
		inputs[4] == 0 && inputs[5] == 0 && inputs[6] == 0)
		return (ft_quit(e, inputs));
	else if (!ft_delete(e, inputs))
		if (!ft_arrows(e, inputs))
			if (!ft_clear(e, inputs))
				if (ft_isprint(inputs[0]) || inputs[0] == 9)
					if ((value = ft_process_char(e, inputs)) != 2)
						return (value);
	return (-1);
}
コード例 #8
0
ファイル: ft_direction.c プロジェクト: jdG-/zap
int		ft_gauche(t_client *cl)
{
	char	*line;

	line = NULL;
	ft_putendl_fd("gauche", cl->cs);
	get_next_line(cl->cs, &line);
	if (ft_strcmp(line, "mort") == 0)
		ft_quit(cl);
	if (ft_strcmp(line, "ok") == 0)
	{
		free(line);
		return (1);
	}
	return (0);
}
コード例 #9
0
ファイル: main_client.c プロジェクト: elivet/ft_p
void		condition(char *buff, int sock)
{
	int		r;

	if (!ft_strncmp("quit", buff, 4))
		ft_quit(sock);
	if (!ft_strncmp("get", buff, 3))
		ft_get(buff, sock);
	if (ft_strcmp("ls", buff) == 0 || ft_strcmp("pwd", buff) == 0
			|| ft_strncmp("cd", buff, 2) == 0)
	{
		while ((r = read(sock, buff, 1)) > 0 && buff[0] != '\0')
		{
			buff[r] = '\0';
			write(1, buff, r);
		}
	}
}
コード例 #10
0
ファイル: ft_select.c プロジェクト: avallete/ft_select
static void	ft_select(char **argv)
{
	t_signal	sig_struct;
	t_select	env;

	ft_new_select(&env, argv);
	ft_init_sig(&sig_struct, &env);
	assign_colors(env.args);
	env.page.relpos = get_current_element_relative_position(\
						&(env.page), env.win);
	while (!env.quit)
	{
		if (env.print)
		{
			change_selected_element(&env);
			ft_print_all_page(&env);
			get_input(&env);
		}
	}
	ft_quit(&env);
}
コード例 #11
0
ファイル: envent.c プロジェクト: amerelo/fractal
int		detect(int keycode, t_env *box)
{
	if (keycode == 69 && (box->m.zoom *= 0.5))
		remake(box);
	if (keycode == 78 && (box->m.zoom *= 2))
		remake(box);
	if (keycode == 124 && (box->m.inter_x += box->m.zoom / 100))
		remake(box);
	if (keycode == 123 && (box->m.inter_x -= box->m.zoom / 100))
		remake(box);
	if (keycode == 126 && (box->m.inter_y -= box->m.zoom / 100))
		remake(box);
	if (keycode == 125 && (box->m.inter_y += box->m.zoom / 100))
		remake(box);
	if (keycode == 49)
		box->stop = (box->stop == 1) ? 0 : 1;
	if (keycode == 82 && reset(box))
		remake(box);
	detect_2(keycode, box);
	if (keycode == 53)
		ft_quit();
	return (1);
}
コード例 #12
0
ファイル: ft_keys.c プロジェクト: Sconso/Select
void			ft_keys(char *buf, t_control *list, char **modetab)
{
	if (ARROW)
		ft_arrows(buf, list, modetab);
	else if (SPACE)
		ft_addselected(list, modetab);
	else if (BACKSPACE || SUPPR)
	{
		ft_delete_node(list, list->active);
		ft_clear(modetab, list, 1);
	}
	else if (ENTER)
		ft_quit(modetab, list, 0, ft_calcret(list));
	else if (MINUS)
		ft_multiselect(list, 0, modetab);
	else if (PLUS)
		ft_multiselect(list, 1, modetab);
	else if (SLASH)
		ft_search(list, modetab);
	else if (QUESTIONMARK)
		ft_printhelp(list, modetab);
	else if (buf[0] == 'c' && !buf[1])
		ft_selectskin(list, modetab);
}
コード例 #13
0
ファイル: self-pipe-trick.c プロジェクト: Bulliby/tests
 int
 main(int argc, char *argv[])
 {
     fd_set readfds;
     int ready, nfds, flags;
     struct timeval timeout;
     struct timeval *pto;
     struct sigaction sa;
     char ch;
     int fd, j;
 
     if (argc < 2 || strcmp(argv[1], "--help") == 0)
         usageErr("%s {timeout|-} fd...\n"
                 "\t\t('-' means infinite timeout)\n", argv[0]);
 
     /* Initialize 'timeout', 'readfds', and 'nfds' for select() */
 
     if (strcmp(argv[1], "-") == 0) {
         pto = NULL;                     /* Infinite timeout */
     } else {
         pto = &timeout;
         timeout.tv_sec = getLong(argv[1], 0, "timeout");
         timeout.tv_usec = 0;            /* No microseconds */
     }
 
     nfds = 0;
 
     /* Build the 'readfds' from the fd numbers given in command line */
 
     FD_ZERO(&readfds);
     for (j = 2; j < argc; j++) {
         fd = getInt(argv[j], 0, "fd");
         if (fd >= FD_SETSIZE)
             cmdLineErr("file descriptor exceeds limit (%d)\n", FD_SETSIZE);
 
         if (fd >= nfds)
             nfds = fd + 1;              /* Record maximum fd + 1 */
         FD_SET(fd, &readfds);
     }
 
    /* Create pipe before establishing signal handler to prevent race */

     if (pipe(pfd) == -1)
		 ft_quit("pipe", 2, 42);
 
     FD_SET(pfd[0], &readfds);           /* Add read end of pipe to 'readfds' */
     nfds = max(nfds, pfd[0] + 1);       /* And adjust 'nfds' if required */
 
   /* Make read and write ends of pipe nonblocking */

     flags = fcntl(pfd[0], F_GETFL);
     if (flags == -1)
		 ft_quit("get", 2, 42);
     flags |= O_NONBLOCK;                /* Make read end nonblocking */
     if (fcntl(pfd[0], F_SETFL, flags) == -1)
		 ft_quit("set", 2, 42);
 
     flags = fcntl(pfd[1], F_GETFL);
     if (flags == -1)
		 ft_quit("get", 2, 42);
     flags |= O_NONBLOCK;                /* Make write end nonblocking */
     if (fcntl(pfd[1], F_SETFL, flags) == -1)
		 ft_quit("set", 2, 42);
 
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_RESTART;           /* Restart interrupted reads()s */
     sa.sa_handler = handler;
     if (sigaction(SIGINT, &sa, NULL) == -1)
		 ft_quit("sigaction", 2, 42);
 
     while ((ready = select(nfds, &readfds, NULL, NULL, pto)) == -1 &&
             errno == EINTR)
         continue;                       /* Restart if interrupted by signal */
     if (ready == -1)                    /* Unexpected error */
		 ft_quit("select", 2, 42);
 
     if (FD_ISSET(pfd[0], &readfds)) {   /* Handler was called */
         printf("A signal was caught\n");
 
         for (;;) {                      /* Consume bytes from pipe */
             if (read(pfd[0], &ch, 1) == -1) {
                 if (errno == EAGAIN)
                     break;              /* No more bytes */
                 else
					ft_quit("read", 2, 42);
             }
 
             /* Perform any actions that should be taken in response to signal */
         }
     }
 
     /* Examine file descriptor sets returned by select() to see
        which other file descriptors are ready */
 
     printf("ready = %d\n", ready);
     for (j = 2; j < argc; j++) {
         fd = getInt(argv[j], 0, "fd");
         printf("%d: %s\n", fd, FD_ISSET(fd, &readfds) ? "r" : "");
     }
 
     /* And check if read end of pipe is ready */
 
     printf("%d: %s   (read end of pipe)\n", pfd[0],
             FD_ISSET(pfd[0], &readfds) ? "r" : "");
 
     if (pto != NULL)
         printf("timeout after select(): %ld.%03ld\n",
                (long) timeout.tv_sec, (long) timeout.tv_usec / 1000);
 
     exit(EXIT_SUCCESS);
 }