Annotation of ADD_ver_10/Source Code/Source Files/Notificaciones.c, revision 1.2

1.2     ! rico        1: /********************************************************************/
        !             2: /*  Notificaciones.c                                                */
        !             3: /*                                                                  */
        !             4: /*                                                                  */
        !             5: /*  Copyright (c) 1997-2006 Rafael Rico      (rafael.rico@uah.es)   */
        !             6: /*                                                                  */
        !             7: /*  Este fichero forma parte de ADD                                 */
        !             8: /*  (Analizador de Dependencias de Datos)                           */
        !             9: /*  Version 5.10.                                                   */
        !            10: /*                                                                  */
        !            11: /*                                                                  */
        !            12: /*  ADD es software libre. Puede redistribuirlo y/o modificarlo     */
        !            13: /*  bajo los términos de la Licencia Pública General de GNU         */
        !            14: /*  según es publicada por la Free Software Foundation, bien bajo   */
        !            15: /*  la versión 2 de dicha Licencia o bien (según su elección)       */
        !            16: /*  bajo cualquier versión posterior.                               */
        !            17: /*                                                                  */
        !            18: /*  ADD se distribuye con la esperanza de que sea útil,             */
        !            19: /*  pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL    */
        !            20: /*  implícita y sin garantizar la CONVENIENCIA PARA UN PROPÓSITO    */
        !            21: /*  PARTICULAR. Véase la Licencia Pública General de GNU para       */
        !            22: /*  más detalles.                                                   */
        !            23: /*                                                                  */
        !            24: /*  Debería haber recibido una copia de la Licencia Pública General */
        !            25: /*  junto con ADD. Si no ha sido así, escriba a la Free Software    */
        !            26: /*  Foundation, Inc., 51 Franklin St, Fifth Floor,                  */
        !            27: /*  Boston, MA  02110-1301  EEUU.                                   */
        !            28: /*                                                                  */
        !            29: /*  -------------------------- Historia --------------------------- */
        !            30: /*                                                                  */
        !            31: /*  $Id$                                                            */
        !            32: /*                                                                  */
        !            33: /*  Revisión 1.2. 01/2006                                           */
        !            34: /*  Se añade la licencia GPL y documentación en estilo Javadoc      */
        !            35: /*                                                                  */
        !            36: /*  Revisión 1.1. 09/2005                                           */
        !            37: /*  Versión inicial                                                 */
        !            38: /*                                                                  */
        !            39: /********************************************************************/
        !            40: 
