Hi, I have a few comments regarding the code of void report(). This function is available in very similar form in modem_run.c, pppoa2.c and pppoa3.c. For my examples I'll use pppoa3.c.
First it is not clear to me why everything is logged with log level LOG_INFO in case REPORT_DUMP is not set. I do believe one also wants log level separation in case REPORT_DUMP is not set. In that case the logging code would be identical whether REPORT_DUMP is set or not. Only the initialisation of buffer and length should be done in the if block. My second comment regards the order of the variables passed to report(). It seems a bit unlogical to pass the format parameter as the last variable in case REPORT_DUMP is set. If the order of the parameters is rearranged so the format parameter comes directly after the format variable (ie it is the fourth parameter independent of whether REPORT_DUMP is set) the setting of buffer and length can be done directly before dump() in the same if block. In that case the whole section between /* Prints log message */ and /* UnLock the report mutex */ can then be simplified to: #ifndef USE_SYSLOG vfprintf(log, format, ap); #else char msg[256]; vsnprintf(msg, 256, format, ap); if(flags&REPORT_ERROR) syslog(LOG_ERR, msg); else if (flags&REPORT_INFO) syslog(LOG_INFO, msg); else if (flags&REPORT_DEBUG) syslog(LOG_DEBUG, msg); #endif #ifndef USE_SYSLOG /* If needed we include the strerror from libc */ if(flags & REPORT_PERROR) fprintf(log, "Reason : %s\n", strerror(errno)); #endif if(flags & REPORT_DUMP) { buffer = va_arg(ap, char*); length = va_arg(ap, int); dump(buffer, length); } va_end(ap); I am happy to supply a patch that fixes this for modem_run.c, pppoa2.c and pppoa3.c. Bye, Leonard. -- How clean is a war when you shoot around nukelar waste? Stop the use of depleted uranium ammo! End all weapons of mass destruction. Liste de diffusion modem ALCATEL SpeedTouch USB Pour se désinscrire : mailto:[EMAIL PROTECTED]