Exemple #1
0
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;
}
Exemple #2
0
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;
}