1.1       rico       41: /******************************************************************************/
                     42: /* MÓDULO: Notificaciones.c                                                   */
                     43: /*                                                                            */
                     44: /* Este módulo contiene las funciones que anotan notificación de sucesos      */
                     45: /* o errores en un fichero especial (notificaciones.log).                     */
                     46: /******************************************************************************/
                     47: /* Fecha: 16 de septiembre de 2005                                            */
                     48: /******************************************************************************/
                     49: 
                     50: #include <stdio.h>
                     51: #include <stdlib.h>
                     52: #include <string.h>
                     53: #include <ctype.h>
                     54: #include <time.h>
                     55: 
                     56: #include "defines.h"
                     57: #include "tipos.h"
                     58: #include "notificaciones.h"
                     59: 
                     60: /* configuración */
                     61: extern struct argumentos configuracion;
                     62: 
                     63: 
                     64: 
                     65: /* NOTIFICACIONES Y GESTIÓN DE ERRORES */
                     66: 
                     67: void IniciarNotificaciones()
                     68: {
                     69:     time_t tiempo;
                     70:     struct tm *ptr_tm;
                     71:     FILE *handle;
                     72:     char fichero[MAX_LINE];
                     73:     char buffer[9];
                     74: 
                     75:     /* nombre del fichero de notificaciones */
                     76:     strcpy(fichero, "notificaciones.log");
                     77: 
                     78:     /* abro el fichero de notificaciones y escribo una cabecera */
                     79:     if((handle  = fopen(fichero, "w")) != NULL)
                     80:     {
                     81:         fprintf(handle, "FICHERO DE NOTIFICACIONES\n");
                     82:         /* OJO: el formato de fecha está en inglés */
                     83:         /* esto no es ANSI
                     84:         _strdate(buffer);
                     85:         fprintf(handle, "Fecha %s \n", buffer);
                     86:         _strtime(buffer);
                     87:         fprintf(handle, "Hora %s \n\n", buffer);
                     88:         */
                     89: 
                     90:         /* fecha y hora */
                     91:         tiempo = time(NULL);
                     92:         ptr_tm = localtime(&tiempo);
                     93:         strftime(buffer, MAX_LINE, "%d/%m/%y", ptr_tm);
                     94:         fprintf(handle, "Fecha %s \n", buffer);
                     95:         strftime(buffer, MAX_LINE, "%H:%M:%S", ptr_tm);
                     96:         fprintf(handle, "Hora %s \n\n", buffer);
                     97: 
                     98:         
                     99:         if(fclose(handle))
                    100:         {
                    101:             fprintf(handle, "El fichero '%s' no se ha podido cerrar\n", fichero);
                    102:             printf("El fichero '%s' no se ha podido cerrar\n", fichero);
                    103:         }
                    104:     }
                    105:     else
                    106:     {
                    107:         printf("El fichero '%s' no se ha podido abrir\n", fichero);
                    108:         printf("Pulse cualquier tecla para salir\n");
                    109:         getchar();
                    110:         exit(1);
                    111:     }
                    112: }
                    113: 
                    114: 
                    115: void Notificar(char *mensaje, unsigned char accion, unsigned char eco)
                    116: {
                    117:     FILE *handle;
                    118:     char fichero[MAX_LINE];
                    119: 
                    120:     /* nombre del fichero de notificaciones */
                    121:     strcpy(fichero, "notificaciones.log");
                    122: 
                    123:     /* escribo la notificación en el fichero y si no es posible aborto el programa */
                    124:     if((handle  = fopen(fichero, "a")) != NULL)
                    125:     {
                    126:         if(accion != NO_ERROR || configuracion.nivelnotificaciones != ERRORS)
                    127:             fprintf(handle, "%s%s\n", accion!= NO_ERROR ? "ERROR: ": "", mensaje);
                    128: 
                    129:         if(fclose(handle))
                    130:         {
                    131:             fprintf(handle, "El fichero '%s' no se ha podido cerrar\n", fichero);
                    132:             printf("El fichero '%s' no se ha podido cerrar\n", fichero);
                    133:         }
                    134:     }
                    135:     else
                    136:     {
                    137:         printf("El fichero '%s' no se ha podido abrir\n", fichero);
                    138:         printf("Pulse cualquier tecla para salir\n");
                    139:         getchar();
                    140:         exit(1);
                    141:     }
                    142: 
                    143:     /* escribo el error en la pantalla */
                    144:     if(eco == ECO_SI) printf("%s\n", mensaje);
                    145: 
                    146:     /* acción en función del parámetro */
                    147:     switch(accion)
                    148:     {
                    149:         case ERROR_SALIR:
                    150:         printf("\n\nERROR GRAVE\nPulse cualquier tecla para salir\n");
                    151:         getchar();
                    152:         exit(1);
                    153:         break;
                    154: 
                    155:         case ERROR_SEGUIR:
                    156:         printf("\n\nERROR LEVE\nPulse cualquier tecla para continuar\n");
                    157:         getchar();
                    158:         break;
                    159: 
                    160:         case NO_ERROR:
                    161:         break;
                    162:     }
                    163: }
                    164: 
                    165: 
                    166: void NotificarConfiguracion()
                    167: {
                    168:     FILE *handle;
                    169:     char fichero[MAX_LINE];
                    170: 
                    171:     /* nombre del fichero de notificaciones */
                    172:     strcpy(fichero, "notificaciones.log");
                    173: 
                    174:     /* escribo la notificación en el fichero y si no es posible aborto el programa */
                    175:     if((handle  = fopen(fichero, "a")) != NULL)
                    176:     {
                    177:         /* sin cabecera, fecha NO, completo SI, comentarios NO, separador " "); */
                    178:         SalvarConfiguracionFichero(handle, "", NO, SI, NO, ' ');    
                    179:         
                    180:         /* SalvarConfiguracion(handle); */
                    181: 
                    182:         if(fclose(handle))
                    183:         {
                    184:             fprintf(handle, "El fichero '%s' no se ha podido cerrar\n", fichero);
                    185:             printf("El fichero '%s' no se ha podido cerrar\n", fichero);
                    186:         }
                    187:     }
                    188:     else
                    189:     {
                    190:         printf("El fichero '%s' no se ha podido abrir\n", fichero);
                    191:         printf("Pulse cualquier tecla para salir\n");
                    192:         getchar();
                    193:         exit(1);
                    194:     }
                    195: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>