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>