elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  conflictin types for ... (pasando mode_t como parámetro)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: conflictin types for ... (pasando mode_t como parámetro)  (Leído 1,836 veces)
juligarc10

Desconectado Desconectado

Mensajes: 47


Ver Perfil
conflictin types for ... (pasando mode_t como parámetro)
« en: 23 Octubre 2019, 13:56 pm »

Hola gente. Estoy realizando un pequeño proyecto en el cual pretendo imitar un shell, y en este caso estoy diseñando una función que haga lo mismo que el 'ls -li' del shell de Linux. Esta entre otras cosas me debe de mostrar los permisos del archivo. Para ello uso una función, a la cual se le pasa por parámetro un mode_t, y me tendría que devolver un puntero de tipo char (string).
Al intentar compilar el proyecto me da un error de 'conflicting types for 'ConvierteModo2''.
Las librerías necesarias las tengo todas importadas, y he probado a hacerlo de forma chapuza, y no modularizada, y así funciona. De aquí saco como conclusión que el problema viene de que no me lee bien el mode_t pasado por parámetro, o bien que el hecho de que me devuelva un puntero a un char falle en algún punto...

Este es el código:

Código:
else if (strcmp( entrada,"info")==0) {
        char *permiso;
        char path[]="/home/julian/Escritorio/a.out";
        permiso=(char *) malloc (12);
        struct stat a;
        stat(/*trim(tr[1])*/path, &a);
        permiso=ConvierteModo2(a.st_mode);

Código:
char *ConvierteModo2 (mode_t m) {
    static char permisos[12];
    strcpy (permisos,"---------- ");
    permisos[0]=TipoFichero(m);
    if (m&S_IRUSR) permisos[1]='r';  /*propietario*/
    if (m&S_IWUSR) permisos[2]='w';
    if (m&S_IXUSR) permisos[3]='x';
    if (m&S_IRGRP) permisos[4]='r';   /*grupo*/
    if (m&S_IWGRP) permisos[5]='w';
    if (m&S_IXGRP) permisos[6]='x';
    if (m&S_IROTH) permisos[7]='r';   /*resto*/
    if (m&S_IWOTH) permisos[8]='w';
    if (m&S_IXOTH) permisos[9]='x';
    if (m&S_ISUID) permisos[3]='s';  /*setuid, setgid y stickybit*/
    if (m&S_ISGID) permisos[6]='s';
    if (m&S_ISVTX) permisos[9]='t';
    return (permisos);
}

Alguien podría echarme una mano? Gracias de antemano.


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: conflictin types for ... (pasando mode_t como parámetro)
« Respuesta #1 en: 24 Octubre 2019, 17:43 pm »

Sugiero incluir los #include (relevantes) que estas usando.

Tal vez si construyes un programa minimo que muestre el error en vez de recortar pensando que lo que recortaste no tiene relevancia?


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problemas metodo con parametro (solucionado) era sin parametro XD
Java
rub'n 6 6,611 Último mensaje 25 Noviembre 2010, 16:45 pm
por Afsoon
Llamar a SSH pasando password como argumento
GNU/Linux
[u]nsigned 5 5,587 Último mensaje 20 Abril 2011, 00:02 am
por GroK
Como pasar un fichero de salida como parametro
Programación C/C++
ZedGe 3 5,742 Último mensaje 30 Enero 2012, 15:03 pm
por ZedGe
Ayuda: pasando un objeto ofstream como parametro
Programación C/C++
erest0r 4 2,765 Último mensaje 23 Septiembre 2014, 13:03 pm
por BlackM4ster
como ver dispositivo desde fuera pasando por 3 ruters
Redes
ramclaud 4 2,189 Último mensaje 27 Agosto 2017, 13:17 pm
por crazykenny
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines