Autor
|
Tema: Manipulación de archivos (Leído 2,172 veces)
|
Lotux5
Desconectado
Mensajes: 24
|
¿Por qué no me funciona el stat? #include<unistd.h> #include<sys/stat.h> #include<fcntl.h> #include<stdio.h> #include<errno.h> #include<sys/types.h> #include<dirent.h> #include<string.h> int main(int argc, char *argv[]) { DIR *dir; struct dirent *ent; char **ptr; long octal; printf("\nError al introducir el numero de digitos del parametro 2\n"); } if( (dir=opendir(argv[1]))==NULL){ printf("\nError en el primer open\n"); } octal = strtol(argv [2], ptr , 8); struct stat *atributos; int fd; while ((ent = readdir(dir)) != NULL){ if( (strcmp(ent ->d_name , ".")!=0) && (strcmp(ent ->d_name , "..")!=0) ){ if ( (fd = open(ent->d_name,O_CREAT|O_TRUNC|O_WRONLY,S_IRGRP|S_IWGRP|S_IXGRP))<0){ printf("\nError en el segundo open\n"); } if ( (stat(ent->d_name, atributos)) <0){ } chmod(ent->d_name, octal); close(fd); } }
|
|
|
En línea
|
|
|
|
Lotux5
Desconectado
Mensajes: 24
|
El codigo completo seria este (aunque no funciona): #include<unistd.h> #include<sys/stat.h> #include<fcntl.h> #include<stdio.h> #include<errno.h> #include<sys/types.h> #include<dirent.h> #include<string.h> int main(int argc, char *argv[]) { DIR *dir; struct dirent *ent; char **ptr; long octal; printf("\nError al introducir el numero de digitos del parametro 2\n"); } if( (dir=opendir(argv[1]))==NULL){ printf("\nError en el primer open\n"); } octal = strtol(argv [2], ptr , 8); struct stat atributos; int fd; while ((ent = readdir(dir)) != NULL){ if( (strcmp(ent ->d_name , ".")!=0) && (strcmp(ent ->d_name , "..")!=0) ){ if ( (fd = open(ent->d_name,O_RDONLY))<0){ printf("\nError en el segundo open\n"); } if ( (stat(ent->d_name, &atributos)) <0){ } if( (atributos.st_mode & S_IRUSR) != 0) else if( (atributos.st_mode & S_IWUSR) != 0) else if( (atributos.st_mode & S_IXUSR) != 0) else if( (atributos.st_mode & S_IRGRP) != 0) else if( (atributos.st_mode & S_IWGRP) != 0) else if( (atributos.st_mode & S_IXGRP) != 0) else if( (atributos.st_mode & S_IROTH) != 0) else if( (atributos.st_mode & S_IWOTH) != 0) else if( (atributos.st_mode & S_IXOTH) != 0) else if( (chmod(ent->d_name, octal)) <0){ } if( (atributos.st_mode & S_IRUSR) != 0) else if( (atributos.st_mode & S_IWUSR) != 0) else if( (atributos.st_mode & S_IXUSR) != 0) else if( (atributos.st_mode & S_IRGRP) != 0) else if( (atributos.st_mode & S_IWGRP) != 0) else if( (atributos.st_mode & S_IXGRP) != 0) else if( (atributos.st_mode & S_IROTH) != 0) else if( (atributos.st_mode & S_IWOTH) != 0) else if( (atributos.st_mode & S_IXOTH) != 0) else close(fd); } } }
|
|
|
En línea
|
|
|
|
Lotux5
Desconectado
Mensajes: 24
|
SOLUCIONADO. Por si alguien necesita el código, lo dejo como aporte. #include<unistd.h> #include<sys/stat.h> #include<fcntl.h> #include<stdio.h> #include<errno.h> #include<sys/types.h> #include<dirent.h> #include<string.h> int main(int argc, char *argv[]) { DIR *dir; struct dirent *ent; char **ptr; long octal; printf("\nError al introducir el numero de digitos del parametro 2\n"); } if( (dir=opendir(argv[1]))==NULL){ printf("\nError en el primer open\n"); } octal = strtol(argv [2], ptr , 8); struct stat atributos; int fd; while ((ent = readdir(dir)) != NULL){ if( (strcmp(ent ->d_name , ".")!=0) && (strcmp(ent ->d_name , "..")!=0) ){ if ( (stat(ent->d_name, &atributos)) <0){ } if( (atributos.st_mode & S_IRUSR) != 0) else if( (atributos.st_mode & S_IWUSR) != 0) else if( (atributos.st_mode & S_IXUSR) != 0) else if( (atributos.st_mode & S_IRGRP) != 0) else if( (atributos.st_mode & S_IWGRP) != 0) else if( (atributos.st_mode & S_IXGRP) != 0) else if( (atributos.st_mode & S_IROTH) != 0) else if( (atributos.st_mode & S_IWOTH) != 0) else if( (atributos.st_mode & S_IXOTH) != 0) else if( (chmod(ent->d_name, octal)) <0){ } if ( (stat(ent->d_name, &atributos)) <0){ } if( (atributos.st_mode & S_IRUSR) != 0) else if( (atributos.st_mode & S_IWUSR) != 0) else if( (atributos.st_mode & S_IXUSR) != 0) else if( (atributos.st_mode & S_IRGRP) != 0) else if( (atributos.st_mode & S_IWGRP) != 0) else if( (atributos.st_mode & S_IXGRP) != 0) else if( (atributos.st_mode & S_IROTH) != 0) else if( (atributos.st_mode & S_IWOTH) != 0) else if( (atributos.st_mode & S_IXOTH) != 0) else } } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Manipulacion masiva?
« 1 2 3 »
Diseño Gráfico
|
Azielito
|
22
|
10,998
|
18 Enero 2005, 05:22 am
por aNexos
|
|
|
manipulacion de Bitmaps
Programación Visual Basic
|
NeoXero
|
0
|
1,104
|
16 Septiembre 2007, 03:59 am
por NeoXero
|
|
|
Manipulacion de BMP
« 1 2 »
Programación Visual Basic
|
Gorky
|
13
|
7,327
|
17 Octubre 2007, 07:54 am
por Gorky
|
|
|
[C] - Manipulación de archivos binarios
Programación C/C++
|
cbug
|
4
|
4,626
|
14 Julio 2010, 03:01 am
por cbug
|
|
|
ayuda Manipulacion de lenguajes SQL
.NET (C#, VB.NET, ASP)
|
R3Z
|
2
|
1,907
|
25 Noviembre 2015, 23:22 pm
por R3Z
|
|