
victor_
(usa Ubuntu)
Enviado em 23/01/2010 - 14:35h
char call[100];
char pathname[100];
char *ptr;
fgets(call, 100, stdin);
if ((ptr = strtok(call, " ")) != NULL) {
if (strcmp(ptr, "ls") == 0) {
if (ptr = strtok(call, "\ 0") != NULL) {
if (strcmp(call, "/") >= 0) {
chdir(ptr);
//puts(getcwd(NULL, 0));
ls();
}
}
}
}
bom, digamos que o comando seja "ls /usr/bin"
pelos meus cálculos, ao reconhecer o "\ 0" (tá com espaço por causa do fórum) no final da string, o valor de ptr deveria ser "/usr/bin", mas obviamente não é isso que tá acontecendo.
qualquer ajuda eu agradeço.
ps: caso alguém ache que o problema seja a função ls(), segue o código (apesar de que eu já fiz vários testes nela, e está funcionando, pois basta um chdir() qualquer antes, e esse ls() funciona pro diretório atual):
void ls() {
DIR *dir;
dir = opendir(getcwd(NULL, 0));
struct dirent *entry = NULL;
while ((entry = readdir(dir)) != NULL) {
if (strncmp(entry->d_name, ".", 1) != 0) {
printf("%s\n", entry->d_name);
}
}
closedir(dir);
}