man(ISO)                 Especificación de extraer_directorio                man(ISO)

NOMBRE
       extraer_directorio - función que extrae un directorio de un fichero tipo mypackzip.

UTILIZACIÓN

      #include "s_header.h"
      
      int extraer_directorio(char * dir_destino,  char * file_mypackzip);
    
DESCRIPCIÓN

       La función extraer_directorio(...) debe extraer todos los ficheros 
       contenidos dentro del archivo file_mypackzip perteneciente al 
       directorio dir_destino. Es decir aquellos ficheros que su nombre 
       comience por la ruta de dir_destino. P.e.
          ret= extraer_directorio("dir1/subdir2", "./mypack.mpz"); 
       Deberia extraer todos los ficheros contenidos en el fichero ./mypack.mpz 
       que tengan la ruta dir1/subdir2 (dir1/subdir2/fich1, dir1/subdir2/fich2, 
       ...)
       Si el directorio destino dir_destino no existe, se debe crear en el 
       directorio actual (./dir_destino)
      
       El formato de fichero file_mypackzip se describe en la estructura  s_header 
        
/**
* @file s_header.h
* @author   G.A.
* @date     06/05/2019
* @brief    Include file struct  s_header  and struct s_info
* @details  A .h  C file with the definition struct  s_header  and struct s_info of  mypackzip file format
*
*/

#define TAM_S_HEADER    512
#define MAX_FILE_NAME   256

struct s_info {
   char Tipo;                       // ='Z'
   char Compri;                     // ='N' (por defecto) o 'Y'. Indica si los datos 
				    // del fichero están almacenados de forma 
				    // comprimida
   unsigned long TamOri;            // Tamanio original del fichero (sin comprimir)
   unsigned long TamComp;           // Tamanio del fichero comprimido. Si los datos 
				    // no estan comprimidos, su valor es el mismo de 
				    // TamOri
   char FileName[MAX_FILE_NAME];    // Nombre del fichero origen 
};
#define TAM_S_INFO sizeof(struct s_info )

#define RESTO_HEADER (TAM_S_HEADER - TAM_S_INFO)

struct  s_header {
   struct s_info InfoF;                 // Información del fichero
   char RestoHeader[RESTO_HEADER];  // ToDo...  
};
	  
VALOR DE RETORNO

       Si todo funciona correctamente , extraer_directorio(...) devolverá cero. En 
       caso contrario no extraerá nada y retornará los errores indicados en el 
       apartado de ERRORES.

ERRORES
       E_OPEN   (1) 
           No se puede abrir file_mypackzip.
       E_CREAT_DIR  (2) 
           No se puede crear  dir_fuente.
       E_DESCO  (99) 
           Otro tipo de errores 
       
NOTAS
       Nota1: El programa que utilice esta función , deberá informar por la salida 
              de error estándar un mensaje indicando el tipo de error

COMPATIBILIDAD
       extraer_directorio(...) debería funcionar en cualquier sistema UNIX.

VEASE TAMBIEN
       mypackzip(ISO), insertar_directorio(ISO), insertar_fichero(ISO), extraer_fichero(ISO).

AUTOR
       Nombre del autor(es).

1.0                               24 Feb 2020                        man(ISO)





















       ./extraer_directorio posicion fichero_empaquetado 

DESCRIPCIÓN
       extraer_directorio debe generar un directorio (en la ruta especificada en su 
	   nombre) contenido en el fichero fichero_empaquetado (con formato pack) que 
	   se pasa como argumento. 
	   El directorio a extraer corresponde al directorio que se encuentre en el 
	   número de registro posicion en el fichero fichero_empaquetado.
	   
       posicion debe ser un valor de 0 a TAM-1 donde TAM es en número máximo de elementos
	   tenga el fichero fichero_empaquetado.

       El nombre del directorio a crear será el que se indique en el registro indicado por 
	   num_fichero ( ver s_header).

	   #include <sys/types.h>
       #define TAM_S_HEADER 512
       #define MAX_FILE_NAME   256
       #define RESTO_HEADER (TAM_S_HEADER - 1 - MAX_FILE_NAME- sizeof(mode_t) )
       struct  s_header {
           char Tipo;                       // ='1'
           char FileName[MAX_FILE_NAME];    // Nombre del fichero/directorio fuente  (con la ruta especificada)
		   mode_t st_mode;					// Tipo Fichero o Directorio. Como el campo st_mode de struct stat
					// este campo es de 16 bits. Pero tipo de fichero se guarda en los bits(15-13)  0xX---
					//  S_IFREG    0100000 Fichero regular (formato octal)
 					//  S_IFDIR    0040000 Directorio (formato octal)
			// ToDo  
            char RestoHeader[RESTO_HEADER];  // ToDo  
       };
	   
			  
VALORES DE SALIDA

       En las siguientes situaciones no mostrará el resultado en la salida estándar y devuelve 
       un código de error, informando además por la salida de error estándar un mensaje 
       indicando el tipo de error:
              - Número de argumentos erróneo.
              - No se puede abrir fichero_empaquetado.
              - Número de registro erróneoneo.
              - Otro tipo de errores.
 
       En caso contrario devuelve 0.

COMPATIBILIDAD
       extraer_directorio debería funcionar en cualquier sistema UNIX.

VEASE TAMBIEN
       mypackzip(ISO), insertar_fichero(ISO), extraer_fichero(ISO),insertar_directorio(ISO).

AUTOR
       Nombre del autor(es).

1.0                               24 Feb 2020                        man(ISO)