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

NOMBRE
       insertar_directorio - función que inserta un directorio en un fichero tipo mypackzip
       
UTILIZACIÓN

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

       La función insertar_directorio(...) debe insertar todo el contenido del 
       directorio dir_fuente al final del archivo file_mypackzip (con formato 
       mypackzip)
       No debe insertar un elemento de tipo directorio, sino que debe insertar 
       cada una de las entradas de tipo fichero regular, contenidas contenidos 
       en dir_fuente. El nombre de cada fichero (regular) a insertar debe contener 
       la ruta (relativa) de dir_fuente. P.e
          ret= insertar_directorio("dir1/subdir2", "./mypack.mpz"); 
       Deberia insertar  en el fichero ./mypack.mpz todos los ficheros regulares del 
       directorio dir1/subdir2 con el nombre dir1/subdir2/fich1, 
       dir1/subdir2/fich2,...
       Si el directorio dir_fuente, tiene ruta absoluta, los ficheros regulares 
       se deben guardar sin la barra inicial "/" de dir_fuente
       Si el fichero file_mypackzip no existe y dir_fuente se puede abrir se debe crear 
       file_mypackzip.
       Si el file_mypackzip no existe o está vacío, dir_fuente se insertará al comienzo
       de file_mypackzip.
       
       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 , insertar_directorio(...) devolverá cero. En 
       caso contrario no insertará nada en el file_mypackzip  y retornará los errores
       indicados en el apartado de ERRORES.

ERRORES
       E_OPEN   (1) 
           No se puede abrir o crear file_mypackzip.
       E_OPEN2  (2) 
           No se puede abrir  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
       insertar_directorio() debería funcionar en cualquier sistema UNIX.

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

AUTOR
       Nombre del autor(es).

1.0                               24 Feb 2020                        man(ISO)