int log_init(const char *logname, const char *ttyname) { FILE *log_f; char *n, fac[30], *prio; int fc; size_t len; if ( logname == NULL ) return 0; log_tty = ttyname ? xstrdup( ttyname ) : NULL; if ( *logname != '$' ) { log_f = fopen( logname, "at" ); if ( log_f ) { fclose( log_f ); log_type = LT_LOGFILE; log_name = xstrdup( logname ); return 1; } return 0; } if ( ttyname ) { len = strlen( progname ) + 2 + strlen( ttyname ); n = malloc( len ); if ( !n ) { fprintf( stderr, "can't malloc() %d bytes of memory\n", len ); abort(); exit(1); } xstrcpy( n, progname, len ); xstrcat( n, ".", len ); xstrcat( n, ttyname, len ); } else n = xstrdup( progname ); prio = strchr( logname + 1, ':' ); if ( prio ) { prio++; xstrcpy( fac, logname + 1, 30 ); if (( syslog_priority = parsefacorprio( prio, (SLNCODE *) prioritynames )) < 0 ) syslog_priority = LOG_INFO; } else xstrcpy( fac, logname + 1, 30); if (( fc = parsefacorprio( fac, (SLNCODE *) facilitynames )) < 0 ) return 0; log_type = LT_SYSLOG; log_name = NULL; openlog( n, LOG_PID, fc ); xfree( n ); return 1; }
int log_init(char *ln, char *tn) { FILE *log_f; char *n,fac[30],*prio; int fc,len; log_tty=tn?xstrdup(tn):NULL; if(*ln!='$') { log_f=fopen(ln,"at"); if(log_f) { fclose(log_f); log_type=1; log_name=xstrdup(ln); return 1; } return 0; } if(tn) { len=strlen(progname)+2+strlen(tn); n=malloc(len); if(!n) { fprintf(stderr,"can't malloc() %d bytes of memory\n",len); abort(); exit(1); } xstrcpy(n,progname,len); xstrcat(n,".",len); xstrcat(n,tn,len); } else n=progname; prio=strchr(ln+1,':'); if(prio) { prio++; xstrcpy(fac,ln+1,prio-ln-1); if((syslog_priority=parsefacorprio(prio,(SLNCODE*)prioritynames))<0) syslog_priority=LOG_INFO; } else xstrcpy(fac,ln+1,30); if((fc=parsefacorprio(fac,(SLNCODE*)facilitynames))<0)return 0; log_type=2; log_name=NULL; openlog(n,LOG_PID,fc); return 1; }