problema con puntero a cadena

Jos?anuel
03 de Enero del 2006
Hola, estoy empezando en esto del c y tengo un problema. Estoy haciendo un programa tipo ls, que muestra los archivos de un directorio. Como tengo que implementar algunas opciones (-l -a -r ...) me es más fácil poner una función aparte que me dé el directorio (usando getcwd) que hacerlo en el código directamente, con lo que tendría que repetirlo varias veces, una si sólo me pasan el nombre del programa desde la shell y otra si después de las opciones no se especifica un directorio a listar, es decir, tendría que usar el path actual si desde la shell se hace:
>list ó
>list -la, pero no si se hace algo asi:

>list -l /home

Perdonad pq sé que es un poco lioso pero lo que pregunto es lo siguiente. Este es mi código:

int getDirectorio(char*);

int main(int argc, char *argv[]) {
int error = 0;
char directorio[PATH_MAX];
DIR *dirp;
struct dirent *direntp;

if (argc == 1) {
getDirectorio(directorio);
}
}

int getDirectorio(char *dir) {
int error = 0;

if (getcwd(dir, PATH_MAX) == NULL) { //****
perror("No se tuvo acceso al directorio");
error=1;
}
return(error);
}

al compilar este trozo me da un fallo que dice que en la línea que os he marcado con asteriscos comparo un puntero con un entero, y no sé ya como ponerlo.
Os agradecería cualquier ayuda posible. Un saludo a todos

Edgarin
03 de Enero del 2006
Yo creo que debes hacer un cast. Prueba con esto (reemplazando a esa linea)
if ((int)getcwd(dir, PATH_MAX) == NULL) { //****
o sino esto:
if (getcwd(dir, PATH_MAX) == (char*)NULL) { //****


Jos?anuel
03 de Enero del 2006
Gracias, pero era q se me habia olvidao un include, jeje. Muchas gracias d todos modos y feliz año nuevo