#include #include #include #include #include #include #define ND_MODE 1 #include #define LOG_MODE 1 #include VER_INFO_EXPORT (logresolve, "$Revision: 1.1 $", "$Name: $", __FILE__, "$Author: smas $") typedef struct { double sec; struct timeval start; struct timeval stop; } cpt; #define t_start(x){gettimeofday (&(x.start), NULL);} #define t_stop(x){gettimeofday (&(x.stop), NULL); x.sec = (double)(x.stop.tv_sec) - (double)(x.start.tv_sec) + \ ((double)(x.stop.tv_usec) - (double)(x.start.tv_usec)) / 1000000;} cpt t_exec; char * Get_Rooting (LOGT_Rooting); char * Get_RC (LOGT_RC); #define USAGE "Usage : %s [ --help | --version [-v] | --event ]\n" int main (int argc, char **argv) { LOGT_Info * Info; char * Event; int i; if (argc >= 2) { if (!strcmp (argv [1], "--help")) { fprintf (stderr, USAGE, argv [0]); return 1; } else if (!strcmp (argv [1], "--version")) { if (argc >= 3 && !strcmp (argv [2], "-v")) return VER_Object_Print (stdout, VERD_VERBOSE); else return VER_Object_Print (stdout, VERD_MINIMAL); } else if (!strcmp (argv [1], "--event")) { if (argc != 3) { fprintf (stderr, USAGE, argv [0]); return 0; } Event = argv [2]; } else { fprintf (stderr, USAGE, argv [0]); return 0; } } else { fprintf (stderr, USAGE, argv [0]); return 0; } /* Récupération des informations sur un événement */ Info = (LOGT_Info *) malloc (sizeof (LOGT_Info)); if (LOG_Library_Open (0, NULL, LOGD_OPEN | LOGD_DEBUG_ALL) != LOGS_OK) { fprintf (stderr, "=> Ouverture de la librairie LIBLOG impossible\n"); return 0; } t_start (t_exec); if (LOG_Event_Info_Get (NULL, &Info, Event) != LOGS_OK) { t_stop (t_exec); fprintf (stderr, "=> Impossible de résoudre l'événement \"%s\"\n", Event); } else { NDT_Node * Node; t_stop (t_exec); fprintf (stdout, "\nEvénement \"%s\" résolu en %.4f sec :\n", Event, t_exec.sec); fprintf (stdout, "\t- Type : %s (Id=%d)\n", Info->Event_Name, Info->Event_Type); fprintf (stdout, "\t- Routage : %s\n", Get_Rooting (Info->Rooting)); fprintf (stdout, "\t- Gravité : %c\n", (char)Info->Gravite); fprintf (stdout, "\t- Code retour : %s\n", Get_RC (Info->RC)); fprintf (stdout, "\t- Format :"); if (Info->Data_List) { ND_Node_First_Get (Info->Data_List, &Node); i = 0; while (Node) { if (i > 0) fprintf (stdout, ","); fprintf (stdout, " %s", (char *)(Node->Value)); ND_Node_Next_Get (Node, &Node); i++; } } fprintf (stdout, "\n\n"); } LOG_Library_Close (LOGD_CLOSE); free (Info); return 0; } char * Get_Rooting (LOGT_Rooting Rooting) { static char lib [20]; switch ((int)Rooting) { case LOGD_ROOTING_NULL: strcpy (lib, "NULL"); break; case LOGD_ROOTING_STDERR: strcpy (lib, "STDERR"); break; case LOGD_ROOTING_DATABASE: strcpy (lib, "BASE"); break; case LOGD_ROOTING_DEFAULT: strcpy (lib, "DEFAULT"); break; case LOGD_ROOTING_PREVIOUS: strcpy (lib, "PREVIOUS"); break; default: strcpy (lib, "unknown"); break; } return lib; } char * Get_RC (LOGT_RC RC) { static char lib [20]; switch ((int)RC) { case LOGD_RC_OK: strcpy (lib, "OK"); break; case LOGD_RC_ANOERR: strcpy (lib, "ANOERR"); break; case LOGD_RC_REJDON: strcpy (lib, "REJDON"); break; case LOGD_RC_REJENR: strcpy (lib, "REJENR"); break; case LOGD_RC_WARNING: strcpy (lib, "WARNING"); break; case LOGD_RC_RECYCLE: strcpy (lib, "RECYCLE"); break; case LOGD_RC_EXIT: strcpy (lib, "EXIT"); break; case LOGD_RC_ABEND: strcpy (lib, "ABEND"); break; default: strcpy (lib, "unknown"); break; } return lib; }