Exemple #1
0
void			apply_cd(char *command)
{
	char	**av;
	int		size;
	t_env	*env;

	av = ft_strsplit(command, ' ');
	size = av_size(av);
	env = init_env(NULL, 0);
	if (!parse_cd(av))
	{
		if (size == 1 || (size == 2 && !ft_strcmp(av[1], "-P"))
			|| (size == 2 && !ft_strcmp(av[1], "-L"))
			|| (size == 2 && !ft_strcmp(av[1], "~"))
			|| (size == 3 && !ft_strcmp(av[2], "~")))
		{
			if (!chdir(env->home))
				update_env(&env, "/nfs");
			set_flag(&env, 0);
		}
		else
			go_newdir(env, av[size - 1]);
		if (g_pid.built == -1)
			g_pid.built = 1;
	}
	del_av(av);
}
Exemple #2
0
void			ft_cd(char *buf, t_params *p)
{
	char	**av;
	char	*new_dir;
	int		ret;
	int		size;

	ret = 0;
	av = ft_split(buf);
	new_dir = NULL;
	size = av_size(av);
	if (size > 2)
		ft_putendl("cd: syntax error");
	else if (size == 1 || (size == 2 && !ft_strcmp(av[1], "~")))
		new_dir = ft_strdup(p->home);
	else
		new_dir = get_newdir(p, av[1]);
	if (new_dir && !(ret = check_path(new_dir)) && !chdir(new_dir))
		update_env(p, new_dir);
	else if (new_dir && !(ret = check_path(new_dir)) && chdir(new_dir) == -1)
		ft_print_error("cd: not a directory: ", av[1]);
	if (new_dir && ret && av[1])
		improper_path(ret, av[1]);
	ft_strdel(&new_dir);
	del_av(av);
}
Exemple #3
0
int				check_builtin(char *command)
{
	char	**av;
	int		i;
	int		ret;
	t_built	*builtin;

	i = 0;
	ret = 0;
	av = ft_strsplit(command, ' ');
	builtin = init_builtin();
	while (i < BUILT_NUM)
	{
		if (!ft_strcmp(av[0], builtin[i].name))
		{
			builtin[i].apply_built(command);
			ret = 1;
		}
		i++;
	}
	del_av(av);
	return (ret);
}
Exemple #4
0
//----------------------------------------------------------//
// Execução do desenvolvimento
//----------------------------------------------------------//
void main()
{
unsigned char 	i =0, t = 0, j = 0, k = 0, 
				p = 0, e = 0, sub = 0, sum = 1, 
				m = 0, dir = 0, excesso = 0, d_1 = 0,
				d_2 = 1, s = 0, r =0, disponivel = 0;
  while (1) {       
      struct Aviao av[12]; //desses 12 só 5 aviao entra no CTA 
      if(p > 5){
         for (r=0; r < 12; r++){
             if(av[r].id == 0){ disponivel = r; break;}
         }
      } else {disponivel = p;}
      
      //insere aviao manualmente sentido Norte -> Sul
      if(!A1) 
		i=0;
      if (A1 && i < 1){
          set_av(av, 1, p, disponivel);  
		  B1 = 1;            
          i = 1; 
		  p += 1; 
      } /*********/          
          
      //insere aviao manualmente sentido Sul -> Norte 
      if(!A2)
		t = 0;
	  
      if (A2 && t < 1){
         set_av(av, 2, p, disponivel);  
		 B1 = 1;             
         t = 1; 
		 p += 1;  
      }/*********/        
     
      
   //Imprime o status atualizado de todas aeronaves    
   if(A3){          
     for(i=0; i < 12; i++){  
         printf("\n"); 
        desloc_av(av,i); //simula deslocamento
        if(!A0){
			colisao_av(av);
			}
        
     if(av[0].id ==0 && av[1].id ==0 && av[2].id ==0 && av[3].id ==0 && av[4].id ==0){
			printf("\nCTA Vazio"); 
			B1 =0;
			} 		
		//	print_av(av[i]);// relatorio de aeronaves			 
		
        if(av[i].ex == 1){ 
			B0 = 1;
			printf("\n\nAeronave %d suba ate sair do CTA\n",av[i].id); 
            if(av[i].ex == 1){ 
				sub += 1; 
				subir_av(av,i,sub); 
				av[i].ex = 2; 
				B0 = 0;} 
				if(sub > 4){
					sub = 5;
				}
        }        
        if(av[i].ex == 2 ){ 
			e = av[i].id; 
			dir = av[i].dir;
			for(m = 0; m < 10; m++){	
				if(m < 5 && av[m].id == 0){
					if(e > 0 && av[i].ex == 2){
						printf("\n\nAviao:%d desca para o CTA\n",e); 
						descer_av(av,m,e,dir); 
						sub -= 1; 
						e = 0;
					}
					
					av[i].ex = 0;
                    
				} 
				if(av[m].dir == 1 && av[m].x == 10 && av[m].id > 0){ 
					del_av(av,m); 
					d_1 = av[m].x;
				}
				if(av[m].dir == 2 && av[m].x == 0 && av[m].id > 0){ 
					del_av(av,m); 
					d_2 = av[m].x;
				} 
          }
        }   
        if(av[i].dir == 1 && av[i].x == 10 && av[i].id > 0){ 
			del_av(av,i);
		}
        if(av[i].dir == 2 && av[i].x == 0 && av[i].id > 0){ 
			del_av(av,i);
		}
    }     
         
   }/************/ 
   if(A3){
      if(!vai_colidir_av(av, A0) && B1 == 1){
            printf("Atualizacao:\n\nRotas sem risco de colisao\n");
         } 
   }      
   
   /**GARANTINDO A LIBEAÇÃO DE ESPAÇO DE MEMÓRIA NO VETOR**/
    for(s=0; s < 12; s++){
        if (av[s].id == 0){            
            av[s].id= 0,
            av[s].dir= 0,
            av[s].x= 0,
            av[s].y= 0,
            av[s].z= 0;
            av[s].vel= 0,
            av[s].ex= 0;
            av[s].bum= 0;           
          }
          
          if (A3){
              ordem_av(av,s); //evita aviao no mesmo ponto x
              print_av(av[s]); // Atualiza relatorio
              }
          
    }  
    /**SÓ APÓS CHECAR EXPLOSAO**/
    if (A7){
        B3=0;
        } 
    
 }//fim while
}//fim main