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); }
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); }
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); }
//----------------------------------------------------------// // 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